-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtts-tts-module-es2015.js.map
1 lines (1 loc) · 100 KB
/
tts-tts-module-es2015.js.map
1
{"version":3,"sources":["./node_modules/@angular/material/__ivy_ngcc__/fesm2015/progress-spinner.js","./src/app/shared/models/loading-state.ts","./src/app/tts/api-key/api-key.component.ts","./src/app/tts/api-key/api-key.component.html","./src/app/tts/api-key/api-key.service.ts","./src/app/tts/models/bcp47-languages.ts","./src/app/tts/text-input/text-input.component.ts","./src/app/tts/text-input/text-input.component.html","./src/app/tts/tts-page/tts-page.component.ts","./src/app/tts/tts-page/tts-page.component.html","./src/app/tts/tts-routing.module.ts","./src/app/tts/tts.module.ts","./src/app/tts/voice-settings/voice-settings.component.ts","./src/app/tts/voice-settings/voice-settings.component.html","./src/app/tts/wave-net.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAqJ;AAC5F;AACY;AACR;AACZ;AAC4B;;AAE7E;AACA;AACA;AACA,cAAc,wGAAwG;AACtH;AACA;AACA;AACA;AACA,UAAU;AACV;AACwC;AACQ;AACN;;AAE1C,6DAA6D;AAC7D,IAAI,4DAAqB;AACzB,IAAI,uDAAgB;AACpB,CAAC;AACD,oBAAoB,2DAAoB;AACxC,IAAI,yDAAkB;AACtB,IAAI,yDAAkB;AACtB,CAAC;AACD,6DAA6D;AAC7D,IAAI,4DAAqB;AACzB,IAAI,uDAAgB;AACpB,CAAC;AACD,oBAAoB,2DAAoB;AACxC,IAAI,yDAAkB;AACtB,IAAI,yDAAkB;AACtB,CAAC;AACD,qDAAqD;AACrD,IAAI,4DAAqB;AACzB,IAAI,uDAAgB;AACpB,CAAC;AACD,oBAAoB,2DAAoB;AACxC,IAAI,yDAAkB;AACtB,IAAI,yDAAkB;AACtB,CAAC;AACD,qDAAqD;AACrD,IAAI,4DAAqB;AACzB,IAAI,uDAAgB;AACpB,CAAC;AACD,oBAAoB,2DAAoB;AACxC,IAAI,yDAAkB;AACtB,IAAI,yDAAkB;AACtB,CAAC;AACD;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB;AACA;AACA;AACA;AACA;AACA,WAAW,EAGV;AACD,WAAW,EAAE;AACb,qCAAqC,yEAAU;AAC/C;AACA;AACA;AACA;AACA,6CAA6C;AAC7C,WAAW,EAiBV;AACD;AACA;AACA,UAAU;AACV;AACA,iDAAiD,4DAAc;AAC/D;AACA;AACA,CAAC;AACD;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb;AACA;AACA,aAAa,gCAAgC,uBAAuB;AACpE,aAAa,8BAA8B,yBAAyB;AACpE,eAAe,8BAA8B,+CAA+C;AAC5F,aAAa,gCAAgC,6CAA6C;;AAE1F,gBAAgB,gCAAgC,4BAA4B;AAC5E,aAAa,8BAA8B,8BAA8B;AACzE,eAAe,8BAA8B,gDAAgD;AAC7F,aAAa,gCAAgC,8CAA8C;;AAE3F,eAAe,gCAAgC,4BAA4B;AAC3E,aAAa,8BAA8B,8BAA8B;AACzE,eAAe,8BAA8B,gDAAgD;AAC7F,aAAa,gCAAgC,8CAA8C;;AAE3F,eAAe,gCAAgC,2BAA2B;AAC1E,aAAa,8BAA8B,6BAA6B;AACxE,eAAe,8BAA8B,gDAAgD;AAC7F,aAAa,gCAAgC,8CAA8C;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA,oBAAoB,uBAAuB;AAC3C;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,yBAAyB,kFAAoB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,4BAA4B,kFAAoB;AAChD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,gBAAgB;AAChB;AACA;AACA,gDAAgD,kFAAoB;AACpE;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB,oEAAoE,2CAA2C;AAC/G;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,sBAAsB,QAAQ,GAAG,QAAQ;AACzC;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA,mBAAmB,EAAE;AACrB;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,wCAAwC,iCAAiC;AACzE,sCAAsC,gCAAgC;AACtE,qCAAqC,cAAc;AACnD;AACA;AACA,kEAAkE,sCAAsC,+DAAwB,CAAC,wDAAiB,GAAG,+DAAwB,CAAC,8DAAe,GAAG,+DAAwB,CAAC,wDAAQ,MAAM,+DAAwB,CAAC,0FAAqB,MAAM,+DAAwB,wCAAwC;AAC3V,0BAA0B,+DAAwB,EAAE,gNAAgN;AACpQ,QAAQ,yDAAkB;AAC1B,QAAQ,yDAAkB;AAC1B,QAAQ,yDAAkB;AAC1B,KAAK,EAAE,WAAW,iGAAiG,+CAA+C,wEAAiC,4aAA4a;AAC/mB,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,QAAQ,wDAAiB;AACzB,QAAQ,wDAAiB;AACzB,QAAQ,0DAAmB;AAC3B,KAAK;AACL,QAAQ,yDAAkB;AAC1B,QAAQ,wDAAiB;AACzB,QAAQ,yDAAkB;AAC1B,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,KAAK,EAAE,eAAe,wDAAe,EAAE,4DAAmB,mCAAmC,cAAc,kBAAkB,0BAA0B,kBAAkB,yBAAyB,MAAM,OAAO,wBAAwB,iBAAiB,6BAA6B,iBAAiB,wBAAwB,0CAA0C,qDAAqD,gBAAgB,eAAe,uFAAuF,oEAAoE,+GAA+G,gBAAgB,eAAe,8FAA8F,2BAA2B,0BAA0B,yDAAyD,mCAAmC,sHAAsH,gBAAgB,eAAe,gGAAgG,yGAAyG,wHAAwH,gBAAgB,eAAe,uGAAuG,2BAA2B,+HAA+H,gBAAgB,eAAe,8CAA8C,GAAG,uBAAuB,KAAK,0BAA0B,kDAAkD,GAAG,kCAAkC,oBAAoB,MAAM,+BAA+B,oBAAoB,SAAS,+BAA+B,0CAA0C,IAAI,kCAAkC,0CAA0C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,wBAAwB,MAAM,+BAA+B,wBAAwB,SAAS,+BAA+B,2CAA2C,KAAK,kCAAkC,4CAA4C,uDAAuD,GAAG,uBAAuB,IAAI,0BAA0B,IAAI,0BAA0B,IAAI,0BAA0B,KAAK,2BAA2B,4CAA4C;AAC/vG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,OAAO,wDAAU,EAAE;AACxB,KAAK,OAAO,8DAAQ,EAAE;AACtB,KAAK,gCAAgC,OAAO,sDAAQ,EAAE,GAAG,OAAO,oDAAM,SAAS,wDAAQ,IAAI,GAAG;AAC9F,KAAK,6BAA6B,OAAO,sDAAQ,EAAE,GAAG,OAAO,oDAAM,SAAS,0FAAqB,IAAI,GAAG;AACxG,KAAK,gCAAgC,OAAO,oDAAM,iDAAiD;AACnG;AACA;AACA,gBAAgB,OAAO,mDAAK,EAAE;AAC9B,mBAAmB,OAAO,mDAAK,EAAE;AACjC,YAAY,OAAO,mDAAK,EAAE;AAC1B,aAAa,OAAO,mDAAK,EAAE;AAC3B;AACA,4BAA4B,CAAC,+DAAwB;AACrD,cAAc,uDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iCAAiC,qEAAuB;AACxD,+BAA+B,+DAAiB;AAChD,gDAAgD,cAAc,kBAAkB,0BAA0B,kBAAkB,yBAAyB,MAAM,OAAO,wBAAwB,iBAAiB,6BAA6B,iBAAiB,wBAAwB,0CAA0C,qDAAqD,gBAAgB,eAAe,uFAAuF,oEAAoE,+GAA+G,gBAAgB,eAAe,8FAA8F,2BAA2B,0BAA0B,yDAAyD,mCAAmC,sHAAsH,gBAAgB,eAAe,gGAAgG,yGAAyG,wHAAwH,gBAAgB,eAAe,uGAAuG,2BAA2B,+HAA+H,gBAAgB,eAAe,8CAA8C,GAAG,uBAAuB,KAAK,0BAA0B,kDAAkD,GAAG,kCAAkC,oBAAoB,MAAM,+BAA+B,oBAAoB,SAAS,+BAA+B,0CAA0C,IAAI,kCAAkC,0CAA0C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,wBAAwB,MAAM,+BAA+B,wBAAwB,SAAS,+BAA+B,2CAA2C,KAAK,kCAAkC,4CAA4C,uDAAuD,GAAG,uBAAuB,IAAI,0BAA0B,IAAI,0BAA0B,IAAI,0BAA0B,KAAK,2BAA2B;AACtqG,aAAa;AACb,KAAK,gBAAgB,UAAU,OAAO,wDAAiB,EAAE,GAAG,OAAO,8DAAe,EAAE,GAAG;AACvF,sBAAsB,sDAAQ;AAC9B,aAAa;AACb,sBAAsB,oDAAM;AAC5B,uBAAuB,wDAAQ;AAC/B,aAAa,GAAG,GAAG;AACnB,sBAAsB,sDAAQ;AAC9B,aAAa;AACb,sBAAsB,oDAAM;AAC5B,uBAAuB,0FAAqB;AAC5C,aAAa,GAAG,GAAG;AACnB,sBAAsB,oDAAM;AAC5B;AACA,aAAa,GAAG,EAAE,EAAE,GAAG;AACvB,kBAAkB,mDAAK;AACvB,SAAS;AACT,kBAAkB,mDAAK;AACvB,SAAS;AACT,kBAAkB,mDAAK;AACvB,SAAS;AACT,kBAAkB,mDAAK;AACvB,SAAS,GAAG,EAAE,EAAE;AAChB,WAAW,EA6DV;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,EAAE;AACjB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,8BAA8B,+DAAwB,CAAC,wDAAiB,GAAG,+DAAwB,CAAC,8DAAe,GAAG,+DAAwB,CAAC,wDAAQ,MAAM,+DAAwB,CAAC,0FAAqB,MAAM,+DAAwB,wCAAwC;AACnU,kBAAkB,+DAAwB,EAAE,8NAA8N;AAC1Q,QAAQ,yDAAkB;AAC1B,QAAQ,yDAAkB;AAC1B,KAAK,EAAE,WAAW,iBAAiB,aAAa,wEAAiC,oaAAoa;AACrf,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,QAAQ,wDAAiB;AACzB,QAAQ,wDAAiB;AACzB,QAAQ,0DAAmB;AAC3B,KAAK;AACL,QAAQ,yDAAkB;AAC1B,QAAQ,wDAAiB;AACzB,QAAQ,yDAAkB;AAC1B,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,KAAK,EAAE,eAAe,wDAAe,EAAE,4DAAmB,mCAAmC,cAAc,kBAAkB,0BAA0B,kBAAkB,yBAAyB,MAAM,OAAO,wBAAwB,iBAAiB,6BAA6B,iBAAiB,wBAAwB,0CAA0C,qDAAqD,gBAAgB,eAAe,uFAAuF,oEAAoE,+GAA+G,gBAAgB,eAAe,8FAA8F,2BAA2B,0BAA0B,yDAAyD,mCAAmC,sHAAsH,gBAAgB,eAAe,gGAAgG,yGAAyG,wHAAwH,gBAAgB,eAAe,uGAAuG,2BAA2B,+HAA+H,gBAAgB,eAAe,8CAA8C,GAAG,uBAAuB,KAAK,0BAA0B,kDAAkD,GAAG,kCAAkC,oBAAoB,MAAM,+BAA+B,oBAAoB,SAAS,+BAA+B,0CAA0C,IAAI,kCAAkC,0CAA0C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,wBAAwB,MAAM,+BAA+B,wBAAwB,SAAS,+BAA+B,2CAA2C,KAAK,kCAAkC,4CAA4C,uDAAuD,GAAG,uBAAuB,IAAI,0BAA0B,IAAI,0BAA0B,IAAI,0BAA0B,KAAK,2BAA2B,4CAA4C;AAC/vG;AACA;AACA,KAAK,OAAO,wDAAU,EAAE;AACxB,KAAK,OAAO,8DAAQ,EAAE;AACtB,KAAK,gCAAgC,OAAO,sDAAQ,EAAE,GAAG,OAAO,oDAAM,SAAS,wDAAQ,IAAI,GAAG;AAC9F,KAAK,6BAA6B,OAAO,sDAAQ,EAAE,GAAG,OAAO,oDAAM,SAAS,0FAAqB,IAAI,GAAG;AACxG,KAAK,gCAAgC,OAAO,oDAAM,iDAAiD;AACnG;AACA,4BAA4B,CAAC,+DAAwB;AACrD,cAAc,uDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iCAAiC,qEAAuB;AACxD,+BAA+B,+DAAiB;AAChD,gDAAgD,cAAc,kBAAkB,0BAA0B,kBAAkB,yBAAyB,MAAM,OAAO,wBAAwB,iBAAiB,6BAA6B,iBAAiB,wBAAwB,0CAA0C,qDAAqD,gBAAgB,eAAe,uFAAuF,oEAAoE,+GAA+G,gBAAgB,eAAe,8FAA8F,2BAA2B,0BAA0B,yDAAyD,mCAAmC,sHAAsH,gBAAgB,eAAe,gGAAgG,yGAAyG,wHAAwH,gBAAgB,eAAe,uGAAuG,2BAA2B,+HAA+H,gBAAgB,eAAe,8CAA8C,GAAG,uBAAuB,KAAK,0BAA0B,kDAAkD,GAAG,kCAAkC,oBAAoB,MAAM,+BAA+B,oBAAoB,SAAS,+BAA+B,0CAA0C,IAAI,kCAAkC,0CAA0C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,yBAAyB,MAAM,+BAA+B,yBAAyB,SAAS,+BAA+B,2CAA2C,IAAI,kCAAkC,2CAA2C,SAAS,kCAAkC,wBAAwB,MAAM,+BAA+B,wBAAwB,SAAS,+BAA+B,2CAA2C,KAAK,kCAAkC,4CAA4C,uDAAuD,GAAG,uBAAuB,IAAI,0BAA0B,IAAI,0BAA0B,IAAI,0BAA0B,KAAK,2BAA2B;AACtqG,aAAa;AACb,KAAK,gBAAgB,UAAU,OAAO,wDAAiB,EAAE,GAAG,OAAO,8DAAe,EAAE,GAAG;AACvF,sBAAsB,sDAAQ;AAC9B,aAAa;AACb,sBAAsB,oDAAM;AAC5B,uBAAuB,wDAAQ;AAC/B,aAAa,GAAG,GAAG;AACnB,sBAAsB,sDAAQ;AAC9B,aAAa;AACb,sBAAsB,oDAAM;AAC5B,uBAAuB,0FAAqB;AAC5C,aAAa,GAAG,GAAG;AACnB,sBAAsB,oDAAM;AAC5B;AACA,aAAa,GAAG,EAAE,EAAE,QAAQ,EAAE;AAC9B;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE;AACrB;AACA;AACA,kCAAkC,EAAE;AACpC,uBAAuB,EAAE;AACzB;AACA;AACA;AACA,iDAAiD,EAAE;AACnD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,wGAAwG;AACtH;AACA;AACA;AACA,gCAAgC,8DAAuB,EAAE,iCAAiC;AAC1F,gCAAgC,8DAAuB,EAAE,wDAAwD,8CAA8C,EAAE,aAAa,sEAAe,EAAE,4DAAY;AAC3M,QAAQ,sEAAe,GAAG;AAC1B,cAAc,oDAAoD,gEAAyB,4BAA4B,4BAA4B;AACnJ,oBAAoB,EAAE,wBAAwB,SAAS,sEAAe,EAAE,4DAAY,EAAE,EAAE,wBAAwB;AAChH;AACA,QAAQ,sEAAe,EAAE,EAAE,EAAE,EAAE,EAAE;AACjC,4BAA4B,CAAC,+DAAwB;AACrD,cAAc,sDAAQ;AACtB;AACA,0BAA0B,sEAAe,EAAE,4DAAY;AACvD;AACA;AACA;AACA,oBAAoB,sEAAe;AACnC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,eAAe,EAAE;;AAEtB;AACA;AACA;AACA,cAAc,wGAAwG;AACtH;;AAEA;AACA;AACA;;AAEwJ;;AAExJ,4C;;;;;;;;;;;;AC/mBA;AAAA;AAAA;AAAA,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB;IACnB,gCAAe;IACf,0BAAS;AACX,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAEM,MAAM,YAAY;IAIvB,YAAY,MAAqB,EAAE,OAAgB;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;;;;;;;;;;;;;ACdD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkD;AACL;;;;;;;;;;ICSzC,wEAGE;IAAA,4EAEgC;IAClC,qEAAe;;IADX,0DAAe;IAAf,wEAAe;;;IAIjB,8EAGC;IAAA,uEAAY;IAAA,4DAAW;;;IAEtB,sEAAqB;;;IALvB,oIAGC;IACD,sNACE;;;;IAHA,uFAAoC;;ADZrC,MAAM,eAAe;IAO1B,YAAmB,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAN/C,eAAU,GAAG,IAAI,0DAAW,CAAC,EAAE,CAAC,CAAC;QACjC,YAAO,GAAG,KAAK,CAAC;QAMd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC;IACJ,CAAC;IAPD,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM;IACrF,CAAC;IAOD,QAAQ;IACR,CAAC;IAED,UAAU;QACR,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,UAAU,CAAC,KAAK,CACtB,CAAC;IACJ,CAAC;;8EApBU,eAAe;+FAAf,eAAe;QCT5B,2EACE;QAAA,qEAAI;QAAA,2EAAgB;QAAA,yEAA4B;QAAA,yEAAc;QAAA,4DAAM;QAAA,4DAAK;QACzE,yEACE;QAAA,2EAMA;QAFE,0JAAmB,IAAI,IAAC;QAJ1B,4DAMA;QAAA,4EAA+B;QAAvB,6IAAS,gBAAY,IAAC;QAAC,+DAAI;QAAA,4DAAS;QAC5C,6HAGE;;QAKF,yMACE;QASJ,4DAAM;QAER,4DAAW;;;QA7BgB,0DAAsB;QAAtB,+EAAsB;QAG3C,0DAA0D;QAA1D,yHAA0D;QAO1D,0DAA6E;QAA7E,uLAA6E;;6FDFtE,eAAe;cAL3B,uDAAS;eAAC;gBACT,QAAQ,EAAE,aAAa;gBACvB,WAAW,EAAE,0BAA0B;gBACvC,SAAS,EAAE,CAAC,0BAA0B,CAAC;aACxC;;;;;;;;;;;;;;AERD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA2C;AACJ;AACyC;;;;AAOzE,MAAM,aAAa;IAgExB,YAAoB,UAAsB,EACtB,YAA0B;QAD1B,eAAU,GAAV,UAAU,CAAY;QACtB,iBAAY,GAAZ,YAAY,CAAc;QAhE9C,oDAAoD;QAC5C,YAAO,GAAG,IAAI,oDAAe,CAAS,EAAE,CAAC,CAAC;QAElC,YAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QAE9C,iBAAY,GAAG,IAAI,oDAAe,CAAe,IAAI,yEAAY,CAAC,0EAAa,CAAC,EAAE,CAAC,CAAC;QAC5E,iBAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QA2D9D,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IA3DD,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,WAAW,CAAC,KAAmB;QACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,kBAAkB,CAAC,MAAc;QAC/B,IAAI,MAAM,KAAK,MAAM,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,yEAAY,CAAC,0EAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7D,UAAU,CAAC,GAAG,EAAE;gBAChB,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACvC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,yEAAY,CAAC,0EAAa,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,CAAC,EAAE,IAAI,CAAC,CAAC;SACV;QACD,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,0EAAa,CAAC,OAAO,EAAE;YACrD,OAAO;SACR;QACD,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,yEAAY,CAAC,0EAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,yDAAyD,GAAG,MAAM,CAAC,CAAC,SAAS,CAC/F,CAAC,IAAS,EAAE,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,yEAAY,CAAC,0EAAa,CAAC,EAAE,CAAC,CAAC;YACtD,qCAAqC;YACrC,8DAA8D;YAC9D,kDAAkD;YAClD,EAAE;YACF,UAAU;YACV,wEAAwE;YACxE,0CAA0C;YAC1C,sCAAsC;YACtC,QAAQ;YACR,gDAAgD;YAChD,kBAAkB;YAClB,4EAA4E;YAC5E,MAAM;YACN,IAAI;QACN,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,qBAAqB,CAAC;YACrD,IAAI,CAAC,WAAW,GAAG,IAAI,yEAAY,CAAC,0EAAa,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACP,CAAC;;0EA9DU,aAAa;gGAAb,aAAa,WAAb,aAAa,mBAFZ,MAAM;6FAEP,aAAa;cAHzB,wDAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;;;;;;;;;;;ACLD;AAAA,MAAM,cAAc,GAAG;IACrB,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,MAAM;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,MAAM;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,kBAAkB;KAChC;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,aAAa;KAC3B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,aAAa;KAC3B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,aAAa;KAC3B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,eAAe;KAC7B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,KAAK;KACnB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,KAAK;KACnB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,aAAa;KAC3B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,KAAK;KACnB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,MAAM;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kBAAkB;KAChC;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,eAAe;KAC7B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,aAAa;KAC3B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,MAAM;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,MAAM;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,oBAAoB;KAClC;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iBAAiB;KAC/B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mBAAmB;KACjC;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,cAAc;KAC5B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,KAAK;KACnB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,MAAM;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,gBAAgB;KAC9B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,KAAK;KACnB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,MAAM;KACpB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,YAAY;KAC1B;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;KACvB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,OAAO;KACrB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,UAAU;KACxB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,QAAQ;KACtB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,WAAW;KACzB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,IAAI;KAClB;IACD,GAAG,EAAE;QACH,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,IAAI;KAClB;IACD,EAAE,EAAE;QACF,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,SAAS;KACvB;CACiB;AAEL,6EAAc;;;;;;;;;;;;;AC9uB7B;AAAA;AAAA;AAAA;AAAA;AAAkD;;;;AAQ3C,MAAM,kBAAkB;IAE7B,YAAoB,YAA0B;QAA1B,iBAAY,GAAZ,YAAY,CAAc;IAAI,CAAC;IAEnD,QAAQ;IACR,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAC7D,CAAC;;oFATU,kBAAkB;kGAAlB,kBAAkB;QCR/B,2EACE;QAAA,2EACE;QAAA,4EACF;QAAA,4DAAQ;QACR,gEACA;QAAA,yEAAyE;QACzE,gEACA;QAAA,4EAEC;QADC,gJAAS,cAAU,IAAC;QACrB,+EAAoB;QAAA,4DAAS;QAChC,4DAAW;;6FDFE,kBAAkB;cAL9B,uDAAS;eAAC;gBACT,QAAQ,EAAE,gBAAgB;gBAC1B,WAAW,EAAE,6BAA6B;gBAC1C,SAAS,EAAE,CAAC,6BAA6B,CAAC;aAC3C;;;;;;;;;;;;;;AEPD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAkD;AAGP;;;;;;;AAOpC,MAAM,gBAAgB;IAI3B,YACU,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAJxC,cAAS,GAAG,IAAI,wDAAS,CAAC,EAAE,CAAC,CAAC;IAK1B,CAAC;IAEL,QAAQ;IACR,CAAC;;gFATU,gBAAgB;gGAAhB,gBAAgB;QCV7B,6EACE;QAAA,yEAA2B;QAC3B,oEAA6B;QAC7B,mFAAiE;QACjE,oEAA6B;QAC7B,4EAAiC;QACnC,4DAAU;;QAHY,0DAAuB;QAAvB,oFAAuB;;6FDOhC,gBAAgB;cAL5B,uDAAS;eAAC;gBACT,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,2BAA2B;gBACxC,SAAS,EAAE,CAAC,2BAA2B,CAAC;aACzC;;;;;;;;;;;;;;AETD;AAAA;AAAA;AAAA;AAAA;AAAyC;AACc;AACU;;;AAEjE,MAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,6EAAgB,EAAE;CAC1C,CAAC;AAOK,MAAM,gBAAgB;;+FAAhB,gBAAgB;0JAAhB,gBAAgB,kBAHlB,CAAC,4DAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9B,4DAAY;mIAEX,gBAAgB,uFAFjB,4DAAY;6FAEX,gBAAgB;cAJ5B,sDAAQ;eAAC;gBACR,OAAO,EAAE,CAAC,4DAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACxC,OAAO,EAAE,CAAC,4DAAY,CAAC;aACxB;;;;;;;;;;;;;;ACZD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyC;AACM;AACkB;AACT;AACT;AACQ;AACF;AACS;AAC4B;AACP;AACZ;AACV;;AAetD,MAAM,SAAS;;wFAAT,SAAS;4IAAT,SAAS,kBAVX;YACP,4DAAY;YACZ,4DAAY;YACZ,kEAAY;YACZ,oEAAgB;YAChB,kEAAmB;YACnB,2FAAwB;YACxB,yEAAc;SACf;mIAEU,SAAS,mBAXL,6EAAgB,EAAE,0EAAe,EAAE,+FAAsB,EAAE,oFAAkB,aAE1F,4DAAY;QACZ,4DAAY;QACZ,kEAAY;QACZ,oEAAgB;QAChB,kEAAmB;QACnB,2FAAwB;QACxB,yEAAc;6FAGL,SAAS;cAZrB,sDAAQ;eAAC;gBACR,YAAY,EAAE,CAAC,6EAAgB,EAAE,0EAAe,EAAE,+FAAsB,EAAE,oFAAkB,CAAC;gBAC7F,OAAO,EAAE;oBACP,4DAAY;oBACZ,4DAAY;oBACZ,kEAAY;oBACZ,oEAAgB;oBAChB,kEAAmB;oBACnB,2FAAwB;oBACxB,yEAAc;iBACf;aACF;;;;;;;;;;;;;;ACzBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACD;AAEoC;;;;;;;ICIpF,wEACE;IAAA,4EAA+C;IAAA,uDAAsB;IAAA,4DAAS;IAChF,qEAAe;;;IADL,0DAAoB;IAApB,iFAAoB;IAAmB,0DAAsB;IAAtB,uFAAsB;;;IAKvE,wEACE;IAAA,4EAA+C;IAAA,uDAAsB;IAAA,4DAAS;IAChF,qEAAe;;;IADL,0DAAoB;IAApB,iFAAoB;IAAmB,0DAAsB;IAAtB,uFAAsB;;ADJxE,MAAM,sBAAsB;IAkBjC,YACS,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QAlB5B,cAAS,GAAc,IAAI,wDAAS,CAAC,EAAE,CAAC,CAAC;QAElD,cAAS,GAAoB,+DAAc,CAAC;IAiBxC,CAAC;IAfL,IAAI,kBAAkB;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACzC,uCACK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KACpB,GAAG,EAAE,CAAC,IACP;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAA,CAAC;IAEF,IAAI,OAAO;QACT,OAAO,EAAE,CAAC;IACZ,CAAC;IAAA,CAAC;IAMF,QAAQ;QACN,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,0DAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,0DAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,0DAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,0DAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC1C,IAAI,IAAI,EAAE;gBACR,YAAY;gBACZ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;aAC1B;QACH,CAAC,CAAC;IACJ,CAAC;;4FA3CU,sBAAsB;sGAAtB,sBAAsB;QCVnC,2EACE;QAAA,qEAAI;QAAA,yEAAc;QAAA,4DAAK;QACvB,0EAEE;QAAA,wEACE;QAAA,4EACE;QAAA,4EAAmC;QAAA,mEAAQ;QAAA,4DAAS;QACpD,oIACE;QAEJ,4DAAS;QACT,4EACE;QAAA,6EAAmC;QAAA,kEAAM;QAAA,4DAAS;QAClD,sIACE;QAEJ,4DAAS;QACT,uEACE;QAAA,4EAAc;QAAA,iEAAK;QAAA,4DAAQ;QAC3B,uEACF;QAAA,4DAAM;QACN,uEACE;QAAA,4EAAc;QAAA,iEAAK;QAAA,4DAAQ;QAC3B,uEACF;QAAA,4DAAM;QACR,qEAAe;QACjB,4DAAO;QACT,4DAAW;;QAxBP,0DAAuB;QAAvB,oFAAuB;QAIL,0DAAyC;QAAzC,2FAAyC;QAMzC,0DAA8B;QAA9B,gFAA8B;;6FDHvC,sBAAsB;cALlC,uDAAS;eAAC;gBACT,QAAQ,EAAE,oBAAoB;gBAC9B,WAAW,EAAE,iCAAiC;gBAC9C,SAAS,EAAE,CAAC,iCAAiC,CAAC;aAC/C;;kBAEE,mDAAK;;;;;;;;;;;;;;;;;;;;AEXmC;;;AAQpC,MAAM,cAAc;IAEzB,YAAoB,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAC1C,cAAS,GAAG,EAAsC,CAAC;IADL,CAAC;IAK/C,MAAM,CAAC,MAAM,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,QAAQ;QAC9B,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACxC,KAAK,CAAC,mFAAmF,CAAC;YAC1F,OAAO,KAAK;SACb;QAED,OAAO,IAAI;IACb,CAAC;IAEa,eAAe,CAAC,QAAyB,EAAE,KAAa,EAAE,aAAqB;;YAC3F,MAAM,OAAO,GAAG;gBACd,WAAW,EAAE;oBACX,aAAa;oBACb,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,YAAY,EAAE,QAAQ,CAAC,KAAK;iBAC7B;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,SAAS;iBAChB;gBACD,KAAK,EAAE;oBACL,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC9D,IAAI,EAAE,QAAQ,CAAC,MAAM;iBACtB;aACF;YAED,IAAI,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAChC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI;gBACvC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI;aAC1B;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,mEAAmE,QAAQ,CAAC,MAAM,EAAE,EAC/G,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAClD,CAAC;YAEF,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;gBAChB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAC,8BAA8B;gBACxD,OAAM;aACP;YAED,OAAO,IAAI,CAAC,YAAY;QAC1B,CAAC;KAAA;;4EArDU,cAAc;iGAAd,cAAc,WAAd,cAAc,mBAFb,MAAM;6FAEP,cAAc;cAH1B,wDAAU;eAAC;gBACV,UAAU,EAAE,MAAM;aACnB","file":"tts-tts-module-es2015.js","sourcesContent":["import { InjectionToken, Component, ChangeDetectionStrategy, ViewEncapsulation, ElementRef, Optional, Inject, Input, NgModule } from '@angular/core';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { mixinColor, MatCommonModule } from '@angular/material/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Platform } from '@angular/cdk/platform';\nimport { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/material/progress-spinner/progress-spinner.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * Base reference size of the spinner.\n * \\@docs-private\n * @type {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/cdk/platform';\nimport * as ɵngcc2 from '@angular/common';\n\nfunction MatProgressSpinner__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r86 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"animation-name\", \"mat-progress-spinner-stroke-rotate-\" + ctx_r86.diameter)(\"stroke-dashoffset\", ctx_r86._strokeDashOffset, \"px\")(\"stroke-dasharray\", ctx_r86._strokeCircumference, \"px\")(\"stroke-width\", ctx_r86._circleStrokeWidth, \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r86._circleRadius);\n} }\nfunction MatProgressSpinner__svg_circle_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r87 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"stroke-dashoffset\", ctx_r87._strokeDashOffset, \"px\")(\"stroke-dasharray\", ctx_r87._strokeCircumference, \"px\")(\"stroke-width\", ctx_r87._circleStrokeWidth, \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r87._circleRadius);\n} }\nfunction MatSpinner__svg_circle_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r88 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"animation-name\", \"mat-progress-spinner-stroke-rotate-\" + ctx_r88.diameter)(\"stroke-dashoffset\", ctx_r88._strokeDashOffset, \"px\")(\"stroke-dasharray\", ctx_r88._strokeCircumference, \"px\")(\"stroke-width\", ctx_r88._circleStrokeWidth, \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r88._circleRadius);\n} }\nfunction MatSpinner__svg_circle_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"circle\", 3);\n} if (rf & 2) {\n const ctx_r89 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"stroke-dashoffset\", ctx_r89._strokeDashOffset, \"px\")(\"stroke-dasharray\", ctx_r89._strokeCircumference, \"px\")(\"stroke-width\", ctx_r89._circleStrokeWidth, \"%\");\n ɵngcc0.ɵɵattribute(\"r\", ctx_r89._circleRadius);\n} }\nconst BASE_SIZE = 100;\n/**\n * Base reference stroke width of the spinner.\n * \\@docs-private\n * @type {?}\n */\nconst BASE_STROKE_WIDTH = 10;\n// Boilerplate for applying mixins to MatProgressSpinner.\n/**\n * \\@docs-private\n */\nclass MatProgressSpinnerBase {\n /**\n * @param {?} _elementRef\n */\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nif (false) {\n /** @type {?} */\n MatProgressSpinnerBase.prototype._elementRef;\n}\n/** @type {?} */\nconst _MatProgressSpinnerMixinBase = mixinColor(MatProgressSpinnerBase, 'primary');\n/**\n * Default `mat-progress-spinner` options that can be overridden.\n * @record\n */\nfunction MatProgressSpinnerDefaultOptions() { }\nif (false) {\n /**\n * Diameter of the spinner.\n * @type {?|undefined}\n */\n MatProgressSpinnerDefaultOptions.prototype.diameter;\n /**\n * Width of the spinner's stroke.\n * @type {?|undefined}\n */\n MatProgressSpinnerDefaultOptions.prototype.strokeWidth;\n /**\n * Whether the animations should be force to be enabled, ignoring if the current environment is\n * using NoopAnimationsModule.\n * @type {?|undefined}\n */\n MatProgressSpinnerDefaultOptions.prototype._forceAnimations;\n}\n/**\n * Injection token to be used to override the default options for `mat-progress-spinner`.\n * @type {?}\n */\nconst MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS = new InjectionToken('mat-progress-spinner-default-options', {\n providedIn: 'root',\n factory: MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY,\n});\n/**\n * \\@docs-private\n * @return {?}\n */\nfunction MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY() {\n return { diameter: BASE_SIZE };\n}\n// .0001 percentage difference is necessary in order to avoid unwanted animation frames\n// for example because the animation duration is 4 seconds, .1% accounts to 4ms\n// which are enough to see the flicker described in\n// https://github.com/angular/components/issues/8984\n/** @type {?} */\nconst INDETERMINATE_ANIMATION_TEMPLATE = `\n @keyframes mat-progress-spinner-stroke-rotate-DIAMETER {\n 0% { stroke-dashoffset: START_VALUE; transform: rotate(0); }\n 12.5% { stroke-dashoffset: END_VALUE; transform: rotate(0); }\n 12.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n 25% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(72.5deg); }\n\n 25.0001% { stroke-dashoffset: START_VALUE; transform: rotate(270deg); }\n 37.5% { stroke-dashoffset: END_VALUE; transform: rotate(270deg); }\n 37.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n 50% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(161.5deg); }\n\n 50.0001% { stroke-dashoffset: START_VALUE; transform: rotate(180deg); }\n 62.5% { stroke-dashoffset: END_VALUE; transform: rotate(180deg); }\n 62.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n 75% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(251.5deg); }\n\n 75.0001% { stroke-dashoffset: START_VALUE; transform: rotate(90deg); }\n 87.5% { stroke-dashoffset: END_VALUE; transform: rotate(90deg); }\n 87.5001% { stroke-dashoffset: END_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n 100% { stroke-dashoffset: START_VALUE; transform: rotateX(180deg) rotate(341.5deg); }\n }\n`;\n/**\n * `<mat-progress-spinner>` component.\n */\nclass MatProgressSpinner extends _MatProgressSpinnerMixinBase {\n /**\n * @param {?} _elementRef\n * @param {?} platform\n * @param {?} _document\n * @param {?} animationMode\n * @param {?=} defaults\n */\n constructor(_elementRef, platform, _document, animationMode, defaults) {\n super(_elementRef);\n this._elementRef = _elementRef;\n this._document = _document;\n this._diameter = BASE_SIZE;\n this._value = 0;\n this._fallbackAnimation = false;\n /**\n * Mode of the progress circle\n */\n this.mode = 'determinate';\n /** @type {?} */\n const trackedDiameters = MatProgressSpinner._diameters;\n // The base size is already inserted via the component's structural styles. We still\n // need to track it so we don't end up adding the same styles again.\n if (!trackedDiameters.has(_document.head)) {\n trackedDiameters.set(_document.head, new Set([BASE_SIZE]));\n }\n this._fallbackAnimation = platform.EDGE || platform.TRIDENT;\n this._noopAnimations = animationMode === 'NoopAnimations' &&\n (!!defaults && !defaults._forceAnimations);\n if (defaults) {\n if (defaults.diameter) {\n this.diameter = defaults.diameter;\n }\n if (defaults.strokeWidth) {\n this.strokeWidth = defaults.strokeWidth;\n }\n }\n }\n /**\n * The diameter of the progress spinner (will set width and height of svg).\n * @return {?}\n */\n get diameter() { return this._diameter; }\n /**\n * @param {?} size\n * @return {?}\n */\n set diameter(size) {\n this._diameter = coerceNumberProperty(size);\n // If this is set before `ngOnInit`, the style root may not have been resolved yet.\n if (!this._fallbackAnimation && this._styleRoot) {\n this._attachStyleNode();\n }\n }\n /**\n * Stroke width of the progress spinner.\n * @return {?}\n */\n get strokeWidth() {\n return this._strokeWidth || this.diameter / 10;\n }\n /**\n * @param {?} value\n * @return {?}\n */\n set strokeWidth(value) {\n this._strokeWidth = coerceNumberProperty(value);\n }\n /**\n * Value of the progress circle.\n * @return {?}\n */\n get value() {\n return this.mode === 'determinate' ? this._value : 0;\n }\n /**\n * @param {?} newValue\n * @return {?}\n */\n set value(newValue) {\n this._value = Math.max(0, Math.min(100, coerceNumberProperty(newValue)));\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n /** @type {?} */\n const element = this._elementRef.nativeElement;\n // Note that we need to look up the root node in ngOnInit, rather than the constructor, because\n // Angular seems to create the element outside the shadow root and then moves it inside, if the\n // node is inside an `ngIf` and a ShadowDom-encapsulated component.\n this._styleRoot = _getShadowRoot(element, this._document) || this._document.head;\n this._attachStyleNode();\n // On IE and Edge, we can't animate the `stroke-dashoffset`\n // reliably so we fall back to a non-spec animation.\n /** @type {?} */\n const animationClass = `mat-progress-spinner-indeterminate${this._fallbackAnimation ? '-fallback' : ''}-animation`;\n element.classList.add(animationClass);\n }\n /**\n * The radius of the spinner, adjusted for stroke width.\n * @return {?}\n */\n get _circleRadius() {\n return (this.diameter - BASE_STROKE_WIDTH) / 2;\n }\n /**\n * The view box of the spinner's svg element.\n * @return {?}\n */\n get _viewBox() {\n /** @type {?} */\n const viewBox = this._circleRadius * 2 + this.strokeWidth;\n return `0 0 ${viewBox} ${viewBox}`;\n }\n /**\n * The stroke circumference of the svg circle.\n * @return {?}\n */\n get _strokeCircumference() {\n return 2 * Math.PI * this._circleRadius;\n }\n /**\n * The dash offset of the svg circle.\n * @return {?}\n */\n get _strokeDashOffset() {\n if (this.mode === 'determinate') {\n return this._strokeCircumference * (100 - this._value) / 100;\n }\n // In fallback mode set the circle to 80% and rotate it with CSS.\n if (this._fallbackAnimation && this.mode === 'indeterminate') {\n return this._strokeCircumference * 0.2;\n }\n return null;\n }\n /**\n * Stroke width of the circle in percent.\n * @return {?}\n */\n get _circleStrokeWidth() {\n return this.strokeWidth / this.diameter * 100;\n }\n /**\n * Dynamically generates a style tag containing the correct animation for this diameter.\n * @private\n * @return {?}\n */\n _attachStyleNode() {\n /** @type {?} */\n const styleRoot = this._styleRoot;\n /** @type {?} */\n const currentDiameter = this._diameter;\n /** @type {?} */\n const diameters = MatProgressSpinner._diameters;\n /** @type {?} */\n let diametersForElement = diameters.get(styleRoot);\n if (!diametersForElement || !diametersForElement.has(currentDiameter)) {\n /** @type {?} */\n const styleTag = this._document.createElement('style');\n styleTag.setAttribute('mat-spinner-animation', currentDiameter + '');\n styleTag.textContent = this._getAnimationText();\n styleRoot.appendChild(styleTag);\n if (!diametersForElement) {\n diametersForElement = new Set();\n diameters.set(styleRoot, diametersForElement);\n }\n diametersForElement.add(currentDiameter);\n }\n }\n /**\n * Generates animation styles adjusted for the spinner's diameter.\n * @private\n * @return {?}\n */\n _getAnimationText() {\n return INDETERMINATE_ANIMATION_TEMPLATE\n // Animation should begin at 5% and end at 80%\n .replace(/START_VALUE/g, `${0.95 * this._strokeCircumference}`)\n .replace(/END_VALUE/g, `${0.2 * this._strokeCircumference}`)\n .replace(/DIAMETER/g, `${this.diameter}`);\n }\n}\nMatProgressSpinner.ɵfac = function MatProgressSpinner_Factory(t) { return new (t || MatProgressSpinner)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Platform), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵngcc0.ɵɵdirectiveInject(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS)); };\nMatProgressSpinner.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatProgressSpinner, selectors: [[\"mat-progress-spinner\"]], hostAttrs: [\"role\", \"progressbar\", 1, \"mat-progress-spinner\"], hostVars: 10, hostBindings: function MatProgressSpinner_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-valuemin\", ctx.mode === \"determinate\" ? 0 : null)(\"aria-valuemax\", ctx.mode === \"determinate\" ? 100 : null)(\"aria-valuenow\", ctx.mode === \"determinate\" ? ctx.value : null)(\"mode\", ctx.mode);\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._noopAnimations);\n } }, inputs: { color: \"color\", mode: \"mode\", diameter: \"diameter\", strokeWidth: \"strokeWidth\", value: \"value\" }, exportAs: [\"matProgressSpinner\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 8, consts: [[\"preserveAspectRatio\", \"xMidYMid meet\", \"focusable\", \"false\", 3, \"ngSwitch\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"animation-name\", \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\"]], template: function MatProgressSpinner_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"svg\", 0);\n ɵngcc0.ɵɵtemplate(1, MatProgressSpinner__svg_circle_1_Template, 1, 9, \"circle\", 1);\n ɵngcc0.ɵɵtemplate(2, MatProgressSpinner__svg_circle_2_Template, 1, 7, \"circle\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.mode === \"indeterminate\");\n ɵngcc0.ɵɵattribute(\"viewBox\", ctx._viewBox);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n } }, directives: [ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase], styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10000ms cubic-bezier(0.87, 0.03, 0.33, 1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0deg)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\\n\"], encapsulation: 2, changeDetection: 0 });\n/**\n * Tracks diameters of existing instances to de-dupe generated styles (default d = 100).\n * We need to keep track of which elements the diameters were attached to, because for\n * elements in the Shadow DOM the style tags are attached to the shadow root, rather\n * than the document head.\n */\nMatProgressSpinner._diameters = new WeakMap();\n/** @nocollapse */\nMatProgressSpinner.ctorParameters = () => [\n { type: ElementRef },\n { type: Platform },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS,] }] }\n];\nMatProgressSpinner.propDecorators = {\n diameter: [{ type: Input }],\n strokeWidth: [{ type: Input }],\n mode: [{ type: Input }],\n value: [{ type: Input }]\n};\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(MatProgressSpinner, [{\n type: Component,\n args: [{\n selector: 'mat-progress-spinner',\n exportAs: 'matProgressSpinner',\n host: {\n 'role': 'progressbar',\n 'class': 'mat-progress-spinner',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter',\n '[attr.aria-valuemin]': 'mode === \"determinate\" ? 0 : null',\n '[attr.aria-valuemax]': 'mode === \"determinate\" ? 100 : null',\n '[attr.aria-valuenow]': 'mode === \"determinate\" ? value : null',\n '[attr.mode]': 'mode'\n },\n inputs: ['color'],\n template: \"<!--\\n preserveAspectRatio of xMidYMid meet as the center of the viewport is the circle's\\n center. The center of the circle will remain at the center of the mat-progress-spinner\\n element containing the SVG. `focusable=\\\"false\\\"` prevents IE from allowing the user to\\n tab into the SVG element.\\n-->\\n\\n<svg\\n [style.width.px]=\\\"diameter\\\"\\n [style.height.px]=\\\"diameter\\\"\\n [attr.viewBox]=\\\"_viewBox\\\"\\n preserveAspectRatio=\\\"xMidYMid meet\\\"\\n focusable=\\\"false\\\"\\n [ngSwitch]=\\\"mode === 'indeterminate'\\\">\\n\\n <!--\\n Technically we can reuse the same `circle` element, however Safari has an issue that breaks\\n the SVG rendering in determinate mode, after switching between indeterminate and determinate.\\n Using a different element avoids the issue. An alternative to this is adding `display: none`\\n for a split second and then removing it when switching between modes, but it's hard to know\\n for how long to hide the element and it can cause the UI to blink.\\n -->\\n <circle\\n *ngSwitchCase=\\\"true\\\"\\n cx=\\\"50%\\\"\\n cy=\\\"50%\\\"\\n [attr.r]=\\\"_circleRadius\\\"\\n [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\"\\n [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\"\\n [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\"\\n [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle>\\n\\n <circle\\n *ngSwitchCase=\\\"false\\\"\\n cx=\\\"50%\\\"\\n cy=\\\"50%\\\"\\n [attr.r]=\\\"_circleRadius\\\"\\n [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\"\\n [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\"\\n [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle>\\n</svg>\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10000ms cubic-bezier(0.87, 0.03, 0.33, 1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0deg)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS]\n }] }]; }, { mode: [{\n type: Input\n }], diameter: [{\n type: Input\n }], strokeWidth: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\nif (false) {\n /**\n * Tracks diameters of existing instances to de-dupe generated styles (default d = 100).\n * We need to keep track of which elements the diameters were attached to, because for\n * elements in the Shadow DOM the style tags are attached to the shadow root, rather\n * than the document head.\n * @type {?}\n * @private\n */\n MatProgressSpinner._diameters;\n /** @type {?} */\n MatProgressSpinner.ngAcceptInputType_diameter;\n /** @type {?} */\n MatProgressSpinner.ngAcceptInputType_strokeWidth;\n /** @type {?} */\n MatProgressSpinner.ngAcceptInputType_value;\n /**\n * @type {?}\n * @private\n */\n MatProgressSpinner.prototype._diameter;\n /**\n * @type {?}\n * @private\n */\n MatProgressSpinner.prototype._value;\n /**\n * @type {?}\n * @private\n */\n MatProgressSpinner.prototype._strokeWidth;\n /**\n * @type {?}\n * @private\n */\n MatProgressSpinner.prototype._fallbackAnimation;\n /**\n * Element to which we should add the generated style tags for the indeterminate animation.\n * For most elements this is the document, but for the ones in the Shadow DOM we need to\n * use the shadow root.\n * @type {?}\n * @private\n */\n MatProgressSpinner.prototype._styleRoot;\n /**\n * Whether the _mat-animation-noopable class should be applied, disabling animations.\n * @type {?}\n */\n MatProgressSpinner.prototype._noopAnimations;\n /**\n * Mode of the progress circle\n * @type {?}\n */\n MatProgressSpinner.prototype.mode;\n /** @type {?} */\n MatProgressSpinner.prototype._elementRef;\n /**\n * @type {?}\n * @private\n */\n MatProgressSpinner.prototype._document;\n}\n/**\n * `<mat-spinner>` component.\n *\n * This is a component definition to be used as a convenience reference to create an\n * indeterminate `<mat-progress-spinner>` instance.\n */\nclass MatSpinner extends MatProgressSpinner {\n /**\n * @param {?} elementRef\n * @param {?} platform\n * @param {?} document\n * @param {?} animationMode\n * @param {?=} defaults\n */\n constructor(elementRef, platform, document, animationMode, defaults) {\n super(elementRef, platform, document, animationMode, defaults);\n this.mode = 'indeterminate';\n }\n}\nMatSpinner.ɵfac = function MatSpinner_Factory(t) { return new (t || MatSpinner)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.Platform), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8), ɵngcc0.ɵɵdirectiveInject(ANIMATION_MODULE_TYPE, 8), ɵngcc0.ɵɵdirectiveInject(MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS)); };\nMatSpinner.ɵcmp = ɵngcc0.ɵɵdefineComponent({ type: MatSpinner, selectors: [[\"mat-spinner\"]], hostAttrs: [\"role\", \"progressbar\", \"mode\", \"indeterminate\", 1, \"mat-spinner\", \"mat-progress-spinner\"], hostVars: 6, hostBindings: function MatSpinner_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵclassProp(\"_mat-animation-noopable\", ctx._noopAnimations);\n } }, inputs: { color: \"color\" }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 3, vars: 8, consts: [[\"preserveAspectRatio\", \"xMidYMid meet\", \"focusable\", \"false\", 3, \"ngSwitch\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"animation-name\", \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\", 3, \"stroke-dashoffset\", \"stroke-dasharray\", \"stroke-width\", 4, \"ngSwitchCase\"], [\"cx\", \"50%\", \"cy\", \"50%\"]], template: function MatSpinner_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"svg\", 0);\n ɵngcc0.ɵɵtemplate(1, MatSpinner__svg_circle_1_Template, 1, 9, \"circle\", 1);\n ɵngcc0.ɵɵtemplate(2, MatSpinner__svg_circle_2_Template, 1, 7, \"circle\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.diameter, \"px\")(\"height\", ctx.diameter, \"px\");\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.mode === \"indeterminate\");\n ɵngcc0.ɵɵattribute(\"viewBox\", ctx._viewBox);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", true);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", false);\n } }, directives: [ɵngcc2.NgSwitch, ɵngcc2.NgSwitchCase], styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10000ms cubic-bezier(0.87, 0.03, 0.33, 1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0deg)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\\n\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nMatSpinner.ctorParameters = () => [\n { type: ElementRef },\n { type: Platform },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] },\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [ANIMATION_MODULE_TYPE,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS,] }] }\n];\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(MatSpinner, [{\n type: Component,\n args: [{\n selector: 'mat-spinner',\n host: {\n 'role': 'progressbar',\n 'mode': 'indeterminate',\n 'class': 'mat-spinner mat-progress-spinner',\n '[class._mat-animation-noopable]': `_noopAnimations`,\n '[style.width.px]': 'diameter',\n '[style.height.px]': 'diameter'\n },\n inputs: ['color'],\n template: \"<!--\\n preserveAspectRatio of xMidYMid meet as the center of the viewport is the circle's\\n center. The center of the circle will remain at the center of the mat-progress-spinner\\n element containing the SVG. `focusable=\\\"false\\\"` prevents IE from allowing the user to\\n tab into the SVG element.\\n-->\\n\\n<svg\\n [style.width.px]=\\\"diameter\\\"\\n [style.height.px]=\\\"diameter\\\"\\n [attr.viewBox]=\\\"_viewBox\\\"\\n preserveAspectRatio=\\\"xMidYMid meet\\\"\\n focusable=\\\"false\\\"\\n [ngSwitch]=\\\"mode === 'indeterminate'\\\">\\n\\n <!--\\n Technically we can reuse the same `circle` element, however Safari has an issue that breaks\\n the SVG rendering in determinate mode, after switching between indeterminate and determinate.\\n Using a different element avoids the issue. An alternative to this is adding `display: none`\\n for a split second and then removing it when switching between modes, but it's hard to know\\n for how long to hide the element and it can cause the UI to blink.\\n -->\\n <circle\\n *ngSwitchCase=\\\"true\\\"\\n cx=\\\"50%\\\"\\n cy=\\\"50%\\\"\\n [attr.r]=\\\"_circleRadius\\\"\\n [style.animation-name]=\\\"'mat-progress-spinner-stroke-rotate-' + diameter\\\"\\n [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\"\\n [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\"\\n [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle>\\n\\n <circle\\n *ngSwitchCase=\\\"false\\\"\\n cx=\\\"50%\\\"\\n cy=\\\"50%\\\"\\n [attr.r]=\\\"_circleRadius\\\"\\n [style.stroke-dashoffset.px]=\\\"_strokeDashOffset\\\"\\n [style.stroke-dasharray.px]=\\\"_strokeCircumference\\\"\\n [style.stroke-width.%]=\\\"_circleStrokeWidth\\\"></circle>\\n</svg>\\n\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".mat-progress-spinner{display:block;position:relative}.mat-progress-spinner svg{position:absolute;transform:rotate(-90deg);top:0;left:0;transform-origin:center;overflow:visible}.mat-progress-spinner circle{fill:transparent;transform-origin:center;transition:stroke-dashoffset 225ms linear}._mat-animation-noopable.mat-progress-spinner circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{animation:mat-progress-spinner-linear-rotate 2000ms linear infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition-property:stroke;animation-duration:4000ms;animation-timing-function:cubic-bezier(0.35, 0, 0.25, 1);animation-iteration-count:infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-animation[mode=indeterminate] circle{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{animation:mat-progress-spinner-stroke-rotate-fallback 10000ms cubic-bezier(0.87, 0.03, 0.33, 1) infinite}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate]{transition:none;animation:none}.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition-property:stroke}._mat-animation-noopable.mat-progress-spinner.mat-progress-spinner-indeterminate-fallback-animation[mode=indeterminate] circle{transition:none;animation:none}@keyframes mat-progress-spinner-linear-rotate{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes mat-progress-spinner-stroke-rotate-100{0%{stroke-dashoffset:268.606171575px;transform:rotate(0)}12.5%{stroke-dashoffset:56.5486677px;transform:rotate(0)}12.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(72.5deg)}25%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(72.5deg)}25.0001%{stroke-dashoffset:268.606171575px;transform:rotate(270deg)}37.5%{stroke-dashoffset:56.5486677px;transform:rotate(270deg)}37.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(161.5deg)}50%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(161.5deg)}50.0001%{stroke-dashoffset:268.606171575px;transform:rotate(180deg)}62.5%{stroke-dashoffset:56.5486677px;transform:rotate(180deg)}62.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(251.5deg)}75%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(251.5deg)}75.0001%{stroke-dashoffset:268.606171575px;transform:rotate(90deg)}87.5%{stroke-dashoffset:56.5486677px;transform:rotate(90deg)}87.5001%{stroke-dashoffset:56.5486677px;transform:rotateX(180deg) rotate(341.5deg)}100%{stroke-dashoffset:268.606171575px;transform:rotateX(180deg) rotate(341.5deg)}}@keyframes mat-progress-spinner-stroke-rotate-fallback{0%{transform:rotate(0deg)}25%{transform:rotate(1170deg)}50%{transform:rotate(2340deg)}75%{transform:rotate(3510deg)}100%{transform:rotate(4680deg)}}\\n\"]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc1.Platform }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [ANIMATION_MODULE_TYPE]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS]\n }] }]; }, null); })();\n/**\n * Gets the shadow root of an element, if supported and the element is inside the Shadow DOM.\n * @param {?} element\n * @param {?} _document\n * @return {?}\n */\nfunction _getShadowRoot(element, _document) {\n // TODO(crisbeto): see whether we should move this into the CDK\n // feature detection utilities once #15616 gets merged in.\n if (typeof window !== 'undefined') {\n /** @type {?} */\n const head = _document.head;\n // Check whether the browser supports Shadow DOM.\n if (head && (((/** @type {?} */ (head))).createShadowRoot || head.attachShadow)) {\n /** @type {?} */\n const rootNode = element.getRootNode ? element.getRootNode() : null;\n // We need to take the `ShadowRoot` off of `window`, because the built-in types are\n // incorrect. See https://github.com/Microsoft/TypeScript/issues/27929.\n if (rootNode instanceof ((/** @type {?} */ (window))).ShadowRoot) {\n return rootNode;\n }\n }\n }\n return null;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/material/progress-spinner/progress-spinner-module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass MatProgressSpinnerModule {\n}\nMatProgressSpinnerModule.ɵmod = ɵngcc0.ɵɵdefineNgModule({ type: MatProgressSpinnerModule });\nMatProgressSpinnerModule.ɵinj = ɵngcc0.ɵɵdefineInjector({ factory: function MatProgressSpinnerModule_Factory(t) { return new (t || MatProgressSpinnerModule)(); }, imports: [[MatCommonModule, CommonModule],\n MatCommonModule] });\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(MatProgressSpinnerModule, { declarations: function () { return [MatProgressSpinner,\n MatSpinner]; }, imports: function () { return [MatCommonModule, CommonModule]; }, exports: function () { return [MatProgressSpinner,\n MatSpinner,\n MatCommonModule]; } }); })();\n/*@__PURE__*/ (function () { ɵngcc0.ɵsetClassMetadata(MatProgressSpinnerModule, [{\n type: NgModule,\n args: [{\n imports: [MatCommonModule, CommonModule],\n exports: [\n MatProgressSpinner,\n MatSpinner,\n MatCommonModule\n ],\n declarations: [\n MatProgressSpinner,\n MatSpinner\n ]\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: src/material/progress-spinner/public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS, MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, MatProgressSpinner, MatProgressSpinnerModule, MatSpinner };\n\n//# sourceMappingURL=progress-spinner.js.map","export enum LoadingStatus {\r\n LOADING = 'LOADING',\r\n ERROR = 'ERROR',\r\n OK = 'OK'\r\n}\r\n\r\nexport class LoadingState {\r\n status: LoadingStatus;\r\n message?: string;\r\n\r\n constructor(status: LoadingStatus, message?: string) {\r\n this.status = status;\r\n this.message = message;\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ApiKeyService } from './api-key.service';\n\n@Component({\n selector: 'app-api-key',\n templateUrl: './api-key.component.html',\n styleUrls: ['./api-key.component.scss']\n})\nexport class ApiKeyComponent implements OnInit {\n apiKeyForm = new FormControl('');\n editing = false;\n\n get apiKeyIsValid() {\n return this.apiKeyForm.value && this.apiKeyForm.value === this.apiKeyService.apiKey\n }\n constructor(public apiKeyService: ApiKeyService) {\n this.apiKeyService.apiKey$.subscribe(apiKey => {\n this.apiKeyForm.setValue(apiKey);\n })\n }\n\n ngOnInit(): void {\n }\n\n saveApiKey() {\n this.apiKeyService.verifyAndSetApiKey(\n this.apiKeyForm.value\n );\n }\n}\n","<mat-card>\n <h3>WaveNet API Key <sup [routerLink]=\"'/help'\">What is this ?</sup></h3>\n <div class=\"key-input-container\">\n <input\n [type]=\"(!editing && apiKeyIsValid) ? 'password' : 'text'\"\n [formControl]=\"apiKeyForm\"\n type=\"text\" placeholder=\"API Key\"\n (click)=\"editing = true\"\n >\n <button (click)=\"saveApiKey()\">Save</button>\n <ng-container\n *ngIf=\"(apiKeyService.apiKeyState$ | async).status === 'LOADING'; else check\"\n >\n <mat-spinner\n strokeWidth=\"4\"\n [diameter]=\"20\"></mat-spinner>\n </ng-container>\n\n <ng-template #check>\n <mat-icon\n style=\"color: lightgreen\"\n *ngIf=\"apiKeyIsValid; else notValid\"\n >check_circle</mat-icon>\n <ng-template #notValid>\n <mat-icon></mat-icon>\n </ng-template>\n </ng-template>\n\n </div>\n\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { LoadingState, LoadingStatus } from '../../shared/models/loading-state';\nimport { HttpClient } from '@angular/common/http';\nimport { SnackService } from '../../services/snack.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ApiKeyService {\n // Only set if 100% sure we've got a right api Key !\n private _apiKey = new BehaviorSubject<string>('');\n\n public readonly apiKey$ = this._apiKey.asObservable();\n\n private _apiKeyState = new BehaviorSubject<LoadingState>(new LoadingState(LoadingStatus.OK))\n public readonly apiKeyState$ = this._apiKeyState.asObservable();\n\n get apiKey() {\n return this._apiKey.getValue();\n }\n\n get apiKeyState(): LoadingState {\n return this._apiKeyState.getValue();\n }\n\n set apiKeyState(state: LoadingState) {\n this._apiKeyState.next(state);\n }\n\n verifyAndSetApiKey(apiKey: string) {\n if (apiKey === 'fake') {\n this.apiKeyState = (new LoadingState(LoadingStatus.LOADING));\n setTimeout(() => {\n localStorage.setItem('apiKey', apiKey);\n this.apiKeyState = (new LoadingState(LoadingStatus.OK));\n this._apiKey.next(apiKey);\n }, 1000);\n }\n if (!apiKey) {\n return;\n }\n if (this.apiKeyState.status === LoadingStatus.LOADING) {\n return;\n }\n this.apiKeyState = (new LoadingState(LoadingStatus.LOADING));\n this.httpClient.get('https://texttospeech.googleapis.com/v1beta1/voices?key=' + apiKey).subscribe(\n (data: any) => {\n console.log(data);\n localStorage.setItem('apiKey', apiKey);\n this._apiKey.next(apiKey);\n this.apiKeyState = new LoadingState(LoadingStatus.OK);\n // for (const voice of data.voices) {\n // const languageCode = voice.languageCodes[0].split('-')[0]\n // if (!voice.name.includes('Wavenet')) continue\n //\n // try {\n // const language: string = BCP47Languages[languageCode].displayName\n // if(!(language in this.languages)) {\n // this.languages[language] = []\n // }\n // this.languages[language].push(voice.name)\n // } catch (e) {\n // console.error(`Language with code ${languageCode} is unsuported.`, e)\n // }\n // }\n }, (error) => {\n console.log(error);\n this.snackService.displayError('API Key is invalid.')\n this.apiKeyState = new LoadingState(LoadingStatus.ERROR, JSON.stringify(error));\n });\n }\n\n constructor(private httpClient: HttpClient,\n private snackService: SnackService) {\n const apiKey = localStorage.getItem('apiKey');\n this.verifyAndSetApiKey(apiKey);\n }\n}\n","export type LanguageOption = {name: string, displayName: string, key?: string}\r\nexport type LanguageOptions = {[key: string]: LanguageOption}\r\n\r\nconst BCP47Languages = {\r\n aa: {\r\n name: 'Afar',\r\n displayName: 'Afaraf',\r\n },\r\n ab: {\r\n name: 'Abkhaz',\r\n displayName: 'аҧсуа бызшәа',\r\n },\r\n ae: {\r\n name: 'Avestan',\r\n displayName: 'avesta',\r\n },\r\n af: {\r\n name: 'Afrikaans',\r\n displayName: 'Afrikaans',\r\n },\r\n ak: {\r\n name: 'Akan',\r\n displayName: 'Akan',\r\n },\r\n am: {\r\n name: 'Amharic',\r\n displayName: 'አማርኛ',\r\n },\r\n an: {\r\n name: 'Aragonese',\r\n displayName: 'aragonés',\r\n },\r\n ar: {\r\n name: 'Arabic',\r\n displayName: 'Arabic',\r\n },\r\n as: {\r\n name: 'Assamese',\r\n displayName: 'অসমীয়া',\r\n },\r\n av: {\r\n name: 'Avaric',\r\n displayName: 'авар мацӀ',\r\n },\r\n ay: {\r\n name: 'Aymara',\r\n displayName: 'aymar aru',\r\n },\r\n az: {\r\n name: 'Azerbaijani',\r\n displayName: 'azərbaycan dili',\r\n },\r\n ba: {\r\n name: 'Bashkir',\r\n displayName: 'башҡорт теле',\r\n },\r\n be: {\r\n name: 'Belarusian',\r\n displayName: 'беларуская мова',\r\n },\r\n bg: {\r\n name: 'Bulgarian',\r\n displayName: 'български език',\r\n },\r\n bh: {\r\n name: 'Bihari',\r\n displayName: 'भोजपुरी',\r\n },\r\n bi: {\r\n name: 'Bislama',\r\n displayName: 'Bislama',\r\n },\r\n bm: {\r\n name: 'Bambara',\r\n displayName: 'bamanankan',\r\n },\r\n bn: {\r\n name: 'Bengali',\r\n displayName: 'বাংলা',\r\n },\r\n bo: {\r\n name: 'Tibetan Standard',\r\n displayName: 'བོད་ཡིག',\r\n },\r\n br: {\r\n name: 'Breton',\r\n displayName: 'brezhoneg',\r\n },\r\n bs: {\r\n name: 'Bosnian',\r\n displayName: 'bosanski jezik',\r\n },\r\n ca: {\r\n name: 'Catalan',\r\n displayName: 'català',\r\n },\r\n ce: {\r\n name: 'Chechen',\r\n displayName: 'нохчийн мотт',\r\n },\r\n ch: {\r\n name: 'Chamorro',\r\n displayName: 'Chamoru',\r\n },\r\n co: {\r\n name: 'Corsican',\r\n displayName: 'corsu',\r\n },\r\n cr: {\r\n name: 'Cree',\r\n displayName: 'ᓀᐦᐃᔭᐍᐏᐣ',\r\n },\r\n cs: {\r\n name: 'Czech',\r\n displayName: 'čeština',\r\n },\r\n cu: {\r\n name: 'Old Church Slavonic',\r\n displayName: 'ѩзыкъ словѣньскъ',\r\n },\r\n cv: {\r\n name: 'Chuvash',\r\n displayName: 'чӑваш чӗлхи',\r\n },\r\n cy: {\r\n name: 'Welsh',\r\n displayName: 'Cymraeg',\r\n },\r\n da: {\r\n name: 'Danish',\r\n displayName: 'dansk',\r\n },\r\n de: {\r\n name: 'German',\r\n displayName: 'Deutsch',\r\n },\r\n dv: {\r\n name: 'Divehi',\r\n displayName: 'Dhivehi',\r\n },\r\n dz: {\r\n name: 'Dzongkha',\r\n displayName: 'རྫོང་ཁ',\r\n },\r\n ee: {\r\n name: 'Ewe',\r\n displayName: 'Eʋegbe',\r\n },\r\n el: {\r\n name: 'Greek',\r\n displayName: 'Ελληνικά',\r\n },\r\n en: {\r\n name: 'English',\r\n displayName: 'English',\r\n },\r\n eo: {\r\n name: 'Esperanto',\r\n displayName: 'Esperanto',\r\n },\r\n es: {\r\n name: 'Spanish',\r\n displayName: 'Español',\r\n },\r\n et: {\r\n name: 'Estonian',\r\n displayName: 'eesti',\r\n },\r\n eu: {\r\n name: 'Basque',\r\n displayName: 'euskara',\r\n },\r\n fa: {\r\n name: 'Persian',\r\n displayName: 'فارسی',\r\n },\r\n ff: {\r\n name: 'Fula',\r\n displayName: 'Fulfulde',\r\n },\r\n fi: {\r\n name: 'Finnish',\r\n displayName: 'suomi',\r\n },\r\n fil: {\r\n name: 'Filipino',\r\n displayName: 'Pilipino'\r\n },\r\n fj: {\r\n name: 'Fijian',\r\n displayName: 'Vakaviti',\r\n },\r\n fo: {\r\n name: 'Faroese',\r\n displayName: 'føroyskt',\r\n },\r\n fr: {\r\n name: 'French',\r\n displayName: 'Français',\r\n },\r\n fy: {\r\n name: 'Western Frisian',\r\n displayName: 'Frysk',\r\n },\r\n ga: {\r\n name: 'Irish',\r\n displayName: 'Gaeilge',\r\n },\r\n gd: {\r\n name: 'Scottish Gaelic',\r\n displayName: 'Gàidhlig',\r\n },\r\n gl: {\r\n name: 'Galician',\r\n displayName: 'galego',\r\n },\r\n gn: {\r\n name: 'Guaraní',\r\n displayName: \"Avañe'ẽ\",\r\n },\r\n gu: {\r\n name: 'Gujarati',\r\n displayName: 'ગુજરાતી',\r\n },\r\n gv: {\r\n name: 'Manx',\r\n displayName: 'Gaelg',\r\n },\r\n ha: {\r\n name: 'Hausa',\r\n displayName: 'هَوُسَ',\r\n },\r\n he: {\r\n name: 'Hebrew',\r\n displayName: 'עברית',\r\n },\r\n hi: {\r\n name: 'Hindi',\r\n displayName: 'हिन्दी',\r\n },\r\n ho: {\r\n name: 'Hiri Motu',\r\n displayName: 'Hiri Motu',\r\n },\r\n hr: {\r\n name: 'Croatian',\r\n displayName: 'hrvatski jezik',\r\n },\r\n ht: {\r\n name: 'Haitian',\r\n displayName: 'Kreyòl ayisyen',\r\n },\r\n hu: {\r\n name: 'Hungarian',\r\n displayName: 'magyar',\r\n },\r\n hy: {\r\n name: 'Armenian',\r\n displayName: 'Հայերեն',\r\n },\r\n hz: {\r\n name: 'Herero',\r\n displayName: 'Otjiherero',\r\n },\r\n ia: {\r\n name: 'Interlingua',\r\n displayName: 'Interlingua',\r\n },\r\n id: {\r\n name: 'Indonesian',\r\n displayName: 'Indonesian',\r\n },\r\n ie: {\r\n name: 'Interlingue',\r\n displayName: 'Interlingue',\r\n },\r\n ig: {\r\n name: 'Igbo',\r\n displayName: 'Asụsụ Igbo',\r\n },\r\n ii: {\r\n name: 'Nuosu',\r\n displayName: 'ꆈꌠ꒿ Nuosuhxop',\r\n },\r\n ik: {\r\n name: 'Inupiaq',\r\n displayName: 'Iñupiaq',\r\n },\r\n io: {\r\n name: 'Ido',\r\n displayName: 'Ido',\r\n },\r\n is: {\r\n name: 'Icelandic',\r\n displayName: 'Íslenska',\r\n },\r\n it: {\r\n name: 'Italian',\r\n displayName: 'Italiano',\r\n },\r\n iu: {\r\n name: 'Inuktitut',\r\n displayName: 'ᐃᓄᒃᑎᑐᑦ',\r\n },\r\n ja: {\r\n name: 'Japanese',\r\n displayName: '日本語',\r\n },\r\n jv: {\r\n name: 'Javanese',\r\n displayName: 'basa Jawa',\r\n },\r\n ka: {\r\n name: 'Georgian',\r\n displayName: 'ქართული',\r\n },\r\n kg: {\r\n name: 'Kongo',\r\n displayName: 'Kikongo',\r\n },\r\n ki: {\r\n name: 'Kikuyu',\r\n displayName: 'Gĩkũyũ',\r\n },\r\n kj: {\r\n name: 'Kwanyama',\r\n displayName: 'Kuanyama',\r\n },\r\n kk: {\r\n name: 'Kazakh',\r\n displayName: 'қазақ тілі',\r\n },\r\n kl: {\r\n name: 'Kalaallisut',\r\n displayName: 'kalaallisut',\r\n },\r\n km: {\r\n name: 'Khmer',\r\n displayName: 'ខេមរភាសា',\r\n },\r\n kn: {\r\n name: 'Kannada',\r\n displayName: 'ಕನ್ನಡ',\r\n },\r\n ko: {\r\n name: 'Korean',\r\n displayName: '한국어',\r\n },\r\n kr: {\r\n name: 'Kanuri',\r\n displayName: 'Kanuri',\r\n },\r\n ks: {\r\n name: 'Kashmiri',\r\n displayName: 'कश्मीरी',\r\n },\r\n ku: {\r\n name: 'Kurdish',\r\n displayName: 'Kurdî',\r\n },\r\n kv: {\r\n name: 'Komi',\r\n displayName: 'коми кыв',\r\n },\r\n kw: {\r\n name: 'Cornish',\r\n displayName: 'Kernewek',\r\n },\r\n ky: {\r\n name: 'Kyrgyz',\r\n displayName: 'Кыргызча',\r\n },\r\n la: {\r\n name: 'Latin',\r\n displayName: 'latine',\r\n },\r\n lb: {\r\n name: 'Luxembourgish',\r\n displayName: 'Lëtzebuergesch',\r\n },\r\n lg: {\r\n name: 'Ganda',\r\n displayName: 'Luganda',\r\n },\r\n li: {\r\n name: 'Limburgish',\r\n displayName: 'Limburgs',\r\n },\r\n ln: {\r\n name: 'Lingala',\r\n displayName: 'Lingála',\r\n },\r\n lo: {\r\n name: 'Lao',\r\n displayName: 'ພາສາ',\r\n },\r\n lt: {\r\n name: 'Lithuanian',\r\n displayName: 'lietuvių kalba',\r\n },\r\n lu: {\r\n name: 'Luba-Katanga',\r\n displayName: 'Tshiluba',\r\n },\r\n lv: {\r\n name: 'Latvian',\r\n displayName: 'latviešu valoda',\r\n },\r\n mg: {\r\n name: 'Malagasy',\r\n displayName: 'fiteny malagasy',\r\n },\r\n mh: {\r\n name: 'Marshallese',\r\n displayName: 'Kajin M̧ajeļ',\r\n },\r\n mi: {\r\n name: 'Māori',\r\n displayName: 'te reo Māori',\r\n },\r\n mk: {\r\n name: 'Macedonian',\r\n displayName: 'македонски јазик',\r\n },\r\n ml: {\r\n name: 'Malayalam',\r\n displayName: 'മലയാളം',\r\n },\r\n mn: {\r\n name: 'Mongolian',\r\n displayName: 'Монгол хэл',\r\n },\r\n mr: {\r\n name: 'Marathi',\r\n displayName: 'मराठी',\r\n },\r\n ms: {\r\n name: 'Malay',\r\n displayName: 'هاس ملايو',\r\n },\r\n mt: {\r\n name: 'Maltese',\r\n displayName: 'Malti',\r\n },\r\n my: {\r\n name: 'Burmese',\r\n displayName: 'ဗမာစာ',\r\n },\r\n na: {\r\n name: 'Nauru',\r\n displayName: 'Ekakairũ Naoero',\r\n },\r\n nb: {\r\n name: 'Norwegian Bokmål',\r\n displayName: 'Norsk bokmål',\r\n },\r\n nd: {\r\n name: 'Northern Ndebele',\r\n displayName: 'isiNdebele',\r\n },\r\n ne: {\r\n name: 'Nepali',\r\n displayName: 'नेपाली',\r\n },\r\n ng: {\r\n name: 'Ndonga',\r\n displayName: 'Owambo',\r\n },\r\n nl: {\r\n name: 'Dutch',\r\n displayName: 'Nederlands',\r\n },\r\n nn: {\r\n name: 'Norwegian Nynorsk',\r\n displayName: 'Norsk nynorsk',\r\n },\r\n no: {\r\n name: 'Norwegian',\r\n displayName: 'Norsk',\r\n },\r\n nr: {\r\n name: 'Southern Ndebele',\r\n displayName: 'isiNdebele',\r\n },\r\n nv: {\r\n name: 'Navajo',\r\n displayName: 'Diné bizaad',\r\n },\r\n ny: {\r\n name: 'Chichewa',\r\n displayName: 'chiCheŵa',\r\n },\r\n oc: {\r\n name: 'Occitan',\r\n displayName: 'occitan',\r\n },\r\n oj: {\r\n name: 'Ojibwe',\r\n displayName: 'ᐊᓂᔑᓈᐯᒧᐎᓐ',\r\n },\r\n om: {\r\n name: 'Oromo',\r\n displayName: 'Afaan Oromoo',\r\n },\r\n or: {\r\n name: 'Oriya',\r\n displayName: 'ଓଡ଼ିଆ',\r\n },\r\n os: {\r\n name: 'Ossetian',\r\n displayName: 'ирон æвзаг',\r\n },\r\n pa: {\r\n name: 'Panjabi',\r\n displayName: 'ਪੰਜਾਬੀ',\r\n },\r\n pi: {\r\n name: 'Pāli',\r\n displayName: 'पाऴि',\r\n },\r\n pl: {\r\n name: 'Polish',\r\n displayName: 'język polski',\r\n },\r\n ps: {\r\n name: 'Pashto',\r\n displayName: 'پښتو',\r\n },\r\n pt: {\r\n name: 'Portuguese',\r\n displayName: 'Português',\r\n },\r\n qu: {\r\n name: 'Quechua',\r\n displayName: 'Runa Simi',\r\n },\r\n rm: {\r\n name: 'Romansh',\r\n displayName: 'rumantsch grischun',\r\n },\r\n rn: {\r\n name: 'Kirundi',\r\n displayName: 'Ikirundi',\r\n },\r\n ro: {\r\n name: 'Romanian',\r\n displayName: 'Română',\r\n },\r\n ru: {\r\n name: 'Russian',\r\n displayName: 'Русский',\r\n },\r\n rw: {\r\n name: 'Kinyarwanda',\r\n displayName: 'Ikinyarwanda',\r\n },\r\n sa: {\r\n name: 'Sanskrit',\r\n displayName: 'संस्कृतम्',\r\n },\r\n sc: {\r\n name: 'Sardinian',\r\n displayName: 'sardu',\r\n },\r\n sd: {\r\n name: 'Sindhi',\r\n displayName: 'सिन्धी',\r\n },\r\n se: {\r\n name: 'Northern Sami',\r\n displayName: 'Davvisámegiella',\r\n },\r\n sg: {\r\n name: 'Sango',\r\n displayName: 'yângâ tî sängö',\r\n },\r\n si: {\r\n name: 'Sinhala',\r\n displayName: 'සිංහල',\r\n },\r\n sk: {\r\n name: 'Slovak',\r\n displayName: 'slovenčina',\r\n },\r\n sl: {\r\n name: 'Slovene',\r\n displayName: 'slovenski jezik',\r\n },\r\n sm: {\r\n name: 'Samoan',\r\n displayName: \"gagana fa'a Samoa\",\r\n },\r\n sn: {\r\n name: 'Shona',\r\n displayName: 'chiShona',\r\n },\r\n so: {\r\n name: 'Somali',\r\n displayName: 'Soomaaliga',\r\n },\r\n sq: {\r\n name: 'Albanian',\r\n displayName: 'Shqip',\r\n },\r\n sr: {\r\n name: 'Serbian',\r\n displayName: 'српски језик',\r\n },\r\n ss: {\r\n name: 'Swati',\r\n displayName: 'SiSwati',\r\n },\r\n st: {\r\n name: 'Southern Sotho',\r\n displayName: 'Sesotho',\r\n },\r\n su: {\r\n name: 'Sundanese',\r\n displayName: 'Basa Sunda',\r\n },\r\n sv: {\r\n name: 'Swedish',\r\n displayName: 'svenska',\r\n },\r\n sw: {\r\n name: 'Swahili',\r\n displayName: 'Kiswahili',\r\n },\r\n ta: {\r\n name: 'Tamil',\r\n displayName: 'தமிழ்',\r\n },\r\n te: {\r\n name: 'Telugu',\r\n displayName: 'తెలుగు',\r\n },\r\n tg: {\r\n name: 'Tajik',\r\n displayName: 'тоҷикӣ',\r\n },\r\n th: {\r\n name: 'Thai',\r\n displayName: 'ไทย',\r\n },\r\n ti: {\r\n name: 'Tigrinya',\r\n displayName: 'ትግርኛ',\r\n },\r\n tk: {\r\n name: 'Turkmen',\r\n displayName: 'Türkmen',\r\n },\r\n tl: {\r\n name: 'Tagalog',\r\n displayName: 'Wikang Tagalog',\r\n },\r\n tn: {\r\n name: 'Tswana',\r\n displayName: 'Setswana',\r\n },\r\n to: {\r\n name: 'Tonga',\r\n displayName: 'faka Tonga',\r\n },\r\n tr: {\r\n name: 'Turkish',\r\n displayName: 'Türkçe',\r\n },\r\n ts: {\r\n name: 'Tsonga',\r\n displayName: 'Xitsonga',\r\n },\r\n tt: {\r\n name: 'Tatar',\r\n displayName: 'татар теле',\r\n },\r\n tw: {\r\n name: 'Twi',\r\n displayName: 'Twi',\r\n },\r\n ty: {\r\n name: 'Tahitian',\r\n displayName: 'Reo Tahiti',\r\n },\r\n ug: {\r\n name: 'Uyghur',\r\n displayName: 'ئۇيغۇرچە',\r\n },\r\n uk: {\r\n name: 'Ukrainian',\r\n displayName: 'Українська',\r\n },\r\n ur: {\r\n name: 'Urdu',\r\n displayName: 'اردو',\r\n },\r\n uz: {\r\n name: 'Uzbek',\r\n displayName: 'Ўзбек',\r\n },\r\n ve: {\r\n name: 'Venda',\r\n displayName: 'Tshivenḓa',\r\n },\r\n vi: {\r\n name: 'Vietnamese',\r\n displayName: 'Tiếng Việt',\r\n },\r\n vo: {\r\n name: 'Volapük',\r\n displayName: 'Volapük',\r\n },\r\n wa: {\r\n name: 'Walloon',\r\n displayName: 'walon',\r\n },\r\n wo: {\r\n name: 'Wolof',\r\n displayName: 'Wollof',\r\n },\r\n xh: {\r\n name: 'Xhosa',\r\n displayName: 'isiXhosa',\r\n },\r\n yi: {\r\n name: 'Yiddish',\r\n displayName: 'ייִדיש',\r\n },\r\n yo: {\r\n name: 'Yoruba',\r\n displayName: 'Yorùbá',\r\n },\r\n za: {\r\n name: 'Zhuang',\r\n displayName: 'Saɯ cueŋƅ',\r\n },\r\n zh: {\r\n name: 'Chinese',\r\n displayName: '中文',\r\n },\r\n cmn: {\r\n name: 'Chinese Mandarin',\r\n displayName: '中文',\r\n },\r\n zu: {\r\n name: 'Zulu',\r\n displayName: 'isiZulu',\r\n },\r\n} as LanguageOptions\r\n\r\nexport default BCP47Languages\r\n","import { Component, OnInit } from '@angular/core';\nimport { SnackService } from '../../services/snack.service';\n\n@Component({\n selector: 'app-text-input',\n templateUrl: './text-input.component.html',\n styleUrls: ['./text-input.component.scss']\n})\nexport class TextInputComponent implements OnInit {\n\n constructor(private snackService: SnackService) { }\n\n ngOnInit(): void {\n }\n\n startTts() {\n this.snackService.displayMessage('Starting conversion...');\n }\n}\n","<mat-card>\n <label for=\"text\">\n Text to convert\n </label>\n <br/>\n <textarea id=\"text\" placeholder=\"Copy/Paste your text here !\"></textarea>\n <br/>\n <button\n (click)=\"startTts()\"\n >Start Text-to-speech</button>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\nimport { WaveNetService } from '../wave-net.service';\nimport BCP47Languages, { LanguageOption, LanguageOptions } from '../models/bcp47-languages';\nimport { FormGroup } from '@angular/forms';\n\n@Component({\n selector: 'app-tts-page',\n templateUrl: './tts-page.component.html',\n styleUrls: ['./tts-page.component.scss']\n})\nexport class TtsPageComponent implements OnInit {\n formGroup = new FormGroup({});\n\n\n constructor(\n private waveNetService: WaveNetService,\n ) { }\n\n ngOnInit(): void {\n }\n}\n","<section class=\"form-section\">\n <app-api-key></app-api-key>\n <div class=\"separator\"></div>\n <app-voice-settings [formGroup]=\"formGroup\"></app-voice-settings>\n <div class=\"separator\"></div>\n <app-text-input></app-text-input>\n</section>\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { TtsPageComponent } from './tts-page/tts-page.component';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: TtsPageComponent }\r\n];\r\n\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class TtsRoutingModule { }\r\n\r\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TtsPageComponent } from './tts-page/tts-page.component';\nimport { TtsRoutingModule } from './tts-routing.module';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } from '../shared/shared.module';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ApiKeyComponent } from './api-key/api-key.component';\nimport { MatProgressSpinnerModule, MatSpinner } from '@angular/material/progress-spinner';\nimport { VoiceSettingsComponent } from './voice-settings/voice-settings.component';\nimport { TextInputComponent } from './text-input/text-input.component';\nimport { FeedbackModule } from '../feedback/feedback.module';\n\n\n@NgModule({\n declarations: [TtsPageComponent, ApiKeyComponent, VoiceSettingsComponent, TextInputComponent],\n imports: [\n CommonModule,\n RouterModule,\n SharedModule,\n TtsRoutingModule,\n ReactiveFormsModule,\n MatProgressSpinnerModule,\n FeedbackModule\n ]\n})\nexport class TtsModule { }\n","import { Component, Input, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ApiKeyService } from '../api-key/api-key.service';\nimport BCP47Languages, { LanguageOption, LanguageOptions } from '../models/bcp47-languages';\n\n@Component({\n selector: 'app-voice-settings',\n templateUrl: './voice-settings.component.html',\n styleUrls: ['./voice-settings.component.scss']\n})\nexport class VoiceSettingsComponent implements OnInit {\n @Input() formGroup: FormGroup = new FormGroup({});\n\n languages: LanguageOptions = BCP47Languages;\n\n get languageOptionList(): LanguageOption[] {\n return Object.keys(this.languages).map(k => {\n return {\n ...this.languages[k],\n key: k\n }\n });\n };\n\n get locales() {\n return [];\n };\n\n constructor(\n public apiKeyService: ApiKeyService\n ) { }\n\n ngOnInit(): void {\n this.initFormGroup();\n this.initSubs();\n }\n\n initFormGroup() {\n this.formGroup.setControl('language', new FormControl(''));\n this.formGroup.setControl('locale', new FormControl(''));\n this.formGroup.setControl('speed', new FormControl(''));\n this.formGroup.setControl('pitch', new FormControl(''));\n }\n\n private initSubs() {\n this.apiKeyService.apiKey$.subscribe(data => {\n if (data) {\n // valid key\n this.formGroup.enable();\n } else {\n this.formGroup.disable();\n }\n })\n }\n\n}\n","<mat-card>\n <h3>Voice settings</h3>\n <form\n [formGroup]=\"formGroup\" class=\"settings\">\n <ng-container>\n <select formControlName=\"language\" name=\"language\">\n <option value=\"\" disabled selected>Language</option>\n <ng-container *ngFor=\"let option of languageOptionList\">\n <option [value]=\"option.key\" disabled selected>{{option.displayName}}</option>\n </ng-container>\n </select>\n <select formControlName=\"locale\" name=\"locale\">\n <option value=\"\" disabled selected>Locale</option>\n <ng-container *ngFor=\"let option of locales\">\n <option [value]=\"option.key\" disabled selected>{{option.displayName}}</option>\n </ng-container>\n </select>\n <div>\n <label for=\"\">Speed</label>\n <input formControlName=\"speed\" type=\"range\" value=\"1\" min=\"0.25\" max=\"3\" id=\"speed\" step=\"0.01\">\n </div>\n <div>\n <label for=\"\">Pitch</label>\n <input formControlName=\"pitch\" type=\"range\" value=\"0\" min=\"-15\" max=\"15\" id=\"pitch\" step=\"0.1\">\n </div>\n </ng-container>\n </form>\n</mat-card>\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport BCP47Languages from './models/bcp47-languages';\nimport { WaveNetSettings } from './models/wave-net-settings';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class WaveNetService {\n\n constructor(private httpClient: HttpClient) { }\n languages = {} as { [language: string]: string[] };\n private _apiKey: string;\n private isValid: boolean;\n\n static isSSML(str: string): boolean {\n return str.startsWith('<speak>') && str.endsWith('</speak>')\n }\n\n static validateSettings(settings): boolean {\n if (!settings.apiKey || !settings.locale) {\n alert(`You must add your Google Cloud's text-to-speech API Key in the extension's popup.`)\n return false\n }\n\n return true\n }\n\n private async getAudioContent(settings: WaveNetSettings, input: string, audioEncoding: string): Promise<string> {\n const request = {\n audioConfig: {\n audioEncoding,\n pitch: settings.pitch,\n speakingRate: settings.speed\n },\n input: {\n text: input,\n ssml: undefined\n },\n voice: {\n languageCode: settings.locale.split('-').slice(0, 2).join('-'),\n name: settings.locale\n }\n }\n\n if (WaveNetService.isSSML(input)) {\n request.input.ssml = request.input.text\n delete request.input.text\n }\n\n const response = await fetch(`https://texttospeech.googleapis.com/v1beta1/text:synthesize?key=${settings.apiKey}`,\n { method: 'POST', body: JSON.stringify(request) }\n );\n\n const json = await response.json()\n if (!response.ok) {\n alert(json.error.message) // TODO: Better error handling\n return\n }\n\n return json.audioContent\n }\n}\n"],"sourceRoot":"webpack:///"}