@sapui5/sap.fe.core 1.111.1 → 1.111.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +7 -5
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js.map +1 -1
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +5 -4
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection-dbg.js +24 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js.map +1 -1
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +29 -19
- package/src/sap/fe/core/formatters/FiscalFormat-dbg.js +1 -1
- package/src/sap/fe/core/fpm/manifest.json +1 -1
- package/src/sap/fe/core/library-dbg.js +1 -1
- package/src/sap/fe/core/library-preload.js +5 -5
- package/src/sap/fe/core/library-preload.js.map +1 -1
- package/src/sap/fe/core/library.js +1 -1
- package/src/sap/fe/core/manifest.json +1 -1
- package/src/sap/fe/core/type/FiscalDate-dbg.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalIntentBasedNavigation.js","names":["sap","ui","define","Log","mergeObjects","CommonUtils","draft","MetaModelConverter","ClassSupport","KeepAliveHelper","ModelHelper","SelectionVariant","Core","Fragment","ControllerExtension","OverrideExecution","XMLPreprocessor","XMLTemplateProcessor","JSONModel","Aggregation","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_dec21","_class","_class2","AggregationHelper","publicExtension","privateExtension","methodOverride","finalExtension","extensible","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","InternalIntentBasedNavigation","Instead","_ControllerExtension","apply","this","arguments","_proto","onInit","_oAppComponent","base","getAppComponent","_oMetaModel","getModel","getMetaModel","_oNavigationService","getNavigationService","_oView","getView","navigate","sSemanticObject","sAction","mNavigationParameters","_doNavigate","oContext","vNavigationContexts","navigationContexts","aNavigationContexts","Array","isArray","vSemanticObjectMapping","semanticObjectMapping","vOutboundParams","additionalNavigationParameters","oTargetInfo","semanticObject","action","oView","oController","getController","setBindingContext","aSemanticAttributes","oSelectionVariant","length","oNavigationContext","isA","oSemanticAttributes","getObject","sMetaPath","getMetaPath","getPath","removeSensitiveData","oNavContext","prepareContextForExternalNavigation","propertiesWithoutConflict","push","semanticAttributes","data","metaPath","mixAttributesAndSelectionVariant","toJSONString","oModel","sEntitySet","getEntitySet","sContextUrl","constructContextUrl","setFilterContextUrl","_applyOutboundParams","intentBasedNavigation","adaptNavigationContext","_applySemanticObjectMappings","_removeTechnicalParameters","sNavMode","_intentBasedNavigation","getNavigationMode","mRefreshStrategies","refreshStrategies","oInternalModel","getViewData","refreshStrategyOnAppRestore","mViewRefreshStrategies","mRefreshStrategy","getRefreshStrategyForIntent","setProperty","onError","require","MessageBox","oResourceBundle","getLibraryResourceBundle","error","getText","title","Error","oBindingContext","getBindingContext","oMetaModel","converterType","isStickySessionSupported","processDataLossOrDraftDiscardConfirmation","Function","NavigationType","ForwardNavigation","oDistinctKeys","sContextPath","aMetaPathParts","split","filter","Boolean","_findDistinctKeysInObject","LookUpObject","sLookUpObjectMetaPath","sKey","oNewLookUpObject","sMainEntitySetName","sMainEntityTypeName","oPropertiesWithoutConflict","sMainEntityValuePath","sCurrentValuePath","sLastValuePath","sDistinctKey","aConflictingPaths","sWinnerValuePath","i","sPath","sPathInContext","replace","sEntityTypeName","sValue","join","getProperty","sProperty","prepareFiltersForExternalNavigation","oFilterBarConditions","sRootPath","aParameters","oFilterConditionsWithoutConflict","sFullContextPath","includes","aPathParts","replaceAll","filterConditions","filterConditionsWithoutConflict","navigateWithConfirmationDialog","_mNavigationParameter","notApplicableContexts","oApplicableContextDialog","onClose","close","onContinue","applicableContexts","fnOpenAndFillDialog","oDialogContent","nNotApplicable","aNotApplicableItems","oNotApplicableItemsModel","oTotals","total","label","setModel","open","sFragmentName","oDialogFragment","loadTemplate","sCanonicalPath","getCanonicalPath","substr","indexOf","Promise","resolve","process","name","bindingContexts","entityType","createBindingContext","models","metaModel","then","oFragment","load","definition","controller","oPopover","addDependent","catch","removeSelectOption","entitySet","oAttributes","transAggregations","customAggregates","_getAggregates","getDiagnostics","aProperties","j","sProp","_deleteAggregates","aPropertyAnnotations","_getPropertyAnnotations","oFieldControl","_isFieldControlPathInapplicable","aggregates","_oFullContext$targetO","_oFullContext$targetO2","oFullContext","getInvolvedDataModelObjects","targetObject","annotations","_annotations","oDiagnostics","converterContext","_getConverterContext","aggregationHelper","getEntityType","isAnalyticsSupported","getTransAggregations","map","transAgg","Name","Value","getCustomAggregateDefinitions","customAggregate","qualifier","oViewData","contextPath","fullContextPath","getConverterContextForPath","sFieldControlPath","oAttribute","bInapplicable","aParts","hasOwnProperty","vMappings","oMappings","JSON","parse","sLocalProperty","sSemanticObjectProperty","oSelectOption","getSelectOption","massAddSelectOption","navigateOutbound","sOutbound","_oManifestEntry$cross","_oManifestEntry$cross2","aNavParams","oManifestEntry","getManifestEntry","oOutbound","crossNavigation","outbounds","outboundParams","parameters","getOutboundParams","oParams","aValues","_aNavParams","_aNavParams2","aSelectProperties","getSelectOptionsPropertyNames","addSelectOption","oOutboundParams","oParamsMapping","oMapping","format","onChevronPressNavigateOutBound","sOutboundTarget","sCreatePath","oOutbounds","getRoutingService","getOutbounds","oDisplayOutbound","oRefreshStrategies","intents","oDefaultRefreshStrategy","getMetaPathForContext","getOwnPropertyDescriptor"],"sources":["InternalIntentBasedNavigation-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,eAAgB,sBAAuB,0BAA2B,kDAAmD,4CAA6C,mCAAoC,sCAAuC,kCAAmC,qCAAsC,mBAAoB,uBAAwB,sCAAuC,oCAAqC,mCAAoC,mCAAoC,8BAA+B,qCAAsC,SAAUC,EAAKC,EAAcC,EAAaC,EAAOC,EAAoBC,EAAcC,EAAiBC,EAAaC,EAAkBC,EAAMC,EAAUC,EAAqBC,EAAmBC,EAAiBC,EAAsBC,EAAWC,GACrzB,aAEA,IAAIC,EAAMC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAC1K,IAAIC,EAAoBxB,EAAYwB,kBACpC,IAAIC,EAAkBpC,EAAaoC,gBACnC,IAAIC,EAAmBrC,EAAaqC,iBACpC,IAAIC,EAAiBtC,EAAasC,eAClC,IAAIC,EAAiBvC,EAAauC,eAClC,IAAIC,EAAaxC,EAAawC,WAC9B,IAAIC,EAAiBzC,EAAayC,eAClC,SAASC,EAAeC,EAAUC,GAAcD,EAASE,UAAYC,OAAOC,OAAOH,EAAWC,WAAYF,EAASE,UAAUG,YAAcL,EAAUM,EAAgBN,EAAUC,EAAa,CAC5L,SAASK,EAAgBC,EAAGC,GAAKF,EAAkBH,OAAOM,eAAiBN,OAAOM,eAAeC,OAAS,SAASJ,EAAgBC,EAAGC,GAAKD,EAAEI,UAAYH,EAAG,OAAOD,CAAG,EAAG,OAAOD,EAAgBC,EAAGC,EAAI,CACvM,SAASI,EAA0BC,EAAQC,EAAUC,EAAYC,EAAYC,GAAW,IAAIC,EAAO,CAAC,EAAGf,OAAOgB,KAAKH,GAAYI,QAAQ,SAAUC,GAAOH,EAAKG,GAAOL,EAAWK,EAAM,GAAIH,EAAKI,aAAeJ,EAAKI,WAAYJ,EAAKK,eAAiBL,EAAKK,aAAc,GAAI,UAAWL,GAAQA,EAAKM,YAAa,CAAEN,EAAKO,SAAW,IAAM,CAAEP,EAAOH,EAAWW,QAAQC,UAAUC,OAAO,SAAUV,EAAMW,GAAa,OAAOA,EAAUhB,EAAQC,EAAUI,IAASA,CAAM,EAAGA,GAAO,GAAID,GAAWC,EAAKM,mBAAqB,EAAG,CAAEN,EAAKY,MAAQZ,EAAKM,YAAcN,EAAKM,YAAYO,KAAKd,QAAgB,EAAGC,EAAKM,YAAcQ,SAAW,CAAE,GAAId,EAAKM,mBAAqB,EAAG,CAAErB,OAAO8B,eAAepB,EAAQC,EAAUI,GAAOA,EAAO,IAAM,CAAE,OAAOA,CAAM,CASntB,IAAIgB,GAAiCjE,EAAO6B,EAAe,oEAAqE5B,EAAQyB,IAAkBxB,EAAQsB,IAAmBrB,EAAQwB,IAAkBvB,EAAQoB,IAAmBnB,EAAQsB,IAAkBrB,EAAQkB,IAAmBjB,EAAQoB,IAAkBnB,EAAQgB,IAAmBf,EAASmB,EAAWjC,EAAkBuE,SAAUxD,EAASc,IAAmBb,EAASgB,IAAkBf,EAASa,IAAoBZ,EAASW,IAAmBV,EAASa,IAAkBZ,EAASS,IAAmBR,EAASW,IAAkBV,EAASO,IAAmBN,EAASS,IAAkBR,EAASK,IAAmBJ,EAASO,IAAkB3B,EAAKqB,GAAUC,EAAuB,SAAU6C,GACluBrC,EAAemC,EAA+BE,GAC9C,SAASF,IACP,OAAOE,EAAqBC,MAAMC,KAAMC,YAAcD,IACxD,CACA,IAAIE,EAASN,EAA8BhC,UAC3CsC,EAAOC,OAAS,SAASA,IACvBH,KAAKI,eAAiBJ,KAAKK,KAAKC,kBAChCN,KAAKO,YAAcP,KAAKI,eAAeI,WAAWC,eAClDT,KAAKU,oBAAsBV,KAAKI,eAAeO,uBAC/CX,KAAKY,OAASZ,KAAKK,KAAKQ,SAC1B,EA4BAX,EAAOY,SAAW,SAASA,EAASC,EAAiBC,EAASC,GAC5D,MAAMC,EAAcC,IAClB,MAAMC,EAAsBH,GAAyBA,EAAsBI,mBACzEC,EAAsBF,IAAwBG,MAAMC,QAAQJ,GAAuB,CAACA,GAAuBA,EAC3GK,EAAyBR,GAAyBA,EAAsBS,sBACxEC,EAAkBV,GAAyBA,EAAsBW,+BACjEC,EAAc,CACZC,eAAgBf,EAChBgB,OAAQf,GAEVgB,EAAQhC,KAAKK,KAAKQ,UAClBoB,EAAcD,EAAME,gBACtB,GAAIf,EAAU,CACZnB,KAAKY,OAAOuB,kBAAkBhB,EAChC,CACA,GAAIJ,GAAmBC,EAAS,CAC9B,IAAIoB,EAAsB,GACxBC,EAAoB,IAAInH,EAE1B,GAAIoG,GAAuBA,EAAoBgB,OAAQ,CACrDhB,EAAoBxC,QAAQyD,IAG1B,GAAIA,EAAmBC,KAAOD,EAAmBC,IAAI,iCAAkC,CAErF,IAAIC,EAAsBF,EAAmBG,YAC7C,MAAMC,EAAY3C,KAAKO,YAAYqC,YAAYL,EAAmBM,WAElEJ,EAAsBzC,KAAK8C,oBAAoBL,EAAqBE,GACpE,MAAMI,EAAc/C,KAAKgD,oCAAoCP,EAAqBF,GAClFV,EAAY,6BAA+BkB,EAAYE,0BACvDb,EAAoBc,KAAKH,EAAYI,mBACvC,MAAO,KAAMZ,GAAsBhB,MAAMC,QAAQe,EAAmBa,eAAiBb,IAAuB,SAAU,CAEpHH,EAAoBc,KAAKlD,KAAK8C,oBAAoBP,EAAmBa,KAAMb,EAAmBc,UAChG,MAAO,GAAId,GAAsBhB,MAAMC,QAAQe,EAAmBa,MAAO,CAGvEhB,EAAsBpC,KAAK8C,oBAAoBP,EAAmBa,KAAMb,EAAmBc,SAC7F,GAEJ,CAEA,GAAIjB,GAAuBA,EAAoBE,OAAQ,CACrDD,EAAoBrC,KAAKU,oBAAoB4C,iCAAiClB,EAAqBC,EAAkBkB,eACvH,CAGA,MAAMC,EAASxD,KAAKY,OAAOJ,WACzBiD,EAAazD,KAAK0D,eAClBC,EAAcF,EAAazD,KAAKU,oBAAoBkD,oBAAoBH,EAAYD,GAAU9D,UAChG,GAAIiE,EAAa,CACftB,EAAkBwB,oBAAoBF,EACxC,CAGA,GAAIhC,EAAiB,CACnB3B,KAAK8D,qBAAqBzB,EAAmBV,EAC/C,CAGAM,EAAY8B,sBAAsBC,uBAAuB3B,EAAmBR,GAG5E,GAAIJ,EAAwB,CAC1BzB,KAAKiE,6BAA6B5B,EAAmBZ,EACvD,CAGAzB,KAAKkE,2BAA2B7B,GAGhC,MAAM8B,EAAWlC,EAAYmC,uBAAuBC,oBAGpD,MAAMC,EAAqBrD,GAAyBA,EAAsBsD,mBAAqB,CAAC,EAC9FC,EAAiBxC,EAAMxB,SAAS,YAClC,GAAIgE,EAAgB,CAClB,IAAKxC,GAASA,EAAMyC,eAAeC,4BAA6B,CAC9D,MAAMC,EAAyB3C,EAAMyC,cAAcC,6BAA+B,CAAC,EACnF/J,EAAa2J,EAAoBK,EACnC,CACA,MAAMC,EAAmB5J,EAAgB6J,4BAA4BP,EAAoBvD,EAAiBC,GAC1G,GAAI4D,EAAkB,CACpBJ,EAAeM,YAAY,+BAAgCF,EAC7D,CACF,CAGA,MAAMG,EAAU,WACdxK,IAAIC,GAAGwK,QAAQ,CAAC,oBAAqB,SAAUC,GAC7C,MAAMC,EAAkB/J,EAAKgK,yBAAyB,eACtDF,EAAWG,MAAMF,EAAgBG,QAAQ,4CAA6C,CACpFC,MAAOJ,EAAgBG,QAAQ,yBAEnC,EACF,EACArF,KAAKU,oBAAoBI,SAASC,EAAiBC,EAASqB,EAAkBkB,eAAgB7D,UAAWqF,EAASrF,UAAWyE,EAC/H,KAAO,CACL,MAAM,IAAIoB,MAAM,yCAClB,GAEF,MAAMC,EAAkBxF,KAAKK,KAAKQ,UAAU4E,oBAC5C,MAAMC,EAAaF,GAAmBA,EAAgBhF,WAAWC,eACjE,GAAIT,KAAKa,UAAU4D,cAAckB,gBAAkB,cAAgBD,IAAezK,EAAY2K,yBAAyBF,GAAa,CAClI7K,EAAMgL,0CAA0C3E,EAAY9C,KAAK4B,MAAO8F,SAASlI,UAAWoC,KAAKK,KAAKQ,UAAU4E,oBAAqBzF,KAAKK,KAAKQ,UAAUqB,gBAAiB,KAAMrH,EAAMkL,eAAeC,kBACvM,KAAO,CACL9E,GACF,CACF,EASAhB,EAAO8C,oCAAsC,SAASA,EAAoCP,EAAqBtB,GAG7G,MAAM8E,EAAgB,CAAC,EACrBC,EAAe/E,EAAS0B,UACxB6C,EAAavE,EAASX,WAAWC,eACjCkC,EAAY+C,EAAW9C,YAAYsD,GACnCC,EAAiBxD,EAAUyD,MAAM,KAAKC,OAAOC,SAC/C,SAASC,EAA0BC,EAAcC,GAC/C,IAAK,MAAMC,KAAQF,EAAc,CAE/B,GAAIA,EAAaE,KAAU,aAAeF,EAAaE,KAAU,SAAU,CACzE,IAAKT,EAAcS,GAAO,CAExBT,EAAcS,GAAQ,EACxB,CAEAT,EAAcS,GAAMxD,KAAKuD,EAC3B,KAAO,CAEL,MAAME,EAAmBH,EAAaE,GACtCH,EAA0BI,EAAkB,GAAGF,KAAyBC,IAC1E,CACF,CACF,CACAH,EAA0B9D,EAAqBE,GAG/C,MAAMiE,EAAqBT,EAAe,GACxCU,EAAsBnB,EAAWhD,UAAU,IAAIkE,iBAC/CE,EAA6B,CAAC,EAChC,IAAIC,EAAsBC,EAAmBC,EAC7C,IAAK,MAAMC,KAAgBjB,EAAe,CACxC,MAAMkB,EAAoBlB,EAAciB,GACxC,IAAIE,EAMJ,GAAID,EAAkB7E,OAAS,EAAG,CAEhC,IAAK,IAAI+E,EAAI,EAAGA,GAAKF,EAAkB7E,OAAS,EAAG+E,IAAK,CACtD,MAAMC,EAAQH,EAAkBE,GAChC,IAAIE,EAAiBD,EAAME,QAAQF,IAAU3E,EAAYA,EAAY,GAAGA,KAAc,IACtF4E,GAAkBA,IAAmB,GAAKA,EAAiB,GAAGA,MAAqBL,EACnF,MAAMO,EAAkB/B,EAAWhD,UAAU,GAAG4E,iBAIhD,GAAIG,IAAoBZ,EAAqB,CAC3CE,EAAuBQ,CACzB,CAGA,GAAID,IAAU3E,EAAW,CACvBqE,EAAoBO,CACtB,CAGAN,EAAiBM,EAIjB9E,EAAoB,GAAGE,KAAa4E,IAAiBnB,MAAM,KAAKC,OAAO,SAAUqB,GAC/E,OAAOA,GAAU,EACnB,GAAGC,KAAK,MAAQxG,EAASyG,YAAYL,EACvC,CAEAH,EAAmBL,GAAwBC,GAAqBC,EAChExE,EAAoByE,GAAgB/F,EAASyG,YAAYR,GACzDL,EAAuBrH,UACvBsH,EAAoBtH,UACpBuH,EAAiBvH,SACnB,KAAO,CAEL,MAAM4H,EAAQH,EAAkB,GAChC,IAAII,EAAiBD,EAAME,QAAQF,IAAU3E,EAAYA,EAAY,GAAGA,KAAc,IACtF4E,GAAkBA,IAAmB,GAAKA,EAAiB,GAAGA,MAAqBL,EACnFzE,EAAoByE,GAAgB/F,EAASyG,YAAYL,GACzDT,EAA2BI,GAAgB,GAAGvE,KAAa4E,IAAiBnB,MAAM,KAAKC,OAAO,SAAUqB,GACtG,OAAOA,GAAU,EACnB,GAAGC,KAAK,IACV,CACF,CAEA,IAAK,MAAME,KAAapF,EAAqB,CAC3C,GAAIA,EAAoBoF,KAAe,aAAepF,EAAoBoF,KAAe,SAAU,QAC1FpF,EAAoBoF,EAC7B,CACF,CACA,MAAO,CACL1E,mBAAoBV,EACpBQ,0BAA2B6D,EAE/B,EASA5G,EAAO4H,oCAAsC,SAASA,EAAoCC,EAAsBC,EAAWC,GACzH,IAAIX,EACJ,MAAMrB,EAAgB,CAAC,EACvB,MAAMiC,EAAmC,CAAC,EAC1C,IAAInB,EAAsBC,EAAmBmB,EAAkBf,EAAkBG,EACjF,SAAShB,EAA0BC,GACjC,IAAIC,EACJ,IAAK,IAAIC,KAAQF,EAAc,CAC7B,GAAIA,EAAaE,GAAO,CACtB,GAAIA,EAAK0B,SAAS,KAAM,CACtB3B,EAAwBC,EACxB,MAAM2B,EAAa3B,EAAKN,MAAM,KAC9BM,EAAO2B,EAAWA,EAAW/F,OAAS,EACxC,KAAO,CACLmE,EAAwBuB,CAC1B,CACA,IAAK/B,EAAcS,GAAO,CAExBT,EAAcS,GAAQ,EACxB,CAGAT,EAAcS,GAAMxD,KAAKuD,EAC3B,CACF,CACF,CACAF,EAA0BwB,GAC1B,IAAK,MAAMb,KAAgBjB,EAAe,CACxC,MAAMkB,EAAoBlB,EAAciB,GACxC,GAAIC,EAAkB7E,OAAS,EAAG,CAEhC,IAAK,IAAI+E,EAAI,EAAGA,GAAKF,EAAkB7E,OAAS,EAAG+E,IAAK,CACtDC,EAAQH,EAAkBE,GAC1B,GAAIC,IAAUU,EAAW,CACvBG,EAAmB,GAAGH,KAAad,IACnCK,EAAiBL,EACjBH,EAAuBG,EACvB,GAAIe,GAAeA,EAAYG,SAASlB,GAAe,CACrDa,EAAqB,cAAcb,KAAkBa,EAAqBb,EAC5E,CACF,KAAO,CACLK,EAAiBD,EACjBa,EAAmB,GAAGH,KAAaV,IAAQgB,WAAW,MAAO,IAC7DtB,EAAoBM,CACtB,CACAS,EAAqBI,EAAiB/B,MAAM,KAAKC,OAAO,SAAUqB,GAChE,OAAOA,GAAU,EACnB,GAAGC,KAAK,MAAQI,EAAqBR,UAC9BQ,EAAqBT,EAC9B,CACAF,EAAmBL,GAAwBC,EAC3Ce,EAAqBb,GAAgBa,EAAqBX,EAC5D,KAAO,CAELE,EAAQH,EAAkB,GAC1BgB,EAAmBb,IAAUU,EAAY,GAAGA,KAAad,IAAiB,GAAGc,KAAaV,IAAQgB,WAAW,IAAK,IAClHJ,EAAiChB,GAAgBiB,EAAiB/B,MAAM,KAAKC,OAAO,SAAUqB,GAC5F,OAAOA,GAAU,EACnB,GAAGC,KAAK,KACR,GAAIM,GAAeA,EAAYG,SAASlB,GAAe,CACrDa,EAAqB,cAAcb,KAAkBa,EAAqBb,EAC5E,CACF,CACF,CACA,MAAO,CACLqB,iBAAkBR,EAClBS,gCAAiCN,EAErC,EAOAhI,EAAOmE,kBAAoB,SAASA,IAClC,OAAO3E,SACT,EAyBAQ,EAAOuI,+BAAiC,SAASA,EAA+B1H,EAAiBC,EAASC,GACxG,IAAIyH,EACJ,GAAIzH,IAA0B,MAAQA,SAA+B,GAAKA,EAAsB0H,yBAA2BD,EAAwBzH,EAAsB0H,yBAA2B,MAAQD,SAA+B,OAAS,EAAIA,EAAsBpG,SAAW,EAAG,CAC1R,IAAIsG,EACJ,MAAM3G,EAAc,CAClB4G,QAAS,WAEPD,EAAyBE,OAC3B,EACAC,WAAY,KAEV9H,EAAsBI,mBAAqBJ,EAAsB+H,mBACjEJ,EAAyBE,QACzB9I,KAAKc,SAASC,EAAiBC,EAASC,EAAsB,GAGlE,MAAMgI,EAAsB,WAC1B,IAAIC,EACJ,MAAMC,EAAiBlI,EAAsB0H,sBAAsBrG,OACjE8G,EAAsB,GACxB,IAAK,IAAI/B,EAAI,EAAGA,EAAIpG,EAAsB0H,sBAAsBrG,OAAQ+E,IAAK,CAC3E6B,EAAiBjI,EAAsB0H,sBAAsBtB,GAAG3E,YAChE0G,EAAoBlG,KAAKgG,EAC3B,CACA,MAAMG,EAA2B,IAAI5N,EAAU2N,GAC/C,MAAME,EAAU,IAAI7N,EAAU,CAC5B8N,MAAOJ,EACPK,MAAOvI,EAAsBuI,QAE/BZ,EAAyBa,SAASJ,EAA0B,iBAC5DT,EAAyBa,SAASH,EAAS,UAC3CV,EAAyBc,MAC3B,EAEA,MAAMC,EAAgB,qCACtB,MAAMC,EAAkBpO,EAAqBqO,aAAaF,EAAe,YACzE,MAAMnG,EAASxD,KAAKY,OAAOJ,WAC3B,MAAMkF,EAAalC,EAAO/C,eAC1B,MAAMqJ,EAAiB7I,EAAsB0H,sBAAsB,GAAGoB,mBACtE,MAAMtG,EAAa,GAAGqG,EAAeE,OAAO,EAAGF,EAAeG,QAAQ,SACtEC,QAAQC,QAAQ5O,EAAgB6O,QAAQR,EAAiB,CACvDS,KAAMV,GACL,CACDW,gBAAiB,CACfC,WAAY7E,EAAW8E,qBAAqB/G,IAE9CgH,OAAQ,CACNF,WAAY7E,EACZgF,UAAWhF,MAEXiF,KAAK,SAAUC,GACjB,OAAOxP,EAASyP,KAAK,CACnBC,WAAYF,EACZG,WAAY9I,GAEhB,GAAG0I,KAAKK,IACNpC,EAA2BoC,EAC3BhL,KAAKa,UAAUoK,aAAaD,GAC5B/B,GAAqB,GACpBiC,MAAM,WACPxQ,EAAI0K,MAAM,QACZ,EACF,KAAO,CACLpF,KAAKc,SAASC,EAAiBC,EAASC,EAC1C,CACF,EACAf,EAAOgE,2BAA6B,SAASA,EAA2B7B,GACtEA,EAAkB8I,mBAAmB,kBACrC9I,EAAkB8I,mBAAmB,uBACrC9I,EAAkB8I,mBAAmB,gBACvC,EAMAjL,EAAOwD,aAAe,SAASA,IAC7B,OAAO1D,KAAKY,OAAO6D,cAAc2G,SACnC,EAWAlL,EAAO4C,oBAAsB,SAASA,EAAoBuI,EAAa1I,GACrE,GAAI0I,EAAa,CACf,MAAMC,kBACJA,EAAiBC,iBACjBA,GACEvL,KAAKwL,eAAe7I,EAAW3C,KAAKK,KAAKQ,UAAWb,KAAKK,KAAKC,kBAAkBmL,kBACpF,MAAMC,EAAc7N,OAAOgB,KAAKwM,GAChC,GAAIK,EAAYpJ,OAAQ,QACf+I,EAAY,yBACZA,EAAY,8BACZA,EAAY,iBACnB,IAAK,IAAIM,EAAI,EAAGA,EAAID,EAAYpJ,OAAQqJ,IAAK,CAC3C,GAAIN,EAAYK,EAAYC,YAAcN,EAAYK,EAAYC,MAAQ,SAAU,CAClF3L,KAAK8C,oBAAoBuI,EAAYK,EAAYC,IAAK,GAAGhJ,KAAa+I,EAAYC,KACpF,CACA,MAAMC,EAAQF,EAAYC,GAC1B,GAAIC,EAAM3B,QAAQ,gBAAkB,EAAG,QAC9BoB,EAAYK,EAAYC,IAC/B,QACF,CACA3L,KAAK6L,kBAAkB,IAAIP,KAAsBC,GAAmBG,EAAYC,GAAIN,GACpF,MAAMS,EAAuB9L,KAAK+L,wBAAwBH,EAAOjJ,EAAW0I,EAAarL,KAAKO,aAC9F,GAAIuL,EAAsB,CACxB,GAAIA,EAAqB,gEAAkEA,EAAqB,4DAA8DA,EAAqB,6CAA8C,QACxOT,EAAYO,EACrB,MAAO,GAAIE,EAAqB,+CAAgD,CAC9E,MAAME,EAAgBF,EAAqB,+CAC3C,GAAIE,EAAc,gBAAkBA,EAAc,eAAe5F,MAAM,KAAK,KAAO,eAAgB,QAC1FiF,EAAYO,EACrB,MAAO,GAAII,EAAc,UAAYhM,KAAKiM,gCAAgCD,EAAc,SAAUX,GAAc,QACvGA,EAAYO,EACrB,CACF,CACF,CACF,CACF,CACF,CACA,OAAOP,CACT,EASAnL,EAAO2L,kBAAoB,SAASA,EAAkBK,EAAYN,EAAOP,GACvE,GAAIa,GAAcA,EAAWjC,QAAQ2B,IAAU,EAAG,QACzCP,EAAYO,EACrB,CACF,EAWA1L,EAAO6L,wBAA0B,SAASA,EAAwBH,EAAOjJ,EAAW0I,EAAa3F,GAC/F,GAAI2F,EAAYO,IAAUjJ,IAAcA,EAAUyF,SAAS,aAAc,CACvE,IAAI+D,EAAuBC,EAC3B,MAAMjL,EAAWuE,EAAW8E,qBAAqB,GAAG7H,KAAaiJ,KACjE,MAAMS,EAAevR,EAAmBwR,4BAA4BnL,GACpE,OAAOkL,IAAiB,MAAQA,SAAsB,OAAS,GAAKF,EAAwBE,EAAaE,gBAAkB,MAAQJ,SAA+B,OAAS,GAAKC,EAAyBD,EAAsBK,eAAiB,MAAQJ,SAAgC,OAAS,EAAIA,EAAuBK,YAC9T,CACA,OAAO,IACT,EAUAvM,EAAOsL,eAAiB,SAASA,EAAe7I,EAAWX,EAAO0K,GAChE,MAAMC,EAAmB3M,KAAK4M,qBAAqBjK,EAAWX,EAAO0K,GACrE,MAAMG,EAAoB,IAAI3P,EAAkByP,EAAiBG,gBAAiBH,GAClF,MAAMI,EAAuBF,EAAkBE,uBAC/C,IAAIzB,EAAoB,GACtBC,EAAmB,GACrB,GAAIwB,EAAsB,CACxBzB,EAAoBuB,EAAkBG,uBACtC,GAAI1B,EAAkBhJ,OAAQ,CAC5BgJ,EAAoBA,EAAkB2B,IAAIC,GACjCA,EAASC,MAAQD,EAASE,MAErC,CACA7B,EAAmBsB,EAAkBQ,gCACrC,GAAI9B,EAAiBjJ,OAAQ,CAC3BiJ,EAAmBA,EAAiB0B,IAAIK,GAC/BA,EAAgBC,UAE3B,CACF,CACA,MAAO,CACLjC,oBACAC,mBAEJ,EAUArL,EAAO0M,qBAAuB,SAASA,EAAqBjK,EAAWX,EAAO0K,GAC5E,MAAMc,EAAYxL,EAAMyC,cACxB,IAAIhB,EAAa+J,EAAUpC,UAC3B,MAAMlF,EAAesH,EAAUC,YAC/B,GAAIvH,KAAkBzC,GAAcA,EAAW2E,SAAS,MAAO,CAC7D3E,EAAa+J,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUE,gBAAgBtH,MAAM,KAAK,EAC1G,CACA,OAAOxL,EAAY+S,2BAA2BhL,EAAWX,EAAMxB,WAAWC,eAAgBgD,EAAYiJ,EACxG,EASAxM,EAAO+L,gCAAkC,SAASA,EAAgC2B,EAAmBC,GACnG,IAAIC,EAAgB,MACpB,MAAMC,EAASH,EAAkBxH,MAAM,KAEvC,GAAI2H,EAAOzL,OAAS,EAAG,CACrBwL,EAAgBD,EAAWE,EAAO,KAAOF,EAAWE,EAAO,IAAIC,eAAeD,EAAO,KAAOF,EAAWE,EAAO,IAAIA,EAAO,MAAQ,CACnI,KAAO,CACLD,EAAgBD,EAAWD,KAAuB,CACpD,CACA,OAAOE,CACT,EAQA5N,EAAO+D,6BAA+B,SAASA,EAA6B5B,EAAmB4L,GAC7F,MAAMC,SAAmBD,IAAc,SAAWE,KAAKC,MAAMH,GAAaA,EAC1E,IAAK,IAAI5G,EAAI,EAAGA,EAAI6G,EAAU5L,OAAQ+E,IAAK,CACzC,MAAMgH,EAAiBH,EAAU7G,GAAG,kBAAoB6G,EAAU7G,GAAG,iBAAiB,kBAAoB6G,EAAU7G,GAAG,kDAAoD6G,EAAU7G,GAAG,iDAAiD,SACzO,MAAMiH,EAA0BJ,EAAU7G,GAAG,2BAA6B6G,EAAU7G,GAAG,0DACvF,MAAMkH,EAAgBlM,EAAkBmM,gBAAgBH,GACxD,GAAIE,EAAe,CAEjBlM,EAAkB8I,mBAAmBkD,GACrChM,EAAkBoM,oBAAoBH,EAAyBC,EACjE,CACF,CACA,OAAOlM,CACT,EAUAnC,EAAOwO,iBAAmB,SAASA,EAAiBC,EAAW1N,GAC7D,IAAI2N,EAAuBC,EAC3B,IAAIC,EACJ,MAAMC,EAAiB/O,KAAKK,KAAKC,kBAAkB0O,iBAAiB,WAClEC,GAAaL,EAAwBG,EAAeG,mBAAqB,MAAQN,SAA+B,OAAS,GAAKC,EAAyBD,EAAsBO,aAAe,MAAQN,SAAgC,OAAS,EAAIA,EAAuBF,GAC1Q,IAAKM,EAAW,CACdvU,EAAI0K,MAAM,yCACV,MACF,CACA,MAAMrE,EAAkBkO,EAAUnN,eAChCd,EAAUiO,EAAUlN,OACpBqN,EAAiBH,EAAUI,YAAcrP,KAAKsP,kBAAkBL,EAAUI,YAC5E,GAAIpO,EAAuB,CACzB6N,EAAa,GACbjR,OAAOgB,KAAKoC,GAAuBnC,QAAQ,SAAUC,GACnD,IAAIwQ,EACJ,GAAIhO,MAAMC,QAAQP,EAAsBlC,IAAO,CAC7C,MAAMyQ,EAAUvO,EAAsBlC,GACtC,IAAK,IAAIsI,EAAI,EAAGA,EAAImI,EAAQlN,OAAQ+E,IAAK,CACvC,IAAIoI,EACJF,EAAU,CAAC,EACXA,EAAQxQ,GAAOyQ,EAAQnI,IACtBoI,EAAcX,KAAgB,MAAQW,SAAqB,OAAS,EAAIA,EAAYvM,KAAKqM,EAC5F,CACF,KAAO,CACL,IAAIG,EACJH,EAAU,CAAC,EACXA,EAAQxQ,GAAOkC,EAAsBlC,IACpC2Q,EAAeZ,KAAgB,MAAQY,SAAsB,OAAS,EAAIA,EAAaxM,KAAKqM,EAC/F,CACF,EACF,CACA,GAAIT,GAAcM,EAAgB,CAChCnO,EAAwB,CACtBI,mBAAoB,CAClB+B,KAAM0L,GAAcM,GAG1B,CACApP,KAAKK,KAAK+D,uBAAuBtD,SAASC,EAAiBC,EAASC,EACtE,EASAf,EAAO4D,qBAAuB,SAASA,EAAqBzB,EAAmBV,GAC7E,MAAMsG,EAAcpK,OAAOgB,KAAK8C,GAChC,MAAMgO,EAAoBtN,EAAkBuN,gCAC5C3H,EAAYnJ,QAAQ,SAAUC,GAC5B,IAAK4Q,EAAkBvH,SAASrJ,GAAM,CACpCsD,EAAkBwN,gBAAgB9Q,EAAK,IAAK,KAAM4C,EAAgB5C,GACpE,CACF,GACA,OAAOsD,CACT,EAQAnC,EAAOoP,kBAAoB,SAASA,EAAkBQ,GACpD,MAAMC,EAAiB,CAAC,EACxB,GAAID,EAAiB,CACnB,MAAM7H,EAAcpK,OAAOgB,KAAKiR,IAAoB,GACpD,GAAI7H,EAAY3F,OAAS,EAAG,CAC1B2F,EAAYnJ,QAAQ,SAAUC,GAC5B,MAAMiR,EAAWF,EAAgB/Q,GACjC,GAAIiR,EAASxQ,OAASwQ,EAASxQ,MAAMA,OAASwQ,EAASxQ,MAAMyQ,SAAW,QAAS,CAC/E,IAAKF,EAAehR,GAAM,CACxBgR,EAAehR,GAAOiR,EAASxQ,MAAMA,KACvC,CACF,CACF,EACF,CACF,CACA,OAAOuQ,CACT,EAWA7P,EAAOgQ,+BAAiC,SAASA,EAA+BjO,EAAakO,EAAiBhP,EAAUiP,GACtH,MAAMC,EAAapO,EAAY3B,kBAAkBgQ,oBAAoBC,eACrE,MAAMC,EAAmBH,EAAWF,GACpC,IAAIvO,EACJ,GAAI4O,GAAoBA,EAAiB1O,gBAAkB0O,EAAiBzO,OAAQ,CAClF,MAAM0O,EAAqB,CACzBC,QAAS,CAAC,GAEZ,MAAMC,EAA0B,CAAC,EACjC,IAAIhO,EACJ,GAAIxB,EAAU,CACZ,GAAIA,EAASqB,KAAOrB,EAASqB,IAAI,iCAAkC,CACjEG,EAAY1H,EAAY2V,sBAAsBzP,GAC9CA,EAAW,CAACA,EACd,KAAO,CACLwB,EAAY1H,EAAY2V,sBAAsBzP,EAAS,GACzD,CACAwP,EAAwBhO,GAAa,OACrC8N,EAAmB,cAAgBE,CACrC,CACA,GAAIP,EAAa,CACf,MAAM1J,EAAO,GAAG8J,EAAiB1O,kBAAkB0O,EAAiBzO,SACpE0O,EAAmBC,QAAQhK,GAAQ,CAAC,EACpC+J,EAAmBC,QAAQhK,GAAM0J,GAAe,MAClD,CACA,GAAII,GAAoBA,EAAiBnB,WAAY,CACnD,MAAME,EAAUiB,EAAiBnB,YAAcrP,KAAKsP,kBAAkBkB,EAAiBnB,YACvF,GAAIxR,OAAOgB,KAAK0Q,GAASjN,OAAS,EAAG,CACnCV,EAAiC2N,CACnC,CACF,CACAtN,EAAYmC,uBAAuBtD,SAAS0P,EAAiB1O,eAAgB0O,EAAiBzO,OAAQ,CACpGV,mBAAoBF,EACpBoD,kBAAmBkM,EACnB7O,+BAAgCA,IAIlC,OAAOsI,QAAQC,SACjB,KAAO,CACL,MAAM,IAAI5E,MAAM,mBAAmB4K,yDACrC,CACF,EACA,OAAOvQ,CACT,CAzvB0tB,CAyvBxtBvE,GAAuBiD,EAA0BrB,EAAQW,UAAW,SAAU,CAAChC,GAAQiC,OAAOgT,yBAAyB5T,EAAQW,UAAW,UAAWX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,WAAY,CAAC/B,EAAOC,GAAQ+B,OAAOgT,yBAAyB5T,EAAQW,UAAW,YAAaX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,sCAAuC,CAAC7B,EAAOC,GAAQ6B,OAAOgT,yBAAyB5T,EAAQW,UAAW,uCAAwCX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,sCAAuC,CAAC3B,EAAOC,GAAQ2B,OAAOgT,yBAAyB5T,EAAQW,UAAW,uCAAwCX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,oBAAqB,CAACzB,EAAOC,GAASyB,OAAOgT,yBAAyB5T,EAAQW,UAAW,qBAAsBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,iCAAkC,CAACvB,EAAQC,GAASuB,OAAOgT,yBAAyB5T,EAAQW,UAAW,kCAAmCX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,eAAgB,CAACrB,GAASsB,OAAOgT,yBAAyB5T,EAAQW,UAAW,gBAAiBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,sBAAuB,CAACpB,EAAQC,GAASoB,OAAOgT,yBAAyB5T,EAAQW,UAAW,uBAAwBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,mBAAoB,CAAClB,EAAQC,GAASkB,OAAOgT,yBAAyB5T,EAAQW,UAAW,oBAAqBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,oBAAqB,CAAChB,EAAQC,GAASgB,OAAOgT,yBAAyB5T,EAAQW,UAAW,qBAAsBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,iCAAkC,CAACd,EAAQC,GAASc,OAAOgT,yBAAyB5T,EAAQW,UAAW,kCAAmCX,EAAQW,WAAaX,KAAaD,GACt/D,OAAO4C,CACT,EAAG"}
|
|
1
|
+
{"version":3,"file":"InternalIntentBasedNavigation.js","names":["sap","ui","define","Log","mergeObjects","CommonUtils","draft","MetaModelConverter","ClassSupport","KeepAliveHelper","ModelHelper","SelectionVariant","Core","Fragment","ControllerExtension","OverrideExecution","XMLPreprocessor","XMLTemplateProcessor","JSONModel","Aggregation","_dec","_dec2","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_dec14","_dec15","_dec16","_dec17","_dec18","_dec19","_dec20","_dec21","_class","_class2","AggregationHelper","publicExtension","privateExtension","methodOverride","finalExtension","extensible","defineUI5Class","_inheritsLoose","subClass","superClass","prototype","Object","create","constructor","_setPrototypeOf","o","p","setPrototypeOf","bind","__proto__","_applyDecoratedDescriptor","target","property","decorators","descriptor","context","desc","keys","forEach","key","enumerable","configurable","initializer","writable","slice","reverse","reduce","decorator","value","call","undefined","defineProperty","InternalIntentBasedNavigation","Instead","_ControllerExtension","apply","this","arguments","_proto","onInit","_oAppComponent","base","getAppComponent","_oMetaModel","getModel","getMetaModel","_oNavigationService","getNavigationService","_oView","getView","navigate","sSemanticObject","sAction","mNavigationParameters","_doNavigate","oContext","vNavigationContexts","navigationContexts","aNavigationContexts","Array","isArray","vSemanticObjectMapping","semanticObjectMapping","vOutboundParams","additionalNavigationParameters","oTargetInfo","semanticObject","action","oView","oController","getController","setBindingContext","aSemanticAttributes","oSelectionVariant","length","oNavigationContext","isA","oSemanticAttributes","getObject","sMetaPath","getMetaPath","getPath","removeSensitiveData","oNavContext","prepareContextForExternalNavigation","propertiesWithoutConflict","push","semanticAttributes","data","metaPath","mixAttributesAndSelectionVariant","toJSONString","oModel","sEntitySet","getEntitySet","sContextUrl","constructContextUrl","setFilterContextUrl","_applyOutboundParams","intentBasedNavigation","adaptNavigationContext","_applySemanticObjectMappings","_removeTechnicalParameters","sNavMode","_intentBasedNavigation","getNavigationMode","mRefreshStrategies","refreshStrategies","oInternalModel","getViewData","refreshStrategyOnAppRestore","mViewRefreshStrategies","mRefreshStrategy","getRefreshStrategyForIntent","setProperty","onError","require","MessageBox","oResourceBundle","getLibraryResourceBundle","error","getText","title","Error","oBindingContext","getBindingContext","oMetaModel","converterType","isStickySessionSupported","processDataLossOrDraftDiscardConfirmation","Function","NavigationType","ForwardNavigation","oDistinctKeys","sContextPath","aMetaPathParts","split","filter","Boolean","_findDistinctKeysInObject","LookUpObject","sLookUpObjectMetaPath","sKey","oNewLookUpObject","sMainEntitySetName","sMainEntityTypeName","oPropertiesWithoutConflict","sMainEntityValuePath","sCurrentValuePath","sLastValuePath","sDistinctKey","aConflictingPaths","sWinnerValuePath","i","sPath","sPathInContext","replace","sEntityTypeName","sValue","join","getProperty","sProperty","prepareFiltersForExternalNavigation","oFilterBarConditions","sRootPath","aParameters","oFilterConditionsWithoutConflict","sFullContextPath","includes","aPathParts","replaceAll","filterConditions","filterConditionsWithoutConflict","navigateWithConfirmationDialog","_mNavigationParameter","notApplicableContexts","oApplicableContextDialog","onClose","close","onContinue","applicableContexts","fnOpenAndFillDialog","oDialogContent","nNotApplicable","aNotApplicableItems","oNotApplicableItemsModel","oTotals","total","label","setModel","open","sFragmentName","oDialogFragment","loadTemplate","sCanonicalPath","getCanonicalPath","substr","indexOf","Promise","resolve","process","name","bindingContexts","entityType","createBindingContext","models","metaModel","then","oFragment","load","definition","controller","oPopover","addDependent","catch","removeSelectOption","entitySet","oAttributes","transAggregations","customAggregates","_getAggregates","getDiagnostics","aProperties","j","sProp","_deleteAggregates","aPropertyAnnotations","_getPropertyAnnotations","oFieldControl","_isFieldControlPathInapplicable","aggregates","_oFullContext$targetO","_oFullContext$targetO2","oFullContext","getInvolvedDataModelObjects","targetObject","annotations","_annotations","oDiagnostics","converterContext","_getConverterContext","aggregationHelper","getEntityType","isAnalyticsSupported","_transAggregations","_customAggregates","getTransAggregations","map","transAgg","Name","Value","getCustomAggregateDefinitions","customAggregate","qualifier","oViewData","contextPath","fullContextPath","getConverterContextForPath","sFieldControlPath","oAttribute","bInapplicable","aParts","hasOwnProperty","vMappings","oMappings","JSON","parse","sLocalProperty","sSemanticObjectProperty","oSelectOption","getSelectOption","massAddSelectOption","navigateOutbound","sOutbound","_oManifestEntry$cross","_oManifestEntry$cross2","aNavParams","oManifestEntry","getManifestEntry","oOutbound","crossNavigation","outbounds","outboundParams","parameters","getOutboundParams","oParams","aValues","_aNavParams","_aNavParams2","aSelectProperties","getSelectOptionsPropertyNames","addSelectOption","oOutboundParams","oParamsMapping","oMapping","format","onChevronPressNavigateOutBound","sOutboundTarget","sCreatePath","oOutbounds","getRoutingService","getOutbounds","oDisplayOutbound","oRefreshStrategies","intents","oDefaultRefreshStrategy","getMetaPathForContext","getOwnPropertyDescriptor"],"sources":["InternalIntentBasedNavigation-dbg.js"],"mappings":";;;;AAIAA,IAAIC,GAAGC,OAAO,CAAC,eAAgB,sBAAuB,0BAA2B,kDAAmD,4CAA6C,mCAAoC,sCAAuC,kCAAmC,qCAAsC,mBAAoB,uBAAwB,sCAAuC,oCAAqC,mCAAoC,mCAAoC,8BAA+B,qCAAsC,SAAUC,EAAKC,EAAcC,EAAaC,EAAOC,EAAoBC,EAAcC,EAAiBC,EAAaC,EAAkBC,EAAMC,EAAUC,EAAqBC,EAAmBC,EAAiBC,EAAsBC,EAAWC,GACrzB,aAEA,IAAIC,EAAMC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAAQC,EAC1K,IAAIC,EAAoBxB,EAAYwB,kBACpC,IAAIC,EAAkBpC,EAAaoC,gBACnC,IAAIC,EAAmBrC,EAAaqC,iBACpC,IAAIC,EAAiBtC,EAAasC,eAClC,IAAIC,EAAiBvC,EAAauC,eAClC,IAAIC,EAAaxC,EAAawC,WAC9B,IAAIC,EAAiBzC,EAAayC,eAClC,SAASC,EAAeC,EAAUC,GAAcD,EAASE,UAAYC,OAAOC,OAAOH,EAAWC,WAAYF,EAASE,UAAUG,YAAcL,EAAUM,EAAgBN,EAAUC,EAAa,CAC5L,SAASK,EAAgBC,EAAGC,GAAKF,EAAkBH,OAAOM,eAAiBN,OAAOM,eAAeC,OAAS,SAASJ,EAAgBC,EAAGC,GAAKD,EAAEI,UAAYH,EAAG,OAAOD,CAAG,EAAG,OAAOD,EAAgBC,EAAGC,EAAI,CACvM,SAASI,EAA0BC,EAAQC,EAAUC,EAAYC,EAAYC,GAAW,IAAIC,EAAO,CAAC,EAAGf,OAAOgB,KAAKH,GAAYI,QAAQ,SAAUC,GAAOH,EAAKG,GAAOL,EAAWK,EAAM,GAAIH,EAAKI,aAAeJ,EAAKI,WAAYJ,EAAKK,eAAiBL,EAAKK,aAAc,GAAI,UAAWL,GAAQA,EAAKM,YAAa,CAAEN,EAAKO,SAAW,IAAM,CAAEP,EAAOH,EAAWW,QAAQC,UAAUC,OAAO,SAAUV,EAAMW,GAAa,OAAOA,EAAUhB,EAAQC,EAAUI,IAASA,CAAM,EAAGA,GAAO,GAAID,GAAWC,EAAKM,mBAAqB,EAAG,CAAEN,EAAKY,MAAQZ,EAAKM,YAAcN,EAAKM,YAAYO,KAAKd,QAAgB,EAAGC,EAAKM,YAAcQ,SAAW,CAAE,GAAId,EAAKM,mBAAqB,EAAG,CAAErB,OAAO8B,eAAepB,EAAQC,EAAUI,GAAOA,EAAO,IAAM,CAAE,OAAOA,CAAM,CASntB,IAAIgB,GAAiCjE,EAAO6B,EAAe,oEAAqE5B,EAAQyB,IAAkBxB,EAAQsB,IAAmBrB,EAAQwB,IAAkBvB,EAAQoB,IAAmBnB,EAAQsB,IAAkBrB,EAAQkB,IAAmBjB,EAAQoB,IAAkBnB,EAAQgB,IAAmBf,EAASmB,EAAWjC,EAAkBuE,SAAUxD,EAASc,IAAmBb,EAASgB,IAAkBf,EAASa,IAAoBZ,EAASW,IAAmBV,EAASa,IAAkBZ,EAASS,IAAmBR,EAASW,IAAkBV,EAASO,IAAmBN,EAASS,IAAkBR,EAASK,IAAmBJ,EAASO,IAAkB3B,EAAKqB,GAAUC,EAAuB,SAAU6C,GACluBrC,EAAemC,EAA+BE,GAC9C,SAASF,IACP,OAAOE,EAAqBC,MAAMC,KAAMC,YAAcD,IACxD,CACA,IAAIE,EAASN,EAA8BhC,UAC3CsC,EAAOC,OAAS,SAASA,IACvBH,KAAKI,eAAiBJ,KAAKK,KAAKC,kBAChCN,KAAKO,YAAcP,KAAKI,eAAeI,WAAWC,eAClDT,KAAKU,oBAAsBV,KAAKI,eAAeO,uBAC/CX,KAAKY,OAASZ,KAAKK,KAAKQ,SAC1B,EA4BAX,EAAOY,SAAW,SAASA,EAASC,EAAiBC,EAASC,GAC5D,MAAMC,EAAcC,IAClB,MAAMC,EAAsBH,GAAyBA,EAAsBI,mBACzEC,EAAsBF,IAAwBG,MAAMC,QAAQJ,GAAuB,CAACA,GAAuBA,EAC3GK,EAAyBR,GAAyBA,EAAsBS,sBACxEC,EAAkBV,GAAyBA,EAAsBW,+BACjEC,EAAc,CACZC,eAAgBf,EAChBgB,OAAQf,GAEVgB,EAAQhC,KAAKK,KAAKQ,UAClBoB,EAAcD,EAAME,gBACtB,GAAIf,EAAU,CACZnB,KAAKY,OAAOuB,kBAAkBhB,EAChC,CACA,GAAIJ,GAAmBC,EAAS,CAC9B,IAAIoB,EAAsB,GACxBC,EAAoB,IAAInH,EAE1B,GAAIoG,GAAuBA,EAAoBgB,OAAQ,CACrDhB,EAAoBxC,QAAQyD,IAG1B,GAAIA,EAAmBC,KAAOD,EAAmBC,IAAI,iCAAkC,CAErF,IAAIC,EAAsBF,EAAmBG,YAC7C,MAAMC,EAAY3C,KAAKO,YAAYqC,YAAYL,EAAmBM,WAElEJ,EAAsBzC,KAAK8C,oBAAoBL,EAAqBE,GACpE,MAAMI,EAAc/C,KAAKgD,oCAAoCP,EAAqBF,GAClFV,EAAY,6BAA+BkB,EAAYE,0BACvDb,EAAoBc,KAAKH,EAAYI,mBACvC,MAAO,KAAMZ,GAAsBhB,MAAMC,QAAQe,EAAmBa,eAAiBb,IAAuB,SAAU,CAEpHH,EAAoBc,KAAKlD,KAAK8C,oBAAoBP,EAAmBa,KAAMb,EAAmBc,UAChG,MAAO,GAAId,GAAsBhB,MAAMC,QAAQe,EAAmBa,MAAO,CAGvEhB,EAAsBpC,KAAK8C,oBAAoBP,EAAmBa,KAAMb,EAAmBc,SAC7F,GAEJ,CAEA,GAAIjB,GAAuBA,EAAoBE,OAAQ,CACrDD,EAAoBrC,KAAKU,oBAAoB4C,iCAAiClB,EAAqBC,EAAkBkB,eACvH,CAGA,MAAMC,EAASxD,KAAKY,OAAOJ,WACzBiD,EAAazD,KAAK0D,eAClBC,EAAcF,EAAazD,KAAKU,oBAAoBkD,oBAAoBH,EAAYD,GAAU9D,UAChG,GAAIiE,EAAa,CACftB,EAAkBwB,oBAAoBF,EACxC,CAGA,GAAIhC,EAAiB,CACnB3B,KAAK8D,qBAAqBzB,EAAmBV,EAC/C,CAGAM,EAAY8B,sBAAsBC,uBAAuB3B,EAAmBR,GAG5E,GAAIJ,EAAwB,CAC1BzB,KAAKiE,6BAA6B5B,EAAmBZ,EACvD,CAGAzB,KAAKkE,2BAA2B7B,GAGhC,MAAM8B,EAAWlC,EAAYmC,uBAAuBC,oBAGpD,MAAMC,EAAqBrD,GAAyBA,EAAsBsD,mBAAqB,CAAC,EAC9FC,EAAiBxC,EAAMxB,SAAS,YAClC,GAAIgE,EAAgB,CAClB,IAAKxC,GAASA,EAAMyC,eAAeC,4BAA6B,CAC9D,MAAMC,EAAyB3C,EAAMyC,cAAcC,6BAA+B,CAAC,EACnF/J,EAAa2J,EAAoBK,EACnC,CACA,MAAMC,EAAmB5J,EAAgB6J,4BAA4BP,EAAoBvD,EAAiBC,GAC1G,GAAI4D,EAAkB,CACpBJ,EAAeM,YAAY,+BAAgCF,EAC7D,CACF,CAGA,MAAMG,EAAU,WACdxK,IAAIC,GAAGwK,QAAQ,CAAC,oBAAqB,SAAUC,GAC7C,MAAMC,EAAkB/J,EAAKgK,yBAAyB,eACtDF,EAAWG,MAAMF,EAAgBG,QAAQ,4CAA6C,CACpFC,MAAOJ,EAAgBG,QAAQ,yBAEnC,EACF,EACArF,KAAKU,oBAAoBI,SAASC,EAAiBC,EAASqB,EAAkBkB,eAAgB7D,UAAWqF,EAASrF,UAAWyE,EAC/H,KAAO,CACL,MAAM,IAAIoB,MAAM,yCAClB,GAEF,MAAMC,EAAkBxF,KAAKK,KAAKQ,UAAU4E,oBAC5C,MAAMC,EAAaF,GAAmBA,EAAgBhF,WAAWC,eACjE,GAAIT,KAAKa,UAAU4D,cAAckB,gBAAkB,cAAgBD,IAAezK,EAAY2K,yBAAyBF,GAAa,CAClI7K,EAAMgL,0CAA0C3E,EAAY9C,KAAK4B,MAAO8F,SAASlI,UAAWoC,KAAKK,KAAKQ,UAAU4E,oBAAqBzF,KAAKK,KAAKQ,UAAUqB,gBAAiB,KAAMrH,EAAMkL,eAAeC,kBACvM,KAAO,CACL9E,GACF,CACF,EASAhB,EAAO8C,oCAAsC,SAASA,EAAoCP,EAAqBtB,GAG7G,MAAM8E,EAAgB,CAAC,EACrBC,EAAe/E,EAAS0B,UACxB6C,EAAavE,EAASX,WAAWC,eACjCkC,EAAY+C,EAAW9C,YAAYsD,GACnCC,EAAiBxD,EAAUyD,MAAM,KAAKC,OAAOC,SAC/C,SAASC,EAA0BC,EAAcC,GAC/C,IAAK,MAAMC,KAAQF,EAAc,CAE/B,GAAIA,EAAaE,KAAU,aAAeF,EAAaE,KAAU,SAAU,CACzE,IAAKT,EAAcS,GAAO,CAExBT,EAAcS,GAAQ,EACxB,CAEAT,EAAcS,GAAMxD,KAAKuD,EAC3B,KAAO,CAEL,MAAME,EAAmBH,EAAaE,GACtCH,EAA0BI,EAAkB,GAAGF,KAAyBC,IAC1E,CACF,CACF,CACAH,EAA0B9D,EAAqBE,GAG/C,MAAMiE,EAAqBT,EAAe,GACxCU,EAAsBnB,EAAWhD,UAAU,IAAIkE,iBAC/CE,EAA6B,CAAC,EAChC,IAAIC,EAAsBC,EAAmBC,EAC7C,IAAK,MAAMC,KAAgBjB,EAAe,CACxC,MAAMkB,EAAoBlB,EAAciB,GACxC,IAAIE,EAMJ,GAAID,EAAkB7E,OAAS,EAAG,CAEhC,IAAK,IAAI+E,EAAI,EAAGA,GAAKF,EAAkB7E,OAAS,EAAG+E,IAAK,CACtD,MAAMC,EAAQH,EAAkBE,GAChC,IAAIE,EAAiBD,EAAME,QAAQF,IAAU3E,EAAYA,EAAY,GAAGA,KAAc,IACtF4E,GAAkBA,IAAmB,GAAKA,EAAiB,GAAGA,MAAqBL,EACnF,MAAMO,EAAkB/B,EAAWhD,UAAU,GAAG4E,iBAIhD,GAAIG,IAAoBZ,EAAqB,CAC3CE,EAAuBQ,CACzB,CAGA,GAAID,IAAU3E,EAAW,CACvBqE,EAAoBO,CACtB,CAGAN,EAAiBM,EAIjB9E,EAAoB,GAAGE,KAAa4E,IAAiBnB,MAAM,KAAKC,OAAO,SAAUqB,GAC/E,OAAOA,GAAU,EACnB,GAAGC,KAAK,MAAQxG,EAASyG,YAAYL,EACvC,CAEAH,EAAmBL,GAAwBC,GAAqBC,EAChExE,EAAoByE,GAAgB/F,EAASyG,YAAYR,GACzDL,EAAuBrH,UACvBsH,EAAoBtH,UACpBuH,EAAiBvH,SACnB,KAAO,CAEL,MAAM4H,EAAQH,EAAkB,GAChC,IAAII,EAAiBD,EAAME,QAAQF,IAAU3E,EAAYA,EAAY,GAAGA,KAAc,IACtF4E,GAAkBA,IAAmB,GAAKA,EAAiB,GAAGA,MAAqBL,EACnFzE,EAAoByE,GAAgB/F,EAASyG,YAAYL,GACzDT,EAA2BI,GAAgB,GAAGvE,KAAa4E,IAAiBnB,MAAM,KAAKC,OAAO,SAAUqB,GACtG,OAAOA,GAAU,EACnB,GAAGC,KAAK,IACV,CACF,CAEA,IAAK,MAAME,KAAapF,EAAqB,CAC3C,GAAIA,EAAoBoF,KAAe,aAAepF,EAAoBoF,KAAe,SAAU,QAC1FpF,EAAoBoF,EAC7B,CACF,CACA,MAAO,CACL1E,mBAAoBV,EACpBQ,0BAA2B6D,EAE/B,EASA5G,EAAO4H,oCAAsC,SAASA,EAAoCC,EAAsBC,EAAWC,GACzH,IAAIX,EACJ,MAAMrB,EAAgB,CAAC,EACvB,MAAMiC,EAAmC,CAAC,EAC1C,IAAInB,EAAsBC,EAAmBmB,EAAkBf,EAAkBG,EACjF,SAAShB,EAA0BC,GACjC,IAAIC,EACJ,IAAK,IAAIC,KAAQF,EAAc,CAC7B,GAAIA,EAAaE,GAAO,CACtB,GAAIA,EAAK0B,SAAS,KAAM,CACtB3B,EAAwBC,EACxB,MAAM2B,EAAa3B,EAAKN,MAAM,KAC9BM,EAAO2B,EAAWA,EAAW/F,OAAS,EACxC,KAAO,CACLmE,EAAwBuB,CAC1B,CACA,IAAK/B,EAAcS,GAAO,CAExBT,EAAcS,GAAQ,EACxB,CAGAT,EAAcS,GAAMxD,KAAKuD,EAC3B,CACF,CACF,CACAF,EAA0BwB,GAC1B,IAAK,MAAMb,KAAgBjB,EAAe,CACxC,MAAMkB,EAAoBlB,EAAciB,GACxC,GAAIC,EAAkB7E,OAAS,EAAG,CAEhC,IAAK,IAAI+E,EAAI,EAAGA,GAAKF,EAAkB7E,OAAS,EAAG+E,IAAK,CACtDC,EAAQH,EAAkBE,GAC1B,GAAIC,IAAUU,EAAW,CACvBG,EAAmB,GAAGH,KAAad,IACnCK,EAAiBL,EACjBH,EAAuBG,EACvB,GAAIe,GAAeA,EAAYG,SAASlB,GAAe,CACrDa,EAAqB,cAAcb,KAAkBa,EAAqBb,EAC5E,CACF,KAAO,CACLK,EAAiBD,EACjBa,EAAmB,GAAGH,KAAaV,IAAQgB,WAAW,MAAO,IAC7DtB,EAAoBM,CACtB,CACAS,EAAqBI,EAAiB/B,MAAM,KAAKC,OAAO,SAAUqB,GAChE,OAAOA,GAAU,EACnB,GAAGC,KAAK,MAAQI,EAAqBR,UAC9BQ,EAAqBT,EAC9B,CACAF,EAAmBL,GAAwBC,EAC3Ce,EAAqBb,GAAgBa,EAAqBX,EAC5D,KAAO,CAELE,EAAQH,EAAkB,GAC1BgB,EAAmBb,IAAUU,EAAY,GAAGA,KAAad,IAAiB,GAAGc,KAAaV,IAAQgB,WAAW,IAAK,IAClHJ,EAAiChB,GAAgBiB,EAAiB/B,MAAM,KAAKC,OAAO,SAAUqB,GAC5F,OAAOA,GAAU,EACnB,GAAGC,KAAK,KACR,GAAIM,GAAeA,EAAYG,SAASlB,GAAe,CACrDa,EAAqB,cAAcb,KAAkBa,EAAqBb,EAC5E,CACF,CACF,CACA,MAAO,CACLqB,iBAAkBR,EAClBS,gCAAiCN,EAErC,EAOAhI,EAAOmE,kBAAoB,SAASA,IAClC,OAAO3E,SACT,EAyBAQ,EAAOuI,+BAAiC,SAASA,EAA+B1H,EAAiBC,EAASC,GACxG,IAAIyH,EACJ,GAAIzH,IAA0B,MAAQA,SAA+B,GAAKA,EAAsB0H,yBAA2BD,EAAwBzH,EAAsB0H,yBAA2B,MAAQD,SAA+B,OAAS,EAAIA,EAAsBpG,SAAW,EAAG,CAC1R,IAAIsG,EACJ,MAAM3G,EAAc,CAClB4G,QAAS,WAEPD,EAAyBE,OAC3B,EACAC,WAAY,KAEV9H,EAAsBI,mBAAqBJ,EAAsB+H,mBACjEJ,EAAyBE,QACzB9I,KAAKc,SAASC,EAAiBC,EAASC,EAAsB,GAGlE,MAAMgI,EAAsB,WAC1B,IAAIC,EACJ,MAAMC,EAAiBlI,EAAsB0H,sBAAsBrG,OACjE8G,EAAsB,GACxB,IAAK,IAAI/B,EAAI,EAAGA,EAAIpG,EAAsB0H,sBAAsBrG,OAAQ+E,IAAK,CAC3E6B,EAAiBjI,EAAsB0H,sBAAsBtB,GAAG3E,YAChE0G,EAAoBlG,KAAKgG,EAC3B,CACA,MAAMG,EAA2B,IAAI5N,EAAU2N,GAC/C,MAAME,EAAU,IAAI7N,EAAU,CAC5B8N,MAAOJ,EACPK,MAAOvI,EAAsBuI,QAE/BZ,EAAyBa,SAASJ,EAA0B,iBAC5DT,EAAyBa,SAASH,EAAS,UAC3CV,EAAyBc,MAC3B,EAEA,MAAMC,EAAgB,qCACtB,MAAMC,EAAkBpO,EAAqBqO,aAAaF,EAAe,YACzE,MAAMnG,EAASxD,KAAKY,OAAOJ,WAC3B,MAAMkF,EAAalC,EAAO/C,eAC1B,MAAMqJ,EAAiB7I,EAAsB0H,sBAAsB,GAAGoB,mBACtE,MAAMtG,EAAa,GAAGqG,EAAeE,OAAO,EAAGF,EAAeG,QAAQ,SACtEC,QAAQC,QAAQ5O,EAAgB6O,QAAQR,EAAiB,CACvDS,KAAMV,GACL,CACDW,gBAAiB,CACfC,WAAY7E,EAAW8E,qBAAqB/G,IAE9CgH,OAAQ,CACNF,WAAY7E,EACZgF,UAAWhF,MAEXiF,KAAK,SAAUC,GACjB,OAAOxP,EAASyP,KAAK,CACnBC,WAAYF,EACZG,WAAY9I,GAEhB,GAAG0I,KAAKK,IACNpC,EAA2BoC,EAC3BhL,KAAKa,UAAUoK,aAAaD,GAC5B/B,GAAqB,GACpBiC,MAAM,WACPxQ,EAAI0K,MAAM,QACZ,EACF,KAAO,CACLpF,KAAKc,SAASC,EAAiBC,EAASC,EAC1C,CACF,EACAf,EAAOgE,2BAA6B,SAASA,EAA2B7B,GACtEA,EAAkB8I,mBAAmB,kBACrC9I,EAAkB8I,mBAAmB,uBACrC9I,EAAkB8I,mBAAmB,gBACvC,EAMAjL,EAAOwD,aAAe,SAASA,IAC7B,OAAO1D,KAAKY,OAAO6D,cAAc2G,SACnC,EAWAlL,EAAO4C,oBAAsB,SAASA,EAAoBuI,EAAa1I,GACrE,GAAI0I,EAAa,CACf,MAAMC,kBACJA,EAAiBC,iBACjBA,GACEvL,KAAKwL,eAAe7I,EAAW3C,KAAKK,KAAKQ,UAAWb,KAAKK,KAAKC,kBAAkBmL,kBACpF,MAAMC,EAAc7N,OAAOgB,KAAKwM,GAChC,GAAIK,EAAYpJ,OAAQ,QACf+I,EAAY,yBACZA,EAAY,8BACZA,EAAY,iBACnB,IAAK,IAAIM,EAAI,EAAGA,EAAID,EAAYpJ,OAAQqJ,IAAK,CAC3C,GAAIN,EAAYK,EAAYC,YAAcN,EAAYK,EAAYC,MAAQ,SAAU,CAClF3L,KAAK8C,oBAAoBuI,EAAYK,EAAYC,IAAK,GAAGhJ,KAAa+I,EAAYC,KACpF,CACA,MAAMC,EAAQF,EAAYC,GAC1B,GAAIC,EAAM3B,QAAQ,gBAAkB,EAAG,QAC9BoB,EAAYK,EAAYC,IAC/B,QACF,CACA3L,KAAK6L,kBAAkB,IAAIP,KAAsBC,GAAmBG,EAAYC,GAAIN,GACpF,MAAMS,EAAuB9L,KAAK+L,wBAAwBH,EAAOjJ,EAAW0I,EAAarL,KAAKO,aAC9F,GAAIuL,EAAsB,CACxB,GAAIA,EAAqB,gEAAkEA,EAAqB,4DAA8DA,EAAqB,6CAA8C,QACxOT,EAAYO,EACrB,MAAO,GAAIE,EAAqB,+CAAgD,CAC9E,MAAME,EAAgBF,EAAqB,+CAC3C,GAAIE,EAAc,gBAAkBA,EAAc,eAAe5F,MAAM,KAAK,KAAO,eAAgB,QAC1FiF,EAAYO,EACrB,MAAO,GAAII,EAAc,UAAYhM,KAAKiM,gCAAgCD,EAAc,SAAUX,GAAc,QACvGA,EAAYO,EACrB,CACF,CACF,CACF,CACF,CACF,CACA,OAAOP,CACT,EASAnL,EAAO2L,kBAAoB,SAASA,EAAkBK,EAAYN,EAAOP,GACvE,GAAIa,GAAcA,EAAWjC,QAAQ2B,IAAU,EAAG,QACzCP,EAAYO,EACrB,CACF,EAWA1L,EAAO6L,wBAA0B,SAASA,EAAwBH,EAAOjJ,EAAW0I,EAAa3F,GAC/F,GAAI2F,EAAYO,IAAUjJ,IAAcA,EAAUyF,SAAS,aAAc,CACvE,IAAI+D,EAAuBC,EAC3B,MAAMjL,EAAWuE,EAAW8E,qBAAqB,GAAG7H,KAAaiJ,KACjE,MAAMS,EAAevR,EAAmBwR,4BAA4BnL,GACpE,OAAOkL,IAAiB,MAAQA,SAAsB,OAAS,GAAKF,EAAwBE,EAAaE,gBAAkB,MAAQJ,SAA+B,OAAS,GAAKC,EAAyBD,EAAsBK,eAAiB,MAAQJ,SAAgC,OAAS,EAAIA,EAAuBK,YAC9T,CACA,OAAO,IACT,EAUAvM,EAAOsL,eAAiB,SAASA,EAAe7I,EAAWX,EAAO0K,GAChE,MAAMC,EAAmB3M,KAAK4M,qBAAqBjK,EAAWX,EAAO0K,GACrE,MAAMG,EAAoB,IAAI3P,EAAkByP,EAAiBG,gBAAiBH,GAClF,MAAMI,EAAuBF,EAAkBE,uBAC/C,IAAIzB,EAAmBC,EACvB,GAAIwB,EAAsB,CACxB,IAAIC,EAAoBC,EACxB3B,EAAoBuB,EAAkBK,uBACtC,IAAKF,EAAqB1B,KAAuB,MAAQ0B,SAA4B,GAAKA,EAAmB1K,OAAQ,CACnHgJ,EAAoBA,EAAkB6B,IAAIC,GACjCA,EAASC,MAAQD,EAASE,MAErC,CACA/B,EAAmBsB,EAAkBU,gCACrC,IAAKN,EAAoB1B,KAAsB,MAAQ0B,SAA2B,GAAKA,EAAkB3K,OAAQ,CAC/GiJ,EAAmBA,EAAiB4B,IAAIK,GAC/BA,EAAgBC,UAE3B,CACF,CACAnC,EAAoBA,EAAoBA,EAAoB,GAC5DC,EAAmBA,EAAmBA,EAAmB,GACzD,MAAO,CACLD,oBACAC,mBAEJ,EAUArL,EAAO0M,qBAAuB,SAASA,EAAqBjK,EAAWX,EAAO0K,GAC5E,MAAMgB,EAAY1L,EAAMyC,cACxB,IAAIhB,EAAaiK,EAAUtC,UAC3B,MAAMlF,EAAewH,EAAUC,YAC/B,GAAIzH,KAAkBzC,GAAcA,EAAW2E,SAAS,MAAO,CAC7D3E,EAAaiK,IAAc,MAAQA,SAAmB,OAAS,EAAIA,EAAUE,gBAAgBxH,MAAM,KAAK,EAC1G,CACA,OAAOxL,EAAYiT,2BAA2BlL,EAAWX,EAAMxB,WAAWC,eAAgBgD,EAAYiJ,EACxG,EASAxM,EAAO+L,gCAAkC,SAASA,EAAgC6B,EAAmBC,GACnG,IAAIC,EAAgB,MACpB,MAAMC,EAASH,EAAkB1H,MAAM,KAEvC,GAAI6H,EAAO3L,OAAS,EAAG,CACrB0L,EAAgBD,EAAWE,EAAO,KAAOF,EAAWE,EAAO,IAAIC,eAAeD,EAAO,KAAOF,EAAWE,EAAO,IAAIA,EAAO,MAAQ,CACnI,KAAO,CACLD,EAAgBD,EAAWD,KAAuB,CACpD,CACA,OAAOE,CACT,EAQA9N,EAAO+D,6BAA+B,SAASA,EAA6B5B,EAAmB8L,GAC7F,MAAMC,SAAmBD,IAAc,SAAWE,KAAKC,MAAMH,GAAaA,EAC1E,IAAK,IAAI9G,EAAI,EAAGA,EAAI+G,EAAU9L,OAAQ+E,IAAK,CACzC,MAAMkH,EAAiBH,EAAU/G,GAAG,kBAAoB+G,EAAU/G,GAAG,iBAAiB,kBAAoB+G,EAAU/G,GAAG,kDAAoD+G,EAAU/G,GAAG,iDAAiD,SACzO,MAAMmH,EAA0BJ,EAAU/G,GAAG,2BAA6B+G,EAAU/G,GAAG,0DACvF,MAAMoH,EAAgBpM,EAAkBqM,gBAAgBH,GACxD,GAAIE,EAAe,CAEjBpM,EAAkB8I,mBAAmBoD,GACrClM,EAAkBsM,oBAAoBH,EAAyBC,EACjE,CACF,CACA,OAAOpM,CACT,EAUAnC,EAAO0O,iBAAmB,SAASA,EAAiBC,EAAW5N,GAC7D,IAAI6N,EAAuBC,EAC3B,IAAIC,EACJ,MAAMC,EAAiBjP,KAAKK,KAAKC,kBAAkB4O,iBAAiB,WAClEC,GAAaL,EAAwBG,EAAeG,mBAAqB,MAAQN,SAA+B,OAAS,GAAKC,EAAyBD,EAAsBO,aAAe,MAAQN,SAAgC,OAAS,EAAIA,EAAuBF,GAC1Q,IAAKM,EAAW,CACdzU,EAAI0K,MAAM,yCACV,MACF,CACA,MAAMrE,EAAkBoO,EAAUrN,eAChCd,EAAUmO,EAAUpN,OACpBuN,EAAiBH,EAAUI,YAAcvP,KAAKwP,kBAAkBL,EAAUI,YAC5E,GAAItO,EAAuB,CACzB+N,EAAa,GACbnR,OAAOgB,KAAKoC,GAAuBnC,QAAQ,SAAUC,GACnD,IAAI0Q,EACJ,GAAIlO,MAAMC,QAAQP,EAAsBlC,IAAO,CAC7C,MAAM2Q,EAAUzO,EAAsBlC,GACtC,IAAK,IAAIsI,EAAI,EAAGA,EAAIqI,EAAQpN,OAAQ+E,IAAK,CACvC,IAAIsI,EACJF,EAAU,CAAC,EACXA,EAAQ1Q,GAAO2Q,EAAQrI,IACtBsI,EAAcX,KAAgB,MAAQW,SAAqB,OAAS,EAAIA,EAAYzM,KAAKuM,EAC5F,CACF,KAAO,CACL,IAAIG,EACJH,EAAU,CAAC,EACXA,EAAQ1Q,GAAOkC,EAAsBlC,IACpC6Q,EAAeZ,KAAgB,MAAQY,SAAsB,OAAS,EAAIA,EAAa1M,KAAKuM,EAC/F,CACF,EACF,CACA,GAAIT,GAAcM,EAAgB,CAChCrO,EAAwB,CACtBI,mBAAoB,CAClB+B,KAAM4L,GAAcM,GAG1B,CACAtP,KAAKK,KAAK+D,uBAAuBtD,SAASC,EAAiBC,EAASC,EACtE,EASAf,EAAO4D,qBAAuB,SAASA,EAAqBzB,EAAmBV,GAC7E,MAAMsG,EAAcpK,OAAOgB,KAAK8C,GAChC,MAAMkO,EAAoBxN,EAAkByN,gCAC5C7H,EAAYnJ,QAAQ,SAAUC,GAC5B,IAAK8Q,EAAkBzH,SAASrJ,GAAM,CACpCsD,EAAkB0N,gBAAgBhR,EAAK,IAAK,KAAM4C,EAAgB5C,GACpE,CACF,GACA,OAAOsD,CACT,EAQAnC,EAAOsP,kBAAoB,SAASA,EAAkBQ,GACpD,MAAMC,EAAiB,CAAC,EACxB,GAAID,EAAiB,CACnB,MAAM/H,EAAcpK,OAAOgB,KAAKmR,IAAoB,GACpD,GAAI/H,EAAY3F,OAAS,EAAG,CAC1B2F,EAAYnJ,QAAQ,SAAUC,GAC5B,MAAMmR,EAAWF,EAAgBjR,GACjC,GAAImR,EAAS1Q,OAAS0Q,EAAS1Q,MAAMA,OAAS0Q,EAAS1Q,MAAM2Q,SAAW,QAAS,CAC/E,IAAKF,EAAelR,GAAM,CACxBkR,EAAelR,GAAOmR,EAAS1Q,MAAMA,KACvC,CACF,CACF,EACF,CACF,CACA,OAAOyQ,CACT,EAWA/P,EAAOkQ,+BAAiC,SAASA,EAA+BnO,EAAaoO,EAAiBlP,EAAUmP,GACtH,MAAMC,EAAatO,EAAY3B,kBAAkBkQ,oBAAoBC,eACrE,MAAMC,EAAmBH,EAAWF,GACpC,IAAIzO,EACJ,GAAI8O,GAAoBA,EAAiB5O,gBAAkB4O,EAAiB3O,OAAQ,CAClF,MAAM4O,EAAqB,CACzBC,QAAS,CAAC,GAEZ,MAAMC,EAA0B,CAAC,EACjC,IAAIlO,EACJ,GAAIxB,EAAU,CACZ,GAAIA,EAASqB,KAAOrB,EAASqB,IAAI,iCAAkC,CACjEG,EAAY1H,EAAY6V,sBAAsB3P,GAC9CA,EAAW,CAACA,EACd,KAAO,CACLwB,EAAY1H,EAAY6V,sBAAsB3P,EAAS,GACzD,CACA0P,EAAwBlO,GAAa,OACrCgO,EAAmB,cAAgBE,CACrC,CACA,GAAIP,EAAa,CACf,MAAM5J,EAAO,GAAGgK,EAAiB5O,kBAAkB4O,EAAiB3O,SACpE4O,EAAmBC,QAAQlK,GAAQ,CAAC,EACpCiK,EAAmBC,QAAQlK,GAAM4J,GAAe,MAClD,CACA,GAAII,GAAoBA,EAAiBnB,WAAY,CACnD,MAAME,EAAUiB,EAAiBnB,YAAcvP,KAAKwP,kBAAkBkB,EAAiBnB,YACvF,GAAI1R,OAAOgB,KAAK4Q,GAASnN,OAAS,EAAG,CACnCV,EAAiC6N,CACnC,CACF,CACAxN,EAAYmC,uBAAuBtD,SAAS4P,EAAiB5O,eAAgB4O,EAAiB3O,OAAQ,CACpGV,mBAAoBF,EACpBoD,kBAAmBoM,EACnB/O,+BAAgCA,IAIlC,OAAOsI,QAAQC,SACjB,KAAO,CACL,MAAM,IAAI5E,MAAM,mBAAmB8K,yDACrC,CACF,EACA,OAAOzQ,CACT,CA3vB0tB,CA2vBxtBvE,GAAuBiD,EAA0BrB,EAAQW,UAAW,SAAU,CAAChC,GAAQiC,OAAOkT,yBAAyB9T,EAAQW,UAAW,UAAWX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,WAAY,CAAC/B,EAAOC,GAAQ+B,OAAOkT,yBAAyB9T,EAAQW,UAAW,YAAaX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,sCAAuC,CAAC7B,EAAOC,GAAQ6B,OAAOkT,yBAAyB9T,EAAQW,UAAW,uCAAwCX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,sCAAuC,CAAC3B,EAAOC,GAAQ2B,OAAOkT,yBAAyB9T,EAAQW,UAAW,uCAAwCX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,oBAAqB,CAACzB,EAAOC,GAASyB,OAAOkT,yBAAyB9T,EAAQW,UAAW,qBAAsBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,iCAAkC,CAACvB,EAAQC,GAASuB,OAAOkT,yBAAyB9T,EAAQW,UAAW,kCAAmCX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,eAAgB,CAACrB,GAASsB,OAAOkT,yBAAyB9T,EAAQW,UAAW,gBAAiBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,sBAAuB,CAACpB,EAAQC,GAASoB,OAAOkT,yBAAyB9T,EAAQW,UAAW,uBAAwBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,mBAAoB,CAAClB,EAAQC,GAASkB,OAAOkT,yBAAyB9T,EAAQW,UAAW,oBAAqBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,oBAAqB,CAAChB,EAAQC,GAASgB,OAAOkT,yBAAyB9T,EAAQW,UAAW,qBAAsBX,EAAQW,WAAYU,EAA0BrB,EAAQW,UAAW,iCAAkC,CAACd,EAAQC,GAASc,OAAOkT,yBAAyB9T,EAAQW,UAAW,kCAAmCX,EAAQW,WAAaX,KAAaD,GACt/D,OAAO4C,CACT,EAAG"}
|
|
@@ -671,22 +671,23 @@ class InternalIntentBasedNavigation extends ControllerExtension {
|
|
|
671
671
|
const converterContext = this._getConverterContext(sMetaPath, oView, oDiagnostics);
|
|
672
672
|
const aggregationHelper = new AggregationHelper(converterContext.getEntityType(), converterContext);
|
|
673
673
|
const isAnalyticsSupported = aggregationHelper.isAnalyticsSupported();
|
|
674
|
-
let transAggregations
|
|
675
|
-
customAggregates = [];
|
|
674
|
+
let transAggregations, customAggregates;
|
|
676
675
|
if (isAnalyticsSupported) {
|
|
677
676
|
transAggregations = aggregationHelper.getTransAggregations();
|
|
678
|
-
if (transAggregations
|
|
677
|
+
if (transAggregations?.length) {
|
|
679
678
|
transAggregations = transAggregations.map((transAgg: any) => {
|
|
680
679
|
return transAgg.Name || transAgg.Value;
|
|
681
680
|
});
|
|
682
681
|
}
|
|
683
682
|
customAggregates = aggregationHelper.getCustomAggregateDefinitions();
|
|
684
|
-
if (customAggregates
|
|
683
|
+
if (customAggregates?.length) {
|
|
685
684
|
customAggregates = customAggregates.map((customAggregate: any) => {
|
|
686
685
|
return customAggregate.qualifier;
|
|
687
686
|
});
|
|
688
687
|
}
|
|
689
688
|
}
|
|
689
|
+
transAggregations = transAggregations ? transAggregations : [];
|
|
690
|
+
customAggregates = customAggregates ? customAggregates : [];
|
|
690
691
|
return { transAggregations, customAggregates };
|
|
691
692
|
}
|
|
692
693
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2023 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/controls/ObjectPage/HeaderFacet", "sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/converters/helpers/Key", "sap/fe/core/helpers/BindingToolkit", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../ManifestSettings", "../../objectPage/FormMenuActions", "../Common/DataVisualization", "../Common/Form"], function (Log, Action, HeaderFacet, IssueManager, Key, BindingToolkit, ConfigurableObject, ID, ManifestSettings, FormMenuActions, DataVisualization, Form) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action", "sap/fe/core/converters/controls/ObjectPage/HeaderFacet", "sap/fe/core/converters/helpers/IssueManager", "sap/fe/core/converters/helpers/Key", "sap/fe/core/helpers/BindingToolkit", "sap/fe/core/templating/PropertyHelper", "../../helpers/ConfigurableObject", "../../helpers/ID", "../../ManifestSettings", "../../objectPage/FormMenuActions", "../Common/DataVisualization", "../Common/Form"], function (Log, Action, HeaderFacet, IssueManager, Key, BindingToolkit, PropertyHelper, ConfigurableObject, ID, ManifestSettings, FormMenuActions, DataVisualization, Form) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _exports = {};
|
|
@@ -20,6 +20,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
20
20
|
var Placement = ConfigurableObject.Placement;
|
|
21
21
|
var OverrideType = ConfigurableObject.OverrideType;
|
|
22
22
|
var insertCustomElements = ConfigurableObject.insertCustomElements;
|
|
23
|
+
var isPathExpression = PropertyHelper.isPathExpression;
|
|
23
24
|
var resolveBindingString = BindingToolkit.resolveBindingString;
|
|
24
25
|
var ref = BindingToolkit.ref;
|
|
25
26
|
var pathInModel = BindingToolkit.pathInModel;
|
|
@@ -31,6 +32,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
31
32
|
var fn = BindingToolkit.fn;
|
|
32
33
|
var equal = BindingToolkit.equal;
|
|
33
34
|
var compileExpression = BindingToolkit.compileExpression;
|
|
35
|
+
var and = BindingToolkit.and;
|
|
34
36
|
var KeyHelper = Key.KeyHelper;
|
|
35
37
|
var IssueType = IssueManager.IssueType;
|
|
36
38
|
var IssueSeverity = IssueManager.IssueSeverity;
|
|
@@ -221,9 +223,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
221
223
|
var _facetDefinition$anno, _facetDefinition$anno2, _presentation$visuali, _presentation$visuali2, _presentation$visuali3;
|
|
222
224
|
const subSectionID = getSubSectionID(facetDefinition);
|
|
223
225
|
const oHiddenAnnotation = (_facetDefinition$anno = facetDefinition.annotations) === null || _facetDefinition$anno === void 0 ? void 0 : (_facetDefinition$anno2 = _facetDefinition$anno.UI) === null || _facetDefinition$anno2 === void 0 ? void 0 : _facetDefinition$anno2.Hidden;
|
|
224
|
-
const
|
|
225
|
-
const
|
|
226
|
-
const
|
|
226
|
+
const isVisibleExpression = not(equal(true, getExpressionFromAnnotation(oHiddenAnnotation)));
|
|
227
|
+
const isVisible = compileExpression(isVisibleExpression);
|
|
228
|
+
const isDynamicExpression = isVisible !== undefined && typeof isVisible === "string" && isVisible.indexOf("{=") === 0 && !isPathExpression(oHiddenAnnotation);
|
|
229
|
+
const isVisibleDynamicExpression = isVisible && isDynamicExpression ? isVisible.substring(isVisible.indexOf("{=") + 2, isVisible.lastIndexOf("}")) !== undefined : false;
|
|
227
230
|
const title = compileExpression(getExpressionFromAnnotation(facetDefinition.Label));
|
|
228
231
|
const subSection = {
|
|
229
232
|
id: subSectionID,
|
|
@@ -273,7 +276,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
273
276
|
for (const {
|
|
274
277
|
facet
|
|
275
278
|
} of visualizationFacets) {
|
|
276
|
-
visualizationContent.push(createSubSection(facet, [], converterContext, level,
|
|
279
|
+
visualizationContent.push(createSubSection(facet, [], converterContext, level, true, isHeaderSection));
|
|
277
280
|
}
|
|
278
281
|
if (nonVisualizationFacets.length > 0) {
|
|
279
282
|
// This subsection includes visualizations and other content, so it is a "Mixed" subsection
|
|
@@ -331,15 +334,22 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
331
334
|
const subSectionTitle = subSection.title ? subSection.title : "";
|
|
332
335
|
const controlTitle = ((_presentation$visuali = presentation.visualizations[0]) === null || _presentation$visuali === void 0 ? void 0 : (_presentation$visuali2 = _presentation$visuali.annotation) === null || _presentation$visuali2 === void 0 ? void 0 : _presentation$visuali2.title) || ((_presentation$visuali3 = presentation.visualizations[0]) === null || _presentation$visuali3 === void 0 ? void 0 : _presentation$visuali3.title);
|
|
333
336
|
const showTitle = getTitleVisibility(controlTitle, subSectionTitle, hasSingleContent);
|
|
334
|
-
|
|
337
|
+
|
|
338
|
+
// Either calculate the title visibility statically or dynamically
|
|
339
|
+
// Additionally to checking whether a title exists,
|
|
340
|
+
// we also need to check that the facet title is not the same as the control (i.e. visualization) title;
|
|
341
|
+
// this is done by including "showTitle" in the and expression
|
|
342
|
+
const titleVisible = ifElse(isDynamicExpression, and(isVisibleDynamicExpression, not(equal(title, "undefined")), showTitle), and(isVisible !== undefined, title !== "undefined", title !== undefined, isVisibleExpression, showTitle));
|
|
335
343
|
const dataVisualizationSubSection = {
|
|
336
344
|
...subSection,
|
|
337
345
|
type: SubSectionType.DataVisualization,
|
|
338
346
|
level: level,
|
|
339
347
|
presentation: presentation,
|
|
340
|
-
showTitle: showTitle,
|
|
341
|
-
|
|
348
|
+
showTitle: compileExpression(showTitle),
|
|
349
|
+
// This is used on the ObjectPageSubSection
|
|
350
|
+
titleVisible: compileExpression(titleVisible) // This is used to hide the actual Title control
|
|
342
351
|
};
|
|
352
|
+
|
|
343
353
|
return dataVisualizationSubSection;
|
|
344
354
|
case "com.sap.vocabularies.UI.v1.FieldGroup":
|
|
345
355
|
case "com.sap.vocabularies.UI.v1.Identification":
|
|
@@ -376,18 +386,19 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
376
386
|
};
|
|
377
387
|
return unsupportedSubSection;
|
|
378
388
|
}
|
|
389
|
+
|
|
379
390
|
/**
|
|
380
|
-
* Checks whether to hide or show subsection title
|
|
391
|
+
* Checks whether to hide or show subsection title.
|
|
381
392
|
*
|
|
382
393
|
* @param controlTitle
|
|
383
|
-
* @param
|
|
394
|
+
* @param subSectionTitle
|
|
384
395
|
* @param hasSingleContent
|
|
385
|
-
* @returns Boolean value
|
|
396
|
+
* @returns Boolean value or expression for showTitle
|
|
386
397
|
*/
|
|
387
398
|
_exports.createSubSection = createSubSection;
|
|
388
399
|
function getTitleVisibility(controlTitle, subSectionTitle, hasSingleContent) {
|
|
389
400
|
// visible shall be true if there are multiple content or if the control and subsection title are different
|
|
390
|
-
return
|
|
401
|
+
return or(not(hasSingleContent), notEqual(resolveBindingString(controlTitle), resolveBindingString(subSectionTitle)));
|
|
391
402
|
}
|
|
392
403
|
_exports.getTitleVisibility = getTitleVisibility;
|
|
393
404
|
function createFormActionReducer(actions, facetDefinition, converterContext) {
|
|
@@ -594,4 +605,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/converters/controls/Common/Action",
|
|
|
594
605
|
}
|
|
595
606
|
return _exports;
|
|
596
607
|
}, false);
|
|
597
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWJTZWN0aW9uVHlwZSIsInZpc3VhbGl6YXRpb25UZXJtcyIsImNyZWF0ZVN1YlNlY3Rpb25zIiwiZmFjZXRDb2xsZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImlzSGVhZGVyU2VjdGlvbiIsImZhY2V0c1RvQ3JlYXRlIiwicmVkdWNlIiwiZmFjZXREZWZpbml0aW9uIiwiJFR5cGUiLCJwdXNoIiwiRmFjZXRzIiwiZmluZCIsImZhY2V0VHlwZSIsInNwbGljZSIsImxlbmd0aCIsIm1hcCIsImZhY2V0IiwiY3JlYXRlU3ViU2VjdGlvbiIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMiLCJjdXN0b21IZWFkZXJGYWNldHMiLCJnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRIZWFkZXJGYWNldHMiLCJhQ3VzdG9tSGVhZGVyRmFjZXRzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJjdXN0b21IZWFkZXJGYWNldCIsInRlbXBsYXRlRWRpdCIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbiIsInN1YlNlY3Rpb25JRCIsImdldEN1c3RvbVN1YlNlY3Rpb25JRCIsInN1YlNlY3Rpb24iLCJpZCIsInRpdGxlIiwidHlwZSIsIlhNTEZyYWdtZW50IiwidGVtcGxhdGUiLCJ2aXNpYmxlIiwibGV2ZWwiLCJzaWRlQ29udGVudCIsInVuZGVmaW5lZCIsInN0YXNoZWQiLCJmbGV4U2V0dGluZ3MiLCJhY3Rpb25zIiwiZ2V0U3ViU2VjdGlvbktleSIsImZhbGxiYWNrIiwiSUQiLCJ0b1N0cmluZyIsIkxhYmVsIiwiYWRkRm9ybU1lbnVBY3Rpb25zIiwiaGlkZGVuQWN0aW9ucyIsImdldEZvcm1IaWRkZW5BY3Rpb25zIiwiZm9ybUFjdGlvbnMiLCJnZXRGb3JtQWN0aW9ucyIsIm1hbmlmZXN0QWN0aW9ucyIsImdldEFjdGlvbnNGcm9tTWFuaWZlc3QiLCJhY3Rpb25PdmVyd3JpdGVDb25maWciLCJlbmFibGVkIiwiT3ZlcnJpZGVUeXBlIiwib3ZlcndyaXRlIiwiY29tbWFuZCIsImZvcm1BbGxBY3Rpb25zIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJnZXRWaXNpYmlsaXR5RW5hYmxlbWVudEZvcm1NZW51QWN0aW9ucyIsInJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMiLCJjb21tYW5kQWN0aW9ucyIsImdldEZhY2V0QWN0aW9ucyIsImZpbHRlciIsInN1YkZhY2V0RGVmaW5pdGlvbiIsImlzUmVmZXJlbmNlRmFjZXQiLCJhY3Rpb25SZWR1Y2VyIiwicmVmZXJlbmNlRmFjZXQiLCJjcmVhdGVGb3JtQWN0aW9uUmVkdWNlciIsImdldEJ1dHRvblR5cGUiLCJlbXBoYXNpemVkIiwiYnV0dG9uVHlwZUNvbmRpdGlvbiIsImVxdWFsIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJCdXR0b25UeXBlIiwiR2hvc3QiLCJUcmFuc3BhcmVudCIsImhhc1NpbmdsZUNvbnRlbnQiLCJnZXRTdWJTZWN0aW9uSUQiLCJvSGlkZGVuQW5ub3RhdGlvbiIsImFubm90YXRpb25zIiwiVUkiLCJIaWRkZW4iLCJpc1Zpc2libGUiLCJub3QiLCJpc0R5bmFtaWNFeHByZXNzaW9uIiwiaW5kZXhPZiIsImlzVmlzaWJsZUR5bmFtaWNFeHByZXNzaW9uIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJVbmtub3duIiwiYW5ub3RhdGlvblBhdGgiLCJnZXRFbnRpdHlTZXRCYXNlZEFubm90YXRpb25QYXRoIiwiZnVsbHlRdWFsaWZpZWROYW1lIiwiaXNWaXNpYmlsaXR5RHluYW1pYyIsImdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0IiwiZGVzaWdudGltZSIsImdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQiLCJ1bnN1cHBvcnRlZFRleHQiLCJmYWNldHMiLCJ2aXN1YWxpemF0aW9uRmFjZXRzIiwiaW5kZXgiLCJpbmNsdWRlcyIsIlRhcmdldCIsIiR0YXJnZXQiLCJ0ZXJtIiwibm9uVmlzdWFsaXphdGlvbkZhY2V0cyIsInZpc3VhbGl6YXRpb24iLCJ2aXN1YWxpemF0aW9uQ29udGVudCIsImZvcm1Db250ZW50IiwibWl4ZWRDb250ZW50IiwiTG9nIiwid2FybmluZyIsIm1peGVkU3ViU2VjdGlvbiIsIk1peGVkIiwiY29udGVudCIsImZhY2V0QWN0aW9ucyIsImZvcm1Db2xsZWN0aW9uU3ViU2VjdGlvbiIsIkZvcm0iLCJmb3JtRGVmaW5pdGlvbiIsImNyZWF0ZUZvcm1EZWZpbml0aW9uIiwiYWN0aW9uIiwiZmFjZXROYW1lIiwidmFsdWUiLCJwcmVzZW50YXRpb24iLCJnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24iLCJnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UiLCJzdWJTZWN0aW9uVGl0bGUiLCJjb250cm9sVGl0bGUiLCJ2aXN1YWxpemF0aW9ucyIsImFubm90YXRpb24iLCJzaG93VGl0bGUiLCJnZXRUaXRsZVZpc2liaWxpdHkiLCJ0aXRsZVZpc2libGVFeHByZXNzaW9uIiwiZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uIiwiRGF0YVZpc3VhbGl6YXRpb24iLCJ0aXRsZVZpc2libGUiLCJmb3JtRWxlbWVudFN1YlNlY3Rpb24iLCJ1bnN1cHBvcnRlZFN1YlNlY3Rpb24iLCJ0ZXh0Iiwib3IiLCJub3RFcXVhbCIsInJlc29sdmVCaW5kaW5nU3RyaW5nIiwicmVmZXJlbmNlVGFyZ2V0IiwidGFyZ2V0VmFsdWUiLCJkYXRhRmllbGRDb2xsZWN0aW9uIiwibmF2aWdhdGlvblByb3BlcnR5UGF0aCIsInNwbGl0Iiwic3Vic3RyIiwiRGF0YSIsImdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24iLCJxdWFsaWZpZXIiLCJkYXRhRmllbGQiLCJSZXF1aXJlc0NvbnRleHQiLCJ2YWx1ZU9mIiwiZ2V0RGlhZ25vc3RpY3MiLCJhZGRJc3N1ZSIsIklzc3VlQ2F0ZWdvcnkiLCJBbm5vdGF0aW9uIiwiSXNzdWVTZXZlcml0eSIsIkxvdyIsIklzc3VlVHlwZSIsIk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTiIsIlJFUVVJUkVTQ09OVEVYVCIsIklubGluZSIsIklOTElORSIsIkRldGVybWluaW5nIiwiREVURVJNSU5JTkciLCJtTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJNYXBwaW5nIiwic2VtYW50aWNPYmplY3RNYXBwaW5nIiwiZ2V0U2VtYW50aWNPYmplY3RNYXBwaW5nIiwiQWN0aW9uVHlwZSIsIkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbiIsImdldEZvcm1JRCIsIktleUhlbHBlciIsImdlbmVyYXRlS2V5RnJvbURhdGFGaWVsZCIsIk5hdmlnYXRpb25BdmFpbGFibGUiLCJidXR0b25UeXBlIiwiRW1waGFzaXplZCIsInByZXNzIiwiZm4iLCJTZW1hbnRpY09iamVjdCIsIkFjdGlvbiIsImN1c3RvbURhdGEiLCJzZW1hbnRpY09iamVjdCIsImZvcm1NYW5pZmVzdEFjdGlvbnNDb25maWd1cmF0aW9uIiwiRGF0YUZpZWxkRm9yQWN0aW9uIiwiZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24iLCJBY3Rpb25UYXJnZXQiLCJiaW5kaW5nIiwicmVxdWlyZXNEaWFsb2ciLCJpc0RpYWxvZyIsImNvbnRleHRzIiwicGF0aEluTW9kZWwiLCJpbnZvY2F0aW9uR3JvdXBpbmciLCJJbnZvY2F0aW9uR3JvdXBpbmciLCJsYWJlbCIsIm1vZGVsIiwiaXNOYXZpZ2FibGUiLCJpc0FjdGlvbk5hdmlnYWJsZSIsInJlZiIsImFjdGlvbkRlZmluaXRpb24iLCJiQ3JpdGljYWwiLCJDb21tb24iLCJJc0FjdGlvbkNyaXRpY2FsIiwicGFyYW1ldGVycyIsImNyZWF0ZUN1c3RvbVN1YlNlY3Rpb25zIiwibWFuaWZlc3RTdWJTZWN0aW9ucyIsInN1YlNlY3Rpb25zIiwic3ViU2VjdGlvbktleSIsImNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24iLCJtYW5pZmVzdFN1YlNlY3Rpb24iLCJnZXRTaWRlQ29udGVudElEIiwiZXF1YWxTcGxpdCIsInBvc2l0aW9uIiwicGxhY2VtZW50IiwiUGxhY2VtZW50IiwiQWZ0ZXIiLCJzdWJTZWN0aW9uRGVmaW5pdGlvbiIsIm5hbWUiLCJQbGFjZWhvbGRlciIsImN1cnJlbnRGYWNldCIsImZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uIiwibWFuaWZlc3RXcmFwcGVyIiwidXNlSWNvblRhYkJhciIsImhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMiLCJlbnRpdHlUeXBlIiwiZ2V0RW50aXR5VHlwZSIsImV2ZXJ5Iiwic3ViRmFjZXQiLCJyZWZGYWNldCIsInN1YkNvbGxlY3Rpb25GYWNldCIsInN1YlJlZkZhY2V0Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdWJTZWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW11bmljYXRpb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW11bmljYXRpb25cIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sbGVjdGlvbkZhY2V0VHlwZXMsXG5cdERhdGFGaWVsZEFic3RyYWN0VHlwZXMsXG5cdEVtcGhhc2l6ZWQsXG5cdEZhY2V0VHlwZXMsXG5cdEZpZWxkR3JvdXAsXG5cdE9wZXJhdGlvbkdyb3VwaW5nVHlwZSxcblx0UmVmZXJlbmNlRmFjZXQsXG5cdFJlZmVyZW5jZUZhY2V0VHlwZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMsIFVJQW5ub3RhdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJhc2VBY3Rpb24sXG5cdENvbWJpbmVkQWN0aW9uLFxuXHRDb252ZXJ0ZXJBY3Rpb24sXG5cdEN1c3RvbUFjdGlvbixcblx0T3ZlcnJpZGVUeXBlQWN0aW9uXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB7XG5cdEJ1dHRvblR5cGUsXG5cdGdldEFjdGlvbnNGcm9tTWFuaWZlc3QsXG5cdGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uLFxuXHRnZXRTZW1hbnRpY09iamVjdE1hcHBpbmcsXG5cdGlzQWN0aW9uTmF2aWdhYmxlLFxuXHRyZW1vdmVEdXBsaWNhdGVBY3Rpb25zXG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0NvbW1vbi9BY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0LCBGbGV4U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQge1xuXHRnZXREZXNpZ25UaW1lTWV0YWRhdGFTZXR0aW5nc0ZvckhlYWRlckZhY2V0LFxuXHRnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QsXG5cdGdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0XG59IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL09iamVjdFBhZ2UvSGVhZGVyRmFjZXRcIjtcbmltcG9ydCB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHksIElzc3VlVHlwZSB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvSXNzdWVNYW5hZ2VyXCI7XG5pbXBvcnQgeyBLZXlIZWxwZXIgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0tleVwiO1xuaW1wb3J0IHtcblx0Q29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24sXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRlcXVhbCxcblx0Zm4sXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0aWZFbHNlLFxuXHRub3QsXG5cdG5vdEVxdWFsLFxuXHRvcixcblx0cGF0aEluTW9kZWwsXG5cdHJlZixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmdcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIENvbnZlcnRlckNvbnRleHQgZnJvbSBcIi4uLy4uL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgQ29uZmlndXJhYmxlT2JqZWN0LCBDb25maWd1cmFibGVSZWNvcmQsIEN1c3RvbUVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy9Db25maWd1cmFibGVPYmplY3RcIjtcbmltcG9ydCB7IGluc2VydEN1c3RvbUVsZW1lbnRzLCBPdmVycmlkZVR5cGUsIFBsYWNlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgZ2V0Q3VzdG9tU3ViU2VjdGlvbklELCBnZXRGb3JtSUQsIGdldFNpZGVDb250ZW50SUQsIGdldFN1YlNlY3Rpb25JRCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0lEXCI7XG5pbXBvcnQgdHlwZSB7IE1hbmlmZXN0QWN0aW9uLCBNYW5pZmVzdFN1YlNlY3Rpb24gfSBmcm9tIFwiLi4vLi4vTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBnZXRGb3JtQWN0aW9ucywgZ2V0Rm9ybUhpZGRlbkFjdGlvbnMsIGdldFZpc2liaWxpdHlFbmFibGVtZW50Rm9ybU1lbnVBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL29iamVjdFBhZ2UvRm9ybU1lbnVBY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IERhdGFWaXN1YWxpemF0aW9uRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB0eXBlIHsgRm9ybURlZmluaXRpb24gfSBmcm9tIFwiLi4vQ29tbW9uL0Zvcm1cIjtcbmltcG9ydCB7IGNyZWF0ZUZvcm1EZWZpbml0aW9uLCBpc1JlZmVyZW5jZUZhY2V0IH0gZnJvbSBcIi4uL0NvbW1vbi9Gb3JtXCI7XG5cbmV4cG9ydCBlbnVtIFN1YlNlY3Rpb25UeXBlIHtcblx0VW5rbm93biA9IFwiVW5rbm93blwiLCAvLyBEZWZhdWx0IFR5cGVcblx0Rm9ybSA9IFwiRm9ybVwiLFxuXHREYXRhVmlzdWFsaXphdGlvbiA9IFwiRGF0YVZpc3VhbGl6YXRpb25cIixcblx0WE1MRnJhZ21lbnQgPSBcIlhNTEZyYWdtZW50XCIsXG5cdFBsYWNlaG9sZGVyID0gXCJQbGFjZWhvbGRlclwiLFxuXHRNaXhlZCA9IFwiTWl4ZWRcIlxufVxuXG5leHBvcnQgdHlwZSBPYmplY3RQYWdlU3ViU2VjdGlvbiA9XG5cdHwgVW5zdXBwb3J0ZWRTdWJTZWN0aW9uXG5cdHwgRm9ybVN1YlNlY3Rpb25cblx0fCBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb25cblx0fCBDb250YWN0U3ViU2VjdGlvblxuXHR8IFhNTEZyYWdtZW50U3ViU2VjdGlvblxuXHR8IFBsYWNlaG9sZGVyRnJhZ21lbnRTdWJTZWN0aW9uXG5cdHwgTWl4ZWRTdWJTZWN0aW9uO1xuXG50eXBlIEJhc2VTdWJTZWN0aW9uID0ge1xuXHRpZDogc3RyaW5nO1xuXHRrZXk6IHN0cmluZztcblx0dGl0bGU6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHRhbm5vdGF0aW9uUGF0aDogc3RyaW5nO1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZTtcblx0dmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGlzVmlzaWJpbGl0eUR5bmFtaWM/OiBib29sZWFuIHwgXCJcIjtcblx0ZmxleFNldHRpbmdzPzogRmxleFNldHRpbmdzO1xuXHRzdGFzaGVkPzogYm9vbGVhbjtcblx0bGV2ZWw6IG51bWJlcjtcblx0Y29udGVudD86IEFycmF5PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcblx0c2lkZUNvbnRlbnQ/OiBTaWRlQ29udGVudERlZjtcbn07XG5cbnR5cGUgVW5zdXBwb3J0ZWRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHRleHQ6IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiA9IEJhc2VTdWJTZWN0aW9uICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5EYXRhVmlzdWFsaXphdGlvbjtcblx0cHJlc2VudGF0aW9uOiBEYXRhVmlzdWFsaXphdGlvbkRlZmluaXRpb247XG5cdHNob3dUaXRsZTogYm9vbGVhbiB8IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uO1xuXHR0aXRsZVZpc2libGU/OiBzdHJpbmcgfCBib29sZWFuO1xufTtcblxudHlwZSBDb250YWN0U3ViU2VjdGlvbiA9IFVuc3VwcG9ydGVkU3ViU2VjdGlvbjtcblxudHlwZSBYTUxGcmFnbWVudFN1YlNlY3Rpb24gPSBPbWl0PEJhc2VTdWJTZWN0aW9uLCBcImFubm90YXRpb25QYXRoXCI+ICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5YTUxGcmFnbWVudDtcblx0dGVtcGxhdGU6IHN0cmluZztcblx0YWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcbn07XG5cbnR5cGUgUGxhY2Vob2xkZXJGcmFnbWVudFN1YlNlY3Rpb24gPSBPbWl0PEJhc2VTdWJTZWN0aW9uLCBcImFubm90YXRpb25QYXRoXCI+ICYge1xuXHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5QbGFjZWhvbGRlcjtcblx0YWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPjtcbn07XG5cbnR5cGUgTWl4ZWRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdGNvbnRlbnQ6IEFycmF5PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZvcm1TdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm07XG5cdGZvcm1EZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbjtcblx0YWN0aW9uczogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG5cdGNvbW1hbmRBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZVNlY3Rpb24gPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkOiBzdHJpbmc7XG5cdHRpdGxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0c2hvd1RpdGxlPzogYm9vbGVhbjtcblx0dmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHN1YlNlY3Rpb25zOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdO1xufTtcblxudHlwZSBTaWRlQ29udGVudERlZiA9IHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGlkPzogc3RyaW5nO1xuXHRzaWRlQ29udGVudEZhbGxEb3duPzogc3RyaW5nO1xuXHRjb250YWluZXJRdWVyeT86IHN0cmluZztcblx0dmlzaWJsZT86IGJvb2xlYW47XG5cdGVxdWFsU3BsaXQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24gPSBDdXN0b21FbGVtZW50PE9iamVjdFBhZ2VTZWN0aW9uPjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb24gPSBDdXN0b21FbGVtZW50PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcblxuY29uc3QgdmlzdWFsaXphdGlvblRlcm1zOiBzdHJpbmdbXSA9IFtcblx0VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0sXG5cdFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0LFxuXHRVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50LFxuXHRVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5dO1xuXG4vKipcbiAqIENyZWF0ZSBzdWJzZWN0aW9ucyBiYXNlZCBvbiBmYWNldCBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSBmYWNldENvbGxlY3Rpb24gQ29sbGVjdGlvbiBvZiBmYWNldHNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGlzSGVhZGVyU2VjdGlvbiBUcnVlIGlmIGhlYWRlciBzZWN0aW9uIGlzIGdlbmVyYXRlZCBpbiB0aGlzIGl0ZXJhdGlvblxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgc3Vic2VjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YlNlY3Rpb25zKFxuXHRmYWNldENvbGxlY3Rpb246IEZhY2V0VHlwZXNbXSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0aXNIZWFkZXJTZWN0aW9uPzogYm9vbGVhblxuKTogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSB7XG5cdC8vIEZpcnN0IHdlIGRldGVybWluZSB3aGljaCBzdWIgc2VjdGlvbiB3ZSBuZWVkIHRvIGNyZWF0ZVxuXHRjb25zdCBmYWNldHNUb0NyZWF0ZSA9IGZhY2V0Q29sbGVjdGlvbi5yZWR1Y2UoKGZhY2V0c1RvQ3JlYXRlOiBGYWNldFR5cGVzW10sIGZhY2V0RGVmaW5pdGlvbikgPT4ge1xuXHRcdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5wdXNoKGZhY2V0RGVmaW5pdGlvbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHRcdC8vIFRPRE8gSWYgdGhlIENvbGxlY3Rpb24gRmFjZXQgaGFzIGEgY2hpbGQgb2YgdHlwZSBDb2xsZWN0aW9uIEZhY2V0IHdlIGJyaW5nIHRoZW0gdXAgb25lIGxldmVsIChGb3JtICsgVGFibGUgdXNlIGNhc2UpID9cblx0XHRcdFx0Ly8gZmlyc3QgY2FzZSBmYWNldCBDb2xsZWN0aW9uIGlzIGNvbWJpbmF0aW9uIG9mIGNvbGxlY3Rpb24gYW5kIHJlZmVyZW5jZSBmYWNldCBvciBub3QgYWxsIGZhY2V0cyBhcmUgcmVmZXJlbmNlIGZhY2V0cy5cblx0XHRcdFx0aWYgKGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuZmluZCgoZmFjZXRUeXBlKSA9PiBmYWNldFR5cGUuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCkpIHtcblx0XHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5zcGxpY2UoZmFjZXRzVG9DcmVhdGUubGVuZ3RoLCAwLCAuLi5mYWNldERlZmluaXRpb24uRmFjZXRzKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5wdXNoKGZhY2V0RGVmaW5pdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0OlxuXHRcdFx0XHQvLyBOb3Qgc3VwcG9ydGVkXG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZXRzVG9DcmVhdGU7XG5cdH0sIFtdKTtcblxuXHQvLyBUaGVuIHdlIGNyZWF0ZSB0aGUgYWN0dWFsIHN1YnNlY3Rpb25zXG5cdHJldHVybiBmYWNldHNUb0NyZWF0ZS5tYXAoKGZhY2V0KSA9PlxuXHRcdGNyZWF0ZVN1YlNlY3Rpb24oZmFjZXQsIGZhY2V0c1RvQ3JlYXRlLCBjb252ZXJ0ZXJDb250ZXh0LCAwLCAhKGZhY2V0IGFzIGFueSk/LkZhY2V0cz8ubGVuZ3RoLCBpc0hlYWRlclNlY3Rpb24pXG5cdCk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBzdWJzZWN0aW9ucyBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgY3VzdG9tIGhlYWRlciBmYWNldC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN1YnNlY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdIHtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+ID0gZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0KFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuZ2V0SGVhZGVyRmFjZXRzKClcblx0KTtcblx0Y29uc3QgYUN1c3RvbUhlYWRlckZhY2V0czogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0W10gPSBbXTtcblx0T2JqZWN0LmtleXMoY3VzdG9tSGVhZGVyRmFjZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRhQ3VzdG9tSGVhZGVyRmFjZXRzLnB1c2goY3VzdG9tSGVhZGVyRmFjZXRzW2tleV0pO1xuXHRcdHJldHVybiBhQ3VzdG9tSGVhZGVyRmFjZXRzO1xuXHR9KTtcblx0Y29uc3QgZmFjZXRzVG9DcmVhdGUgPSBhQ3VzdG9tSGVhZGVyRmFjZXRzLnJlZHVjZSgoZmFjZXRzVG9DcmVhdGU6IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldFtdLCBjdXN0b21IZWFkZXJGYWNldCkgPT4ge1xuXHRcdGlmIChjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQpIHtcblx0XHRcdGZhY2V0c1RvQ3JlYXRlLnB1c2goY3VzdG9tSGVhZGVyRmFjZXQpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZXRzVG9DcmVhdGU7XG5cdH0sIFtdKTtcblxuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGUubWFwKChjdXN0b21IZWFkZXJGYWNldCkgPT4gY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9uKGN1c3RvbUhlYWRlckZhY2V0KSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNlY3Rpb24gYmFzZWQgb24gYSBjdXN0b20gaGVhZGVyIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBjdXN0b21IZWFkZXJGYWNldCBBIGN1c3RvbSBoZWFkZXIgZmFjZXRcbiAqIEByZXR1cm5zIEEgZGVmaW5pdGlvbiBmb3IgYSBzdWJzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbihjdXN0b21IZWFkZXJGYWNldDogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0KTogT2JqZWN0UGFnZVN1YlNlY3Rpb24ge1xuXHRjb25zdCBzdWJTZWN0aW9uSUQgPSBnZXRDdXN0b21TdWJTZWN0aW9uSUQoY3VzdG9tSGVhZGVyRmFjZXQua2V5KTtcblx0Y29uc3Qgc3ViU2VjdGlvbjogWE1MRnJhZ21lbnRTdWJTZWN0aW9uID0ge1xuXHRcdGlkOiBzdWJTZWN0aW9uSUQsXG5cdFx0a2V5OiBjdXN0b21IZWFkZXJGYWNldC5rZXksXG5cdFx0dGl0bGU6IGN1c3RvbUhlYWRlckZhY2V0LnRpdGxlLFxuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlhNTEZyYWdtZW50LFxuXHRcdHRlbXBsYXRlOiBjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQgfHwgXCJcIixcblx0XHR2aXNpYmxlOiBjdXN0b21IZWFkZXJGYWNldC52aXNpYmxlLFxuXHRcdGxldmVsOiAxLFxuXHRcdHNpZGVDb250ZW50OiB1bmRlZmluZWQsXG5cdFx0c3Rhc2hlZDogY3VzdG9tSGVhZGVyRmFjZXQuc3Rhc2hlZCxcblx0XHRmbGV4U2V0dGluZ3M6IGN1c3RvbUhlYWRlckZhY2V0LmZsZXhTZXR0aW5ncyxcblx0XHRhY3Rpb25zOiB7fVxuXHR9O1xuXHRyZXR1cm4gc3ViU2VjdGlvbjtcbn1cblxuLy8gZnVuY3Rpb24gaXNUYXJnZXRGb3JDb21wbGlhbnQoYW5ub3RhdGlvblBhdGg6IEFubm90YXRpb25QYXRoKSB7XG4vLyBcdHJldHVybiAvLipjb21cXC5zYXBcXC52b2NhYnVsYXJpZXNcXC5VSVxcLnYxXFwuKEZpZWxkR3JvdXB8SWRlbnRpZmljYXRpb258RGF0YVBvaW50fFN0YXR1c0luZm8pLiovLnRlc3QoYW5ub3RhdGlvblBhdGgudmFsdWUpO1xuLy8gfVxuY29uc3QgZ2V0U3ViU2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG4vKipcbiAqIEFkZHMgRm9ybSBtZW51IGFjdGlvbiB0byBhbGwgZm9ybSBhY3Rpb25zLCByZW1vdmVzIGR1cGxpY2F0ZSBhY3Rpb25zIGFuZCBoaWRkZW4gYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gYWN0aW9ucyBUaGUgYWN0aW9ucyBpbnZvbHZlZFxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBmb3JtIG1lbnUgYWN0aW9uc1xuICovXG5mdW5jdGlvbiBhZGRGb3JtTWVudUFjdGlvbnMoYWN0aW9uczogQ29udmVydGVyQWN0aW9uW10sIGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IENvbWJpbmVkQWN0aW9uIHtcblx0Y29uc3QgaGlkZGVuQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0Rm9ybUhpZGRlbkFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSB8fCBbXSxcblx0XHRmb3JtQWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiA9IGdldEZvcm1BY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0bWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChmb3JtQWN0aW9ucywgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGhpZGRlbkFjdGlvbnMpLFxuXHRcdGFjdGlvbk92ZXJ3cml0ZUNvbmZpZzogT3ZlcnJpZGVUeXBlQWN0aW9uID0ge1xuXHRcdFx0ZW5hYmxlZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0XHRjb21tYW5kOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlXG5cdFx0fSxcblx0XHRmb3JtQWxsQWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKGFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLCBhY3Rpb25PdmVyd3JpdGVDb25maWcpO1xuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGZvcm1BbGxBY3Rpb25zID8gZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRGb3JtTWVudUFjdGlvbnMocmVtb3ZlRHVwbGljYXRlQWN0aW9ucyhmb3JtQWxsQWN0aW9ucykpIDogYWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhY3Rpb24gZm9ybSBhIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBmYWNldERlZmluaXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBmYWNldCBhY3Rpb25zXG4gKi9cbmZ1bmN0aW9uIGdldEZhY2V0QWN0aW9ucyhmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBDb21iaW5lZEFjdGlvbiB7XG5cdGxldCBhY3Rpb25zOiBDb252ZXJ0ZXJBY3Rpb25bXSA9IFtdO1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0YWN0aW9ucyA9IChcblx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLkZhY2V0cy5maWx0ZXIoKHN1YkZhY2V0RGVmaW5pdGlvbikgPT4gaXNSZWZlcmVuY2VGYWNldChzdWJGYWNldERlZmluaXRpb24pKSBhcyBSZWZlcmVuY2VGYWNldFR5cGVzW11cblx0XHRcdCkucmVkdWNlKFxuXHRcdFx0XHQoYWN0aW9uUmVkdWNlcjogQ29udmVydGVyQWN0aW9uW10sIHJlZmVyZW5jZUZhY2V0KSA9PlxuXHRcdFx0XHRcdGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKGFjdGlvblJlZHVjZXIsIHJlZmVyZW5jZUZhY2V0LCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0W11cblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0YWN0aW9ucyA9IGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKFtdLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBhZGRGb3JtTWVudUFjdGlvbnMoYWN0aW9ucywgZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgYnV0dG9uIHR5cGUgYmFzZWQgb24gQFVJLkVtcGhhc2l6ZWQgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gZW1waGFzaXplZCBFbXBoYXNpemVkIGFubm90YXRpb24gdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgYnV0dG9uIHR5cGUgb3IgcGF0aCBiYXNlZCBleHByZXNzaW9uLlxuICovXG5mdW5jdGlvbiBnZXRCdXR0b25UeXBlKGVtcGhhc2l6ZWQ6IEVtcGhhc2l6ZWQgfCB1bmRlZmluZWQpOiBCdXR0b25UeXBlIHtcblx0Ly8gRW1waGFzaXplZCBpcyBhIGJvb2xlYW4gc28gaWYgaXQncyBlcXVhbCB0byB0cnVlIHdlIHNob3cgdGhlIGJ1dHRvbiBhcyBHaG9zdCwgb3RoZXJ3aXNlIGFzIFRyYW5zcGFyZW50XG5cdGNvbnN0IGJ1dHRvblR5cGVDb25kaXRpb24gPSBlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZW1waGFzaXplZCksIHRydWUpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGJ1dHRvblR5cGVDb25kaXRpb24sIEJ1dHRvblR5cGUuR2hvc3QsIEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQpKSBhcyBCdXR0b25UeXBlO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN1YnNlY3Rpb24gYmFzZWQgb24gRmFjZXRUeXBlcy5cbiAqXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gZmFjZXRzVG9DcmVhdGVcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gbGV2ZWxcbiAqIEBwYXJhbSBoYXNTaW5nbGVDb250ZW50XG4gKiBAcGFyYW0gaXNIZWFkZXJTZWN0aW9uXG4gKiBAcmV0dXJucyBBIHN1YnNlY3Rpb24gZGVmaW5pdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3ViU2VjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRmYWNldHNUb0NyZWF0ZTogRmFjZXRUeXBlc1tdLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRsZXZlbDogbnVtYmVyLFxuXHRoYXNTaW5nbGVDb250ZW50OiBib29sZWFuLFxuXHRpc0hlYWRlclNlY3Rpb24/OiBib29sZWFuXG4pOiBPYmplY3RQYWdlU3ViU2VjdGlvbiB7XG5cdGNvbnN0IHN1YlNlY3Rpb25JRCA9IGdldFN1YlNlY3Rpb25JRChmYWNldERlZmluaXRpb24pO1xuXHRjb25zdCBvSGlkZGVuQW5ub3RhdGlvbjogYW55ID0gZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuO1xuXHRjb25zdCBpc1Zpc2libGUgPSBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwodHJ1ZSwgZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKG9IaWRkZW5Bbm5vdGF0aW9uKSkpKTtcblx0Y29uc3QgaXNEeW5hbWljRXhwcmVzc2lvbiA9XG5cdFx0aXNWaXNpYmxlICYmIHR5cGVvZiBpc1Zpc2libGUgPT09IFwic3RyaW5nXCIgJiYgaXNWaXNpYmxlLmluZGV4T2YoXCJ7PVwiKSA9PT0gMCAmJiBvSGlkZGVuQW5ub3RhdGlvbj8udHlwZSAhPT0gXCJQYXRoXCI7XG5cdGNvbnN0IGlzVmlzaWJsZUR5bmFtaWNFeHByZXNzaW9uID1cblx0XHRpc1Zpc2libGUgJiYgaXNEeW5hbWljRXhwcmVzc2lvbiA/IGlzVmlzaWJsZS5zdWJzdHJpbmcoaXNWaXNpYmxlLmluZGV4T2YoXCJ7PVwiKSArIDIsIGlzVmlzaWJsZS5sYXN0SW5kZXhPZihcIn1cIikpIDogZmFsc2U7XG5cdGNvbnN0IHRpdGxlID0gY29tcGlsZUV4cHJlc3Npb24oZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGZhY2V0RGVmaW5pdGlvbi5MYWJlbCkpO1xuXHRjb25zdCBzdWJTZWN0aW9uOiBCYXNlU3ViU2VjdGlvbiA9IHtcblx0XHRpZDogc3ViU2VjdGlvbklELFxuXHRcdGtleTogZ2V0U3ViU2VjdGlvbktleShmYWNldERlZmluaXRpb24sIHN1YlNlY3Rpb25JRCksXG5cdFx0dGl0bGU6IHRpdGxlLFxuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlVua25vd24sXG5cdFx0YW5ub3RhdGlvblBhdGg6IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5U2V0QmFzZWRBbm5vdGF0aW9uUGF0aChmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lKSxcblx0XHR2aXNpYmxlOiBpc1Zpc2libGUsXG5cdFx0aXNWaXNpYmlsaXR5RHluYW1pYzogaXNEeW5hbWljRXhwcmVzc2lvbixcblx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0c2lkZUNvbnRlbnQ6IHVuZGVmaW5lZFxuXHR9O1xuXHRpZiAoaXNIZWFkZXJTZWN0aW9uKSB7XG5cdFx0c3ViU2VjdGlvbi5zdGFzaGVkID0gZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdHN1YlNlY3Rpb24uZmxleFNldHRpbmdzID0ge1xuXHRcdFx0ZGVzaWdudGltZTogZ2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldChmYWNldERlZmluaXRpb24sIGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dClcblx0XHR9O1xuXHR9XG5cdGxldCB1bnN1cHBvcnRlZFRleHQgPSBcIlwiO1xuXHRsZXZlbCsrO1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0Y29uc3QgZmFjZXRzID0gZmFjZXREZWZpbml0aW9uLkZhY2V0cztcblxuXHRcdFx0Ly8gRmlsdGVyIGZvciBhbGwgZmFjZXRzIG9mIHRoaXMgc3Vic2VjdGlvbiB0aGF0IGFyZSByZWZlcnJpbmcgdG8gYW4gYW5ub3RhdGlvbiBkZXNjcmliaW5nIGEgdmlzdWFsaXphdGlvbiAoZS5nLiB0YWJsZSBvciBjaGFydClcblx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb25GYWNldHMgPSBmYWNldHNcblx0XHRcdFx0Lm1hcCgoZmFjZXQsIGluZGV4KSA9PiAoeyBpbmRleCwgZmFjZXQgfSkpIC8vIFJlbWVtYmVyIHRoZSBpbmRleCBhc3NpZ25lZCB0byBlYWNoIGZhY2V0XG5cdFx0XHRcdC5maWx0ZXIoKHsgZmFjZXQgfSkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiB2aXN1YWxpemF0aW9uVGVybXMuaW5jbHVkZXMoKGZhY2V0IGFzIFJlZmVyZW5jZUZhY2V0KS5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0pO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0Ly8gRmlsdGVyIG91dCBhbGwgdmlzdWFsaXphdGlvbiBmYWNldHM7IFwidmlzdWFsaXphdGlvbkZhY2V0c1wiIGFuZCBcIm5vblZpc3VhbGl6YXRpb25GYWNldHNcIiBhcmUgZGlzam9pbnRcblx0XHRcdGNvbnN0IG5vblZpc3VhbGl6YXRpb25GYWNldHMgPSBmYWNldHMuZmlsdGVyKFxuXHRcdFx0XHQoZmFjZXQpID0+ICF2aXN1YWxpemF0aW9uRmFjZXRzLmZpbmQoKHZpc3VhbGl6YXRpb24pID0+IHZpc3VhbGl6YXRpb24uZmFjZXQgPT09IGZhY2V0KVxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKHZpc3VhbGl6YXRpb25GYWNldHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHQvLyBDb2xsZWN0aW9uRmFjZXRzIHdpdGggdmlzdWFsaXphdGlvbnMgbXVzdCBiZSBoYW5kbGVkIHNlcGFyYXRlbHkgYXMgdGhleSBjYW5ub3QgYmUgaW5jbHVkZWQgaW4gZm9ybXNcblx0XHRcdFx0Y29uc3QgdmlzdWFsaXphdGlvbkNvbnRlbnQ6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10gPSBbXTtcblx0XHRcdFx0Y29uc3QgZm9ybUNvbnRlbnQ6IE9iamVjdFBhZ2VTdWJTZWN0aW9uW10gPSBbXTtcblx0XHRcdFx0Y29uc3QgbWl4ZWRDb250ZW50OiBPYmplY3RQYWdlU3ViU2VjdGlvbltdID0gW107XG5cblx0XHRcdFx0Ly8gQ3JlYXRlIGVhY2ggdmlzdWFsaXphdGlvbiBmYWNldCBhcyBpZiBpdCB3YXMgaXRzIG93biBzdWJzZWN0aW9uICh2aWEgcmVjdXJzaW9uKSwgYW5kIGtlZXAgdGhlaXIgcmVsYXRpdmUgb3JkZXJpbmdcblx0XHRcdFx0Zm9yIChjb25zdCB7IGZhY2V0IH0gb2YgdmlzdWFsaXphdGlvbkZhY2V0cykge1xuXHRcdFx0XHRcdHZpc3VhbGl6YXRpb25Db250ZW50LnB1c2goY3JlYXRlU3ViU2VjdGlvbihmYWNldCwgW10sIGNvbnZlcnRlckNvbnRleHQsIGxldmVsLCBmYWNldHMubGVuZ3RoID09PSAxLCBpc0hlYWRlclNlY3Rpb24pKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChub25WaXN1YWxpemF0aW9uRmFjZXRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHQvLyBUaGlzIHN1YnNlY3Rpb24gaW5jbHVkZXMgdmlzdWFsaXphdGlvbnMgYW5kIG90aGVyIGNvbnRlbnQsIHNvIGl0IGlzIGEgXCJNaXhlZFwiIHN1YnNlY3Rpb25cblx0XHRcdFx0XHRMb2cud2FybmluZyhcblx0XHRcdFx0XHRcdGBXYXJuaW5nOiBDb2xsZWN0aW9uRmFjZXQgJyR7ZmFjZXREZWZpbml0aW9uLklEfScgaW5jbHVkZXMgYSBjb21iaW5hdGlvbiBvZiBlaXRoZXIgYSBjaGFydCBvciBhIHRhYmxlIGFuZCBvdGhlciBjb250ZW50LiBUaGlzIGNhbiBsZWFkIHRvIHJlbmRlcmluZyBpc3N1ZXMuIENvbnNpZGVyIG1vdmluZyB0aGUgY2hhcnQgb3IgdGFibGUgaW50byBhIHNlcGFyYXRlIENvbGxlY3Rpb25GYWNldC5gXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbi5GYWNldHMgPSBub25WaXN1YWxpemF0aW9uRmFjZXRzO1xuXHRcdFx0XHRcdC8vIENyZWF0ZSBhIGpvaW5lZCBmb3JtIG9mIGFsbCBmYWNldHMgdGhhdCBhcmUgbm90IHJlZmVycmluZyB0byB2aXN1YWxpemF0aW9uc1xuXHRcdFx0XHRcdGZvcm1Db250ZW50LnB1c2goY3JlYXRlU3ViU2VjdGlvbihmYWNldERlZmluaXRpb24sIFtdLCBjb252ZXJ0ZXJDb250ZXh0LCBsZXZlbCwgaGFzU2luZ2xlQ29udGVudCwgaXNIZWFkZXJTZWN0aW9uKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBNZXJnZSB0aGUgdmlzdWFsaXphdGlvbiBjb250ZW50IHdpdGggdGhlIGZvcm0gY29udGVudFxuXHRcdFx0XHRpZiAodmlzdWFsaXphdGlvbkZhY2V0cy5maW5kKCh7IGluZGV4IH0pID0+IGluZGV4ID09PSAwKSkge1xuXHRcdFx0XHRcdC8vIElmIHRoZSBmaXJzdCBmYWNldCBpcyBhIHZpc3VhbGl6YXRpb24sIGRpc3BsYXkgdGhlIHZpc3VhbGl6YXRpb25zIGZpcnN0XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4udmlzdWFsaXphdGlvbkNvbnRlbnQpO1xuXHRcdFx0XHRcdG1peGVkQ29udGVudC5wdXNoKC4uLmZvcm1Db250ZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBPdGhlcndpc2UsIGRpc3BsYXkgdGhlIGZvcm0gZmlyc3Rcblx0XHRcdFx0XHRtaXhlZENvbnRlbnQucHVzaCguLi5mb3JtQ29udGVudCk7XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4udmlzdWFsaXphdGlvbkNvbnRlbnQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgbWl4ZWRTdWJTZWN0aW9uOiBNaXhlZFN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5NaXhlZCxcblx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0Y29udGVudDogbWl4ZWRDb250ZW50XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiBtaXhlZFN1YlNlY3Rpb247XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBUaGlzIENvbGxlY3Rpb25GYWNldCBvbmx5IGluY2x1ZGVzIGNvbnRlbnQgdGhhdCBjYW4gYmUgcmVuZGVyZWQgaW4gYSBtZXJnZWQgZm9ybVxuXHRcdFx0XHRjb25zdCBmYWNldEFjdGlvbnMgPSBnZXRGYWNldEFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0XHRmb3JtQ29sbGVjdGlvblN1YlNlY3Rpb246IEZvcm1TdWJTZWN0aW9uID0ge1xuXHRcdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm0sXG5cdFx0XHRcdFx0XHRmb3JtRGVmaW5pdGlvbjogY3JlYXRlRm9ybURlZmluaXRpb24oZmFjZXREZWZpbml0aW9uLCBpc1Zpc2libGUsIGNvbnZlcnRlckNvbnRleHQsIGZhY2V0QWN0aW9ucy5hY3Rpb25zKSxcblx0XHRcdFx0XHRcdGxldmVsOiBsZXZlbCxcblx0XHRcdFx0XHRcdGFjdGlvbnM6IGZhY2V0QWN0aW9ucy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uZmFjZXROYW1lID09PSB1bmRlZmluZWQpLFxuXHRcdFx0XHRcdFx0Y29tbWFuZEFjdGlvbnM6IGZhY2V0QWN0aW9ucy5jb21tYW5kQWN0aW9uc1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiBmb3JtQ29sbGVjdGlvblN1YlNlY3Rpb247XG5cdFx0XHR9XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VGYWNldDpcblx0XHRcdGlmICghZmFjZXREZWZpbml0aW9uLlRhcmdldC4kdGFyZ2V0KSB7XG5cdFx0XHRcdHVuc3VwcG9ydGVkVGV4dCA9IGBVbmFibGUgdG8gZmluZCBhbm5vdGF0aW9uUGF0aCAke2ZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWV9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLlRhcmdldC4kdGFyZ2V0LnRlcm0pIHtcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtOlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuQ2hhcnQ6XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50OlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudDpcblx0XHRcdFx0XHRcdGNvbnN0IHByZXNlbnRhdGlvbiA9IGdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbihcblx0XHRcdFx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZSxcblx0XHRcdFx0XHRcdFx0Z2V0Q29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbmNlKGZhY2V0RGVmaW5pdGlvbiwgZmFjZXRzVG9DcmVhdGUsIGNvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHRcdGlzSGVhZGVyU2VjdGlvblxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdGNvbnN0IHN1YlNlY3Rpb25UaXRsZTogc3RyaW5nID0gc3ViU2VjdGlvbi50aXRsZSA/IHN1YlNlY3Rpb24udGl0bGUgOiBcIlwiO1xuXHRcdFx0XHRcdFx0Y29uc3QgY29udHJvbFRpdGxlID1cblx0XHRcdFx0XHRcdFx0KHByZXNlbnRhdGlvbi52aXN1YWxpemF0aW9uc1swXSBhcyBhbnkpPy5hbm5vdGF0aW9uPy50aXRsZSB8fCAocHJlc2VudGF0aW9uLnZpc3VhbGl6YXRpb25zWzBdIGFzIGFueSk/LnRpdGxlO1xuXHRcdFx0XHRcdFx0Y29uc3Qgc2hvd1RpdGxlID0gZ2V0VGl0bGVWaXNpYmlsaXR5KGNvbnRyb2xUaXRsZSwgc3ViU2VjdGlvblRpdGxlLCBoYXNTaW5nbGVDb250ZW50KTtcblx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlVmlzaWJsZUV4cHJlc3Npb24gPSBpc1Zpc2libGUgJiYgdGl0bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgKHRpdGxlID8gaXNWaXNpYmxlIDogZmFsc2UpO1xuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uOiBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkRhdGFWaXN1YWxpemF0aW9uLFxuXHRcdFx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0XHRcdHByZXNlbnRhdGlvbjogcHJlc2VudGF0aW9uLFxuXHRcdFx0XHRcdFx0XHRzaG93VGl0bGU6IHNob3dUaXRsZSxcblx0XHRcdFx0XHRcdFx0dGl0bGVWaXNpYmxlOiBpc0R5bmFtaWNFeHByZXNzaW9uXG5cdFx0XHRcdFx0XHRcdFx0PyBgez0gKCR7aXNWaXNpYmxlRHluYW1pY0V4cHJlc3Npb259KSAmJiAoJyR7dGl0bGV9JyAhPT0ndW5kZWZpbmVkJykgJiYgKCR7c2hvd1RpdGxlfSA/IHRydWUgOiBmYWxzZSkgfWBcblx0XHRcdFx0XHRcdFx0XHQ6IHRpdGxlVmlzaWJsZUV4cHJlc3Npb25cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uO1xuXG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5GaWVsZEdyb3VwOlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuSWRlbnRpZmljYXRpb246XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5EYXRhUG9pbnQ6XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5TdGF0dXNJbmZvOlxuXHRcdFx0XHRcdGNhc2UgQ29tbXVuaWNhdGlvbkFubm90YXRpb25UZXJtcy5Db250YWN0OlxuXHRcdFx0XHRcdFx0Ly8gQWxsIHRob3NlIGVsZW1lbnQgYmVsb25nIHRvIGEgZnJvbSBmYWNldFxuXHRcdFx0XHRcdFx0Y29uc3QgZmFjZXRBY3Rpb25zID0gZ2V0RmFjZXRBY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0XHRcdGZvcm1FbGVtZW50U3ViU2VjdGlvbjogRm9ybVN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRcdFx0Li4uc3ViU2VjdGlvbixcblx0XHRcdFx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Gb3JtLFxuXHRcdFx0XHRcdFx0XHRcdGxldmVsOiBsZXZlbCxcblx0XHRcdFx0XHRcdFx0XHRmb3JtRGVmaW5pdGlvbjogY3JlYXRlRm9ybURlZmluaXRpb24oZmFjZXREZWZpbml0aW9uLCBpc1Zpc2libGUsIGNvbnZlcnRlckNvbnRleHQsIGZhY2V0QWN0aW9ucy5hY3Rpb25zKSxcblx0XHRcdFx0XHRcdFx0XHRhY3Rpb25zOiBmYWNldEFjdGlvbnMuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmZhY2V0TmFtZSA9PT0gdW5kZWZpbmVkKSxcblx0XHRcdFx0XHRcdFx0XHRjb21tYW5kQWN0aW9uczogZmFjZXRBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRyZXR1cm4gZm9ybUVsZW1lbnRTdWJTZWN0aW9uO1xuXG5cdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdHVuc3VwcG9ydGVkVGV4dCA9IGBGb3IgJHtmYWNldERlZmluaXRpb24uVGFyZ2V0LiR0YXJnZXQudGVybX0gRnJhZ21lbnRgO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlVVJMRmFjZXQ6XG5cdFx0XHR1bnN1cHBvcnRlZFRleHQgPSBcIkZvciBSZWZlcmVuY2UgVVJMIEZhY2V0XCI7XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0YnJlYWs7XG5cdH1cblx0Ly8gSWYgd2UgcmVhY2ggaGVyZSB3ZSBlbmRlZCB1cCB3aXRoIGFuIHVuc3VwcG9ydGVkIFN1YlNlY3Rpb24gdHlwZVxuXHRjb25zdCB1bnN1cHBvcnRlZFN1YlNlY3Rpb246IFVuc3VwcG9ydGVkU3ViU2VjdGlvbiA9IHtcblx0XHQuLi5zdWJTZWN0aW9uLFxuXHRcdHRleHQ6IHVuc3VwcG9ydGVkVGV4dFxuXHR9O1xuXHRyZXR1cm4gdW5zdXBwb3J0ZWRTdWJTZWN0aW9uO1xufVxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0byBoaWRlIG9yIHNob3cgc3Vic2VjdGlvbiB0aXRsZVxuICpcbiAqIEBwYXJhbSBjb250cm9sVGl0bGVcbiAqIEBwYXJhbSBzZWN0aW9uVGl0bGVcbiAqIEBwYXJhbSBoYXNTaW5nbGVDb250ZW50XG4gKiBAcmV0dXJucyBCb29sZWFuIHZhbHVlICBvciBleHByZXNzaW9uIGZvciBzaG93VGl0bGVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGl0bGVWaXNpYmlsaXR5KFxuXHRjb250cm9sVGl0bGU6IHN0cmluZyxcblx0c3ViU2VjdGlvblRpdGxlOiBzdHJpbmcsXG5cdGhhc1NpbmdsZUNvbnRlbnQ6IGJvb2xlYW5cbik6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHtcblx0Ly8gdmlzaWJsZSBzaGFsbCBiZSB0cnVlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb250ZW50IG9yIGlmIHRoZSBjb250cm9sIGFuZCBzdWJzZWN0aW9uIHRpdGxlIGFyZSBkaWZmZXJlbnRcblx0cmV0dXJuIGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdG9yKG5vdChoYXNTaW5nbGVDb250ZW50KSwgbm90RXF1YWwocmVzb2x2ZUJpbmRpbmdTdHJpbmcoY29udHJvbFRpdGxlKSwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcoc3ViU2VjdGlvblRpdGxlKSkpXG5cdCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKFxuXHRhY3Rpb25zOiBDb252ZXJ0ZXJBY3Rpb25bXSxcblx0ZmFjZXREZWZpbml0aW9uOiBSZWZlcmVuY2VGYWNldFR5cGVzLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBDb252ZXJ0ZXJBY3Rpb25bXSB7XG5cdGNvbnN0IHJlZmVyZW5jZVRhcmdldCA9IGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldDtcblx0Y29uc3QgdGFyZ2V0VmFsdWUgPSBmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlO1xuXHRsZXQgbWFuaWZlc3RBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+ID0ge307XG5cdGxldCBkYXRhRmllbGRDb2xsZWN0aW9uOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzW10gPSBbXTtcblx0bGV0IFtuYXZpZ2F0aW9uUHJvcGVydHlQYXRoXTogYW55ID0gdGFyZ2V0VmFsdWUuc3BsaXQoXCJAXCIpO1xuXHRpZiAobmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGFzdEluZGV4T2YoXCIvXCIpID09PSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPSBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLnN1YnN0cigwLCBuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxlbmd0aCAtIDEpO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoID0gdW5kZWZpbmVkO1xuXHR9XG5cblx0aWYgKHJlZmVyZW5jZVRhcmdldCkge1xuXHRcdHN3aXRjaCAocmVmZXJlbmNlVGFyZ2V0LnRlcm0pIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuRmllbGRHcm91cDpcblx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbiA9IChyZWZlcmVuY2VUYXJnZXQgYXMgRmllbGRHcm91cCkuRGF0YTtcblx0XHRcdFx0bWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24ocmVmZXJlbmNlVGFyZ2V0KS5hY3Rpb25zLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWVcblx0XHRcdFx0KS5hY3Rpb25zO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuSWRlbnRpZmljYXRpb246XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlN0YXR1c0luZm86XG5cdFx0XHRcdGlmIChyZWZlcmVuY2VUYXJnZXQucXVhbGlmaWVyKSB7XG5cdFx0XHRcdFx0ZGF0YUZpZWxkQ29sbGVjdGlvbiA9IHJlZmVyZW5jZVRhcmdldDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdGFjdGlvbnMgPSBkYXRhRmllbGRDb2xsZWN0aW9uLnJlZHVjZSgoYWN0aW9uUmVkdWNlciwgZGF0YUZpZWxkOiBEYXRhRmllbGRBYnN0cmFjdFR5cGVzKSA9PiB7XG5cdFx0c3dpdGNoIChkYXRhRmllbGQuJFR5cGUpIHtcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uOlxuXHRcdFx0XHRpZiAoZGF0YUZpZWxkLlJlcXVpcmVzQ29udGV4dD8udmFsdWVPZigpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dFxuXHRcdFx0XHRcdFx0LmdldERpYWdub3N0aWNzKClcblx0XHRcdFx0XHRcdC5hZGRJc3N1ZShJc3N1ZUNhdGVnb3J5LkFubm90YXRpb24sIElzc3VlU2V2ZXJpdHkuTG93LCBJc3N1ZVR5cGUuTUFMRk9STUVEX0RBVEFGSUVMRF9GT1JfSUJOLlJFUVVJUkVTQ09OVEVYVCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKGRhdGFGaWVsZC5JbmxpbmU/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkxvdywgSXNzdWVUeXBlLk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTi5JTkxJTkUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuRGV0ZXJtaW5pbmc/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkxvdywgSXNzdWVUeXBlLk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTi5ERVRFUk1JTklORyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc3QgbU5hdmlnYXRpb25QYXJhbWV0ZXJzOiBhbnkgPSB7fTtcblx0XHRcdFx0aWYgKGRhdGFGaWVsZC5NYXBwaW5nKSB7XG5cdFx0XHRcdFx0bU5hdmlnYXRpb25QYXJhbWV0ZXJzLnNlbWFudGljT2JqZWN0TWFwcGluZyA9IGdldFNlbWFudGljT2JqZWN0TWFwcGluZyhkYXRhRmllbGQuTWFwcGluZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YWN0aW9uUmVkdWNlci5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbixcblx0XHRcdFx0XHRpZDogZ2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRrZXk6IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKSxcblx0XHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IFwiXCIsXG5cdFx0XHRcdFx0ZW5hYmxlZDpcblx0XHRcdFx0XHRcdGRhdGFGaWVsZC5OYXZpZ2F0aW9uQXZhaWxhYmxlICE9PSB1bmRlZmluZWRcblx0XHRcdFx0XHRcdFx0PyBjb21waWxlRXhwcmVzc2lvbihlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLk5hdmlnYXRpb25BdmFpbGFibGU/LnZhbHVlT2YoKSksIHRydWUpKVxuXHRcdFx0XHRcdFx0XHQ6IFwidHJ1ZVwiLFxuXHRcdFx0XHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdFx0XHRcdGJ1dHRvblR5cGU6IGdldEJ1dHRvblR5cGUoZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uRW1waGFzaXplZCksXG5cdFx0XHRcdFx0cHJlc3M6IGNvbXBpbGVFeHByZXNzaW9uKFxuXHRcdFx0XHRcdFx0Zm4oXCIuX2ludGVudEJhc2VkTmF2aWdhdGlvbi5uYXZpZ2F0ZVwiLCBbXG5cdFx0XHRcdFx0XHRcdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuU2VtYW50aWNPYmplY3QpLFxuXHRcdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLkFjdGlvbiksXG5cdFx0XHRcdFx0XHRcdG1OYXZpZ2F0aW9uUGFyYW1ldGVyc1xuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGN1c3RvbURhdGE6IGNvbXBpbGVFeHByZXNzaW9uKHtcblx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLlNlbWFudGljT2JqZWN0KSxcblx0XHRcdFx0XHRcdGFjdGlvbjogZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5BY3Rpb24pXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5EYXRhRmllbGRGb3JBY3Rpb246XG5cdFx0XHRcdGNvbnN0IGZvcm1NYW5pZmVzdEFjdGlvbnNDb25maWd1cmF0aW9uOiBhbnkgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0Q29udHJvbENvbmZpZ3VyYXRpb24ocmVmZXJlbmNlVGFyZ2V0KS5hY3Rpb25zO1xuXHRcdFx0XHRjb25zdCBrZXk6IHN0cmluZyA9IEtleUhlbHBlci5nZW5lcmF0ZUtleUZyb21EYXRhRmllbGQoZGF0YUZpZWxkKTtcblx0XHRcdFx0YWN0aW9uUmVkdWNlci5wdXNoKHtcblx0XHRcdFx0XHR0eXBlOiBBY3Rpb25UeXBlLkRhdGFGaWVsZEZvckFjdGlvbixcblx0XHRcdFx0XHRpZDogZ2V0Rm9ybUlEKGZhY2V0RGVmaW5pdGlvbiwgZGF0YUZpZWxkKSxcblx0XHRcdFx0XHRrZXk6IGtleSxcblx0XHRcdFx0XHR0ZXh0OiBkYXRhRmllbGQuTGFiZWw/LnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0YW5ub3RhdGlvblBhdGg6IFwiXCIsXG5cdFx0XHRcdFx0ZW5hYmxlZDogZ2V0RW5hYmxlZEZvckFubm90YXRpb25BY3Rpb24oY29udmVydGVyQ29udGV4dCwgZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdFx0YmluZGluZzogbmF2aWdhdGlvblByb3BlcnR5UGF0aCA/IGB7ICdwYXRoJyA6ICcke25hdmlnYXRpb25Qcm9wZXJ0eVBhdGh9J31gIDogdW5kZWZpbmVkLFxuXHRcdFx0XHRcdHZpc2libGU6IGNvbXBpbGVFeHByZXNzaW9uKG5vdChlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLmFubm90YXRpb25zPy5VST8uSGlkZGVuPy52YWx1ZU9mKCkpLCB0cnVlKSkpLFxuXHRcdFx0XHRcdHJlcXVpcmVzRGlhbG9nOiBpc0RpYWxvZyhkYXRhRmllbGQuQWN0aW9uVGFyZ2V0KSxcblx0XHRcdFx0XHRidXR0b25UeXBlOiBnZXRCdXR0b25UeXBlKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkVtcGhhc2l6ZWQpLFxuXHRcdFx0XHRcdHByZXNzOiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdGZuKFxuXHRcdFx0XHRcdFx0XHRcImludm9rZUFjdGlvblwiLFxuXHRcdFx0XHRcdFx0XHRbXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YUZpZWxkLkFjdGlvbixcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZXh0czogZm4oXCJnZXRCaW5kaW5nQ29udGV4dFwiLCBbXSwgcGF0aEluTW9kZWwoXCJcIiwgXCIkc291cmNlXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGludm9jYXRpb25Hcm91cGluZzogKGRhdGFGaWVsZC5JbnZvY2F0aW9uR3JvdXBpbmcgPT09IFwiVUkuT3BlcmF0aW9uR3JvdXBpbmdUeXBlL0NoYW5nZVNldFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdD8gXCJDaGFuZ2VTZXRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6IFwiSXNvbGF0ZWRcIikgYXMgT3BlcmF0aW9uR3JvdXBpbmdUeXBlLFxuXHRcdFx0XHRcdFx0XHRcdFx0bGFiZWw6IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuTGFiZWwpLFxuXHRcdFx0XHRcdFx0XHRcdFx0bW9kZWw6IGZuKFwiZ2V0TW9kZWxcIiwgW10sIHBhdGhJbk1vZGVsKFwiL1wiLCBcIiRzb3VyY2VcIikpLFxuXHRcdFx0XHRcdFx0XHRcdFx0aXNOYXZpZ2FibGU6IGlzQWN0aW9uTmF2aWdhYmxlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbiAmJiBmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbltrZXldXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0XHRyZWYoXCIuZWRpdEZsb3dcIilcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGZhY2V0TmFtZTogZGF0YUZpZWxkLklubGluZSA/IGZhY2V0RGVmaW5pdGlvbi5mdWxseVF1YWxpZmllZE5hbWUgOiB1bmRlZmluZWRcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdHJldHVybiBhY3Rpb25SZWR1Y2VyO1xuXHR9LCBhY3Rpb25zKTtcblx0Ly8gT3ZlcndyaXRpbmcgb2YgYWN0aW9ucyBoYXBwZW5zIGluIGFkZEZvcm1NZW51QWN0aW9uc1xuXHRyZXR1cm4gaW5zZXJ0Q3VzdG9tRWxlbWVudHMoYWN0aW9ucywgbWFuaWZlc3RBY3Rpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlhbG9nKGFjdGlvbkRlZmluaXRpb246IGFueSB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdGlmIChhY3Rpb25EZWZpbml0aW9uKSB7XG5cdFx0Y29uc3QgYkNyaXRpY2FsID0gYWN0aW9uRGVmaW5pdGlvbi5hbm5vdGF0aW9ucz8uQ29tbW9uPy5Jc0FjdGlvbkNyaXRpY2FsO1xuXHRcdGlmIChhY3Rpb25EZWZpbml0aW9uLnBhcmFtZXRlcnMubGVuZ3RoID4gMSB8fCBiQ3JpdGljYWwpIHtcblx0XHRcdHJldHVybiBcIkRpYWxvZ1wiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gXCJOb25lXCI7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBcIk5vbmVcIjtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ3VzdG9tU3ViU2VjdGlvbnMoXG5cdG1hbmlmZXN0U3ViU2VjdGlvbnM6IFJlY29yZDxzdHJpbmcsIE1hbmlmZXN0U3ViU2VjdGlvbj4sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IFJlY29yZDxzdHJpbmcsIEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uPiB7XG5cdGNvbnN0IHN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbj4gPSB7fTtcblx0T2JqZWN0LmtleXMobWFuaWZlc3RTdWJTZWN0aW9ucykuZm9yRWFjaChcblx0XHQoc3ViU2VjdGlvbktleSkgPT5cblx0XHRcdChzdWJTZWN0aW9uc1tzdWJTZWN0aW9uS2V5XSA9IGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24obWFuaWZlc3RTdWJTZWN0aW9uc1tzdWJTZWN0aW9uS2V5XSwgc3ViU2VjdGlvbktleSwgY29udmVydGVyQ29udGV4dCkpXG5cdCk7XG5cdHJldHVybiBzdWJTZWN0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb24oXG5cdG1hbmlmZXN0U3ViU2VjdGlvbjogTWFuaWZlc3RTdWJTZWN0aW9uLFxuXHRzdWJTZWN0aW9uS2V5OiBzdHJpbmcsXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uIHtcblx0Y29uc3Qgc2lkZUNvbnRlbnQ6IFNpZGVDb250ZW50RGVmIHwgdW5kZWZpbmVkID0gbWFuaWZlc3RTdWJTZWN0aW9uLnNpZGVDb250ZW50XG5cdFx0PyB7XG5cdFx0XHRcdHRlbXBsYXRlOiBtYW5pZmVzdFN1YlNlY3Rpb24uc2lkZUNvbnRlbnQudGVtcGxhdGUsXG5cdFx0XHRcdGlkOiBnZXRTaWRlQ29udGVudElEKHN1YlNlY3Rpb25LZXkpLFxuXHRcdFx0XHR2aXNpYmxlOiBmYWxzZSxcblx0XHRcdFx0ZXF1YWxTcGxpdDogbWFuaWZlc3RTdWJTZWN0aW9uLnNpZGVDb250ZW50LmVxdWFsU3BsaXRcblx0XHQgIH1cblx0XHQ6IHVuZGVmaW5lZDtcblx0bGV0IHBvc2l0aW9uID0gbWFuaWZlc3RTdWJTZWN0aW9uLnBvc2l0aW9uO1xuXHRpZiAoIXBvc2l0aW9uKSB7XG5cdFx0cG9zaXRpb24gPSB7XG5cdFx0XHRwbGFjZW1lbnQ6IFBsYWNlbWVudC5BZnRlclxuXHRcdH07XG5cdH1cblx0Y29uc3QgaXNWaXNpYmxlID0gbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IG1hbmlmZXN0U3ViU2VjdGlvbi52aXNpYmxlIDogdHJ1ZTtcblx0Y29uc3QgaXNEeW5hbWljRXhwcmVzc2lvbiA9IGlzVmlzaWJsZSAmJiB0eXBlb2YgaXNWaXNpYmxlID09PSBcInN0cmluZ1wiICYmIGlzVmlzaWJsZS5pbmRleE9mKFwiez1cIikgPT09IDA7XG5cdGNvbnN0IG1hbmlmZXN0QWN0aW9ucyA9IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QobWFuaWZlc3RTdWJTZWN0aW9uLmFjdGlvbnMsIGNvbnZlcnRlckNvbnRleHQpO1xuXHRjb25zdCBzdWJTZWN0aW9uRGVmaW5pdGlvbiA9IHtcblx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Vbmtub3duLFxuXHRcdGlkOiBtYW5pZmVzdFN1YlNlY3Rpb24uaWQgfHwgZ2V0Q3VzdG9tU3ViU2VjdGlvbklEKHN1YlNlY3Rpb25LZXkpLFxuXHRcdGFjdGlvbnM6IG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLFxuXHRcdGtleTogc3ViU2VjdGlvbktleSxcblx0XHR0aXRsZTogbWFuaWZlc3RTdWJTZWN0aW9uLnRpdGxlLFxuXHRcdGxldmVsOiAxLFxuXHRcdHBvc2l0aW9uOiBwb3NpdGlvbixcblx0XHR2aXNpYmxlOiBtYW5pZmVzdFN1YlNlY3Rpb24udmlzaWJsZSAhPT0gdW5kZWZpbmVkID8gbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgOiB0cnVlLFxuXHRcdHNpZGVDb250ZW50OiBzaWRlQ29udGVudCxcblx0XHRpc1Zpc2liaWxpdHlEeW5hbWljOiBpc0R5bmFtaWNFeHByZXNzaW9uXG5cdH07XG5cdGlmIChtYW5pZmVzdFN1YlNlY3Rpb24udGVtcGxhdGUgfHwgbWFuaWZlc3RTdWJTZWN0aW9uLm5hbWUpIHtcblx0XHRzdWJTZWN0aW9uRGVmaW5pdGlvbi50eXBlID0gU3ViU2VjdGlvblR5cGUuWE1MRnJhZ21lbnQ7XG5cdFx0KHN1YlNlY3Rpb25EZWZpbml0aW9uIGFzIHVua25vd24gYXMgWE1MRnJhZ21lbnRTdWJTZWN0aW9uKS50ZW1wbGF0ZSA9IG1hbmlmZXN0U3ViU2VjdGlvbi50ZW1wbGF0ZSB8fCBtYW5pZmVzdFN1YlNlY3Rpb24ubmFtZSB8fCBcIlwiO1xuXHR9IGVsc2Uge1xuXHRcdHN1YlNlY3Rpb25EZWZpbml0aW9uLnR5cGUgPSBTdWJTZWN0aW9uVHlwZS5QbGFjZWhvbGRlcjtcblx0fVxuXHRyZXR1cm4gc3ViU2VjdGlvbkRlZmluaXRpb24gYXMgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb247XG59XG5cbi8qKlxuICogRXZhbHVhdGUgaWYgdGhlIGNvbmRlbnNlZCBtb2RlIGNhbiBiZSBhcHBsaTNlZCBvbiB0aGUgdGFibGUuXG4gKlxuICogQHBhcmFtIGN1cnJlbnRGYWNldFxuICogQHBhcmFtIGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dFxuICogQHJldHVybnMgYHRydWVgIGZvciBjb21wbGlhbnQsIGZhbHNlIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBnZXRDb25kZW5zZWRUYWJsZUxheW91dENvbXBsaWFuY2UoXG5cdGN1cnJlbnRGYWNldDogRmFjZXRUeXBlcyxcblx0ZmFjZXRzVG9DcmVhdGVJblNlY3Rpb246IEZhY2V0VHlwZXNbXSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogYm9vbGVhbiB7XG5cdGNvbnN0IG1hbmlmZXN0V3JhcHBlciA9IGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdGlmIChtYW5pZmVzdFdyYXBwZXIudXNlSWNvblRhYkJhcigpKSB7XG5cdFx0Ly8gSWYgdGhlIE9QIHVzZSB0aGUgdGFiIGJhc2VkIHdlIGNoZWNrIGlmIHRoZSBmYWNldHMgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoaXMgc2VjdGlvbiBhcmUgYWxsIG5vbiB2aXNpYmxlXG5cdFx0cmV0dXJuIGhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMoY3VycmVudEZhY2V0LCBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbik7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3QgZW50aXR5VHlwZSA9IGNvbnZlcnRlckNvbnRleHQuZ2V0RW50aXR5VHlwZSgpO1xuXHRcdGlmIChlbnRpdHlUeXBlLmFubm90YXRpb25zPy5VST8uRmFjZXRzPy5sZW5ndGggJiYgZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LkZhY2V0cz8ubGVuZ3RoID4gMSkge1xuXHRcdFx0cmV0dXJuIGhhc05vT3RoZXJWaXNpYmxlVGFibGVJblRhcmdldHMoY3VycmVudEZhY2V0LCBmYWNldHNUb0NyZWF0ZUluU2VjdGlvbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBoYXNOb090aGVyVmlzaWJsZVRhYmxlSW5UYXJnZXRzKGN1cnJlbnRGYWNldDogRmFjZXRUeXBlcywgZmFjZXRzVG9DcmVhdGVJblNlY3Rpb246IEZhY2V0VHlwZXNbXSk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGVJblNlY3Rpb24uZXZlcnkoZnVuY3Rpb24gKHN1YkZhY2V0KSB7XG5cdFx0aWYgKHN1YkZhY2V0ICE9PSBjdXJyZW50RmFjZXQpIHtcblx0XHRcdGlmIChzdWJGYWNldC4kVHlwZSA9PT0gVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQpIHtcblx0XHRcdFx0Y29uc3QgcmVmRmFjZXQgPSBzdWJGYWNldDtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdHJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0gfHxcblx0XHRcdFx0XHRyZWZGYWNldC5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQgfHxcblx0XHRcdFx0XHRyZWZGYWNldC5UYXJnZXQuJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXR1cm4gcmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gIT09IHVuZGVmaW5lZCA/IHJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuIDogZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBzdWJDb2xsZWN0aW9uRmFjZXQgPSBzdWJGYWNldCBhcyBDb2xsZWN0aW9uRmFjZXRUeXBlcztcblx0XHRcdFx0cmV0dXJuIHN1YkNvbGxlY3Rpb25GYWNldC5GYWNldHMuZXZlcnkoZnVuY3Rpb24gKGZhY2V0KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3ViUmVmRmFjZXQgPSBmYWNldCBhcyBSZWZlcmVuY2VGYWNldFR5cGVzO1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdHN1YlJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0gfHxcblx0XHRcdFx0XHRcdHN1YlJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudCB8fFxuXHRcdFx0XHRcdFx0c3ViUmVmRmFjZXQuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc3ViUmVmRmFjZXQuYW5ub3RhdGlvbnM/LlVJPy5IaWRkZW4gIT09IHVuZGVmaW5lZCA/IHN1YlJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuIDogZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0pO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BOERZQSxjQUFjO0VBQUEsV0FBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztFQUFBLEdBQWRBLGNBQWMsS0FBZEEsY0FBYztFQUFBO0VBeUYxQixNQUFNQyxrQkFBNEIsR0FBRyx3TEFLcEM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNDLGlCQUFpQixDQUNoQ0MsZUFBNkIsRUFDN0JDLGdCQUFrQyxFQUNsQ0MsZUFBeUIsRUFDQTtJQUN6QjtJQUNBLE1BQU1DLGNBQWMsR0FBR0gsZUFBZSxDQUFDSSxNQUFNLENBQUMsQ0FBQ0QsY0FBNEIsRUFBRUUsZUFBZSxL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
|
|
608
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdWJTZWN0aW9uVHlwZSIsInZpc3VhbGl6YXRpb25UZXJtcyIsImNyZWF0ZVN1YlNlY3Rpb25zIiwiZmFjZXRDb2xsZWN0aW9uIiwiY29udmVydGVyQ29udGV4dCIsImlzSGVhZGVyU2VjdGlvbiIsImZhY2V0c1RvQ3JlYXRlIiwicmVkdWNlIiwiZmFjZXREZWZpbml0aW9uIiwiJFR5cGUiLCJwdXNoIiwiRmFjZXRzIiwiZmluZCIsImZhY2V0VHlwZSIsInNwbGljZSIsImxlbmd0aCIsIm1hcCIsImZhY2V0IiwiY3JlYXRlU3ViU2VjdGlvbiIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbnMiLCJjdXN0b21IZWFkZXJGYWNldHMiLCJnZXRIZWFkZXJGYWNldHNGcm9tTWFuaWZlc3QiLCJnZXRNYW5pZmVzdFdyYXBwZXIiLCJnZXRIZWFkZXJGYWNldHMiLCJhQ3VzdG9tSGVhZGVyRmFjZXRzIiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJjdXN0b21IZWFkZXJGYWNldCIsInRlbXBsYXRlRWRpdCIsImNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbiIsInN1YlNlY3Rpb25JRCIsImdldEN1c3RvbVN1YlNlY3Rpb25JRCIsInN1YlNlY3Rpb24iLCJpZCIsInRpdGxlIiwidHlwZSIsIlhNTEZyYWdtZW50IiwidGVtcGxhdGUiLCJ2aXNpYmxlIiwibGV2ZWwiLCJzaWRlQ29udGVudCIsInVuZGVmaW5lZCIsInN0YXNoZWQiLCJmbGV4U2V0dGluZ3MiLCJhY3Rpb25zIiwiZ2V0U3ViU2VjdGlvbktleSIsImZhbGxiYWNrIiwiSUQiLCJ0b1N0cmluZyIsIkxhYmVsIiwiYWRkRm9ybU1lbnVBY3Rpb25zIiwiaGlkZGVuQWN0aW9ucyIsImdldEZvcm1IaWRkZW5BY3Rpb25zIiwiZm9ybUFjdGlvbnMiLCJnZXRGb3JtQWN0aW9ucyIsIm1hbmlmZXN0QWN0aW9ucyIsImdldEFjdGlvbnNGcm9tTWFuaWZlc3QiLCJhY3Rpb25PdmVyd3JpdGVDb25maWciLCJlbmFibGVkIiwiT3ZlcnJpZGVUeXBlIiwib3ZlcndyaXRlIiwiY29tbWFuZCIsImZvcm1BbGxBY3Rpb25zIiwiaW5zZXJ0Q3VzdG9tRWxlbWVudHMiLCJnZXRWaXNpYmlsaXR5RW5hYmxlbWVudEZvcm1NZW51QWN0aW9ucyIsInJlbW92ZUR1cGxpY2F0ZUFjdGlvbnMiLCJjb21tYW5kQWN0aW9ucyIsImdldEZhY2V0QWN0aW9ucyIsImZpbHRlciIsInN1YkZhY2V0RGVmaW5pdGlvbiIsImlzUmVmZXJlbmNlRmFjZXQiLCJhY3Rpb25SZWR1Y2VyIiwicmVmZXJlbmNlRmFjZXQiLCJjcmVhdGVGb3JtQWN0aW9uUmVkdWNlciIsImdldEJ1dHRvblR5cGUiLCJlbXBoYXNpemVkIiwiYnV0dG9uVHlwZUNvbmRpdGlvbiIsImVxdWFsIiwiZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uIiwiY29tcGlsZUV4cHJlc3Npb24iLCJpZkVsc2UiLCJCdXR0b25UeXBlIiwiR2hvc3QiLCJUcmFuc3BhcmVudCIsImhhc1NpbmdsZUNvbnRlbnQiLCJnZXRTdWJTZWN0aW9uSUQiLCJvSGlkZGVuQW5ub3RhdGlvbiIsImFubm90YXRpb25zIiwiVUkiLCJIaWRkZW4iLCJpc1Zpc2libGVFeHByZXNzaW9uIiwibm90IiwiaXNWaXNpYmxlIiwiaXNEeW5hbWljRXhwcmVzc2lvbiIsImluZGV4T2YiLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNWaXNpYmxlRHluYW1pY0V4cHJlc3Npb24iLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsIlVua25vd24iLCJhbm5vdGF0aW9uUGF0aCIsImdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgiLCJmdWxseVF1YWxpZmllZE5hbWUiLCJpc1Zpc2liaWxpdHlEeW5hbWljIiwiZ2V0U3Rhc2hlZFNldHRpbmdzRm9ySGVhZGVyRmFjZXQiLCJkZXNpZ250aW1lIiwiZ2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldCIsInVuc3VwcG9ydGVkVGV4dCIsImZhY2V0cyIsInZpc3VhbGl6YXRpb25GYWNldHMiLCJpbmRleCIsImluY2x1ZGVzIiwiVGFyZ2V0IiwiJHRhcmdldCIsInRlcm0iLCJub25WaXN1YWxpemF0aW9uRmFjZXRzIiwidmlzdWFsaXphdGlvbiIsInZpc3VhbGl6YXRpb25Db250ZW50IiwiZm9ybUNvbnRlbnQiLCJtaXhlZENvbnRlbnQiLCJMb2ciLCJ3YXJuaW5nIiwibWl4ZWRTdWJTZWN0aW9uIiwiTWl4ZWQiLCJjb250ZW50IiwiZmFjZXRBY3Rpb25zIiwiZm9ybUNvbGxlY3Rpb25TdWJTZWN0aW9uIiwiRm9ybSIsImZvcm1EZWZpbml0aW9uIiwiY3JlYXRlRm9ybURlZmluaXRpb24iLCJhY3Rpb24iLCJmYWNldE5hbWUiLCJ2YWx1ZSIsInByZXNlbnRhdGlvbiIsImdldERhdGFWaXN1YWxpemF0aW9uQ29uZmlndXJhdGlvbiIsImdldENvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW5jZSIsInN1YlNlY3Rpb25UaXRsZSIsImNvbnRyb2xUaXRsZSIsInZpc3VhbGl6YXRpb25zIiwiYW5ub3RhdGlvbiIsInNob3dUaXRsZSIsImdldFRpdGxlVmlzaWJpbGl0eSIsInRpdGxlVmlzaWJsZSIsImFuZCIsImRhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvbiIsIkRhdGFWaXN1YWxpemF0aW9uIiwiZm9ybUVsZW1lbnRTdWJTZWN0aW9uIiwidW5zdXBwb3J0ZWRTdWJTZWN0aW9uIiwidGV4dCIsIm9yIiwibm90RXF1YWwiLCJyZXNvbHZlQmluZGluZ1N0cmluZyIsInJlZmVyZW5jZVRhcmdldCIsInRhcmdldFZhbHVlIiwiZGF0YUZpZWxkQ29sbGVjdGlvbiIsIm5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgiLCJzcGxpdCIsInN1YnN0ciIsIkRhdGEiLCJnZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uIiwicXVhbGlmaWVyIiwiZGF0YUZpZWxkIiwiUmVxdWlyZXNDb250ZXh0IiwidmFsdWVPZiIsImdldERpYWdub3N0aWNzIiwiYWRkSXNzdWUiLCJJc3N1ZUNhdGVnb3J5IiwiQW5ub3RhdGlvbiIsIklzc3VlU2V2ZXJpdHkiLCJMb3ciLCJJc3N1ZVR5cGUiLCJNQUxGT1JNRURfREFUQUZJRUxEX0ZPUl9JQk4iLCJSRVFVSVJFU0NPTlRFWFQiLCJJbmxpbmUiLCJJTkxJTkUiLCJEZXRlcm1pbmluZyIsIkRFVEVSTUlOSU5HIiwibU5hdmlnYXRpb25QYXJhbWV0ZXJzIiwiTWFwcGluZyIsInNlbWFudGljT2JqZWN0TWFwcGluZyIsImdldFNlbWFudGljT2JqZWN0TWFwcGluZyIsIkFjdGlvblR5cGUiLCJEYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24iLCJnZXRGb3JtSUQiLCJLZXlIZWxwZXIiLCJnZW5lcmF0ZUtleUZyb21EYXRhRmllbGQiLCJOYXZpZ2F0aW9uQXZhaWxhYmxlIiwiYnV0dG9uVHlwZSIsIkVtcGhhc2l6ZWQiLCJwcmVzcyIsImZuIiwiU2VtYW50aWNPYmplY3QiLCJBY3Rpb24iLCJjdXN0b21EYXRhIiwic2VtYW50aWNPYmplY3QiLCJmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbiIsIkRhdGFGaWVsZEZvckFjdGlvbiIsImdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uIiwiQWN0aW9uVGFyZ2V0IiwiYmluZGluZyIsInJlcXVpcmVzRGlhbG9nIiwiaXNEaWFsb2ciLCJjb250ZXh0cyIsInBhdGhJbk1vZGVsIiwiaW52b2NhdGlvbkdyb3VwaW5nIiwiSW52b2NhdGlvbkdyb3VwaW5nIiwibGFiZWwiLCJtb2RlbCIsImlzTmF2aWdhYmxlIiwiaXNBY3Rpb25OYXZpZ2FibGUiLCJyZWYiLCJhY3Rpb25EZWZpbml0aW9uIiwiYkNyaXRpY2FsIiwiQ29tbW9uIiwiSXNBY3Rpb25Dcml0aWNhbCIsInBhcmFtZXRlcnMiLCJjcmVhdGVDdXN0b21TdWJTZWN0aW9ucyIsIm1hbmlmZXN0U3ViU2VjdGlvbnMiLCJzdWJTZWN0aW9ucyIsInN1YlNlY3Rpb25LZXkiLCJjcmVhdGVDdXN0b21TdWJTZWN0aW9uIiwibWFuaWZlc3RTdWJTZWN0aW9uIiwiZ2V0U2lkZUNvbnRlbnRJRCIsImVxdWFsU3BsaXQiLCJwb3NpdGlvbiIsInBsYWNlbWVudCIsIlBsYWNlbWVudCIsIkFmdGVyIiwic3ViU2VjdGlvbkRlZmluaXRpb24iLCJuYW1lIiwiUGxhY2Vob2xkZXIiLCJjdXJyZW50RmFjZXQiLCJmYWNldHNUb0NyZWF0ZUluU2VjdGlvbiIsIm1hbmlmZXN0V3JhcHBlciIsInVzZUljb25UYWJCYXIiLCJoYXNOb090aGVyVmlzaWJsZVRhYmxlSW5UYXJnZXRzIiwiZW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJldmVyeSIsInN1YkZhY2V0IiwicmVmRmFjZXQiLCJzdWJDb2xsZWN0aW9uRmFjZXQiLCJzdWJSZWZGYWNldCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiU3ViU2VjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9Db21tdW5pY2F0aW9uXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENvbGxlY3Rpb25GYWNldFR5cGVzLFxuXHREYXRhRmllbGRBYnN0cmFjdFR5cGVzLFxuXHRFbXBoYXNpemVkLFxuXHRGYWNldFR5cGVzLFxuXHRGaWVsZEdyb3VwLFxuXHRPcGVyYXRpb25Hcm91cGluZ1R5cGUsXG5cdFJlZmVyZW5jZUZhY2V0LFxuXHRSZWZlcmVuY2VGYWNldFR5cGVzXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCB7IFVJQW5ub3RhdGlvblRlcm1zLCBVSUFubm90YXRpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUge1xuXHRCYXNlQWN0aW9uLFxuXHRDb21iaW5lZEFjdGlvbixcblx0Q29udmVydGVyQWN0aW9uLFxuXHRDdXN0b21BY3Rpb24sXG5cdE92ZXJyaWRlVHlwZUFjdGlvblxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQge1xuXHRCdXR0b25UeXBlLFxuXHRnZXRBY3Rpb25zRnJvbU1hbmlmZXN0LFxuXHRnZXRFbmFibGVkRm9yQW5ub3RhdGlvbkFjdGlvbixcblx0Z2V0U2VtYW50aWNPYmplY3RNYXBwaW5nLFxuXHRpc0FjdGlvbk5hdmlnYWJsZSxcblx0cmVtb3ZlRHVwbGljYXRlQWN0aW9uc1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vQWN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldCwgRmxleFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvT2JqZWN0UGFnZS9IZWFkZXJGYWNldFwiO1xuaW1wb3J0IHtcblx0Z2V0RGVzaWduVGltZU1ldGFkYXRhU2V0dGluZ3NGb3JIZWFkZXJGYWNldCxcblx0Z2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0LFxuXHRnZXRTdGFzaGVkU2V0dGluZ3NGb3JIZWFkZXJGYWNldFxufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9PYmplY3RQYWdlL0hlYWRlckZhY2V0XCI7XG5pbXBvcnQgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5LCBJc3N1ZVR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHsgS2V5SGVscGVyIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9LZXlcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uLCBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQge1xuXHRhbmQsXG5cdGNvbXBpbGVFeHByZXNzaW9uLFxuXHRlcXVhbCxcblx0Zm4sXG5cdGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbixcblx0aWZFbHNlLFxuXHRub3QsXG5cdG5vdEVxdWFsLFxuXHRvcixcblx0cGF0aEluTW9kZWwsXG5cdHJlZixcblx0cmVzb2x2ZUJpbmRpbmdTdHJpbmdcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB7IGlzUGF0aEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Qcm9wZXJ0eUhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udmVydGVyQ29udGV4dCBmcm9tIFwiLi4vLi4vQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBDb25maWd1cmFibGVPYmplY3QsIENvbmZpZ3VyYWJsZVJlY29yZCwgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgaW5zZXJ0Q3VzdG9tRWxlbWVudHMsIE92ZXJyaWRlVHlwZSwgUGxhY2VtZW50IH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRDdXN0b21TdWJTZWN0aW9uSUQsIGdldEZvcm1JRCwgZ2V0U2lkZUNvbnRlbnRJRCwgZ2V0U3ViU2VjdGlvbklEIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvSURcIjtcbmltcG9ydCB0eXBlIHsgTWFuaWZlc3RBY3Rpb24sIE1hbmlmZXN0U3ViU2VjdGlvbiB9IGZyb20gXCIuLi8uLi9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgeyBBY3Rpb25UeXBlIH0gZnJvbSBcIi4uLy4uL01hbmlmZXN0U2V0dGluZ3NcIjtcbmltcG9ydCB7IGdldEZvcm1BY3Rpb25zLCBnZXRGb3JtSGlkZGVuQWN0aW9ucywgZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRGb3JtTWVudUFjdGlvbnMgfSBmcm9tIFwiLi4vLi4vb2JqZWN0UGFnZS9Gb3JtTWVudUFjdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YVZpc3VhbGl6YXRpb25EZWZpbml0aW9uIH0gZnJvbSBcIi4uL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHsgZ2V0RGF0YVZpc3VhbGl6YXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL0NvbW1vbi9EYXRhVmlzdWFsaXphdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBGb3JtRGVmaW5pdGlvbiB9IGZyb20gXCIuLi9Db21tb24vRm9ybVwiO1xuaW1wb3J0IHsgY3JlYXRlRm9ybURlZmluaXRpb24sIGlzUmVmZXJlbmNlRmFjZXQgfSBmcm9tIFwiLi4vQ29tbW9uL0Zvcm1cIjtcblxuZXhwb3J0IGVudW0gU3ViU2VjdGlvblR5cGUge1xuXHRVbmtub3duID0gXCJVbmtub3duXCIsIC8vIERlZmF1bHQgVHlwZVxuXHRGb3JtID0gXCJGb3JtXCIsXG5cdERhdGFWaXN1YWxpemF0aW9uID0gXCJEYXRhVmlzdWFsaXphdGlvblwiLFxuXHRYTUxGcmFnbWVudCA9IFwiWE1MRnJhZ21lbnRcIixcblx0UGxhY2Vob2xkZXIgPSBcIlBsYWNlaG9sZGVyXCIsXG5cdE1peGVkID0gXCJNaXhlZFwiXG59XG5cbmV4cG9ydCB0eXBlIE9iamVjdFBhZ2VTdWJTZWN0aW9uID1cblx0fCBVbnN1cHBvcnRlZFN1YlNlY3Rpb25cblx0fCBGb3JtU3ViU2VjdGlvblxuXHR8IERhdGFWaXN1YWxpemF0aW9uU3ViU2VjdGlvblxuXHR8IENvbnRhY3RTdWJTZWN0aW9uXG5cdHwgWE1MRnJhZ21lbnRTdWJTZWN0aW9uXG5cdHwgUGxhY2Vob2xkZXJGcmFnbWVudFN1YlNlY3Rpb25cblx0fCBNaXhlZFN1YlNlY3Rpb247XG5cbnR5cGUgQmFzZVN1YlNlY3Rpb24gPSB7XG5cdGlkOiBzdHJpbmc7XG5cdGtleTogc3RyaW5nO1xuXHR0aXRsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdGFubm90YXRpb25QYXRoOiBzdHJpbmc7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlO1xuXHR2aXNpYmxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0aXNWaXNpYmlsaXR5RHluYW1pYz86IGJvb2xlYW4gfCBcIlwiO1xuXHRmbGV4U2V0dGluZ3M/OiBGbGV4U2V0dGluZ3M7XG5cdHN0YXNoZWQ/OiBib29sZWFuO1xuXHRsZXZlbDogbnVtYmVyO1xuXHRjb250ZW50PzogQXJyYXk8T2JqZWN0UGFnZVN1YlNlY3Rpb24+O1xuXHRzaWRlQ29udGVudD86IFNpZGVDb250ZW50RGVmO1xufTtcblxudHlwZSBVbnN1cHBvcnRlZFN1YlNlY3Rpb24gPSBCYXNlU3ViU2VjdGlvbiAmIHtcblx0dGV4dDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkRhdGFWaXN1YWxpemF0aW9uO1xuXHRwcmVzZW50YXRpb246IERhdGFWaXN1YWxpemF0aW9uRGVmaW5pdGlvbjtcblx0c2hvd1RpdGxlOiBib29sZWFuIHwgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHRpdGxlVmlzaWJsZT86IHN0cmluZyB8IGJvb2xlYW47XG59O1xuXG50eXBlIENvbnRhY3RTdWJTZWN0aW9uID0gVW5zdXBwb3J0ZWRTdWJTZWN0aW9uO1xuXG50eXBlIFhNTEZyYWdtZW50U3ViU2VjdGlvbiA9IE9taXQ8QmFzZVN1YlNlY3Rpb24sIFwiYW5ub3RhdGlvblBhdGhcIj4gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlhNTEZyYWdtZW50O1xuXHR0ZW1wbGF0ZTogc3RyaW5nO1xuXHRhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+O1xufTtcblxudHlwZSBQbGFjZWhvbGRlckZyYWdtZW50U3ViU2VjdGlvbiA9IE9taXQ8QmFzZVN1YlNlY3Rpb24sIFwiYW5ub3RhdGlvblBhdGhcIj4gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlBsYWNlaG9sZGVyO1xuXHRhY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgTWl4ZWRTdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdGNvbnRlbnQ6IEFycmF5PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcbn07XG5cbmV4cG9ydCB0eXBlIEZvcm1TdWJTZWN0aW9uID0gQmFzZVN1YlNlY3Rpb24gJiB7XG5cdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm07XG5cdGZvcm1EZWZpbml0aW9uOiBGb3JtRGVmaW5pdGlvbjtcblx0YWN0aW9uczogQ29udmVydGVyQWN0aW9uW10gfCBCYXNlQWN0aW9uW107XG5cdGNvbW1hbmRBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BY3Rpb24+O1xufTtcblxuZXhwb3J0IHR5cGUgT2JqZWN0UGFnZVNlY3Rpb24gPSBDb25maWd1cmFibGVPYmplY3QgJiB7XG5cdGlkOiBzdHJpbmc7XG5cdHRpdGxlOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbjtcblx0c2hvd1RpdGxlPzogYm9vbGVhbjtcblx0dmlzaWJsZTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdHN1YlNlY3Rpb25zOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdO1xufTtcblxudHlwZSBTaWRlQ29udGVudERlZiA9IHtcblx0dGVtcGxhdGU/OiBzdHJpbmc7XG5cdGlkPzogc3RyaW5nO1xuXHRzaWRlQ29udGVudEZhbGxEb3duPzogc3RyaW5nO1xuXHRjb250YWluZXJRdWVyeT86IHN0cmluZztcblx0dmlzaWJsZT86IGJvb2xlYW47XG5cdGVxdWFsU3BsaXQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tT2JqZWN0UGFnZVNlY3Rpb24gPSBDdXN0b21FbGVtZW50PE9iamVjdFBhZ2VTZWN0aW9uPjtcblxuZXhwb3J0IHR5cGUgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb24gPSBDdXN0b21FbGVtZW50PE9iamVjdFBhZ2VTdWJTZWN0aW9uPjtcblxuY29uc3QgdmlzdWFsaXphdGlvblRlcm1zOiBzdHJpbmdbXSA9IFtcblx0VUlBbm5vdGF0aW9uVGVybXMuTGluZUl0ZW0sXG5cdFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0LFxuXHRVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50LFxuXHRVSUFubm90YXRpb25UZXJtcy5TZWxlY3Rpb25QcmVzZW50YXRpb25WYXJpYW50XG5dO1xuXG4vKipcbiAqIENyZWF0ZSBzdWJzZWN0aW9ucyBiYXNlZCBvbiBmYWNldCBkZWZpbml0aW9uLlxuICpcbiAqIEBwYXJhbSBmYWNldENvbGxlY3Rpb24gQ29sbGVjdGlvbiBvZiBmYWNldHNcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0IFRoZSBjb252ZXJ0ZXIgY29udGV4dFxuICogQHBhcmFtIGlzSGVhZGVyU2VjdGlvbiBUcnVlIGlmIGhlYWRlciBzZWN0aW9uIGlzIGdlbmVyYXRlZCBpbiB0aGlzIGl0ZXJhdGlvblxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgc3Vic2VjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YlNlY3Rpb25zKFxuXHRmYWNldENvbGxlY3Rpb246IEZhY2V0VHlwZXNbXSxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCxcblx0aXNIZWFkZXJTZWN0aW9uPzogYm9vbGVhblxuKTogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSB7XG5cdC8vIEZpcnN0IHdlIGRldGVybWluZSB3aGljaCBzdWIgc2VjdGlvbiB3ZSBuZWVkIHRvIGNyZWF0ZVxuXHRjb25zdCBmYWNldHNUb0NyZWF0ZSA9IGZhY2V0Q29sbGVjdGlvbi5yZWR1Y2UoKGZhY2V0c1RvQ3JlYXRlOiBGYWNldFR5cGVzW10sIGZhY2V0RGVmaW5pdGlvbikgPT4ge1xuXHRcdHN3aXRjaCAoZmFjZXREZWZpbml0aW9uLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5wdXNoKGZhY2V0RGVmaW5pdGlvbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5Db2xsZWN0aW9uRmFjZXQ6XG5cdFx0XHRcdC8vIFRPRE8gSWYgdGhlIENvbGxlY3Rpb24gRmFjZXQgaGFzIGEgY2hpbGQgb2YgdHlwZSBDb2xsZWN0aW9uIEZhY2V0IHdlIGJyaW5nIHRoZW0gdXAgb25lIGxldmVsIChGb3JtICsgVGFibGUgdXNlIGNhc2UpID9cblx0XHRcdFx0Ly8gZmlyc3QgY2FzZSBmYWNldCBDb2xsZWN0aW9uIGlzIGNvbWJpbmF0aW9uIG9mIGNvbGxlY3Rpb24gYW5kIHJlZmVyZW5jZSBmYWNldCBvciBub3QgYWxsIGZhY2V0cyBhcmUgcmVmZXJlbmNlIGZhY2V0cy5cblx0XHRcdFx0aWYgKGZhY2V0RGVmaW5pdGlvbi5GYWNldHMuZmluZCgoZmFjZXRUeXBlKSA9PiBmYWNldFR5cGUuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldCkpIHtcblx0XHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5zcGxpY2UoZmFjZXRzVG9DcmVhdGUubGVuZ3RoLCAwLCAuLi5mYWNldERlZmluaXRpb24uRmFjZXRzKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmYWNldHNUb0NyZWF0ZS5wdXNoKGZhY2V0RGVmaW5pdGlvbik7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZVVSTEZhY2V0OlxuXHRcdFx0XHQvLyBOb3Qgc3VwcG9ydGVkXG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZXRzVG9DcmVhdGU7XG5cdH0sIFtdKTtcblxuXHQvLyBUaGVuIHdlIGNyZWF0ZSB0aGUgYWN0dWFsIHN1YnNlY3Rpb25zXG5cdHJldHVybiBmYWNldHNUb0NyZWF0ZS5tYXAoKGZhY2V0KSA9PlxuXHRcdGNyZWF0ZVN1YlNlY3Rpb24oZmFjZXQsIGZhY2V0c1RvQ3JlYXRlLCBjb252ZXJ0ZXJDb250ZXh0LCAwLCAhKGZhY2V0IGFzIGFueSk/LkZhY2V0cz8ubGVuZ3RoLCBpc0hlYWRlclNlY3Rpb24pXG5cdCk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBzdWJzZWN0aW9ucyBiYXNlZCBvbiB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgY3VzdG9tIGhlYWRlciBmYWNldC5cbiAqXG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHN1YnNlY3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21IZWFkZXJGYWNldFN1YlNlY3Rpb25zKGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBPYmplY3RQYWdlU3ViU2VjdGlvbltdIHtcblx0Y29uc3QgY3VzdG9tSGVhZGVyRmFjZXRzOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlSGVhZGVyRmFjZXQ+ID0gZ2V0SGVhZGVyRmFjZXRzRnJvbU1hbmlmZXN0KFxuXHRcdGNvbnZlcnRlckNvbnRleHQuZ2V0TWFuaWZlc3RXcmFwcGVyKCkuZ2V0SGVhZGVyRmFjZXRzKClcblx0KTtcblx0Y29uc3QgYUN1c3RvbUhlYWRlckZhY2V0czogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0W10gPSBbXTtcblx0T2JqZWN0LmtleXMoY3VzdG9tSGVhZGVyRmFjZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0XHRhQ3VzdG9tSGVhZGVyRmFjZXRzLnB1c2goY3VzdG9tSGVhZGVyRmFjZXRzW2tleV0pO1xuXHRcdHJldHVybiBhQ3VzdG9tSGVhZGVyRmFjZXRzO1xuXHR9KTtcblx0Y29uc3QgZmFjZXRzVG9DcmVhdGUgPSBhQ3VzdG9tSGVhZGVyRmFjZXRzLnJlZHVjZSgoZmFjZXRzVG9DcmVhdGU6IEN1c3RvbU9iamVjdFBhZ2VIZWFkZXJGYWNldFtdLCBjdXN0b21IZWFkZXJGYWNldCkgPT4ge1xuXHRcdGlmIChjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQpIHtcblx0XHRcdGZhY2V0c1RvQ3JlYXRlLnB1c2goY3VzdG9tSGVhZGVyRmFjZXQpO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFjZXRzVG9DcmVhdGU7XG5cdH0sIFtdKTtcblxuXHRyZXR1cm4gZmFjZXRzVG9DcmVhdGUubWFwKChjdXN0b21IZWFkZXJGYWNldCkgPT4gY3JlYXRlQ3VzdG9tSGVhZGVyRmFjZXRTdWJTZWN0aW9uKGN1c3RvbUhlYWRlckZhY2V0KSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNlY3Rpb24gYmFzZWQgb24gYSBjdXN0b20gaGVhZGVyIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBjdXN0b21IZWFkZXJGYWNldCBBIGN1c3RvbSBoZWFkZXIgZmFjZXRcbiAqIEByZXR1cm5zIEEgZGVmaW5pdGlvbiBmb3IgYSBzdWJzZWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUN1c3RvbUhlYWRlckZhY2V0U3ViU2VjdGlvbihjdXN0b21IZWFkZXJGYWNldDogQ3VzdG9tT2JqZWN0UGFnZUhlYWRlckZhY2V0KTogT2JqZWN0UGFnZVN1YlNlY3Rpb24ge1xuXHRjb25zdCBzdWJTZWN0aW9uSUQgPSBnZXRDdXN0b21TdWJTZWN0aW9uSUQoY3VzdG9tSGVhZGVyRmFjZXQua2V5KTtcblx0Y29uc3Qgc3ViU2VjdGlvbjogWE1MRnJhZ21lbnRTdWJTZWN0aW9uID0ge1xuXHRcdGlkOiBzdWJTZWN0aW9uSUQsXG5cdFx0a2V5OiBjdXN0b21IZWFkZXJGYWNldC5rZXksXG5cdFx0dGl0bGU6IGN1c3RvbUhlYWRlckZhY2V0LnRpdGxlLFxuXHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLlhNTEZyYWdtZW50LFxuXHRcdHRlbXBsYXRlOiBjdXN0b21IZWFkZXJGYWNldC50ZW1wbGF0ZUVkaXQgfHwgXCJcIixcblx0XHR2aXNpYmxlOiBjdXN0b21IZWFkZXJGYWNldC52aXNpYmxlLFxuXHRcdGxldmVsOiAxLFxuXHRcdHNpZGVDb250ZW50OiB1bmRlZmluZWQsXG5cdFx0c3Rhc2hlZDogY3VzdG9tSGVhZGVyRmFjZXQuc3Rhc2hlZCxcblx0XHRmbGV4U2V0dGluZ3M6IGN1c3RvbUhlYWRlckZhY2V0LmZsZXhTZXR0aW5ncyxcblx0XHRhY3Rpb25zOiB7fVxuXHR9O1xuXHRyZXR1cm4gc3ViU2VjdGlvbjtcbn1cblxuLy8gZnVuY3Rpb24gaXNUYXJnZXRGb3JDb21wbGlhbnQoYW5ub3RhdGlvblBhdGg6IEFubm90YXRpb25QYXRoKSB7XG4vLyBcdHJldHVybiAvLipjb21cXC5zYXBcXC52b2NhYnVsYXJpZXNcXC5VSVxcLnYxXFwuKEZpZWxkR3JvdXB8SWRlbnRpZmljYXRpb258RGF0YVBvaW50fFN0YXR1c0luZm8pLiovLnRlc3QoYW5ub3RhdGlvblBhdGgudmFsdWUpO1xuLy8gfVxuY29uc3QgZ2V0U3ViU2VjdGlvbktleSA9IChmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGZhbGxiYWNrOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuXHRyZXR1cm4gZmFjZXREZWZpbml0aW9uLklEPy50b1N0cmluZygpIHx8IGZhY2V0RGVmaW5pdGlvbi5MYWJlbD8udG9TdHJpbmcoKSB8fCBmYWxsYmFjaztcbn07XG4vKipcbiAqIEFkZHMgRm9ybSBtZW51IGFjdGlvbiB0byBhbGwgZm9ybSBhY3Rpb25zLCByZW1vdmVzIGR1cGxpY2F0ZSBhY3Rpb25zIGFuZCBoaWRkZW4gYWN0aW9ucy5cbiAqXG4gKiBAcGFyYW0gYWN0aW9ucyBUaGUgYWN0aW9ucyBpbnZvbHZlZFxuICogQHBhcmFtIGZhY2V0RGVmaW5pdGlvbiBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIGZhY2V0XG4gKiBAcGFyYW0gY29udmVydGVyQ29udGV4dCBUaGUgY29udmVydGVyIGNvbnRleHRcbiAqIEByZXR1cm5zIFRoZSBmb3JtIG1lbnUgYWN0aW9uc1xuICovXG5mdW5jdGlvbiBhZGRGb3JtTWVudUFjdGlvbnMoYWN0aW9uczogQ29udmVydGVyQWN0aW9uW10sIGZhY2V0RGVmaW5pdGlvbjogRmFjZXRUeXBlcywgY29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dCk6IENvbWJpbmVkQWN0aW9uIHtcblx0Y29uc3QgaGlkZGVuQWN0aW9uczogQmFzZUFjdGlvbltdID0gZ2V0Rm9ybUhpZGRlbkFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSB8fCBbXSxcblx0XHRmb3JtQWN0aW9uczogQ29uZmlndXJhYmxlUmVjb3JkPE1hbmlmZXN0QWN0aW9uPiA9IGdldEZvcm1BY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0bWFuaWZlc3RBY3Rpb25zID0gZ2V0QWN0aW9uc0Zyb21NYW5pZmVzdChmb3JtQWN0aW9ucywgY29udmVydGVyQ29udGV4dCwgYWN0aW9ucywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGhpZGRlbkFjdGlvbnMpLFxuXHRcdGFjdGlvbk92ZXJ3cml0ZUNvbmZpZzogT3ZlcnJpZGVUeXBlQWN0aW9uID0ge1xuXHRcdFx0ZW5hYmxlZDogT3ZlcnJpZGVUeXBlLm92ZXJ3cml0ZSxcblx0XHRcdHZpc2libGU6IE92ZXJyaWRlVHlwZS5vdmVyd3JpdGUsXG5cdFx0XHRjb21tYW5kOiBPdmVycmlkZVR5cGUub3ZlcndyaXRlXG5cdFx0fSxcblx0XHRmb3JtQWxsQWN0aW9ucyA9IGluc2VydEN1c3RvbUVsZW1lbnRzKGFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucy5hY3Rpb25zLCBhY3Rpb25PdmVyd3JpdGVDb25maWcpO1xuXHRyZXR1cm4ge1xuXHRcdGFjdGlvbnM6IGZvcm1BbGxBY3Rpb25zID8gZ2V0VmlzaWJpbGl0eUVuYWJsZW1lbnRGb3JtTWVudUFjdGlvbnMocmVtb3ZlRHVwbGljYXRlQWN0aW9ucyhmb3JtQWxsQWN0aW9ucykpIDogYWN0aW9ucyxcblx0XHRjb21tYW5kQWN0aW9uczogbWFuaWZlc3RBY3Rpb25zLmNvbW1hbmRBY3Rpb25zXG5cdH07XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhY3Rpb24gZm9ybSBhIGZhY2V0LlxuICpcbiAqIEBwYXJhbSBmYWNldERlZmluaXRpb25cbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBmYWNldCBhY3Rpb25zXG4gKi9cbmZ1bmN0aW9uIGdldEZhY2V0QWN0aW9ucyhmYWNldERlZmluaXRpb246IEZhY2V0VHlwZXMsIGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHQpOiBDb21iaW5lZEFjdGlvbiB7XG5cdGxldCBhY3Rpb25zOiBDb252ZXJ0ZXJBY3Rpb25bXSA9IFtdO1xuXHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi4kVHlwZSkge1xuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuQ29sbGVjdGlvbkZhY2V0OlxuXHRcdFx0YWN0aW9ucyA9IChcblx0XHRcdFx0ZmFjZXREZWZpbml0aW9uLkZhY2V0cy5maWx0ZXIoKHN1YkZhY2V0RGVmaW5pdGlvbikgPT4gaXNSZWZlcmVuY2VGYWNldChzdWJGYWNldERlZmluaXRpb24pKSBhcyBSZWZlcmVuY2VGYWNldFR5cGVzW11cblx0XHRcdCkucmVkdWNlKFxuXHRcdFx0XHQoYWN0aW9uUmVkdWNlcjogQ29udmVydGVyQWN0aW9uW10sIHJlZmVyZW5jZUZhY2V0KSA9PlxuXHRcdFx0XHRcdGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKGFjdGlvblJlZHVjZXIsIHJlZmVyZW5jZUZhY2V0LCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0W11cblx0XHRcdCk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0OlxuXHRcdFx0YWN0aW9ucyA9IGNyZWF0ZUZvcm1BY3Rpb25SZWR1Y2VyKFtdLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiBhZGRGb3JtTWVudUFjdGlvbnMoYWN0aW9ucywgZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgYnV0dG9uIHR5cGUgYmFzZWQgb24gQFVJLkVtcGhhc2l6ZWQgYW5ub3RhdGlvbi5cbiAqXG4gKiBAcGFyYW0gZW1waGFzaXplZCBFbXBoYXNpemVkIGFubm90YXRpb24gdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgYnV0dG9uIHR5cGUgb3IgcGF0aCBiYXNlZCBleHByZXNzaW9uLlxuICovXG5mdW5jdGlvbiBnZXRCdXR0b25UeXBlKGVtcGhhc2l6ZWQ6IEVtcGhhc2l6ZWQgfCB1bmRlZmluZWQpOiBCdXR0b25UeXBlIHtcblx0Ly8gRW1waGFzaXplZCBpcyBhIGJvb2xlYW4gc28gaWYgaXQncyBlcXVhbCB0byB0cnVlIHdlIHNob3cgdGhlIGJ1dHRvbiBhcyBHaG9zdCwgb3RoZXJ3aXNlIGFzIFRyYW5zcGFyZW50XG5cdGNvbnN0IGJ1dHRvblR5cGVDb25kaXRpb24gPSBlcXVhbChnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZW1waGFzaXplZCksIHRydWUpO1xuXHRyZXR1cm4gY29tcGlsZUV4cHJlc3Npb24oaWZFbHNlKGJ1dHRvblR5cGVDb25kaXRpb24sIEJ1dHRvblR5cGUuR2hvc3QsIEJ1dHRvblR5cGUuVHJhbnNwYXJlbnQpKSBhcyBCdXR0b25UeXBlO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHN1YnNlY3Rpb24gYmFzZWQgb24gRmFjZXRUeXBlcy5cbiAqXG4gKiBAcGFyYW0gZmFjZXREZWZpbml0aW9uXG4gKiBAcGFyYW0gZmFjZXRzVG9DcmVhdGVcbiAqIEBwYXJhbSBjb252ZXJ0ZXJDb250ZXh0XG4gKiBAcGFyYW0gbGV2ZWxcbiAqIEBwYXJhbSBoYXNTaW5nbGVDb250ZW50XG4gKiBAcGFyYW0gaXNIZWFkZXJTZWN0aW9uXG4gKiBAcmV0dXJucyBBIHN1YnNlY3Rpb24gZGVmaW5pdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3ViU2VjdGlvbihcblx0ZmFjZXREZWZpbml0aW9uOiBGYWNldFR5cGVzLFxuXHRmYWNldHNUb0NyZWF0ZTogRmFjZXRUeXBlc1tdLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0LFxuXHRsZXZlbDogbnVtYmVyLFxuXHRoYXNTaW5nbGVDb250ZW50OiBib29sZWFuLFxuXHRpc0hlYWRlclNlY3Rpb24/OiBib29sZWFuXG4pOiBPYmplY3RQYWdlU3ViU2VjdGlvbiB7XG5cdGNvbnN0IHN1YlNlY3Rpb25JRCA9IGdldFN1YlNlY3Rpb25JRChmYWNldERlZmluaXRpb24pO1xuXHRjb25zdCBvSGlkZGVuQW5ub3RhdGlvbjogYW55ID0gZmFjZXREZWZpbml0aW9uLmFubm90YXRpb25zPy5VST8uSGlkZGVuO1xuXHRjb25zdCBpc1Zpc2libGVFeHByZXNzaW9uID0gbm90KGVxdWFsKHRydWUsIGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihvSGlkZGVuQW5ub3RhdGlvbikpKTtcblx0Y29uc3QgaXNWaXNpYmxlID0gY29tcGlsZUV4cHJlc3Npb24oaXNWaXNpYmxlRXhwcmVzc2lvbik7XG5cdGNvbnN0IGlzRHluYW1pY0V4cHJlc3Npb24gPVxuXHRcdGlzVmlzaWJsZSAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBpc1Zpc2libGUgPT09IFwic3RyaW5nXCIgJiYgaXNWaXNpYmxlLmluZGV4T2YoXCJ7PVwiKSA9PT0gMCAmJiAhaXNQYXRoRXhwcmVzc2lvbihvSGlkZGVuQW5ub3RhdGlvbik7XG5cdGNvbnN0IGlzVmlzaWJsZUR5bmFtaWNFeHByZXNzaW9uID1cblx0XHRpc1Zpc2libGUgJiYgaXNEeW5hbWljRXhwcmVzc2lvblxuXHRcdFx0PyBpc1Zpc2libGUuc3Vic3RyaW5nKGlzVmlzaWJsZS5pbmRleE9mKFwiez1cIikgKyAyLCBpc1Zpc2libGUubGFzdEluZGV4T2YoXCJ9XCIpKSAhPT0gdW5kZWZpbmVkXG5cdFx0XHQ6IGZhbHNlO1xuXHRjb25zdCB0aXRsZSA9IGNvbXBpbGVFeHByZXNzaW9uKGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihmYWNldERlZmluaXRpb24uTGFiZWwpKTtcblx0Y29uc3Qgc3ViU2VjdGlvbjogQmFzZVN1YlNlY3Rpb24gPSB7XG5cdFx0aWQ6IHN1YlNlY3Rpb25JRCxcblx0XHRrZXk6IGdldFN1YlNlY3Rpb25LZXkoZmFjZXREZWZpbml0aW9uLCBzdWJTZWN0aW9uSUQpLFxuXHRcdHRpdGxlOiB0aXRsZSxcblx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Vbmtub3duLFxuXHRcdGFubm90YXRpb25QYXRoOiBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVNldEJhc2VkQW5ub3RhdGlvblBhdGgoZmFjZXREZWZpbml0aW9uLmZ1bGx5UXVhbGlmaWVkTmFtZSksXG5cdFx0dmlzaWJsZTogaXNWaXNpYmxlLFxuXHRcdGlzVmlzaWJpbGl0eUR5bmFtaWM6IGlzRHluYW1pY0V4cHJlc3Npb24sXG5cdFx0bGV2ZWw6IGxldmVsLFxuXHRcdHNpZGVDb250ZW50OiB1bmRlZmluZWRcblx0fTtcblx0aWYgKGlzSGVhZGVyU2VjdGlvbikge1xuXHRcdHN1YlNlY3Rpb24uc3Rhc2hlZCA9IGdldFN0YXNoZWRTZXR0aW5nc0ZvckhlYWRlckZhY2V0KGZhY2V0RGVmaW5pdGlvbiwgZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0XHRzdWJTZWN0aW9uLmZsZXhTZXR0aW5ncyA9IHtcblx0XHRcdGRlc2lnbnRpbWU6IGdldERlc2lnblRpbWVNZXRhZGF0YVNldHRpbmdzRm9ySGVhZGVyRmFjZXQoZmFjZXREZWZpbml0aW9uLCBmYWNldERlZmluaXRpb24sIGNvbnZlcnRlckNvbnRleHQpXG5cdFx0fTtcblx0fVxuXHRsZXQgdW5zdXBwb3J0ZWRUZXh0ID0gXCJcIjtcblx0bGV2ZWwrKztcblx0c3dpdGNoIChmYWNldERlZmluaXRpb24uJFR5cGUpIHtcblx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkNvbGxlY3Rpb25GYWNldDpcblx0XHRcdGNvbnN0IGZhY2V0cyA9IGZhY2V0RGVmaW5pdGlvbi5GYWNldHM7XG5cblx0XHRcdC8vIEZpbHRlciBmb3IgYWxsIGZhY2V0cyBvZiB0aGlzIHN1YnNlY3Rpb24gdGhhdCBhcmUgcmVmZXJyaW5nIHRvIGFuIGFubm90YXRpb24gZGVzY3JpYmluZyBhIHZpc3VhbGl6YXRpb24gKGUuZy4gdGFibGUgb3IgY2hhcnQpXG5cdFx0XHRjb25zdCB2aXN1YWxpemF0aW9uRmFjZXRzID0gZmFjZXRzXG5cdFx0XHRcdC5tYXAoKGZhY2V0LCBpbmRleCkgPT4gKHsgaW5kZXgsIGZhY2V0IH0pKSAvLyBSZW1lbWJlciB0aGUgaW5kZXggYXNzaWduZWQgdG8gZWFjaCBmYWNldFxuXHRcdFx0XHQuZmlsdGVyKCh7IGZhY2V0IH0pID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gdmlzdWFsaXphdGlvblRlcm1zLmluY2x1ZGVzKChmYWNldCBhcyBSZWZlcmVuY2VGYWNldCkuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdC8vIEZpbHRlciBvdXQgYWxsIHZpc3VhbGl6YXRpb24gZmFjZXRzOyBcInZpc3VhbGl6YXRpb25GYWNldHNcIiBhbmQgXCJub25WaXN1YWxpemF0aW9uRmFjZXRzXCIgYXJlIGRpc2pvaW50XG5cdFx0XHRjb25zdCBub25WaXN1YWxpemF0aW9uRmFjZXRzID0gZmFjZXRzLmZpbHRlcihcblx0XHRcdFx0KGZhY2V0KSA9PiAhdmlzdWFsaXphdGlvbkZhY2V0cy5maW5kKCh2aXN1YWxpemF0aW9uKSA9PiB2aXN1YWxpemF0aW9uLmZhY2V0ID09PSBmYWNldClcblx0XHRcdCk7XG5cblx0XHRcdGlmICh2aXN1YWxpemF0aW9uRmFjZXRzLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gQ29sbGVjdGlvbkZhY2V0cyB3aXRoIHZpc3VhbGl6YXRpb25zIG11c3QgYmUgaGFuZGxlZCBzZXBhcmF0ZWx5IGFzIHRoZXkgY2Fubm90IGJlIGluY2x1ZGVkIGluIGZvcm1zXG5cdFx0XHRcdGNvbnN0IHZpc3VhbGl6YXRpb25Db250ZW50OiBPYmplY3RQYWdlU3ViU2VjdGlvbltdID0gW107XG5cdFx0XHRcdGNvbnN0IGZvcm1Db250ZW50OiBPYmplY3RQYWdlU3ViU2VjdGlvbltdID0gW107XG5cdFx0XHRcdGNvbnN0IG1peGVkQ29udGVudDogT2JqZWN0UGFnZVN1YlNlY3Rpb25bXSA9IFtdO1xuXG5cdFx0XHRcdC8vIENyZWF0ZSBlYWNoIHZpc3VhbGl6YXRpb24gZmFjZXQgYXMgaWYgaXQgd2FzIGl0cyBvd24gc3Vic2VjdGlvbiAodmlhIHJlY3Vyc2lvbiksIGFuZCBrZWVwIHRoZWlyIHJlbGF0aXZlIG9yZGVyaW5nXG5cdFx0XHRcdGZvciAoY29uc3QgeyBmYWNldCB9IG9mIHZpc3VhbGl6YXRpb25GYWNldHMpIHtcblx0XHRcdFx0XHR2aXN1YWxpemF0aW9uQ29udGVudC5wdXNoKGNyZWF0ZVN1YlNlY3Rpb24oZmFjZXQsIFtdLCBjb252ZXJ0ZXJDb250ZXh0LCBsZXZlbCwgdHJ1ZSwgaXNIZWFkZXJTZWN0aW9uKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAobm9uVmlzdWFsaXphdGlvbkZhY2V0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0Ly8gVGhpcyBzdWJzZWN0aW9uIGluY2x1ZGVzIHZpc3VhbGl6YXRpb25zIGFuZCBvdGhlciBjb250ZW50LCBzbyBpdCBpcyBhIFwiTWl4ZWRcIiBzdWJzZWN0aW9uXG5cdFx0XHRcdFx0TG9nLndhcm5pbmcoXG5cdFx0XHRcdFx0XHRgV2FybmluZzogQ29sbGVjdGlvbkZhY2V0ICcke2ZhY2V0RGVmaW5pdGlvbi5JRH0nIGluY2x1ZGVzIGEgY29tYmluYXRpb24gb2YgZWl0aGVyIGEgY2hhcnQgb3IgYSB0YWJsZSBhbmQgb3RoZXIgY29udGVudC4gVGhpcyBjYW4gbGVhZCB0byByZW5kZXJpbmcgaXNzdWVzLiBDb25zaWRlciBtb3ZpbmcgdGhlIGNoYXJ0IG9yIHRhYmxlIGludG8gYSBzZXBhcmF0ZSBDb2xsZWN0aW9uRmFjZXQuYFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRmYWNldERlZmluaXRpb24uRmFjZXRzID0gbm9uVmlzdWFsaXphdGlvbkZhY2V0cztcblx0XHRcdFx0XHQvLyBDcmVhdGUgYSBqb2luZWQgZm9ybSBvZiBhbGwgZmFjZXRzIHRoYXQgYXJlIG5vdCByZWZlcnJpbmcgdG8gdmlzdWFsaXphdGlvbnNcblx0XHRcdFx0XHRmb3JtQ29udGVudC5wdXNoKGNyZWF0ZVN1YlNlY3Rpb24oZmFjZXREZWZpbml0aW9uLCBbXSwgY29udmVydGVyQ29udGV4dCwgbGV2ZWwsIGhhc1NpbmdsZUNvbnRlbnQsIGlzSGVhZGVyU2VjdGlvbikpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gTWVyZ2UgdGhlIHZpc3VhbGl6YXRpb24gY29udGVudCB3aXRoIHRoZSBmb3JtIGNvbnRlbnRcblx0XHRcdFx0aWYgKHZpc3VhbGl6YXRpb25GYWNldHMuZmluZCgoeyBpbmRleCB9KSA9PiBpbmRleCA9PT0gMCkpIHtcblx0XHRcdFx0XHQvLyBJZiB0aGUgZmlyc3QgZmFjZXQgaXMgYSB2aXN1YWxpemF0aW9uLCBkaXNwbGF5IHRoZSB2aXN1YWxpemF0aW9ucyBmaXJzdFxuXHRcdFx0XHRcdG1peGVkQ29udGVudC5wdXNoKC4uLnZpc3VhbGl6YXRpb25Db250ZW50KTtcblx0XHRcdFx0XHRtaXhlZENvbnRlbnQucHVzaCguLi5mb3JtQ29udGVudCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gT3RoZXJ3aXNlLCBkaXNwbGF5IHRoZSBmb3JtIGZpcnN0XG5cdFx0XHRcdFx0bWl4ZWRDb250ZW50LnB1c2goLi4uZm9ybUNvbnRlbnQpO1xuXHRcdFx0XHRcdG1peGVkQ29udGVudC5wdXNoKC4uLnZpc3VhbGl6YXRpb25Db250ZW50KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvbnN0IG1peGVkU3ViU2VjdGlvbjogTWl4ZWRTdWJTZWN0aW9uID0ge1xuXHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0dHlwZTogU3ViU2VjdGlvblR5cGUuTWl4ZWQsXG5cdFx0XHRcdFx0bGV2ZWw6IGxldmVsLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IG1peGVkQ29udGVudFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm4gbWl4ZWRTdWJTZWN0aW9uO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gVGhpcyBDb2xsZWN0aW9uRmFjZXQgb25seSBpbmNsdWRlcyBjb250ZW50IHRoYXQgY2FuIGJlIHJlbmRlcmVkIGluIGEgbWVyZ2VkIGZvcm1cblx0XHRcdFx0Y29uc3QgZmFjZXRBY3Rpb25zID0gZ2V0RmFjZXRBY3Rpb25zKGZhY2V0RGVmaW5pdGlvbiwgY29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdFx0Zm9ybUNvbGxlY3Rpb25TdWJTZWN0aW9uOiBGb3JtU3ViU2VjdGlvbiA9IHtcblx0XHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0XHR0eXBlOiBTdWJTZWN0aW9uVHlwZS5Gb3JtLFxuXHRcdFx0XHRcdFx0Zm9ybURlZmluaXRpb246IGNyZWF0ZUZvcm1EZWZpbml0aW9uKGZhY2V0RGVmaW5pdGlvbiwgaXNWaXNpYmxlLCBjb252ZXJ0ZXJDb250ZXh0LCBmYWNldEFjdGlvbnMuYWN0aW9ucyksXG5cdFx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0XHRhY3Rpb25zOiBmYWNldEFjdGlvbnMuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLmZhY2V0TmFtZSA9PT0gdW5kZWZpbmVkKSxcblx0XHRcdFx0XHRcdGNvbW1hbmRBY3Rpb25zOiBmYWNldEFjdGlvbnMuY29tbWFuZEFjdGlvbnNcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHRyZXR1cm4gZm9ybUNvbGxlY3Rpb25TdWJTZWN0aW9uO1xuXHRcdFx0fVxuXHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuUmVmZXJlbmNlRmFjZXQ6XG5cdFx0XHRpZiAoIWZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldCkge1xuXHRcdFx0XHR1bnN1cHBvcnRlZFRleHQgPSBgVW5hYmxlIHRvIGZpbmQgYW5ub3RhdGlvblBhdGggJHtmYWNldERlZmluaXRpb24uVGFyZ2V0LnZhbHVlfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzd2l0Y2ggKGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldC50ZXJtKSB7XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5MaW5lSXRlbTpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkNoYXJ0OlxuXHRcdFx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVGVybXMuUHJlc2VudGF0aW9uVmFyaWFudDpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnQ6XG5cdFx0XHRcdFx0XHRjb25zdCBwcmVzZW50YXRpb24gPSBnZXREYXRhVmlzdWFsaXphdGlvbkNvbmZpZ3VyYXRpb24oXG5cdFx0XHRcdFx0XHRcdGZhY2V0RGVmaW5pdGlvbi5UYXJnZXQudmFsdWUsXG5cdFx0XHRcdFx0XHRcdGdldENvbmRlbnNlZFRhYmxlTGF5b3V0Q29tcGxpYW5jZShmYWNldERlZmluaXRpb24sIGZhY2V0c1RvQ3JlYXRlLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0XHRpc0hlYWRlclNlY3Rpb25cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRjb25zdCBzdWJTZWN0aW9uVGl0bGU6IHN0cmluZyA9IHN1YlNlY3Rpb24udGl0bGUgPyBzdWJTZWN0aW9uLnRpdGxlIDogXCJcIjtcblx0XHRcdFx0XHRcdGNvbnN0IGNvbnRyb2xUaXRsZSA9XG5cdFx0XHRcdFx0XHRcdChwcmVzZW50YXRpb24udmlzdWFsaXphdGlvbnNbMF0gYXMgYW55KT8uYW5ub3RhdGlvbj8udGl0bGUgfHwgKHByZXNlbnRhdGlvbi52aXN1YWxpemF0aW9uc1swXSBhcyBhbnkpPy50aXRsZTtcblx0XHRcdFx0XHRcdGNvbnN0IHNob3dUaXRsZSA9IGdldFRpdGxlVmlzaWJpbGl0eShjb250cm9sVGl0bGUsIHN1YlNlY3Rpb25UaXRsZSwgaGFzU2luZ2xlQ29udGVudCk7XG5cblx0XHRcdFx0XHRcdC8vIEVpdGhlciBjYWxjdWxhdGUgdGhlIHRpdGxlIHZpc2liaWxpdHkgc3RhdGljYWxseSBvciBkeW5hbWljYWxseVxuXHRcdFx0XHRcdFx0Ly8gQWRkaXRpb25hbGx5IHRvIGNoZWNraW5nIHdoZXRoZXIgYSB0aXRsZSBleGlzdHMsXG5cdFx0XHRcdFx0XHQvLyB3ZSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhhdCB0aGUgZmFjZXQgdGl0bGUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjb250cm9sIChpLmUuIHZpc3VhbGl6YXRpb24pIHRpdGxlO1xuXHRcdFx0XHRcdFx0Ly8gdGhpcyBpcyBkb25lIGJ5IGluY2x1ZGluZyBcInNob3dUaXRsZVwiIGluIHRoZSBhbmQgZXhwcmVzc2lvblxuXHRcdFx0XHRcdFx0Y29uc3QgdGl0bGVWaXNpYmxlID0gaWZFbHNlKFxuXHRcdFx0XHRcdFx0XHRpc0R5bmFtaWNFeHByZXNzaW9uLFxuXHRcdFx0XHRcdFx0XHRhbmQoaXNWaXNpYmxlRHluYW1pY0V4cHJlc3Npb24sIG5vdChlcXVhbCh0aXRsZSwgXCJ1bmRlZmluZWRcIikpLCBzaG93VGl0bGUpLFxuXHRcdFx0XHRcdFx0XHRhbmQoaXNWaXNpYmxlICE9PSB1bmRlZmluZWQsIHRpdGxlICE9PSBcInVuZGVmaW5lZFwiLCB0aXRsZSAhPT0gdW5kZWZpbmVkLCBpc1Zpc2libGVFeHByZXNzaW9uLCBzaG93VGl0bGUpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0Y29uc3QgZGF0YVZpc3VhbGl6YXRpb25TdWJTZWN0aW9uOiBEYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb24gPSB7XG5cdFx0XHRcdFx0XHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkRhdGFWaXN1YWxpemF0aW9uLFxuXHRcdFx0XHRcdFx0XHRsZXZlbDogbGV2ZWwsXG5cdFx0XHRcdFx0XHRcdHByZXNlbnRhdGlvbjogcHJlc2VudGF0aW9uLFxuXHRcdFx0XHRcdFx0XHRzaG93VGl0bGU6IGNvbXBpbGVFeHByZXNzaW9uKHNob3dUaXRsZSksIC8vIFRoaXMgaXMgdXNlZCBvbiB0aGUgT2JqZWN0UGFnZVN1YlNlY3Rpb25cblx0XHRcdFx0XHRcdFx0dGl0bGVWaXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbih0aXRsZVZpc2libGUpIC8vIFRoaXMgaXMgdXNlZCB0byBoaWRlIHRoZSBhY3R1YWwgVGl0bGUgY29udHJvbFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiBkYXRhVmlzdWFsaXphdGlvblN1YlNlY3Rpb247XG5cblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5JZGVudGlmaWNhdGlvbjpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkRhdGFQb2ludDpcblx0XHRcdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLlN0YXR1c0luZm86XG5cdFx0XHRcdFx0Y2FzZSBDb21tdW5pY2F0aW9uQW5ub3RhdGlvblRlcm1zLkNvbnRhY3Q6XG5cdFx0XHRcdFx0XHQvLyBBbGwgdGhvc2UgZWxlbWVudCBiZWxvbmcgdG8gYSBmcm9tIGZhY2V0XG5cdFx0XHRcdFx0XHRjb25zdCBmYWNldEFjdGlvbnMgPSBnZXRGYWNldEFjdGlvbnMoZmFjZXREZWZpbml0aW9uLCBjb252ZXJ0ZXJDb250ZXh0KSxcblx0XHRcdFx0XHRcdFx0Zm9ybUVsZW1lbnRTdWJTZWN0aW9uOiBGb3JtU3ViU2VjdGlvbiA9IHtcblx0XHRcdFx0XHRcdFx0XHQuLi5zdWJTZWN0aW9uLFxuXHRcdFx0XHRcdFx0XHRcdHR5cGU6IFN1YlNlY3Rpb25UeXBlLkZvcm0sXG5cdFx0XHRcdFx0XHRcdFx0bGV2ZWw6IGxldmVsLFxuXHRcdFx0XHRcdFx0XHRcdGZvcm1EZWZpbml0aW9uOiBjcmVhdGVGb3JtRGVmaW5pdGlvbihmYWNldERlZmluaXRpb24sIGlzVmlzaWJsZSwgY29udmVydGVyQ29udGV4dCwgZmFjZXRBY3Rpb25zLmFjdGlvbnMpLFxuXHRcdFx0XHRcdFx0XHRcdGFjdGlvbnM6IGZhY2V0QWN0aW9ucy5hY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiBhY3Rpb24uZmFjZXROYW1lID09PSB1bmRlZmluZWQpLFxuXHRcdFx0XHRcdFx0XHRcdGNvbW1hbmRBY3Rpb25zOiBmYWNldEFjdGlvbnMuY29tbWFuZEFjdGlvbnNcblx0XHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdHJldHVybiBmb3JtRWxlbWVudFN1YlNlY3Rpb247XG5cblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0dW5zdXBwb3J0ZWRUZXh0ID0gYEZvciAke2ZhY2V0RGVmaW5pdGlvbi5UYXJnZXQuJHRhcmdldC50ZXJtfSBGcmFnbWVudGA7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVSUFubm90YXRpb25UeXBlcy5SZWZlcmVuY2VVUkxGYWNldDpcblx0XHRcdHVuc3VwcG9ydGVkVGV4dCA9IFwiRm9yIFJlZmVyZW5jZSBVUkwgRmFjZXRcIjtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHQvLyBJZiB3ZSByZWFjaCBoZXJlIHdlIGVuZGVkIHVwIHdpdGggYW4gdW5zdXBwb3J0ZWQgU3ViU2VjdGlvbiB0eXBlXG5cdGNvbnN0IHVuc3VwcG9ydGVkU3ViU2VjdGlvbjogVW5zdXBwb3J0ZWRTdWJTZWN0aW9uID0ge1xuXHRcdC4uLnN1YlNlY3Rpb24sXG5cdFx0dGV4dDogdW5zdXBwb3J0ZWRUZXh0XG5cdH07XG5cdHJldHVybiB1bnN1cHBvcnRlZFN1YlNlY3Rpb247XG59XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgdG8gaGlkZSBvciBzaG93IHN1YnNlY3Rpb24gdGl0bGUuXG4gKlxuICogQHBhcmFtIGNvbnRyb2xUaXRsZVxuICogQHBhcmFtIHN1YlNlY3Rpb25UaXRsZVxuICogQHBhcmFtIGhhc1NpbmdsZUNvbnRlbnRcbiAqIEByZXR1cm5zIEJvb2xlYW4gdmFsdWUgb3IgZXhwcmVzc2lvbiBmb3Igc2hvd1RpdGxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUaXRsZVZpc2liaWxpdHkoXG5cdGNvbnRyb2xUaXRsZTogc3RyaW5nLFxuXHRzdWJTZWN0aW9uVGl0bGU6IHN0cmluZyxcblx0aGFzU2luZ2xlQ29udGVudDogYm9vbGVhblxuKTogQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0Ly8gdmlzaWJsZSBzaGFsbCBiZSB0cnVlIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBjb250ZW50IG9yIGlmIHRoZSBjb250cm9sIGFuZCBzdWJzZWN0aW9uIHRpdGxlIGFyZSBkaWZmZXJlbnRcblx0cmV0dXJuIG9yKG5vdChoYXNTaW5nbGVDb250ZW50KSwgbm90RXF1YWwocmVzb2x2ZUJpbmRpbmdTdHJpbmcoY29udHJvbFRpdGxlKSwgcmVzb2x2ZUJpbmRpbmdTdHJpbmcoc3ViU2VjdGlvblRpdGxlKSkpO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVGb3JtQWN0aW9uUmVkdWNlcihcblx0YWN0aW9uczogQ29udmVydGVyQWN0aW9uW10sXG5cdGZhY2V0RGVmaW5pdGlvbjogUmVmZXJlbmNlRmFjZXRUeXBlcyxcblx0Y29udmVydGVyQ29udGV4dDogQ29udmVydGVyQ29udGV4dFxuKTogQ29udmVydGVyQWN0aW9uW10ge1xuXHRjb25zdCByZWZlcmVuY2VUYXJnZXQgPSBmYWNldERlZmluaXRpb24uVGFyZ2V0LiR0YXJnZXQ7XG5cdGNvbnN0IHRhcmdldFZhbHVlID0gZmFjZXREZWZpbml0aW9uLlRhcmdldC52YWx1ZTtcblx0bGV0IG1hbmlmZXN0QWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWN0aW9uPiA9IHt9O1xuXHRsZXQgZGF0YUZpZWxkQ29sbGVjdGlvbjogRGF0YUZpZWxkQWJzdHJhY3RUeXBlc1tdID0gW107XG5cdGxldCBbbmF2aWdhdGlvblByb3BlcnR5UGF0aF06IGFueSA9IHRhcmdldFZhbHVlLnNwbGl0KFwiQFwiKTtcblx0aWYgKG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGgubGVuZ3RoID4gMCkge1xuXHRcdGlmIChuYXZpZ2F0aW9uUHJvcGVydHlQYXRoLmxhc3RJbmRleE9mKFwiL1wiKSA9PT0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKSB7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoID0gbmF2aWdhdGlvblByb3BlcnR5UGF0aC5zdWJzdHIoMCwgbmF2aWdhdGlvblByb3BlcnR5UGF0aC5sZW5ndGggLSAxKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0bmF2aWdhdGlvblByb3BlcnR5UGF0aCA9IHVuZGVmaW5lZDtcblx0fVxuXG5cdGlmIChyZWZlcmVuY2VUYXJnZXQpIHtcblx0XHRzd2l0Y2ggKHJlZmVyZW5jZVRhcmdldC50ZXJtKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLkZpZWxkR3JvdXA6XG5cdFx0XHRcdGRhdGFGaWVsZENvbGxlY3Rpb24gPSAocmVmZXJlbmNlVGFyZ2V0IGFzIEZpZWxkR3JvdXApLkRhdGE7XG5cdFx0XHRcdG1hbmlmZXN0QWN0aW9ucyA9IGdldEFjdGlvbnNGcm9tTWFuaWZlc3QoXG5cdFx0XHRcdFx0Y29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHJlZmVyZW5jZVRhcmdldCkuYWN0aW9ucyxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0LFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdHVuZGVmaW5lZCxcblx0XHRcdFx0XHRmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHRcdCkuYWN0aW9ucztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblRlcm1zLklkZW50aWZpY2F0aW9uOlxuXHRcdFx0Y2FzZSBVSUFubm90YXRpb25UZXJtcy5TdGF0dXNJbmZvOlxuXHRcdFx0XHRpZiAocmVmZXJlbmNlVGFyZ2V0LnF1YWxpZmllcikge1xuXHRcdFx0XHRcdGRhdGFGaWVsZENvbGxlY3Rpb24gPSByZWZlcmVuY2VUYXJnZXQ7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRhY3Rpb25zID0gZGF0YUZpZWxkQ29sbGVjdGlvbi5yZWR1Y2UoKGFjdGlvblJlZHVjZXIsIGRhdGFGaWVsZDogRGF0YUZpZWxkQWJzdHJhY3RUeXBlcykgPT4ge1xuXHRcdHN3aXRjaCAoZGF0YUZpZWxkLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFVJQW5ub3RhdGlvblR5cGVzLkRhdGFGaWVsZEZvckludGVudEJhc2VkTmF2aWdhdGlvbjpcblx0XHRcdFx0aWYgKGRhdGFGaWVsZC5SZXF1aXJlc0NvbnRleHQ/LnZhbHVlT2YoKSA9PT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHRcblx0XHRcdFx0XHRcdC5nZXREaWFnbm9zdGljcygpXG5cdFx0XHRcdFx0XHQuYWRkSXNzdWUoSXNzdWVDYXRlZ29yeS5Bbm5vdGF0aW9uLCBJc3N1ZVNldmVyaXR5LkxvdywgSXNzdWVUeXBlLk1BTEZPUk1FRF9EQVRBRklFTERfRk9SX0lCTi5SRVFVSVJFU0NPTlRFWFQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuSW5saW5lPy52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5Mb3csIElzc3VlVHlwZS5NQUxGT1JNRURfREFUQUZJRUxEX0ZPUl9JQk4uSU5MSU5FKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZGF0YUZpZWxkLkRldGVybWluaW5nPy52YWx1ZU9mKCkgPT09IHRydWUpIHtcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0XG5cdFx0XHRcdFx0XHQuZ2V0RGlhZ25vc3RpY3MoKVxuXHRcdFx0XHRcdFx0LmFkZElzc3VlKElzc3VlQ2F0ZWdvcnkuQW5ub3RhdGlvbiwgSXNzdWVTZXZlcml0eS5Mb3csIElzc3VlVHlwZS5NQUxGT1JNRURfREFUQUZJRUxEX0ZPUl9JQk4uREVURVJNSU5JTkcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IG1OYXZpZ2F0aW9uUGFyYW1ldGVyczogYW55ID0ge307XG5cdFx0XHRcdGlmIChkYXRhRmllbGQuTWFwcGluZykge1xuXHRcdFx0XHRcdG1OYXZpZ2F0aW9uUGFyYW1ldGVycy5zZW1hbnRpY09iamVjdE1hcHBpbmcgPSBnZXRTZW1hbnRpY09iamVjdE1hcHBpbmcoZGF0YUZpZWxkLk1hcHBpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGFjdGlvblJlZHVjZXIucHVzaCh7XG5cdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JJbnRlbnRCYXNlZE5hdmlnYXRpb24sXG5cdFx0XHRcdFx0aWQ6IGdldEZvcm1JRChmYWNldERlZmluaXRpb24sIGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0a2V5OiBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0dGV4dDogZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBcIlwiLFxuXHRcdFx0XHRcdGVuYWJsZWQ6XG5cdFx0XHRcdFx0XHRkYXRhRmllbGQuTmF2aWdhdGlvbkF2YWlsYWJsZSAhPT0gdW5kZWZpbmVkXG5cdFx0XHRcdFx0XHRcdD8gY29tcGlsZUV4cHJlc3Npb24oZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5OYXZpZ2F0aW9uQXZhaWxhYmxlPy52YWx1ZU9mKCkpLCB0cnVlKSlcblx0XHRcdFx0XHRcdFx0OiBcInRydWVcIixcblx0XHRcdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpKSwgdHJ1ZSkpKSxcblx0XHRcdFx0XHRidXR0b25UeXBlOiBnZXRCdXR0b25UeXBlKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkVtcGhhc2l6ZWQpLFxuXHRcdFx0XHRcdHByZXNzOiBjb21waWxlRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdGZuKFwiLl9pbnRlbnRCYXNlZE5hdmlnYXRpb24ubmF2aWdhdGVcIiwgW1xuXHRcdFx0XHRcdFx0XHRnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLlNlbWFudGljT2JqZWN0KSxcblx0XHRcdFx0XHRcdFx0Z2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5BY3Rpb24pLFxuXHRcdFx0XHRcdFx0XHRtTmF2aWdhdGlvblBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdF0pXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjdXN0b21EYXRhOiBjb21waWxlRXhwcmVzc2lvbih7XG5cdFx0XHRcdFx0XHRzZW1hbnRpY09iamVjdDogZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5TZW1hbnRpY09iamVjdCksXG5cdFx0XHRcdFx0XHRhY3Rpb246IGdldEV4cHJlc3Npb25Gcm9tQW5ub3RhdGlvbihkYXRhRmllbGQuQWN0aW9uKVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgVUlBbm5vdGF0aW9uVHlwZXMuRGF0YUZpZWxkRm9yQWN0aW9uOlxuXHRcdFx0XHRjb25zdCBmb3JtTWFuaWZlc3RBY3Rpb25zQ29uZmlndXJhdGlvbjogYW55ID0gY29udmVydGVyQ29udGV4dC5nZXRNYW5pZmVzdENvbnRyb2xDb25maWd1cmF0aW9uKHJlZmVyZW5jZVRhcmdldCkuYWN0aW9ucztcblx0XHRcdFx0Y29uc3Qga2V5OiBzdHJpbmcgPSBLZXlIZWxwZXIuZ2VuZXJhdGVLZXlGcm9tRGF0YUZpZWxkKGRhdGFGaWVsZCk7XG5cdFx0XHRcdGFjdGlvblJlZHVjZXIucHVzaCh7XG5cdFx0XHRcdFx0dHlwZTogQWN0aW9uVHlwZS5EYXRhRmllbGRGb3JBY3Rpb24sXG5cdFx0XHRcdFx0aWQ6IGdldEZvcm1JRChmYWNldERlZmluaXRpb24sIGRhdGFGaWVsZCksXG5cdFx0XHRcdFx0a2V5OiBrZXksXG5cdFx0XHRcdFx0dGV4dDogZGF0YUZpZWxkLkxhYmVsPy50b1N0cmluZygpLFxuXHRcdFx0XHRcdGFubm90YXRpb25QYXRoOiBcIlwiLFxuXHRcdFx0XHRcdGVuYWJsZWQ6IGdldEVuYWJsZWRGb3JBbm5vdGF0aW9uQWN0aW9uKGNvbnZlcnRlckNvbnRleHQsIGRhdGFGaWVsZC5BY3Rpb25UYXJnZXQpLFxuXHRcdFx0XHRcdGJpbmRpbmc6IG5hdmlnYXRpb25Qcm9wZXJ0eVBhdGggPyBgeyAncGF0aCcgOiAnJHtuYXZpZ2F0aW9uUHJvcGVydHlQYXRofSd9YCA6IHVuZGVmaW5lZCxcblx0XHRcdFx0XHR2aXNpYmxlOiBjb21waWxlRXhwcmVzc2lvbihub3QoZXF1YWwoZ2V0RXhwcmVzc2lvbkZyb21Bbm5vdGF0aW9uKGRhdGFGaWVsZC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbj8udmFsdWVPZigpKSwgdHJ1ZSkpKSxcblx0XHRcdFx0XHRyZXF1aXJlc0RpYWxvZzogaXNEaWFsb2coZGF0YUZpZWxkLkFjdGlvblRhcmdldCksXG5cdFx0XHRcdFx0YnV0dG9uVHlwZTogZ2V0QnV0dG9uVHlwZShkYXRhRmllbGQuYW5ub3RhdGlvbnM/LlVJPy5FbXBoYXNpemVkKSxcblx0XHRcdFx0XHRwcmVzczogY29tcGlsZUV4cHJlc3Npb24oXG5cdFx0XHRcdFx0XHRmbihcblx0XHRcdFx0XHRcdFx0XCJpbnZva2VBY3Rpb25cIixcblx0XHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRcdGRhdGFGaWVsZC5BY3Rpb24sXG5cdFx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGV4dHM6IGZuKFwiZ2V0QmluZGluZ0NvbnRleHRcIiwgW10sIHBhdGhJbk1vZGVsKFwiXCIsIFwiJHNvdXJjZVwiKSksXG5cdFx0XHRcdFx0XHRcdFx0XHRpbnZvY2F0aW9uR3JvdXBpbmc6IChkYXRhRmllbGQuSW52b2NhdGlvbkdyb3VwaW5nID09PSBcIlVJLk9wZXJhdGlvbkdyb3VwaW5nVHlwZS9DaGFuZ2VTZXRcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IFwiQ2hhbmdlU2V0XCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OiBcIklzb2xhdGVkXCIpIGFzIE9wZXJhdGlvbkdyb3VwaW5nVHlwZSxcblx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsOiBnZXRFeHByZXNzaW9uRnJvbUFubm90YXRpb24oZGF0YUZpZWxkLkxhYmVsKSxcblx0XHRcdFx0XHRcdFx0XHRcdG1vZGVsOiBmbihcImdldE1vZGVsXCIsIFtdLCBwYXRoSW5Nb2RlbChcIi9cIiwgXCIkc291cmNlXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRcdGlzTmF2aWdhYmxlOiBpc0FjdGlvbk5hdmlnYWJsZShcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9ybU1hbmlmZXN0QWN0aW9uc0NvbmZpZ3VyYXRpb24gJiYgZm9ybU1hbmlmZXN0QWN0aW9uc0NvbmZpZ3VyYXRpb25ba2V5XVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdFx0cmVmKFwiLmVkaXRGbG93XCIpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRmYWNldE5hbWU6IGRhdGFGaWVsZC5JbmxpbmUgPyBmYWNldERlZmluaXRpb24uZnVsbHlRdWFsaWZpZWROYW1lIDogdW5kZWZpbmVkXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRyZXR1cm4gYWN0aW9uUmVkdWNlcjtcblx0fSwgYWN0aW9ucyk7XG5cdC8vIE92ZXJ3cml0aW5nIG9mIGFjdGlvbnMgaGFwcGVucyBpbiBhZGRGb3JtTWVudUFjdGlvbnNcblx0cmV0dXJuIGluc2VydEN1c3RvbUVsZW1lbnRzKGFjdGlvbnMsIG1hbmlmZXN0QWN0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpYWxvZyhhY3Rpb25EZWZpbml0aW9uOiBhbnkgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuXHRpZiAoYWN0aW9uRGVmaW5pdGlvbikge1xuXHRcdGNvbnN0IGJDcml0aWNhbCA9IGFjdGlvbkRlZmluaXRpb24uYW5ub3RhdGlvbnM/LkNvbW1vbj8uSXNBY3Rpb25Dcml0aWNhbDtcblx0XHRpZiAoYWN0aW9uRGVmaW5pdGlvbi5wYXJhbWV0ZXJzLmxlbmd0aCA+IDEgfHwgYkNyaXRpY2FsKSB7XG5cdFx0XHRyZXR1cm4gXCJEaWFsb2dcIjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFwiTm9uZVwiO1xuXHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gXCJOb25lXCI7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUN1c3RvbVN1YlNlY3Rpb25zKFxuXHRtYW5pZmVzdFN1YlNlY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBNYW5pZmVzdFN1YlNlY3Rpb24+LFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbj4ge1xuXHRjb25zdCBzdWJTZWN0aW9uczogUmVjb3JkPHN0cmluZywgQ3VzdG9tT2JqZWN0UGFnZVN1YlNlY3Rpb24+ID0ge307XG5cdE9iamVjdC5rZXlzKG1hbmlmZXN0U3ViU2VjdGlvbnMpLmZvckVhY2goXG5cdFx0KHN1YlNlY3Rpb25LZXkpID0+XG5cdFx0XHQoc3ViU2VjdGlvbnNbc3ViU2VjdGlvbktleV0gPSBjcmVhdGVDdXN0b21TdWJTZWN0aW9uKG1hbmlmZXN0U3ViU2VjdGlvbnNbc3ViU2VjdGlvbktleV0sIHN1YlNlY3Rpb25LZXksIGNvbnZlcnRlckNvbnRleHQpKVxuXHQpO1xuXHRyZXR1cm4gc3ViU2VjdGlvbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDdXN0b21TdWJTZWN0aW9uKFxuXHRtYW5pZmVzdFN1YlNlY3Rpb246IE1hbmlmZXN0U3ViU2VjdGlvbixcblx0c3ViU2VjdGlvbktleTogc3RyaW5nLFxuXHRjb252ZXJ0ZXJDb250ZXh0OiBDb252ZXJ0ZXJDb250ZXh0XG4pOiBDdXN0b21PYmplY3RQYWdlU3ViU2VjdGlvbiB7XG5cdGNvbnN0IHNpZGVDb250ZW50OiBTaWRlQ29udGVudERlZiB8IHVuZGVmaW5lZCA9IG1hbmlmZXN0U3ViU2VjdGlvbi5zaWRlQ29udGVudFxuXHRcdD8ge1xuXHRcdFx0XHR0ZW1wbGF0ZTogbWFuaWZlc3RTdWJTZWN0aW9uLnNpZGVDb250ZW50LnRlbXBsYXRlLFxuXHRcdFx0XHRpZDogZ2V0U2lkZUNvbnRlbnRJRChzdWJTZWN0aW9uS2V5KSxcblx0XHRcdFx0dmlzaWJsZTogZmFsc2UsXG5cdFx0XHRcdGVxdWFsU3BsaXQ6IG1hbmlmZXN0U3ViU2VjdGlvbi5zaWRlQ29udGVudC5lcXVhbFNwbGl0XG5cdFx0ICB9XG5cdFx0OiB1bmRlZmluZWQ7XG5cdGxldCBwb3NpdGlvbiA9IG1hbmlmZXN0U3ViU2VjdGlvbi5wb3NpdGlvbjtcblx0aWYgKCFwb3NpdGlvbikge1xuXHRcdHBvc2l0aW9uID0ge1xuXHRcdFx0cGxhY2VtZW50OiBQbGFjZW1lbnQuQWZ0ZXJcblx0XHR9O1xuXHR9XG5cdGNvbnN0IGlzVmlzaWJsZSA9IG1hbmlmZXN0U3ViU2VjdGlvbi52aXNpYmxlICE9PSB1bmRlZmluZWQgPyBtYW5pZmVzdFN1YlNlY3Rpb24udmlzaWJsZSA6IHRydWU7XG5cdGNvbnN0IGlzRHluYW1pY0V4cHJlc3Npb24gPSBpc1Zpc2libGUgJiYgdHlwZW9mIGlzVmlzaWJsZSA9PT0gXCJzdHJpbmdcIiAmJiBpc1Zpc2libGUuaW5kZXhPZihcIns9XCIpID09PSAwO1xuXHRjb25zdCBtYW5pZmVzdEFjdGlvbnMgPSBnZXRBY3Rpb25zRnJvbU1hbmlmZXN0KG1hbmlmZXN0U3ViU2VjdGlvbi5hY3Rpb25zLCBjb252ZXJ0ZXJDb250ZXh0KTtcblx0Y29uc3Qgc3ViU2VjdGlvbkRlZmluaXRpb24gPSB7XG5cdFx0dHlwZTogU3ViU2VjdGlvblR5cGUuVW5rbm93bixcblx0XHRpZDogbWFuaWZlc3RTdWJTZWN0aW9uLmlkIHx8IGdldEN1c3RvbVN1YlNlY3Rpb25JRChzdWJTZWN0aW9uS2V5KSxcblx0XHRhY3Rpb25zOiBtYW5pZmVzdEFjdGlvbnMuYWN0aW9ucyxcblx0XHRrZXk6IHN1YlNlY3Rpb25LZXksXG5cdFx0dGl0bGU6IG1hbmlmZXN0U3ViU2VjdGlvbi50aXRsZSxcblx0XHRsZXZlbDogMSxcblx0XHRwb3NpdGlvbjogcG9zaXRpb24sXG5cdFx0dmlzaWJsZTogbWFuaWZlc3RTdWJTZWN0aW9uLnZpc2libGUgIT09IHVuZGVmaW5lZCA/IG1hbmlmZXN0U3ViU2VjdGlvbi52aXNpYmxlIDogdHJ1ZSxcblx0XHRzaWRlQ29udGVudDogc2lkZUNvbnRlbnQsXG5cdFx0aXNWaXNpYmlsaXR5RHluYW1pYzogaXNEeW5hbWljRXhwcmVzc2lvblxuXHR9O1xuXHRpZiAobWFuaWZlc3RTdWJTZWN0aW9uLnRlbXBsYXRlIHx8IG1hbmlmZXN0U3ViU2VjdGlvbi5uYW1lKSB7XG5cdFx0c3ViU2VjdGlvbkRlZmluaXRpb24udHlwZSA9IFN1YlNlY3Rpb25UeXBlLlhNTEZyYWdtZW50O1xuXHRcdChzdWJTZWN0aW9uRGVmaW5pdGlvbiBhcyB1bmtub3duIGFzIFhNTEZyYWdtZW50U3ViU2VjdGlvbikudGVtcGxhdGUgPSBtYW5pZmVzdFN1YlNlY3Rpb24udGVtcGxhdGUgfHwgbWFuaWZlc3RTdWJTZWN0aW9uLm5hbWUgfHwgXCJcIjtcblx0fSBlbHNlIHtcblx0XHRzdWJTZWN0aW9uRGVmaW5pdGlvbi50eXBlID0gU3ViU2VjdGlvblR5cGUuUGxhY2Vob2xkZXI7XG5cdH1cblx0cmV0dXJuIHN1YlNlY3Rpb25EZWZpbml0aW9uIGFzIEN1c3RvbU9iamVjdFBhZ2VTdWJTZWN0aW9uO1xufVxuXG4vKipcbiAqIEV2YWx1YXRlIGlmIHRoZSBjb25kZW5zZWQgbW9kZSBjYW4gYmUgYXBwbGkzZWQgb24gdGhlIHRhYmxlLlxuICpcbiAqIEBwYXJhbSBjdXJyZW50RmFjZXRcbiAqIEBwYXJhbSBmYWNldHNUb0NyZWF0ZUluU2VjdGlvblxuICogQHBhcmFtIGNvbnZlcnRlckNvbnRleHRcbiAqIEByZXR1cm5zIGB0cnVlYCBmb3IgY29tcGxpYW50LCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZnVuY3Rpb24gZ2V0Q29uZGVuc2VkVGFibGVMYXlvdXRDb21wbGlhbmNlKFxuXHRjdXJyZW50RmFjZXQ6IEZhY2V0VHlwZXMsXG5cdGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uOiBGYWNldFR5cGVzW10sXG5cdGNvbnZlcnRlckNvbnRleHQ6IENvbnZlcnRlckNvbnRleHRcbik6IGJvb2xlYW4ge1xuXHRjb25zdCBtYW5pZmVzdFdyYXBwZXIgPSBjb252ZXJ0ZXJDb250ZXh0LmdldE1hbmlmZXN0V3JhcHBlcigpO1xuXHRpZiAobWFuaWZlc3RXcmFwcGVyLnVzZUljb25UYWJCYXIoKSkge1xuXHRcdC8vIElmIHRoZSBPUCB1c2UgdGhlIHRhYiBiYXNlZCB3ZSBjaGVjayBpZiB0aGUgZmFjZXRzIHRoYXQgd2lsbCBiZSBjcmVhdGVkIGZvciB0aGlzIHNlY3Rpb24gYXJlIGFsbCBub24gdmlzaWJsZVxuXHRcdHJldHVybiBoYXNOb090aGVyVmlzaWJsZVRhYmxlSW5UYXJnZXRzKGN1cnJlbnRGYWNldCwgZmFjZXRzVG9DcmVhdGVJblNlY3Rpb24pO1xuXHR9IGVsc2Uge1xuXHRcdGNvbnN0IGVudGl0eVR5cGUgPSBjb252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKTtcblx0XHRpZiAoZW50aXR5VHlwZS5hbm5vdGF0aW9ucz8uVUk/LkZhY2V0cz8ubGVuZ3RoICYmIGVudGl0eVR5cGUuYW5ub3RhdGlvbnM/LlVJPy5GYWNldHM/Lmxlbmd0aCA+IDEpIHtcblx0XHRcdHJldHVybiBoYXNOb090aGVyVmlzaWJsZVRhYmxlSW5UYXJnZXRzKGN1cnJlbnRGYWNldCwgZmFjZXRzVG9DcmVhdGVJblNlY3Rpb24pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gaGFzTm9PdGhlclZpc2libGVUYWJsZUluVGFyZ2V0cyhjdXJyZW50RmFjZXQ6IEZhY2V0VHlwZXMsIGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uOiBGYWNldFR5cGVzW10pOiBib29sZWFuIHtcblx0cmV0dXJuIGZhY2V0c1RvQ3JlYXRlSW5TZWN0aW9uLmV2ZXJ5KGZ1bmN0aW9uIChzdWJGYWNldCkge1xuXHRcdGlmIChzdWJGYWNldCAhPT0gY3VycmVudEZhY2V0KSB7XG5cdFx0XHRpZiAoc3ViRmFjZXQuJFR5cGUgPT09IFVJQW5ub3RhdGlvblR5cGVzLlJlZmVyZW5jZUZhY2V0KSB7XG5cdFx0XHRcdGNvbnN0IHJlZkZhY2V0ID0gc3ViRmFjZXQ7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRyZWZGYWNldC5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtIHx8XG5cdFx0XHRcdFx0cmVmRmFjZXQuVGFyZ2V0Py4kdGFyZ2V0Py50ZXJtID09PSBVSUFubm90YXRpb25UZXJtcy5QcmVzZW50YXRpb25WYXJpYW50IHx8XG5cdFx0XHRcdFx0cmVmRmFjZXQuVGFyZ2V0LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlNlbGVjdGlvblByZXNlbnRhdGlvblZhcmlhbnRcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuICE9PSB1bmRlZmluZWQgPyByZWZGYWNldC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiA6IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3Qgc3ViQ29sbGVjdGlvbkZhY2V0ID0gc3ViRmFjZXQgYXMgQ29sbGVjdGlvbkZhY2V0VHlwZXM7XG5cdFx0XHRcdHJldHVybiBzdWJDb2xsZWN0aW9uRmFjZXQuRmFjZXRzLmV2ZXJ5KGZ1bmN0aW9uIChmYWNldCkge1xuXHRcdFx0XHRcdGNvbnN0IHN1YlJlZkZhY2V0ID0gZmFjZXQgYXMgUmVmZXJlbmNlRmFjZXRUeXBlcztcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRzdWJSZWZGYWNldC5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLkxpbmVJdGVtIHx8XG5cdFx0XHRcdFx0XHRzdWJSZWZGYWNldC5UYXJnZXQ/LiR0YXJnZXQ/LnRlcm0gPT09IFVJQW5ub3RhdGlvblRlcm1zLlByZXNlbnRhdGlvblZhcmlhbnQgfHxcblx0XHRcdFx0XHRcdHN1YlJlZkZhY2V0LlRhcmdldD8uJHRhcmdldD8udGVybSA9PT0gVUlBbm5vdGF0aW9uVGVybXMuU2VsZWN0aW9uUHJlc2VudGF0aW9uVmFyaWFudFxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHN1YlJlZkZhY2V0LmFubm90YXRpb25zPy5VST8uSGlkZGVuICE9PSB1bmRlZmluZWQgPyBzdWJSZWZGYWNldC5hbm5vdGF0aW9ucz8uVUk/LkhpZGRlbiA6IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9KTtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BZ0VZQSxjQUFjO0VBQUEsV0FBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztJQUFkQSxjQUFjO0lBQWRBLGNBQWM7SUFBZEEsY0FBYztFQUFBLEdBQWRBLGNBQWMsS0FBZEEsY0FBYztFQUFBO0VBeUYxQixNQUFNQyxrQkFBNEIsR0FBRyx3TEFLcEM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNPLFNBQVNDLGlCQUFpQixDQUNoQ0MsZUFBNkIsRUFDN0JDLGdCQUFrQyxFQUNsQ0MsZUFBeUIsRUFDQTtJQUN6QjtJQUNBLE1BQU1DLGNBQWMsR0FBR0gsZUFBZSxDQUFDSSxNQUFNLENBQUMsQ0FBQ0QsY0FBNEIsRUFBRUUsZUFBZSxLQUFLO01BQ2hHLFFBQVFBLGVBQWUsQ0FBQ0MsS0FBSztRQUM1QjtVQUNDSCxjQUFjLENBQUNJLElBQUksQ0FBQ0YsZUFBZSxDQUFDO1VBQ3BDO1FBQ0Q7VUFDQztVQUNBO1VBQ0EsSUFBSUEsZUFBZSxDQUFDRyxNQUFNLENBQUNDLElBQUksQ0FBRUMsU0FBUyxJ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
|