-
Notifications
You must be signed in to change notification settings - Fork 0
/
tts-tts-module-es5.js.map
1 lines (1 loc) · 113 KB
/
tts-tts-module-es5.js.map
1
{"version":3,"sources":["webpack:///node_modules/@angular/material/__ivy_ngcc__/fesm2015/progress-spinner.js","webpack:///src/app/shared/models/loading-state.ts","webpack:///src/app/tts/api-key/api-key.component.ts","webpack:///src/app/tts/api-key/api-key.component.html","webpack:///src/app/tts/api-key/api-key.service.ts","webpack:///src/app/tts/models/bcp47-languages.ts","webpack:///src/app/tts/text-input/text-input.component.ts","webpack:///src/app/tts/text-input/text-input.component.html","webpack:///src/app/tts/tts-page/tts-page.component.ts","webpack:///src/app/tts/tts-page/tts-page.component.html","webpack:///src/app/tts/tts-routing.module.ts","webpack:///src/app/tts/tts.module.ts","webpack:///src/app/tts/voice-settings/voice-settings.component.ts","webpack:///src/app/tts/voice-settings/voice-settings.component.html","webpack:///src/app/tts/wave-net.service.ts"],"names":["MatProgressSpinner__svg_circle_1_Template","rf","ctx","ctx_r86","diameter","_strokeDashOffset","_strokeCircumference","_circleStrokeWidth","_circleRadius","MatProgressSpinner__svg_circle_2_Template","ctx_r87","MatSpinner__svg_circle_1_Template","ctx_r88","MatSpinner__svg_circle_2_Template","ctx_r89","BASE_SIZE","BASE_STROKE_WIDTH","MatProgressSpinnerBase","_elementRef","_MatProgressSpinnerMixinBase","MatProgressSpinnerDefaultOptions","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS","providedIn","factory","MAT_PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY","INDETERMINATE_ANIMATION_TEMPLATE","MatProgressSpinner","platform","_document","animationMode","defaults","_diameter","_value","_fallbackAnimation","mode","trackedDiameters","_diameters","has","head","set","Set","EDGE","TRIDENT","_noopAnimations","_forceAnimations","strokeWidth","element","nativeElement","_styleRoot","_getShadowRoot","_attachStyleNode","animationClass","classList","add","styleRoot","currentDiameter","diameters","diametersForElement","get","styleTag","createElement","setAttribute","textContent","_getAnimationText","appendChild","replace","size","_strokeWidth","value","newValue","Math","max","min","viewBox","PI","ɵfac","MatProgressSpinner_Factory","t","ɵcmp","type","selectors","hostAttrs","hostVars","hostBindings","MatProgressSpinner_HostBindings","inputs","color","exportAs","features","decls","vars","consts","template","MatProgressSpinner_Template","_viewBox","directives","styles","encapsulation","changeDetection","WeakMap","ctorParameters","undefined","decorators","args","String","propDecorators","selector","host","OnPush","None","MatSpinner","elementRef","document","MatSpinner_Factory","MatSpinner_HostBindings","MatSpinner_Template","window","createShadowRoot","attachShadow","rootNode","getRootNode","ShadowRoot","MatProgressSpinnerModule","ɵmod","ɵinj","MatProgressSpinnerModule_Factory","imports","ngJitMode","declarations","exports","LoadingStatus","LoadingState","status","message","ApiKeyComponent","apiKeyService","apiKeyForm","editing","apiKey$","subscribe","apiKey","setValue","verifyAndSetApiKey","saveApiKey","templateUrl","styleUrls","ApiKeyService","httpClient","snackService","_apiKey","asObservable","_apiKeyState","OK","apiKeyState$","localStorage","getItem","apiKeyState","LOADING","setTimeout","setItem","next","data","console","log","error","displayError","ERROR","JSON","stringify","getValue","state","BCP47Languages","aa","name","displayName","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fil","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","id","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","cmn","zu","TextInputComponent","displayMessage","startTts","TtsPageComponent","waveNetService","formGroup","routes","path","component","TtsRoutingModule","forChild","TtsModule","VoiceSettingsComponent","languages","initFormGroup","initSubs","setControl","enable","disable","Object","keys","map","k","key","WaveNetService","settings","input","audioEncoding","request","audioConfig","pitch","speakingRate","speed","text","ssml","voice","languageCode","locale","split","slice","join","isSSML","fetch","method","body","response","json","ok","alert","audioContent","str","startsWith","endsWith"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAOA;;;;;;AAKA;;;;;;;AASA,aAASA,yCAAT,CAAmDC,EAAnD,EAAuDC,GAAvD,EAA4D;AAAE,UAAID,EAAE,GAAG,CAAT,EAAY;AACtE;;AACA,gEAAiB,CAAjB,EAAoB,QAApB,EAA8B,CAA9B;AACH;;AAAC,UAAIA,EAAE,GAAG,CAAT,EAAY;AACV,YAAME,OAAO,GAAG,6DAAhB;;AACA,kEAAmB,gBAAnB,EAAqC,wCAAwCA,OAAO,CAACC,QAArF,EAA+F,mBAA/F,EAAoHD,OAAO,CAACE,iBAA5H,EAA+I,IAA/I,EAAqJ,kBAArJ,EAAyKF,OAAO,CAACG,oBAAjL,EAAuM,IAAvM,EAA6M,cAA7M,EAA6NH,OAAO,CAACI,kBAArO,EAAyP,GAAzP;;AACA,kEAAmB,GAAnB,EAAwBJ,OAAO,CAACK,aAAhC;AACH;AAAE;;AACH,aAASC,yCAAT,CAAmDR,EAAnD,EAAuDC,GAAvD,EAA4D;AAAE,UAAID,EAAE,GAAG,CAAT,EAAY;AACtE;;AACA,gEAAiB,CAAjB,EAAoB,QAApB,EAA8B,CAA9B;AACH;;AAAC,UAAIA,EAAE,GAAG,CAAT,EAAY;AACV,YAAMS,OAAO,GAAG,6DAAhB;;AACA,kEAAmB,mBAAnB,EAAwCA,OAAO,CAACL,iBAAhD,EAAmE,IAAnE,EAAyE,kBAAzE,EAA6FK,OAAO,CAACJ,oBAArG,EAA2H,IAA3H,EAAiI,cAAjI,EAAiJI,OAAO,CAACH,kBAAzJ,EAA6K,GAA7K;;AACA,kEAAmB,GAAnB,EAAwBG,OAAO,CAACF,aAAhC;AACH;AAAE;;AACH,aAASG,iCAAT,CAA2CV,EAA3C,EAA+CC,GAA/C,EAAoD;AAAE,UAAID,EAAE,GAAG,CAAT,EAAY;AAC9D;;AACA,gEAAiB,CAAjB,EAAoB,QAApB,EAA8B,CAA9B;AACH;;AAAC,UAAIA,EAAE,GAAG,CAAT,EAAY;AACV,YAAMW,OAAO,GAAG,6DAAhB;;AACA,kEAAmB,gBAAnB,EAAqC,wCAAwCA,OAAO,CAACR,QAArF,EAA+F,mBAA/F,EAAoHQ,OAAO,CAACP,iBAA5H,EAA+I,IAA/I,EAAqJ,kBAArJ,EAAyKO,OAAO,CAACN,oBAAjL,EAAuM,IAAvM,EAA6M,cAA7M,EAA6NM,OAAO,CAACL,kBAArO,EAAyP,GAAzP;;AACA,kEAAmB,GAAnB,EAAwBK,OAAO,CAACJ,aAAhC;AACH;AAAE;;AACH,aAASK,iCAAT,CAA2CZ,EAA3C,EAA+CC,GAA/C,EAAoD;AAAE,UAAID,EAAE,GAAG,CAAT,EAAY;AAC9D;;AACA,gEAAiB,CAAjB,EAAoB,QAApB,EAA8B,CAA9B;AACH;;AAAC,UAAIA,EAAE,GAAG,CAAT,EAAY;AACV,YAAMa,OAAO,GAAG,6DAAhB;;AACA,kEAAmB,mBAAnB,EAAwCA,OAAO,CAACT,iBAAhD,EAAmE,IAAnE,EAAyE,kBAAzE,EAA6FS,OAAO,CAACR,oBAArG,EAA2H,IAA3H,EAAiI,cAAjI,EAAiJQ,OAAO,CAACP,kBAAzJ,EAA6K,GAA7K;;AACA,kEAAmB,GAAnB,EAAwBO,OAAO,CAACN,aAAhC;AACH;AAAE;;AACH,QAAMO,SAAS,GAAG,GAAlB;AACA;;;;;;AAKA,QAAMC,iBAAiB,GAAG,EAA1B,C,CACA;;AACA;;;;QAGMC,sB;AACF;;;AAGA,oCAAYC,WAAZ,EAAyB;AAAA;;AACrB,WAAKA,WAAL,GAAmBA,WAAnB;AACH,K;;AAEL,QAAI,KAAJ,EAAW,CAGV;AACD;;;AACA,QAAMC,4BAA4B,GAAG,0EAAWF,sBAAX,EAAmC,SAAnC,CAArC;AACA;;;;;;AAIA,aAASG,gCAAT,GAA4C,CAAG;;AAC/C,QAAI,KAAJ,EAAW,CAiBV;AACD;;;;;;AAIA,QAAMC,oCAAoC,GAAG,IAAI,4DAAJ,CAAmB,sCAAnB,EAA2D;AACpGC,gBAAU,EAAE,MADwF;AAEpGC,aAAO,EAAEC;AAF2F,KAA3D,CAA7C;AAIA;;;;;AAIA,aAASA,4CAAT,GAAwD;AACpD,aAAO;AAAEpB,gBAAQ,EAAEW;AAAZ,OAAP;AACH,K,CACD;AACA;AACA;AACA;;AACA;;;AACA,QAAMU,gCAAgC,86CAAtC;AAuBA;;;;QAGMC,kB;;;;;AACF;;;;;;;AAOA,kCAAYR,WAAZ,EAAyBS,QAAzB,EAAmCC,SAAnC,EAA8CC,aAA9C,EAA6DC,QAA7D,EAAuE;AAAA;;AAAA;;AACnE,gGAAMZ,WAAN;AACA,cAAKA,WAAL,GAAmBA,WAAnB;AACA,cAAKU,SAAL,GAAiBA,SAAjB;AACA,cAAKG,SAAL,GAAiBhB,SAAjB;AACA,cAAKiB,MAAL,GAAc,CAAd;AACA,cAAKC,kBAAL,GAA0B,KAA1B;AACA;;;;AAGA,cAAKC,IAAL,GAAY,aAAZ;AACA;;AACA,YAAMC,gBAAgB,GAAGT,kBAAkB,CAACU,UAA5C,CAZmE,CAanE;AACA;;AACA,YAAI,CAACD,gBAAgB,CAACE,GAAjB,CAAqBT,SAAS,CAACU,IAA/B,CAAL,EAA2C;AACvCH,0BAAgB,CAACI,GAAjB,CAAqBX,SAAS,CAACU,IAA/B,EAAqC,IAAIE,GAAJ,CAAQ,CAACzB,SAAD,CAAR,CAArC;AACH;;AACD,cAAKkB,kBAAL,GAA0BN,QAAQ,CAACc,IAAT,IAAiBd,QAAQ,CAACe,OAApD;AACA,cAAKC,eAAL,GAAuBd,aAAa,KAAK,gBAAlB,IAClB,CAAC,CAACC,QAAF,IAAc,CAACA,QAAQ,CAACc,gBAD7B;;AAEA,YAAId,QAAJ,EAAc;AACV,cAAIA,QAAQ,CAAC1B,QAAb,EAAuB;AACnB,kBAAKA,QAAL,GAAgB0B,QAAQ,CAAC1B,QAAzB;AACH;;AACD,cAAI0B,QAAQ,CAACe,WAAb,EAA0B;AACtB,kBAAKA,WAAL,GAAmBf,QAAQ,CAACe,WAA5B;AACH;AACJ;;AA5BkE;AA6BtE;AACD;;;;;;;;;AA4CA;;;mCAGW;AACP;AACA,cAAMC,OAAO,GAAG,KAAK5B,WAAL,CAAiB6B,aAAjC,CAFO,CAGP;AACA;AACA;;AACA,eAAKC,UAAL,GAAkBC,cAAc,CAACH,OAAD,EAAU,KAAKlB,SAAf,CAAd,IAA2C,KAAKA,SAAL,CAAeU,IAA5E;;AACA,eAAKY,gBAAL,GAPO,CAQP;AACA;;AACA;;;AACA,cAAMC,cAAc,+CAAwC,KAAKlB,kBAAL,GAA0B,WAA1B,GAAwC,EAAhF,eAApB;AACAa,iBAAO,CAACM,SAAR,CAAkBC,GAAlB,CAAsBF,cAAtB;AACH;AACD;;;;;;;;AA4CA;;;;;2CAKmB;AACf;AACA,cAAMG,SAAS,GAAG,KAAKN,UAAvB;AACA;;AACA,cAAMO,eAAe,GAAG,KAAKxB,SAA7B;AACA;;AACA,cAAMyB,SAAS,GAAG9B,kBAAkB,CAACU,UAArC;AACA;;AACA,cAAIqB,mBAAmB,GAAGD,SAAS,CAACE,GAAV,CAAcJ,SAAd,CAA1B;;AACA,cAAI,CAACG,mBAAD,IAAwB,CAACA,mBAAmB,CAACpB,GAApB,CAAwBkB,eAAxB,CAA7B,EAAuE;AACnE;AACA,gBAAMI,QAAQ,GAAG,KAAK/B,SAAL,CAAegC,aAAf,CAA6B,OAA7B,CAAjB;;AACAD,oBAAQ,CAACE,YAAT,CAAsB,uBAAtB,EAA+CN,eAAe,GAAG,EAAjE;AACAI,oBAAQ,CAACG,WAAT,GAAuB,KAAKC,iBAAL,EAAvB;AACAT,qBAAS,CAACU,WAAV,CAAsBL,QAAtB;;AACA,gBAAI,CAACF,mBAAL,EAA0B;AACtBA,iCAAmB,GAAG,IAAIjB,GAAJ,EAAtB;AACAgB,uBAAS,CAACjB,GAAV,CAAce,SAAd,EAAyBG,mBAAzB;AACH;;AACDA,+BAAmB,CAACJ,GAApB,CAAwBE,eAAxB;AACH;AACJ;AACD;;;;;;;;4CAKoB;AAChB,iBAAO9B,gCAAgC,CACnC;AADmC,WAElCwC,OAFE,CAEM,cAFN,YAEyB,OAAO,KAAK3D,oBAFrC,GAGF2D,OAHE,CAGM,YAHN,YAGuB,MAAM,KAAK3D,oBAHlC,GAIF2D,OAJE,CAIM,WAJN,YAIsB,KAAK7D,QAJ3B,EAAP;AAKH;;;4BA3Ic;AAAE,iBAAO,KAAK2B,SAAZ;AAAwB;AACzC;;;;;0BAIamC,I,EAAM;AACf,eAAKnC,SAAL,GAAiB,mFAAqBmC,IAArB,CAAjB,CADe,CAEf;;AACA,cAAI,CAAC,KAAKjC,kBAAN,IAA4B,KAAKe,UAArC,EAAiD;AAC7C,iBAAKE,gBAAL;AACH;AACJ;AACD;;;;;;;4BAIkB;AACd,iBAAO,KAAKiB,YAAL,IAAqB,KAAK/D,QAAL,GAAgB,EAA5C;AACH;AACD;;;;;0BAIgBgE,K,EAAO;AACnB,eAAKD,YAAL,GAAoB,mFAAqBC,KAArB,CAApB;AACH;AACD;;;;;;;4BAIY;AACR,iBAAO,KAAKlC,IAAL,KAAc,aAAd,GAA8B,KAAKF,MAAnC,GAA4C,CAAnD;AACH;AACD;;;;;0BAIUqC,Q,EAAU;AAChB,eAAKrC,MAAL,GAAcsC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc,mFAAqBH,QAArB,CAAd,CAAZ,CAAd;AACH;;;4BAsBmB;AAChB,iBAAO,CAAC,KAAKjE,QAAL,GAAgBY,iBAAjB,IAAsC,CAA7C;AACH;AACD;;;;;;;4BAIe;AACX;AACA,cAAMyD,OAAO,GAAG,KAAKjE,aAAL,GAAqB,CAArB,GAAyB,KAAKqC,WAA9C;AACA,+BAAc4B,OAAd,cAAyBA,OAAzB;AACH;AACD;;;;;;;4BAI2B;AACvB,iBAAO,IAAIH,IAAI,CAACI,EAAT,GAAc,KAAKlE,aAA1B;AACH;AACD;;;;;;;4BAIwB;AACpB,cAAI,KAAK0B,IAAL,KAAc,aAAlB,EAAiC;AAC7B,mBAAO,KAAK5B,oBAAL,IAA6B,MAAM,KAAK0B,MAAxC,IAAkD,GAAzD;AACH,WAHmB,CAIpB;;;AACA,cAAI,KAAKC,kBAAL,IAA2B,KAAKC,IAAL,KAAc,eAA7C,EAA8D;AAC1D,mBAAO,KAAK5B,oBAAL,GAA4B,GAAnC;AACH;;AACD,iBAAO,IAAP;AACH;AACD;;;;;;;4BAIyB;AACrB,iBAAO,KAAKuC,WAAL,GAAmB,KAAKzC,QAAxB,GAAmC,GAA1C;AACH;;;;MA9I4Be,4B;;AAuLjCO,sBAAkB,CAACiD,IAAnB,GAA0B,SAASC,0BAAT,CAAoCC,CAApC,EAAuC;AAAE,aAAO,KAAKA,CAAC,IAAInD,kBAAV,EAA8B,gEAAyB,wDAAzB,CAA9B,EAA2E,gEAAyB,8DAAzB,CAA3E,EAAsH,gEAAyB,wDAAzB,EAAmC,CAAnC,CAAtH,EAA6J,gEAAyB,0FAAzB,EAAgD,CAAhD,CAA7J,EAAiN,gEAAyBL,oCAAzB,CAAjN,CAAP;AAA0R,KAA7V;;AACAK,sBAAkB,CAACoD,IAAnB,GAA0B,gEAAyB;AAAEC,UAAI,EAAErD,kBAAR;AAA4BsD,eAAS,EAAE,CAAC,CAAC,sBAAD,CAAD,CAAvC;AAAmEC,eAAS,EAAE,CAAC,MAAD,EAAS,aAAT,EAAwB,CAAxB,EAA2B,sBAA3B,CAA9E;AAAkIC,cAAQ,EAAE,EAA5I;AAAgJC,kBAAY,EAAE,SAASC,+BAAT,CAAyCnF,EAAzC,EAA6CC,GAA7C,EAAkD;AAAE,YAAID,EAAE,GAAG,CAAT,EAAY;AACzQ,oEAAmB,eAAnB,EAAoCC,GAAG,CAACgC,IAAJ,KAAa,aAAb,GAA6B,CAA7B,GAAiC,IAArE,EAA2E,eAA3E,EAA4FhC,GAAG,CAACgC,IAAJ,KAAa,aAAb,GAA6B,GAA7B,GAAmC,IAA/H,EAAqI,eAArI,EAAsJhC,GAAG,CAACgC,IAAJ,KAAa,aAAb,GAA6BhC,GAAG,CAACkE,KAAjC,GAAyC,IAA/L,EAAqM,MAArM,EAA6MlE,GAAG,CAACgC,IAAjN;;AACA,oEAAmB,OAAnB,EAA4BhC,GAAG,CAACE,QAAhC,EAA0C,IAA1C,EAAgD,QAAhD,EAA0DF,GAAG,CAACE,QAA9D,EAAwE,IAAxE;;AACA,oEAAmB,yBAAnB,EAA8CF,GAAG,CAACyC,eAAlD;AACH;AAAE,OAJ4C;AAI1C0C,YAAM,EAAE;AAAEC,aAAK,EAAE,OAAT;AAAkBpD,YAAI,EAAE,MAAxB;AAAgC9B,gBAAQ,EAAE,UAA1C;AAAsDyC,mBAAW,EAAE,aAAnE;AAAkFuB,aAAK,EAAE;AAAzF,OAJkC;AAIkEmB,cAAQ,EAAE,CAAC,oBAAD,CAJ5E;AAIoGC,cAAQ,EAAE,CAAC,wEAAD,CAJ9G;AAImJC,WAAK,EAAE,CAJ1J;AAI6JC,UAAI,EAAE,CAJnK;AAIsKC,YAAM,EAAE,CAAC,CAAC,qBAAD,EAAwB,eAAxB,EAAyC,WAAzC,EAAsD,OAAtD,EAA+D,CAA/D,EAAkE,UAAlE,CAAD,EAAgF,CAAC,IAAD,EAAO,KAAP,EAAc,IAAd,EAAoB,KAApB,EAA2B,CAA3B,EAA8B,gBAA9B,EAAgD,mBAAhD,EAAqE,kBAArE,EAAyF,cAAzF,EAAyG,CAAzG,EAA4G,cAA5G,CAAhF,EAA6M,CAAC,IAAD,EAAO,KAAP,EAAc,IAAd,EAAoB,KAApB,EAA2B,CAA3B,EAA8B,mBAA9B,EAAmD,kBAAnD,EAAuE,cAAvE,EAAuF,CAAvF,EAA0F,cAA1F,CAA7M,EAAwT,CAAC,IAAD,EAAO,KAAP,EAAc,IAAd,EAAoB,KAApB,CAAxT,CAJ9K;AAImgBC,cAAQ,EAAE,SAASC,2BAAT,CAAqC5F,EAArC,EAAyCC,GAAzC,EAA8C;AAAE,YAAID,EAAE,GAAG,CAAT,EAAY;AACpnB;;AACA,uEAAsB,CAAtB,EAAyB,KAAzB,EAAgC,CAAhC;;AACA,mEAAkB,CAAlB,EAAqBD,yCAArB,EAAgE,CAAhE,EAAmE,CAAnE,EAAsE,QAAtE,EAAgF,CAAhF;;AACA,mEAAkB,CAAlB,EAAqBS,yCAArB,EAAgE,CAAhE,EAAmE,CAAnE,EAAsE,QAAtE,EAAgF,CAAhF;;AACA;AACH;;AAAC,YAAIR,EAAE,GAAG,CAAT,EAAY;AACV,oEAAmB,OAAnB,EAA4BC,GAAG,CAACE,QAAhC,EAA0C,IAA1C,EAAgD,QAAhD,EAA0DF,GAAG,CAACE,QAA9D,EAAwE,IAAxE;;AACA,mEAAkB,UAAlB,EAA8BF,GAAG,CAACgC,IAAJ,KAAa,eAA3C;;AACA,oEAAmB,SAAnB,EAA8BhC,GAAG,CAAC4F,QAAlC;;AACA,kEAAiB,CAAjB;;AACA,mEAAkB,cAAlB,EAAkC,IAAlC;;AACA,kEAAiB,CAAjB;;AACA,mEAAkB,cAAlB,EAAkC,KAAlC;AACH;AAAE,OAlB4C;AAkB1CC,gBAAU,EAAE,CAAC,wDAAD,EAAkB,4DAAlB,CAlB8B;AAkBUC,YAAM,EAAE,CAAC,gpGAAD,CAlBlB;AAkBsqGC,mBAAa,EAAE,CAlBrrG;AAkBwrGC,qBAAe,EAAE;AAlBzsG,KAAzB,CAA1B;AAmBA;;;;;;;AAMAxE,sBAAkB,CAACU,UAAnB,GAAgC,IAAI+D,OAAJ,EAAhC;AACA;;AACAzE,sBAAkB,CAAC0E,cAAnB,GAAoC;AAAA,aAAM,CACtC;AAAErB,YAAI,EAAE;AAAR,OADsC,EAEtC;AAAEA,YAAI,EAAE;AAAR,OAFsC,EAGtC;AAAEA,YAAI,EAAEsB,SAAR;AAAmBC,kBAAU,EAAE,CAAC;AAAEvB,cAAI,EAAE;AAAR,SAAD,EAAqB;AAAEA,cAAI,EAAE,oDAAR;AAAgBwB,cAAI,EAAE,CAAC,wDAAD;AAAtB,SAArB;AAA/B,OAHsC,EAItC;AAAExB,YAAI,EAAEyB,MAAR;AAAgBF,kBAAU,EAAE,CAAC;AAAEvB,cAAI,EAAE;AAAR,SAAD,EAAqB;AAAEA,cAAI,EAAE,oDAAR;AAAgBwB,cAAI,EAAE,CAAC,0FAAD;AAAtB,SAArB;AAA5B,OAJsC,EAKtC;AAAExB,YAAI,EAAEsB,SAAR;AAAmBC,kBAAU,EAAE,CAAC;AAAEvB,cAAI,EAAE,oDAAR;AAAgBwB,cAAI,EAAE,CAAClF,oCAAD;AAAtB,SAAD;AAA/B,OALsC,CAAN;AAAA,KAApC;;AAOAK,sBAAkB,CAAC+E,cAAnB,GAAoC;AAChCrG,cAAQ,EAAE,CAAC;AAAE2E,YAAI,EAAE;AAAR,OAAD,CADsB;AAEhClC,iBAAW,EAAE,CAAC;AAAEkC,YAAI,EAAE;AAAR,OAAD,CAFmB;AAGhC7C,UAAI,EAAE,CAAC;AAAE6C,YAAI,EAAE;AAAR,OAAD,CAH0B;AAIhCX,WAAK,EAAE,CAAC;AAAEW,YAAI,EAAE;AAAR,OAAD;AAJyB,KAApC;AAMA;;AAAc,KAAC,YAAY;AAAE,sEAAyBrD,kBAAzB,EAA6C,CAAC;AACnEqD,YAAI,EAAE,uDAD6D;AAEnEwB,YAAI,EAAE,CAAC;AACCG,kBAAQ,EAAE,sBADX;AAECnB,kBAAQ,EAAE,oBAFX;AAGCoB,cAAI,EAAE;AACF,oBAAQ,aADN;AAEF,qBAAS,sBAFP;AAGF,gEAHE;AAIF,gCAAoB,UAJlB;AAKF,iCAAqB,UALnB;AAMF,oCAAwB,mCANtB;AAOF,oCAAwB,qCAPtB;AAQF,oCAAwB,uCARtB;AASF,2BAAe;AATb,WAHP;AAcCtB,gBAAM,EAAE,CAAC,OAAD,CAdT;AAeCO,kBAAQ,EAAE,mnDAfX;AAgBCM,yBAAe,EAAE,sEAAwBU,MAhB1C;AAiBCX,uBAAa,EAAE,gEAAkBY,IAjBlC;AAkBCb,gBAAM,EAAE,CAAC,gpGAAD;AAlBT,SAAD;AAF6D,OAAD,CAA7C,EAsBrB,YAAY;AAAE,eAAO,CAAC;AAAEjB,cAAI,EAAE;AAAR,SAAD,EAA8B;AAAEA,cAAI,EAAE;AAAR,SAA9B,EAAyD;AAAEA,cAAI,EAAEsB,SAAR;AAAmBC,oBAAU,EAAE,CAAC;AACtGvB,gBAAI,EAAE;AADgG,WAAD,EAEtG;AACCA,gBAAI,EAAE,oDADP;AAECwB,gBAAI,EAAE,CAAC,wDAAD;AAFP,WAFsG;AAA/B,SAAzD,EAKX;AAAExB,cAAI,EAAEyB,MAAR;AAAgBF,oBAAU,EAAE,CAAC;AAC/BvB,gBAAI,EAAE;AADyB,WAAD,EAE/B;AACCA,gBAAI,EAAE,oDADP;AAECwB,gBAAI,EAAE,CAAC,0FAAD;AAFP,WAF+B;AAA5B,SALW,EAUX;AAAExB,cAAI,EAAEsB,SAAR;AAAmBC,oBAAU,EAAE,CAAC;AAClCvB,gBAAI,EAAE,oDAD4B;AAElCwB,gBAAI,EAAE,CAAClF,oCAAD;AAF4B,WAAD;AAA/B,SAVW,CAAP;AAaF,OAnCS,EAmCP;AAAEa,YAAI,EAAE,CAAC;AACnB6C,cAAI,EAAE;AADa,SAAD,CAAR;AAEV3E,gBAAQ,EAAE,CAAC;AACX2E,cAAI,EAAE;AADK,SAAD,CAFA;AAIVlC,mBAAW,EAAE,CAAC;AACdkC,cAAI,EAAE;AADQ,SAAD,CAJH;AAMVX,aAAK,EAAE,CAAC;AACRW,cAAI,EAAE;AADE,SAAD;AANG,OAnCO;AA2Cb,KA3CF;;AA4Cd,QAAI,KAAJ,EAAW,CA6DV;AACD;;;;;;;;QAMM+B,U;;;;;AACF;;;;;;;AAOA,0BAAYC,UAAZ,EAAwBpF,QAAxB,EAAkCqF,QAAlC,EAA4CnF,aAA5C,EAA2DC,QAA3D,EAAqE;AAAA;;AAAA;;AACjE,yFAAMiF,UAAN,EAAkBpF,QAAlB,EAA4BqF,QAA5B,EAAsCnF,aAAtC,EAAqDC,QAArD;AACA,eAAKI,IAAL,GAAY,eAAZ;AAFiE;AAGpE;;;MAXoBR,kB;;AAazBoF,cAAU,CAACnC,IAAX,GAAkB,SAASsC,kBAAT,CAA4BpC,CAA5B,EAA+B;AAAE,aAAO,KAAKA,CAAC,IAAIiC,UAAV,EAAsB,gEAAyB,wDAAzB,CAAtB,EAAmE,gEAAyB,8DAAzB,CAAnE,EAA8G,gEAAyB,wDAAzB,EAAmC,CAAnC,CAA9G,EAAqJ,gEAAyB,0FAAzB,EAAgD,CAAhD,CAArJ,EAAyM,gEAAyBzF,oCAAzB,CAAzM,CAAP;AAAkR,KAArU;;AACAyF,cAAU,CAAChC,IAAX,GAAkB,gEAAyB;AAAEC,UAAI,EAAE+B,UAAR;AAAoB9B,eAAS,EAAE,CAAC,CAAC,aAAD,CAAD,CAA/B;AAAkDC,eAAS,EAAE,CAAC,MAAD,EAAS,aAAT,EAAwB,MAAxB,EAAgC,eAAhC,EAAiD,CAAjD,EAAoD,aAApD,EAAmE,sBAAnE,CAA7D;AAAyJC,cAAQ,EAAE,CAAnK;AAAsKC,kBAAY,EAAE,SAAS+B,uBAAT,CAAiCjH,EAAjC,EAAqCC,GAArC,EAA0C;AAAE,YAAID,EAAE,GAAG,CAAT,EAAY;AAC/Q,oEAAmB,OAAnB,EAA4BC,GAAG,CAACE,QAAhC,EAA0C,IAA1C,EAAgD,QAAhD,EAA0DF,GAAG,CAACE,QAA9D,EAAwE,IAAxE;;AACA,oEAAmB,yBAAnB,EAA8CF,GAAG,CAACyC,eAAlD;AACH;AAAE,OAHoC;AAGlC0C,YAAM,EAAE;AAAEC,aAAK,EAAE;AAAT,OAH0B;AAGNE,cAAQ,EAAE,CAAC,wEAAD,CAHJ;AAGyCC,WAAK,EAAE,CAHhD;AAGmDC,UAAI,EAAE,CAHzD;AAG4DC,YAAM,EAAE,CAAC,CAAC,qBAAD,EAAwB,eAAxB,EAAyC,WAAzC,EAAsD,OAAtD,EAA+D,CAA/D,EAAkE,UAAlE,CAAD,EAAgF,CAAC,IAAD,EAAO,KAAP,EAAc,IAAd,EAAoB,KAApB,EAA2B,CAA3B,EAA8B,gBAA9B,EAAgD,mBAAhD,EAAqE,kBAArE,EAAyF,cAAzF,EAAyG,CAAzG,EAA4G,cAA5G,CAAhF,EAA6M,CAAC,IAAD,EAAO,KAAP,EAAc,IAAd,EAAoB,KAApB,EAA2B,CAA3B,EAA8B,mBAA9B,EAAmD,kBAAnD,EAAuE,cAAvE,EAAuF,CAAvF,EAA0F,cAA1F,CAA7M,EAAwT,CAAC,IAAD,EAAO,KAAP,EAAc,IAAd,EAAoB,KAApB,CAAxT,CAHpE;AAGyZC,cAAQ,EAAE,SAASuB,mBAAT,CAA6BlH,EAA7B,EAAiCC,GAAjC,EAAsC;AAAE,YAAID,EAAE,GAAG,CAAT,EAAY;AAC1f;;AACA,uEAAsB,CAAtB,EAAyB,KAAzB,EAAgC,CAAhC;;AACA,mEAAkB,CAAlB,EAAqBU,iCAArB,EAAwD,CAAxD,EAA2D,CAA3D,EAA8D,QAA9D,EAAwE,CAAxE;;AACA,mEAAkB,CAAlB,EAAqBE,iCAArB,EAAwD,CAAxD,EAA2D,CAA3D,EAA8D,QAA9D,EAAwE,CAAxE;;AACA;AACH;;AAAC,YAAIZ,EAAE,GAAG,CAAT,EAAY;AACV,oEAAmB,OAAnB,EAA4BC,GAAG,CAACE,QAAhC,EAA0C,IAA1C,EAAgD,QAAhD,EAA0DF,GAAG,CAACE,QAA9D,EAAwE,IAAxE;;AACA,mEAAkB,UAAlB,EAA8BF,GAAG,CAACgC,IAAJ,KAAa,eAA3C;;AACA,oEAAmB,SAAnB,EAA8BhC,GAAG,CAAC4F,QAAlC;;AACA,kEAAiB,CAAjB;;AACA,mEAAkB,cAAlB,EAAkC,IAAlC;;AACA,kEAAiB,CAAjB;;AACA,mEAAkB,cAAlB,EAAkC,KAAlC;AACH;AAAE,OAjBoC;AAiBlCC,gBAAU,EAAE,CAAC,wDAAD,EAAkB,4DAAlB,CAjBsB;AAiBkBC,YAAM,EAAE,CAAC,gpGAAD,CAjB1B;AAiB8qGC,mBAAa,EAAE,CAjB7rG;AAiBgsGC,qBAAe,EAAE;AAjBjtG,KAAzB,CAAlB;AAkBA;;AACAY,cAAU,CAACV,cAAX,GAA4B;AAAA,aAAM,CAC9B;AAAErB,YAAI,EAAE;AAAR,OAD8B,EAE9B;AAAEA,YAAI,EAAE;AAAR,OAF8B,EAG9B;AAAEA,YAAI,EAAEsB,SAAR;AAAmBC,kBAAU,EAAE,CAAC;AAAEvB,cAAI,EAAE;AAAR,SAAD,EAAqB;AAAEA,cAAI,EAAE,oDAAR;AAAgBwB,cAAI,EAAE,CAAC,wDAAD;AAAtB,SAArB;AAA/B,OAH8B,EAI9B;AAAExB,YAAI,EAAEyB,MAAR;AAAgBF,kBAAU,EAAE,CAAC;AAAEvB,cAAI,EAAE;AAAR,SAAD,EAAqB;AAAEA,cAAI,EAAE,oDAAR;AAAgBwB,cAAI,EAAE,CAAC,0FAAD;AAAtB,SAArB;AAA5B,OAJ8B,EAK9B;AAAExB,YAAI,EAAEsB,SAAR;AAAmBC,kBAAU,EAAE,CAAC;AAAEvB,cAAI,EAAE,oDAAR;AAAgBwB,cAAI,EAAE,CAAClF,oCAAD;AAAtB,SAAD;AAA/B,OAL8B,CAAN;AAAA,KAA5B;AAOA;;;AAAc,KAAC,YAAY;AAAE,sEAAyByF,UAAzB,EAAqC,CAAC;AAC3D/B,YAAI,EAAE,uDADqD;AAE3DwB,YAAI,EAAE,CAAC;AACCG,kBAAQ,EAAE,aADX;AAECC,cAAI,EAAE;AACF,oBAAQ,aADN;AAEF,oBAAQ,eAFN;AAGF,qBAAS,kCAHP;AAIF,gEAJE;AAKF,gCAAoB,UALlB;AAMF,iCAAqB;AANnB,WAFP;AAUCtB,gBAAM,EAAE,CAAC,OAAD,CAVT;AAWCO,kBAAQ,EAAE,mnDAXX;AAYCM,yBAAe,EAAE,sEAAwBU,MAZ1C;AAaCX,uBAAa,EAAE,gEAAkBY,IAblC;AAcCb,gBAAM,EAAE,CAAC,gpGAAD;AAdT,SAAD;AAFqD,OAAD,CAArC,EAkBrB,YAAY;AAAE,eAAO,CAAC;AAAEjB,cAAI,EAAE;AAAR,SAAD,EAA8B;AAAEA,cAAI,EAAE;AAAR,SAA9B,EAAyD;AAAEA,cAAI,EAAEsB,SAAR;AAAmBC,oBAAU,EAAE,CAAC;AACtGvB,gBAAI,EAAE;AADgG,WAAD,EAEtG;AACCA,gBAAI,EAAE,oDADP;AAECwB,gBAAI,EAAE,CAAC,wDAAD;AAFP,WAFsG;AAA/B,SAAzD,EAKX;AAAExB,cAAI,EAAEyB,MAAR;AAAgBF,oBAAU,EAAE,CAAC;AAC/BvB,gBAAI,EAAE;AADyB,WAAD,EAE/B;AACCA,gBAAI,EAAE,oDADP;AAECwB,gBAAI,EAAE,CAAC,0FAAD;AAFP,WAF+B;AAA5B,SALW,EAUX;AAAExB,cAAI,EAAEsB,SAAR;AAAmBC,oBAAU,EAAE,CAAC;AAClCvB,gBAAI,EAAE,oDAD4B;AAElCwB,gBAAI,EAAE,CAAClF,oCAAD;AAF4B,WAAD;AAA/B,SAVW,CAAP;AAaF,OA/BS,EA+BP,IA/BO;AA+BC,KA/BhB;AAgCd;;;;;;;;AAMA,aAAS4B,cAAT,CAAwBH,OAAxB,EAAiClB,SAAjC,EAA4C;AACxC;AACA;AACA,UAAI,OAAOwF,MAAP,KAAkB,WAAtB,EAAmC;AAC/B;AACA,YAAM9E,IAAI,GAAGV,SAAS,CAACU,IAAvB,CAF+B,CAG/B;;AACA,YAAIA,IAAI;AAAO;AAAkBA,YAApB,CAA4B+E,gBAA5B,IAAgD/E,IAAI,CAACgF,YAA1D,CAAR,EAAiF;AAC7E;AACA,cAAMC,QAAQ,GAAGzE,OAAO,CAAC0E,WAAR,GAAsB1E,OAAO,CAAC0E,WAAR,EAAtB,GAA8C,IAA/D,CAF6E,CAG7E;AACA;;AACA,cAAID,QAAQ;AAAc;AAAkBH,gBAApB,CAA8BK,UAAtD,EAAkE;AAC9D,mBAAOF,QAAP;AACH;AACJ;AACJ;;AACD,aAAO,IAAP;AACH;AAED;;;;;;;QAKMG,wB;;;;AAENA,4BAAwB,CAACC,IAAzB,GAAgC,+DAAwB;AAAE5C,UAAI,EAAE2C;AAAR,KAAxB,CAAhC;AACAA,4BAAwB,CAACE,IAAzB,GAAgC,+DAAwB;AAAErG,aAAO,EAAE,SAASsG,gCAAT,CAA0ChD,CAA1C,EAA6C;AAAE,eAAO,KAAKA,CAAC,IAAI6C,wBAAV,GAAP;AAA+C,OAAzG;AAA2GI,aAAO,EAAE,CAAC,CAAC,sEAAD,EAAkB,4DAAlB,CAAD,EACpK,sEADoK;AAApH,KAAxB,CAAhC;;AAEA,KAAC,YAAY;AAAE,OAAC,OAAOC,SAAP,KAAqB,WAArB,IAAoCA,SAArC,KAAmD,iEAA0BL,wBAA1B,EAAoD;AAAEM,oBAAY,EAAE,wBAAY;AAAE,iBAAO,CAACtG,kBAAD,EACnJoF,UADmJ,CAAP;AAC9H,SADgG;AAC9FgB,eAAO,EAAE,mBAAY;AAAE,iBAAO,CAAC,sEAAD,EAAkB,4DAAlB,CAAP;AAAyC,SAD8B;AAC5BG,eAAO,EAAE,mBAAY;AAAE,iBAAO,CAACvG,kBAAD,EAChHoF,UADgH,EAEhH,sEAFgH,CAAP;AAEtF;AAH2F,OAApD,CAAnD;AAGkB,KAHjC;AAIA;;;AAAc,KAAC,YAAY;AAAE,sEAAyBY,wBAAzB,EAAmD,CAAC;AACzE3C,YAAI,EAAE,sDADmE;AAEzEwB,YAAI,EAAE,CAAC;AACCuB,iBAAO,EAAE,CAAC,sEAAD,EAAkB,4DAAlB,CADV;AAECG,iBAAO,EAAE,CACLvG,kBADK,EAELoF,UAFK,EAGL,sEAHK,CAFV;AAOCkB,sBAAY,EAAE,CACVtG,kBADU,EAEVoF,UAFU;AAPf,SAAD;AAFmE,OAAD,CAAnD,EAcrB,IAdqB,EAcf,IAde;AAcP,KAdR;AAgBd;;;;;;AAMA;;;AAMA;;;;;;;;;;;;;;;;;;AC/mBA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;AAAA,QAAYoB,aAAZ;;AAAA,eAAYA,aAAZ,EAAyB;AACvB;AACA;AACA;AACD,KAJD,EAAYA,aAAa,KAAbA,aAAa,MAAzB;;QAMaC,Y,GAIX,sBAAYC,MAAZ,EAAmCC,OAAnC,EAAqD;AAAA;;AACnD,WAAKD,MAAL,GAAcA,MAAd;AACA,WAAKC,OAAL,GAAeA,OAAf;AACD,K;;;;;;;;;;;;;;;;;ACbH;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;;;ACUI;;AAGE;;AAGF;;;;AADI;;AAAA;;;;;;AAIF;;AAGC;;AAAY;;;;;;AAEX;;;;;;AALF;;AAIA;;;;;;;;AAFE,gGAAoC,UAApC,EAAoC,IAApC;;;;QDZKC,e;;;AAOX,+BAAmBC,aAAnB,EAAiD;AAAA;;AAAA;;AAA9B,aAAAA,aAAA,GAAAA,aAAA;AANnB,aAAAC,UAAA,GAAa,IAAI,0DAAJ,CAAgB,EAAhB,CAAb;AACA,aAAAC,OAAA,GAAU,KAAV;AAME,aAAKF,aAAL,CAAmBG,OAAnB,CAA2BC,SAA3B,CAAqC,UAAAC,MAAM,EAAI;AAC7C,gBAAI,CAACJ,UAAL,CAAgBK,QAAhB,CAAyBD,MAAzB;AACD,SAFD;AAGD;;;;mCAEO,CACP;;;qCAEY;AACX,eAAKL,aAAL,CAAmBO,kBAAnB,CACE,KAAKN,UAAL,CAAgBpE,KADlB;AAGD;;;4BAhBmB;AAClB,iBAAO,KAAKoE,UAAL,CAAgBpE,KAAhB,IAAyB,KAAKoE,UAAL,CAAgBpE,KAAhB,KAA0B,KAAKmE,aAAL,CAAmBK,MAA7E;AACD;;;;;;;uBANUN,e,EAAe,+H;AAAA,K;;;YAAfA,e;AAAe,kC;AAAA,e;AAAA,a;AAAA,4U;AAAA;AAAA;ACT5B;;AACE;;AAAI;;AAAgB;;AAA4B;;AAAc;;AAAM;;AACpE;;AACE;;AAIE;AAAA,iCAAmB,IAAnB;AAAuB,WAAvB;;AAJF;;AAMA;;AAAQ;AAAA,mBAAS,IAAAS,UAAA,EAAT;AAAqB,WAArB;;AAAuB;;AAAI;;AACnC;;;;AAQA;;AAUF;;AAEF;;;;;;AA7B2B;;AAAA;;AAGrB;;AAAA,oIAA0D,aAA1D,EAA0D,cAA1D;;AAOA;;AAAA,kMAA6E,UAA7E,EAA6E,IAA7E;;;;;;;;;;sEDFOT,e,EAAe;cAL3B,uDAK2B;eALjB;AACT5B,kBAAQ,EAAE,aADD;AAETsC,qBAAW,EAAE,0BAFJ;AAGTC,mBAAS,EAAE,CAAC,0BAAD;AAHF,S;AAKiB,Q;;;;;;;;;;;;;;;;;;;;;;AET5B;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;QASaC,a;;;AAgEX,6BAAoBC,UAApB,EACoBC,YADpB,EACgD;AAAA;;AAD5B,aAAAD,UAAA,GAAAA,UAAA;AACA,aAAAC,YAAA,GAAAA,YAAA,CAA4B,CAhEhD;;AACQ,aAAAC,OAAA,GAAU,IAAI,oDAAJ,CAA4B,EAA5B,CAAV;AAEQ,aAAAX,OAAA,GAAU,KAAKW,OAAL,CAAaC,YAAb,EAAV;AAER,aAAAC,YAAA,GAAe,IAAI,oDAAJ,CAAkC,IAAI,yEAAJ,CAAiB,2EAAcC,EAA/B,CAAlC,CAAf;AACQ,aAAAC,YAAA,GAAe,KAAKF,YAAL,CAAkBD,YAAlB,EAAf;AA2Dd,YAAMV,MAAM,GAAGc,YAAY,CAACC,OAAb,CAAqB,QAArB,CAAf;AACA,aAAKb,kBAAL,CAAwBF,MAAxB;AACD;;;;2CA/CkBA,M,EAAgB;AAAA;;AACjC,cAAIA,MAAM,KAAK,MAAf,EAAuB;AACrB,iBAAKgB,WAAL,GAAoB,IAAI,yEAAJ,CAAiB,2EAAcC,OAA/B,CAApB;AACAC,sBAAU,CAAC,YAAM;AACjBJ,0BAAY,CAACK,OAAb,CAAqB,QAArB,EAA+BnB,MAA/B;AACA,oBAAI,CAACgB,WAAL,GAAoB,IAAI,yEAAJ,CAAiB,2EAAcJ,EAA/B,CAApB;;AACA,oBAAI,CAACH,OAAL,CAAaW,IAAb,CAAkBpB,MAAlB;AACC,aAJS,EAIP,IAJO,CAAV;AAKD;;AACD,cAAI,CAACA,MAAL,EAAa;AACX;AACD;;AACD,cAAI,KAAKgB,WAAL,CAAiBxB,MAAjB,KAA4B,2EAAcyB,OAA9C,EAAuD;AACrD;AACD;;AACD,eAAKD,WAAL,GAAoB,IAAI,yEAAJ,CAAiB,2EAAcC,OAA/B,CAApB;AACA,eAAKV,UAAL,CAAgBzF,GAAhB,CAAoB,4DAA4DkF,MAAhF,EAAwFD,SAAxF,CACE,UAACsB,IAAD,EAAe;AACbC,mBAAO,CAACC,GAAR,CAAYF,IAAZ;AACAP,wBAAY,CAACK,OAAb,CAAqB,QAArB,EAA+BnB,MAA/B;;AACA,kBAAI,CAACS,OAAL,CAAaW,IAAb,CAAkBpB,MAAlB;;AACA,kBAAI,CAACgB,WAAL,GAAmB,IAAI,yEAAJ,CAAiB,2EAAcJ,EAA/B,CAAnB,CAJa,CAKb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACD,WApBH,EAoBK,UAACY,KAAD,EAAW;AACZF,mBAAO,CAACC,GAAR,CAAYC,KAAZ;;AACA,kBAAI,CAAChB,YAAL,CAAkBiB,YAAlB,CAA+B,qBAA/B;;AACA,kBAAI,CAACT,WAAL,GAAmB,IAAI,yEAAJ,CAAiB,2EAAcU,KAA/B,EAAsCC,IAAI,CAACC,SAAL,CAAeJ,KAAf,CAAtC,CAAnB;AACD,WAxBH;AAyBD;;;4BArDY;AACX,iBAAO,KAAKf,OAAL,CAAaoB,QAAb,EAAP;AACD;;;4BAEc;AACb,iBAAO,KAAKlB,YAAL,CAAkBkB,QAAlB,EAAP;AACD,S;0BAEeC,K,EAAqB;AACnC,eAAKnB,YAAL,CAAkBS,IAAlB,CAAuBU,KAAvB;AACD;;;;;;;uBAnBUxB,a,EAAa,uH,EAAA,4H;AAAA,K;;;aAAbA,a;AAAa,eAAbA,aAAa,K;AAAA,kBAFZ;;;;;sEAEDA,a,EAAa;cAHzB,wDAGyB;eAHd;AACV5H,oBAAU,EAAE;AADF,S;AAGc,Q;;;;;;;;;;;;;;;;;;;;;;;;ACN1B;;AAAA,QAAMqJ,cAAc,GAAG;AACrBC,QAAE,EAAE;AACFC,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OADiB;AAKrBC,QAAE,EAAE;AACFF,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OALiB;AASrBE,QAAE,EAAE;AACFH,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OATiB;AAarBG,QAAE,EAAE;AACFJ,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAbiB;AAiBrBI,QAAE,EAAE;AACFL,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OAjBiB;AAqBrBK,QAAE,EAAE;AACFN,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArBiB;AAyBrBM,QAAE,EAAE;AACFP,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAzBiB;AA6BrBO,QAAE,EAAE;AACFR,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7BiB;AAiCrBQ,QAAE,EAAE;AACFT,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjCiB;AAqCrBS,QAAE,EAAE;AACFV,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArCiB;AAyCrBU,QAAE,EAAE;AACFX,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzCiB;AA6CrBW,QAAE,EAAE;AACFZ,YAAI,EAAE,aADJ;AAEFC,mBAAW,EAAE;AAFX,OA7CiB;AAiDrBY,QAAE,EAAE;AACFb,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjDiB;AAqDrBa,QAAE,EAAE;AACFd,YAAI,EAAE,YADJ;AAEFC,mBAAW,EAAE;AAFX,OArDiB;AAyDrBc,QAAE,EAAE;AACFf,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAzDiB;AA6DrBe,QAAE,EAAE;AACFhB,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7DiB;AAiErBgB,QAAE,EAAE;AACFjB,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjEiB;AAqErBiB,QAAE,EAAE;AACFlB,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArEiB;AAyErBkB,QAAE,EAAE;AACFnB,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzEiB;AA6ErBmB,QAAE,EAAE;AACFpB,YAAI,EAAE,kBADJ;AAEFC,mBAAW,EAAE;AAFX,OA7EiB;AAiFrBoB,QAAE,EAAE;AACFrB,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjFiB;AAqFrBqB,QAAE,EAAE;AACFtB,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArFiB;AAyFrBsB,QAAE,EAAE;AACFvB,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzFiB;AA6FrBuB,QAAE,EAAE;AACFxB,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7FiB;AAiGrBwB,QAAE,EAAE;AACFzB,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjGiB;AAqGrByB,QAAE,EAAE;AACF1B,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OArGiB;AAyGrB0B,QAAE,EAAE;AACF3B,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OAzGiB;AA6GrB2B,QAAE,EAAE;AACF5B,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7GiB;AAiHrB4B,QAAE,EAAE;AACF7B,YAAI,EAAE,qBADJ;AAEFC,mBAAW,EAAE;AAFX,OAjHiB;AAqHrB6B,QAAE,EAAE;AACF9B,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArHiB;AAyHrB8B,QAAE,EAAE;AACF/B,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzHiB;AA6HrB+B,QAAE,EAAE;AACFhC,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7HiB;AAiIrBgC,QAAE,EAAE;AACFjC,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjIiB;AAqIrBiC,QAAE,EAAE;AACFlC,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArIiB;AAyIrBkC,QAAE,EAAE;AACFnC,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAzIiB;AA6IrBmC,QAAE,EAAE;AACFpC,YAAI,EAAE,KADJ;AAEFC,mBAAW,EAAE;AAFX,OA7IiB;AAiJrBoC,QAAE,EAAE;AACFrC,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjJiB;AAqJrBqC,QAAE,EAAE;AACFtC,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArJiB;AAyJrBsC,QAAE,EAAE;AACFvC,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAzJiB;AA6JrBuC,QAAE,EAAE;AACFxC,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7JiB;AAiKrBwC,QAAE,EAAE;AACFzC,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjKiB;AAqKrByC,QAAE,EAAE;AACF1C,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArKiB;AAyKrB0C,QAAE,EAAE;AACF3C,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzKiB;AA6KrB2C,QAAE,EAAE;AACF5C,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OA7KiB;AAiLrB4C,QAAE,EAAE;AACF7C,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjLiB;AAqLrB6C,SAAG,EAAE;AACH9C,YAAI,EAAE,UADH;AAEHC,mBAAW,EAAE;AAFV,OArLgB;AAyLrB8C,QAAE,EAAE;AACF/C,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzLiB;AA6LrB+C,QAAE,EAAE;AACFhD,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7LiB;AAiMrBgD,QAAE,EAAE;AACFjD,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjMiB;AAqMrBiD,QAAE,EAAE;AACFlD,YAAI,EAAE,iBADJ;AAEFC,mBAAW,EAAE;AAFX,OArMiB;AAyMrBkD,QAAE,EAAE;AACFnD,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzMiB;AA6MrBmD,QAAE,EAAE;AACFpD,YAAI,EAAE,iBADJ;AAEFC,mBAAW,EAAE;AAFX,OA7MiB;AAiNrBoD,QAAE,EAAE;AACFrD,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjNiB;AAqNrBqD,QAAE,EAAE;AACFtD,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArNiB;AAyNrBsD,QAAE,EAAE;AACFvD,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAzNiB;AA6NrBuD,QAAE,EAAE;AACFxD,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OA7NiB;AAiOrBwD,QAAE,EAAE;AACFzD,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjOiB;AAqOrByD,QAAE,EAAE;AACF1D,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArOiB;AAyOrB0D,QAAE,EAAE;AACF3D,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzOiB;AA6OrB2D,QAAE,EAAE;AACF5D,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OA7OiB;AAiPrB4D,QAAE,EAAE;AACF7D,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjPiB;AAqPrB6D,QAAE,EAAE;AACF9D,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArPiB;AAyPrB8D,QAAE,EAAE;AACF/D,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAzPiB;AA6PrB+D,QAAE,EAAE;AACFhE,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OA7PiB;AAiQrBgE,QAAE,EAAE;AACFjE,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjQiB;AAqQrBiE,QAAE,EAAE;AACFlE,YAAI,EAAE,aADJ;AAEFC,mBAAW,EAAE;AAFX,OArQiB;AAyQrBkE,QAAE,EAAE;AACFnE,YAAI,EAAE,YADJ;AAEFC,mBAAW,EAAE;AAFX,OAzQiB;AA6QrBmE,QAAE,EAAE;AACFpE,YAAI,EAAE,aADJ;AAEFC,mBAAW,EAAE;AAFX,OA7QiB;AAiRrBoE,QAAE,EAAE;AACFrE,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OAjRiB;AAqRrBqE,QAAE,EAAE;AACFtE,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OArRiB;AAyRrBsE,QAAE,EAAE;AACFvE,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzRiB;AA6RrBuE,QAAE,EAAE;AACFxE,YAAI,EAAE,KADJ;AAEFC,mBAAW,EAAE;AAFX,OA7RiB;AAiSrBwE,QAAE,EAAE;AACFzE,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAjSiB;AAqSrByE,QAAE,EAAE;AACF1E,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArSiB;AAySrB0E,QAAE,EAAE;AACF3E,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAzSiB;AA6SrB2E,QAAE,EAAE;AACF5E,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OA7SiB;AAiTrB4E,QAAE,EAAE;AACF7E,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjTiB;AAqTrB6E,QAAE,EAAE;AACF9E,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OArTiB;AAyTrB8E,QAAE,EAAE;AACF/E,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzTiB;AA6TrB+E,QAAE,EAAE;AACFhF,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7TiB;AAiUrBgF,QAAE,EAAE;AACFjF,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjUiB;AAqUrBiF,QAAE,EAAE;AACFlF,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArUiB;AAyUrBkF,QAAE,EAAE;AACFnF,YAAI,EAAE,aADJ;AAEFC,mBAAW,EAAE;AAFX,OAzUiB;AA6UrBmF,QAAE,EAAE;AACFpF,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7UiB;AAiVrBoF,QAAE,EAAE;AACFrF,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjViB;AAqVrBqF,QAAE,EAAE;AACFtF,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArViB;AAyVrBsF,QAAE,EAAE;AACFvF,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzViB;AA6VrBuF,QAAE,EAAE;AACFxF,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OA7ViB;AAiWrBwF,QAAE,EAAE;AACFzF,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjWiB;AAqWrByF,QAAE,EAAE;AACF1F,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OArWiB;AAyWrB0F,QAAE,EAAE;AACF3F,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzWiB;AA6WrB2F,QAAE,EAAE;AACF5F,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7WiB;AAiXrB4F,QAAE,EAAE;AACF7F,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjXiB;AAqXrB6F,QAAE,EAAE;AACF9F,YAAI,EAAE,eADJ;AAEFC,mBAAW,EAAE;AAFX,OArXiB;AAyXrB8F,QAAE,EAAE;AACF/F,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzXiB;AA6XrB+F,QAAE,EAAE;AACFhG,YAAI,EAAE,YADJ;AAEFC,mBAAW,EAAE;AAFX,OA7XiB;AAiYrBgG,QAAE,EAAE;AACFjG,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjYiB;AAqYrBiG,QAAE,EAAE;AACFlG,YAAI,EAAE,KADJ;AAEFC,mBAAW,EAAE;AAFX,OArYiB;AAyYrBkG,QAAE,EAAE;AACFnG,YAAI,EAAE,YADJ;AAEFC,mBAAW,EAAE;AAFX,OAzYiB;AA6YrBmG,QAAE,EAAE;AACFpG,YAAI,EAAE,cADJ;AAEFC,mBAAW,EAAE;AAFX,OA7YiB;AAiZrBoG,QAAE,EAAE;AACFrG,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjZiB;AAqZrBqG,QAAE,EAAE;AACFtG,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OArZiB;AAyZrBsG,QAAE,EAAE;AACFvG,YAAI,EAAE,aADJ;AAEFC,mBAAW,EAAE;AAFX,OAzZiB;AA6ZrBuG,QAAE,EAAE;AACFxG,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7ZiB;AAiarBwG,QAAE,EAAE;AACFzG,YAAI,EAAE,YADJ;AAEFC,mBAAW,EAAE;AAFX,OAjaiB;AAqarByG,QAAE,EAAE;AACF1G,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAraiB;AAyarB0G,QAAE,EAAE;AACF3G,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAzaiB;AA6arB2G,QAAE,EAAE;AACF5G,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7aiB;AAibrB4G,QAAE,EAAE;AACF7G,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjbiB;AAqbrB6G,QAAE,EAAE;AACF9G,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArbiB;AAybrB8G,QAAE,EAAE;AACF/G,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzbiB;AA6brB+G,QAAE,EAAE;AACFhH,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7biB;AAicrBgH,QAAE,EAAE;AACFjH,YAAI,EAAE,kBADJ;AAEFC,mBAAW,EAAE;AAFX,OAjciB;AAqcrBiH,QAAE,EAAE;AACFlH,YAAI,EAAE,kBADJ;AAEFC,mBAAW,EAAE;AAFX,OArciB;AAycrBkH,QAAE,EAAE;AACFnH,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzciB;AA6crBmH,QAAE,EAAE;AACFpH,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7ciB;AAidrBoH,QAAE,EAAE;AACFrH,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjdiB;AAqdrBqH,QAAE,EAAE;AACFtH,YAAI,EAAE,mBADJ;AAEFC,mBAAW,EAAE;AAFX,OArdiB;AAydrBsH,QAAE,EAAE;AACFvH,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OAzdiB;AA6drBuH,QAAE,EAAE;AACFxH,YAAI,EAAE,kBADJ;AAEFC,mBAAW,EAAE;AAFX,OA7diB;AAierBwH,QAAE,EAAE;AACFzH,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjeiB;AAqerByH,QAAE,EAAE;AACF1H,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAreiB;AAyerB0H,QAAE,EAAE;AACF3H,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzeiB;AA6erB2H,QAAE,EAAE;AACF5H,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7eiB;AAifrB4H,QAAE,EAAE;AACF7H,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjfiB;AAqfrB6H,QAAE,EAAE;AACF9H,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OArfiB;AAyfrB8H,QAAE,EAAE;AACF/H,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAzfiB;AA6frB+H,QAAE,EAAE;AACFhI,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7fiB;AAigBrBgI,QAAE,EAAE;AACFjI,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OAjgBiB;AAqgBrBiI,QAAE,EAAE;AACFlI,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArgBiB;AAygBrBkI,QAAE,EAAE;AACFnI,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzgBiB;AA6gBrBmI,QAAE,EAAE;AACFpI,YAAI,EAAE,YADJ;AAEFC,mBAAW,EAAE;AAFX,OA7gBiB;AAihBrBoI,QAAE,EAAE;AACFrI,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjhBiB;AAqhBrBqI,QAAE,EAAE;AACFtI,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArhBiB;AAyhBrBsI,QAAE,EAAE;AACFvI,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzhBiB;AA6hBrBuI,QAAE,EAAE;AACFxI,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OA7hBiB;AAiiBrBwI,QAAE,EAAE;AACFzI,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjiBiB;AAqiBrByI,QAAE,EAAE;AACF1I,YAAI,EAAE,aADJ;AAEFC,mBAAW,EAAE;AAFX,OAriBiB;AAyiBrB0I,QAAE,EAAE;AACF3I,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAziBiB;AA6iBrB2I,QAAE,EAAE;AACF5I,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OA7iBiB;AAijBrB4I,QAAE,EAAE;AACF7I,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjjBiB;AAqjBrB6I,QAAE,EAAE;AACF9I,YAAI,EAAE,eADJ;AAEFC,mBAAW,EAAE;AAFX,OArjBiB;AAyjBrB8I,QAAE,EAAE;AACF/I,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzjBiB;AA6jBrB+I,QAAE,EAAE;AACFhJ,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7jBiB;AAikBrBgJ,QAAE,EAAE;AACFjJ,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjkBiB;AAqkBrBiJ,QAAE,EAAE;AACFlJ,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArkBiB;AAykBrBkJ,QAAE,EAAE;AACFnJ,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzkBiB;AA6kBrBmJ,QAAE,EAAE;AACFpJ,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7kBiB;AAilBrBoJ,QAAE,EAAE;AACFrJ,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAjlBiB;AAqlBrBqJ,QAAE,EAAE;AACFtJ,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OArlBiB;AAylBrBsJ,QAAE,EAAE;AACFvJ,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzlBiB;AA6lBrBuJ,QAAE,EAAE;AACFxJ,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7lBiB;AAimBrBwJ,QAAE,EAAE;AACFzJ,YAAI,EAAE,gBADJ;AAEFC,mBAAW,EAAE;AAFX,OAjmBiB;AAqmBrByJ,QAAE,EAAE;AACF1J,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OArmBiB;AAymBrB0J,QAAE,EAAE;AACF3J,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzmBiB;AA6mBrB2J,QAAE,EAAE;AACF5J,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7mBiB;AAinBrB4J,QAAE,EAAE;AACF7J,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjnBiB;AAqnBrB6J,QAAE,EAAE;AACF9J,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArnBiB;AAynBrB8J,QAAE,EAAE;AACF/J,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAznBiB;AA6nBrB+J,QAAE,EAAE;AACFhK,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OA7nBiB;AAioBrBgK,QAAE,EAAE;AACFjK,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OAjoBiB;AAqoBrBiK,QAAE,EAAE;AACFlK,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAroBiB;AAyoBrBkK,QAAE,EAAE;AACFnK,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAzoBiB;AA6oBrBmK,QAAE,EAAE;AACFpK,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OA7oBiB;AAipBrBoK,QAAE,EAAE;AACFrK,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAjpBiB;AAqpBrBqK,QAAE,EAAE;AACFtK,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArpBiB;AAypBrBsK,QAAE,EAAE;AACFvK,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzpBiB;AA6pBrBuK,QAAE,EAAE;AACFxK,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7pBiB;AAiqBrBwK,QAAE,EAAE;AACFzK,YAAI,EAAE,KADJ;AAEFC,mBAAW,EAAE;AAFX,OAjqBiB;AAqqBrByK,QAAE,EAAE;AACF1K,YAAI,EAAE,UADJ;AAEFC,mBAAW,EAAE;AAFX,OArqBiB;AAyqBrB0K,QAAE,EAAE;AACF3K,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAzqBiB;AA6qBrB2K,QAAE,EAAE;AACF5K,YAAI,EAAE,WADJ;AAEFC,mBAAW,EAAE;AAFX,OA7qBiB;AAirBrB4K,QAAE,EAAE;AACF7K,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX,OAjrBiB;AAqrBrB6K,QAAE,EAAE;AACF9K,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OArrBiB;AAyrBrB8K,QAAE,EAAE;AACF/K,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzrBiB;AA6rBrB+K,QAAE,EAAE;AACFhL,YAAI,EAAE,YADJ;AAEFC,mBAAW,EAAE;AAFX,OA7rBiB;AAisBrBgL,QAAE,EAAE;AACFjL,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjsBiB;AAqsBrBiL,QAAE,EAAE;AACFlL,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OArsBiB;AAysBrBkL,QAAE,EAAE;AACFnL,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OAzsBiB;AA6sBrBmL,QAAE,EAAE;AACFpL,YAAI,EAAE,OADJ;AAEFC,mBAAW,EAAE;AAFX,OA7sBiB;AAitBrBoL,QAAE,EAAE;AACFrL,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OAjtBiB;AAqtBrBqL,QAAE,EAAE;AACFtL,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OArtBiB;AAytBrBsL,QAAE,EAAE;AACFvL,YAAI,EAAE,QADJ;AAEFC,mBAAW,EAAE;AAFX,OAztBiB;AA6tBrBuL,QAAE,EAAE;AACFxL,YAAI,EAAE,SADJ;AAEFC,mBAAW,EAAE;AAFX,OA7tBiB;AAiuBrBwL,SAAG,EAAE;AACHzL,YAAI,EAAE,kBADH;AAEHC,mBAAW,EAAE;AAFV,OAjuBgB;AAquBrByL,QAAE,EAAE;AACF1L,YAAI,EAAE,MADJ;AAEFC,mBAAW,EAAE;AAFX;AAruBiB,KAAvB;AA2uBe;;AAAA,qCAAAH,cAAA;;;;;;;;;;;;;;;;AC9uBf;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;QAQa6L,kB;;;AAEX,kCAAoBpN,YAApB,EAAgD;AAAA;;AAA5B,aAAAA,YAAA,GAAAA,YAAA;AAA+B;;;;mCAE3C,CACP;;;mCAEU;AACT,eAAKA,YAAL,CAAkBqN,cAAlB,CAAiC,wBAAjC;AACD;;;;;;;uBATUD,kB,EAAkB,qI;AAAA,K;;;YAAlBA,kB;AAAkB,qC;AAAA,c;AAAA,a;AAAA,2G;AAAA;AAAA;ACR/B;;AACE;;AACE;;AACF;;AACA;;AACA;;AACA;;AACA;;AACE;AAAA,mBAAS,IAAAE,QAAA,EAAT;AAAmB,WAAnB;;AACD;;AAAoB;;AACvB;;;;;;;;;sEDFaF,kB,EAAkB;cAL9B,uDAK8B;eALpB;AACT9P,kBAAQ,EAAE,gBADD;AAETsC,qBAAW,EAAE,6BAFJ;AAGTC,mBAAS,EAAE,CAAC,6BAAD;AAHF,S;AAKoB,Q;;;;;;;;;;;;;;;;;;;;;;AER/B;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;QAUa0N,gB;;;AAIX,gCACUC,cADV,EACwC;AAAA;;AAA9B,aAAAA,cAAA,GAAAA,cAAA;AAJV,aAAAC,SAAA,GAAY,IAAI,wDAAJ,CAAc,EAAd,CAAZ;AAKK;;;;mCAEG,CACP;;;;;;;uBATUF,gB,EAAgB,iI;AAAA,K;;;YAAhBA,gB;AAAgB,mC;AAAA,c;AAAA,a;AAAA,uE;AAAA;AAAA;ACV7B;;AACE;;AACA;;AACA;;AACA;;AACA;;AACF;;;;AAHsB;;AAAA;;;;;;;;;sEDOTA,gB,EAAgB;cAL5B,uDAK4B;eALlB;AACTjQ,kBAAQ,EAAE,cADD;AAETsC,qBAAW,EAAE,2BAFJ;AAGTC,mBAAS,EAAE,CAAC,2BAAD;AAHF,S;AAKkB,Q;;;;;;;;;;;;;;;;;;;;;;AEV7B;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;AAIA,QAAM6N,MAAM,GAAW,CACrB;AAAEC,UAAI,EAAE,EAAR;AAAYC,eAAS,EAAE;AAAvB,KADqB,CAAvB;;QASaC,gB;;;;;YAAAA;;;;yBAAAA,gB;AAAgB,O;AAAA,gBAHlB,CAAC,6DAAaC,QAAb,CAAsBJ,MAAtB,CAAD,CAGkB,EAFjB,4DAEiB;;;;0HAAhBG,gB,EAAgB;AAAA;AAAA,kBAFjB,4DAEiB;AAAA,O;AAFL,K;;;;;sEAEXA,gB,EAAgB;cAJ5B,sDAI4B;eAJnB;AACRnP,iBAAO,EAAE,CAAC,6DAAaoP,QAAb,CAAsBJ,MAAtB,CAAD,CADD;AAER7O,iBAAO,EAAE,CAAC,4DAAD;AAFD,S;AAImB,Q;;;;;;;;;;;;;;;;;;ACb7B;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;QA0BakP,S;;;;;YAAAA;;;;yBAAAA,S;AAAS,O;AAAA,gBAVX,CACP,4DADO,EAEP,4DAFO,EAGP,kEAHO,EAIP,oEAJO,EAKP,kEALO,EAMP,2FANO,EAOP,yEAPO,CAUW;;;;0HAATA,S,EAAS;AAAA,uBAXL,6EAWK,EAXa,0EAWb,EAX8B,+FAW9B,EAXsD,oFAWtD;AAXwE,kBAE1F,4DAF0F,EAG1F,4DAH0F,EAI1F,kEAJ0F,EAK1F,oEAL0F,EAM1F,kEAN0F,EAO1F,2FAP0F,EAQ1F,yEAR0F;AAWxE,O;AAHJ,K;;;;;sEAGLA,S,EAAS;cAZrB,sDAYqB;eAZZ;AACRnP,sBAAY,EAAE,CAAC,6EAAD,EAAmB,0EAAnB,EAAoC,+FAApC,EAA4D,oFAA5D,CADN;AAERF,iBAAO,EAAE,CACP,4DADO,EAEP,4DAFO,EAGP,kEAHO,EAIP,oEAJO,EAKP,kEALO,EAMP,2FANO,EAOP,yEAPO;AAFD,S;AAYY,Q;;;;;;;;;;;;;;;;;;AC1BtB;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;AAAA;;;AAAA;AAAA;AAAA;;;;ACOQ;;AACE;;AAA+C;;AAAsB;;AACvE;;;;;;AADU;;AAAA;;AAAuC;;AAAA;;;;;;AAKjD;;AACE;;AAA+C;;AAAsB;;AACvE;;;;;;AADU;;AAAA;;AAAuC;;AAAA;;;;QDJ5CsP,sB;;;AAkBX,sCACS7O,aADT,EACqC;AAAA;;AAA5B,aAAAA,aAAA,GAAAA,aAAA;AAlBA,aAAAsO,SAAA,GAAuB,IAAI,wDAAJ,CAAc,EAAd,CAAvB;AAET,aAAAQ,SAAA,GAA6B,+DAA7B;AAiBK;;;;mCAEG;AACN,eAAKC,aAAL;AACA,eAAKC,QAAL;AACD;;;wCAEe;AACd,eAAKV,SAAL,CAAeW,UAAf,CAA0B,UAA1B,EAAsC,IAAI,0DAAJ,CAAgB,EAAhB,CAAtC;AACA,eAAKX,SAAL,CAAeW,UAAf,CAA0B,QAA1B,EAAoC,IAAI,0DAAJ,CAAgB,EAAhB,CAApC;AACA,eAAKX,SAAL,CAAeW,UAAf,CAA0B,OAA1B,EAAmC,IAAI,0DAAJ,CAAgB,EAAhB,CAAnC;AACA,eAAKX,SAAL,CAAeW,UAAf,CAA0B,OAA1B,EAAmC,IAAI,0DAAJ,CAAgB,EAAhB,CAAnC;AACD;;;mCAEkB;AAAA;;AACjB,eAAKjP,aAAL,CAAmBG,OAAnB,CAA2BC,SAA3B,CAAqC,UAAAsB,IAAI,EAAI;AAC3C,gBAAIA,IAAJ,EAAU;AACR;AACA,oBAAI,CAAC4M,SAAL,CAAeY,MAAf;AACD,aAHD,MAGO;AACL,oBAAI,CAACZ,SAAL,CAAea,OAAf;AACD;AACF,WAPD;AAQD;;;4BAtCqB;AAAA;;AACpB,iBAAOC,MAAM,CAACC,IAAP,CAAY,KAAKP,SAAjB,EAA4BQ,GAA5B,CAAgC,UAAAC,CAAC,EAAI;AAC1C,mBAAO,MAAP,OAAO,CAAP,kBACK,MAAI,CAACT,SAAL,CAAeS,CAAf,CADL,CAAO,EACe;AACpBC,iBAAG,EAAED;AADe,aADf,CAAP;AAID,WALM,CAAP;AAMD;;;4BAEa;AACZ,iBAAO,EAAP;AACD;;;;;;;uBAhBUV,sB,EAAsB,uI;AAAA,K;;;YAAtBA,sB;AAAsB,yC;AAAA;AAAA;AAAA,O;AAAA,e;AAAA,a;AAAA,qgB;AAAA;AAAA;ACVnC;;AACE;;AAAI;;AAAc;;AAClB;;AAEE;;AACE;;AACE;;AAAmC;;AAAQ;;AAC3C;;AAGF;;AACA;;AACE;;AAAmC;;AAAM;;AACzC;;AAGF;;AACA;;AACE;;AAAc;;AAAK;;AACnB;;AACF;;AACA;;AACE;;AAAc;;AAAK;;AACnB;;AACF;;AACF;;AACF;;AACF;;;;AAxBI;;AAAA;;AAIkB;;AAAA;;AAMA;;AAAA;;;;;;;;;sEDHTA,sB,EAAsB;cALlC,uDAKkC;eALxB;AACT1Q,kBAAQ,EAAE,oBADD;AAETsC,qBAAW,EAAE,iCAFJ;AAGTC,mBAAS,EAAE,CAAC,iCAAD;AAHF,S;AAKwB,Q;;;;;;gBAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QEHU+O,c;;;AAEX,8BAAoB7O,UAApB,EAA4C;AAAA;;AAAxB,aAAAA,UAAA,GAAAA,UAAA;AACpB,aAAAkO,SAAA,GAAY,EAAZ;AAD+C;;;;wCAkBjBY,Q,EAA2BC,K,EAAeC,a,EAAqB;;;;;;;;;AACrFC,2B,GAAU;AACdC,iCAAW,EAAE;AACXF,qCAAa,EAAbA,aADW;AAEXG,6BAAK,EAAEL,QAAQ,CAACK,KAFL;AAGXC,oCAAY,EAAEN,QAAQ,CAACO;AAHZ,uBADC;AAMdN,2BAAK,EAAE;AACLO,4BAAI,EAAEP,KADD;AAELQ,4BAAI,EAAErS;AAFD,uBANO;AAUdsS,2BAAK,EAAE;AACLC,oCAAY,EAAEX,QAAQ,CAACY,MAAT,CAAgBC,KAAhB,CAAsB,GAAtB,EAA2BC,KAA3B,CAAiC,CAAjC,EAAoC,CAApC,EAAuCC,IAAvC,CAA4C,GAA5C,CADT;AAELnO,4BAAI,EAAEoN,QAAQ,CAACY;AAFV;AAVO,qB;;AAgBhB,wBAAIb,cAAc,CAACiB,MAAf,CAAsBf,KAAtB,CAAJ,EAAkC;AAChCE,6BAAO,CAACF,KAAR,CAAcQ,IAAd,GAAqBN,OAAO,CAACF,KAAR,CAAcO,IAAnC;AACA,6BAAOL,OAAO,CAACF,KAAR,CAAcO,IAArB;AACD;;;AAEgB,2BAAMS,KAAK,2EAAoEjB,QAAQ,CAACrP,MAA7E,GAC1B;AAAEuQ,4BAAM,EAAE,MAAV;AAAkBC,0BAAI,EAAE7O,IAAI,CAACC,SAAL,CAAe4N,OAAf;AAAxB,qBAD0B,CAAX;;;AAAXiB,4B;;AAIO,2BAAMA,QAAQ,CAACC,IAAT,EAAN;;;AAAPA,wB;;wBACDD,QAAQ,CAACE,E;;;;;AACZC,yBAAK,CAACF,IAAI,CAAClP,KAAL,CAAW/B,OAAZ,CAAL,C,CAA0B;;;;;qDAIrBiR,IAAI,CAACG,Y;;;;;;;;;AACb;;;+BA9CaC,G,EAAW;AACvB,iBAAOA,GAAG,CAACC,UAAJ,CAAe,SAAf,KAA6BD,GAAG,CAACE,QAAJ,CAAa,UAAb,CAApC;AACD;;;yCAEuB3B,Q,EAAQ;AAC9B,cAAI,CAACA,QAAQ,CAACrP,MAAV,IAAoB,CAACqP,QAAQ,CAACY,MAAlC,EAA0C;AACxCW,iBAAK,qFAAL;AACA,mBAAO,KAAP;AACD;;AAED,iBAAO,IAAP;AACD;;;;;;;uBAlBUxB,c,EAAc,uH;AAAA,K;;;aAAdA,c;AAAc,eAAdA,cAAc,K;AAAA,kBAFb;;;;;sEAEDA,c,EAAc;cAH1B,wDAG0B;eAHf;AACV1W,oBAAU,EAAE;AADF,S;AAGe,Q","file":"tts-tts-module-es5.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"]}