Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@farris/bef

Package Overview
Dependencies
Maintainers
24
Versions
244
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@farris/bef - npm Package Compare versions

Comparing version 0.0.12-20220224135644-dev to 0.0.12-20220228112818-dev

2

bundles/farris-bef.umd.min.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@ecp-caf/caf-common"),require("date-fns"),require("rxjs"),require("rxjs/operators"),require("rxjs/operators/map"),require("@angular/core"),require("@angular/common/http"),require("@farris/devkit")):"function"==typeof define&&define.amd?define("@farris/bef",["exports","@ecp-caf/caf-common","date-fns","rxjs","rxjs/operators","rxjs/operators/map","@angular/core","@angular/common/http","@farris/devkit"],t):t((e.farris=e.farris||{},e.farris.bef={}),e.cafCommon,e.dateFns,e.rxjs,e.rxjs.operators,e.rxjs["operators/map"],e.ng.core,e.ng.common.http,e.devkit)}(this,function(e,t,r,b,d,s,i,h,I){"use strict";var S=(n.Added="Added",n.Modify="Modify",n.Deleted="Deleted",n);function n(){}var y=new i.InjectionToken("@farris/be BE_SERVER_URL"),a=new i.InjectionToken("@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"),C=(o.getPropInfo=function(e,t){var n,r,o,i=I.FieldMetadataUtil.getNgFields(e);Object.keys(i).forEach(function(e){e===t&&(n="NgField",r=null,o=i[e])});var a=I.FieldMetadataUtil.getNgObjects(e);Object.keys(a).forEach(function(e){e===t&&(n="NgObject",r=a[e].type,o=a[e])});var s=I.FieldMetadataUtil.getNgList(e);Object.keys(s).forEach(function(e){e===t&&(n="NgList",r=s[e].type,o=s[e])});var p=I.FieldMetadataUtil.getNgDynamic(e);return Object.keys(p).forEach(function(e){e===t&&(n="NgDynamic",r=p[e].type,o=p[e])}),{propType:n,propEntityType:r,propMetadata:o}},o.getPrimaryKey=function(e){var t=I.FieldMetadataUtil.getPrimaryFieldMetadata(e);return t?t.dataField:""},o.isObjectProp=function(e,t){var n=!1,r=I.FieldMetadataUtil.getNgObjects(e);return Object.keys(r).forEach(function(e){e===t&&(n=!0)}),n},o.isDynamicProp=function(e,t){var n=!1,r=I.FieldMetadataUtil.getNgDynamic(e);return Object.keys(r).forEach(function(e){e===t&&(n=!0)}),n},o.appendInitialData=function(e,t){var n=Object.assign({},t);delete n.id,delete n.parentID,e.initialData=n},o);function o(){}var p=(u.prototype.build=function(e){var t=this;return this.changeDetail={ChangeType:S.Modify,ChangeInfo:{DataId:""}},e.forEach(function(e){t.buildChangeDetail(e)}),this.changeDetail},u.prototype.buildChangeDetail=function(l){var d=l.path.concat();this.changeDetail.ChangeInfo.DataId||(this.changeDetail.ChangeInfo.DataId=d[0].split(":")[1]);for(var f=this.changeDetail,g=this.entityType,e=function(e){var t=v.getChangeInfo(f),n=d[e],r=C.getPropInfo(g,n),o=r.propType,i=r.propEntityType,a=r.propMetadata.dataField||n;if("NgField"===o){if(n===C.getPrimaryKey(g))return"continue";if(l.type!==I.ModifyType.ValueChange)throw Error("简单类型的属性上不支持ValueChange类型之外的变更");t[a]=l.value,f=null}else if("NgObject"===o)if(d[e+1].split(":")[1],d[e+1].split(":")[0]){var s=t[a],p=d.slice(0,e+1);s=(y=v.entityCollection.getEntityByPath(p))?y.toJSON(!0):{},t[a]=s,g=f=null}else c=(c=t[a])||{ChangeType:S.Modify,ChangeInfo:{}},t[a]=c,f=c,g=i;else if("NgList"===o){f.ChangeInfo[a]||(f.ChangeInfo[a]=[]);var u=f.ChangeInfo[a];if(e!==d.length-1){var c,h=d[e+1].split(":")[1];return(c=u.find(function(e){return e.ChangeInfo.DataId===h}))||(c=v.createEmptyChangeDetail(S.Modify,h),u.push(c)),f=c,g=i,"continue"}l.type===I.ModifyType.Add||l.type===I.ModifyType.Insert||(l.type,I.ModifyType.Remove),g=f=null}else if("NgDynamic"===o){p=d.slice(0,e+1);var y=v.entityCollection.getEntityByPath(p);t[a]={ChangeType:S.Modify,ChangeInfo:y?y.toJSON(!0):{}},g=f=null}},v=this,t=1;t<d.length&&f;t+=2)e(t)},u.prototype.getChangeInfo=function(e){return e.hasOwnProperty("ChangeInfo")?e.ChangeInfo:e},u.prototype.createEmptyChangeDetail=function(e,t){return{ChangeType:e,ChangeInfo:{DataId:t}}},u);function u(e,t){this.entityType=e,this.entityCollection=t}var c=(l.prototype.handle=function(e,t,n){this.handleChangeDetails(e,t,n)},l.prototype.handleChangeDetails=function(r,o,e){var i=this;e&&e.forEach(function(e){var t=e.ChangeInfo.dataId||e.ChangeInfo.DataId,n=i.getEntityById(o,t);n&&i.handleChangeDetail(r,n,e)})},l.prototype.handleChangeDetail=function(u,c,e){var h=this;if(e&&c&&e.ChangeType===S.Modify){var y=e.ChangeInfo;Object.keys(y).forEach(function(e){var t=C.getPropInfo(u,e),n=t.propType,r=t.propEntityType;if("NgField"===n)c[e]=y[e];else if("NgObject"===n){var o=c[e];if(o.primaryKey){var i=y[e];o.load(i)}else{var a=y[e];h.handleChangeDetail(r,o,a)}}else if("NgList"===n){var s=c[e],p=y[e];h.handleChangeDetails(r,s,p)}})}},l.prototype.getEntityById=function(e,t){return(e instanceof I.EntityCollection?e.getEntityById(t):e.get(t))||null},l);function l(){}var f=(g.prototype.getUserSessionId=function(){return this.sessionService.getUserSessionId()},g.prototype.getCurrentSessionId=function(e){var t,n=this.getRuntimeSessionId();if(n)return n;if(this.sessionService)if(e&&e.hasOwnProperty("tabId")){var r=e.tabId;t=this.sessionService.getCurrentSeesionId(r)}else t=this.sessionService.getCurrentSeesionId();return t=t||this.getUserSessionId()},g.prototype.getRuntimeSessionId=function(){var e=window.location.hash,t=this.parse(e);return t&&t.rsi||null},g.prototype.parse=function(e){return e?e.slice(e.indexOf("?")+1).split("&").reduce(function(e,t){var n,r=t.indexOf("="),o=t.slice(0,r),i=t.slice(r+1);return Object.assign(e,((n={})[o]=decodeURIComponent(i),n))},{}):{}},g.decorators=[{type:i.Injectable}],g.ctorParameters=function(){return[{type:t.SessionService,decorators:[{type:i.Optional}]}]},g);function g(e){this.sessionService=e}var v=(m.prototype.getItem=function(e){return this.getAllBeSessions()[e]},m.prototype.setItem=function(e,t){var n=this.getAllBeSessions();n[e]=t,this.setAllBeSessions(n)},m.prototype.removeItem=function(e){var t=this.getAllBeSessions();t[e]&&delete t[e],this.setAllBeSessions(t)},m.prototype.clear=function(e,t){!0===this.isInFramework()?this.removeItemsByFrmSessionId(e):this.removeItem(t)},m.prototype.removeItemsByFrmSessionId=function(t){var n=this.getAllBeSessions();Object.keys(n).forEach(function(e){!0===e.startsWith(t)&&delete n[e]}),this.setAllBeSessions(n)},m.prototype.getAllBeSessions=function(){var e=window.sessionStorage.getItem(this.sessionStorageKey);return e?JSON.parse(e):{}},m.prototype.setAllBeSessions=function(e){var t=JSON.stringify(e);window.sessionStorage.setItem(this.sessionStorageKey,t)},m.prototype.isInFramework=function(){var e=window.location.hash;return!!e&&-1!==e.indexOf("tabId=")},m);function m(){this.sessionStorageKey="BE_SESSION_ID"}var E=function(e,t){return(E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function x(e,t){function n(){this.constructor=e}E(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var B=function(){return(B=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)};function P(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function R(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,i=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(r=i.next()).done;)a.push(r.value)}catch(s){o={error:s}}finally{try{r&&!r.done&&(n=i["return"])&&n.call(i)}finally{if(o)throw o.error}}return a}function D(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(R(arguments[t]));return e}var w=(q.convertToHeaders=function(t){if(1==(t=t||new h.HttpHeaders)instanceof h.HttpHeaders)return t;if(0<Object.keys(t).length){var n=new h.HttpHeaders;Object.keys(t).forEach(function(e){n=n.append(e,t[e])}),t=n}else t=new h.HttpHeaders;return t},q.appendSessionId=function(e,t){return e.append("SessionId",t)},q.appendCafRuntimeCommonVariable=function(e,t){return e.append("X-CAF-Runtime-CommonVariable",t)},q.appendCafRuntimeContext=function(e,t){return e.append("X-CAF-Runtime-Context",t)},q.appendContextType=function(e,t){return t=t||"application/json",e.append("Content-Type",t)},q.appendRequireMessage=function(e,t){return void 0===t&&(t=!0),e.append("Bff-Require-Message",t.toString())},q.appendFuncInstId=function(e,t){return e.append("Func-Inst-Id",t)},q.toJson=function(n){if(!(n instanceof h.HttpHeaders))return null;var r={};return n.keys().forEach(function(e){var t=n.getAll(e);1<t.length?r[e]=t:r[e]=t[0]||""}),r},q);function q(){}var O=(T.buildParams=function(e){var t=new h.HttpParams;for(var n in e)if(e.hasOwnProperty(n)){var r=e[n].toString();t=t.append(n,r)}return t},T);function T(){}var M=(j.hasRequestInfo=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.requestInfo||!t.requestInfo.dataChange)||!!t.dataChange},j.hasRequestInfoWithR=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.RequestInfo||!t.RequestInfo.dataChange)||!!t.dataChange},j.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},j.buildBodyWithRequestInfo=function(e,t){if(e.RequestInfo||e.requestInfo)return e;var n=this.buildRequestInfo(t);return Object.assign({},e,{requestInfo:n})},j);function j(){}var A=(U.unWrapResponseInfo=function(e){if(!e)return e;if(!1===e.hasOwnProperty("returnValue"))return e.hasOwnProperty("result")&&e.hasOwnProperty("pagination")?e.result:e;var t=e.returnValue;return t&&t.hasOwnProperty("result")&&t.hasOwnProperty("pagination")?t.result:e.returnValue},U.isReported401Error=function(e){return 401===e.status},U.parseBackEndMessage=function(e){return e&&e.message&&Array.isArray(e.message)&&0<e.message.length?e.message:null},U.parseBackEndError=function(e){var t=e&&e.error;return t&&t.hasOwnProperty("extensionMessage")&&t.extensionMessage&&t.extensionMessage.hasOwnProperty("UIMsg")&&t.extensionMessage.UIMsg&&0<t.extensionMessage.UIMsg.length?JSON.parse(t.extensionMessage.UIMsg):null},U);function U(){}var V=(H.prototype.getService=function(){for(var e=window;!e.gspframeworkService&&e!==window.top&&this.isSameOrigin(e);)e=window.parent;return e.gspframeworkService&&e.gspframeworkService.rtf||{}},H.prototype.isSameOrigin=function(e){var t=window.location.host;try{if(e&&e.location&&"undefined"!=typeof e.location.host)return e.location.host===t}catch(n){return!1}return!1},Object.defineProperty(H.prototype,"params",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("session")&&"function"==typeof this.rtf.session.getCommonVariable?this.rtf.session.getCommonVariable():null},enumerable:!0,configurable:!0}),Object.defineProperty(H.prototype,"httpService",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("http")&&"function"==typeof this.rtf.http.request?this.rtf.http:null},enumerable:!0,configurable:!0}),H.prototype.request=function(e,t,n){return void 0===n&&(n={}),this.defaultHttpClient.request(e,t,n)},H.decorators=[{type:i.Injectable}],H.ctorParameters=function(){return[{type:h.HttpClient}]},H);function H(e){this.defaultHttpClient=e,this.httpClient=e,this.rtf=this.getService()}var k=(F.prototype.getFrmSessionId=function(e){return this.frmSessionService.getCurrentSessionId(e)},Object.defineProperty(F.prototype,"frmSessionId",{get:function(){return this.frmSessionService.getCurrentSessionId()},enumerable:!0,configurable:!0}),F.prototype.getFrameworkSessionId=function(e){return this.getFrmSessionId(e)},F.prototype.getSessionIdFromStorage=function(e){var t=this.getSessionStorageKey(e);return this.storageStrategy.getItem(t)},F);function F(e,t){this.storageStrategy=e,this.frmSessionService=t}var N,_=(x(L,N=k),L.prototype.getSessionId=function(){var e=this.getSessionIdFromStorage();return e?b.of(e):this.createSession()},L.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},L.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.clear(this.frmSessionId,e)},L.prototype.extendRequestHeaders=function(e,t){var n=this.getFrameworkSessionId(t),r=this.getSessionIdFromStorage(t);return e=w.appendCafRuntimeCommonVariable(e,n),r&&(e=w.appendCafRuntimeContext(e,r),e=w.appendSessionId(e,r)),e=w.appendFuncInstId(e,this.beSessionUri)},L.prototype.handleReponseHeaders=function(e){console.log(e)},L.prototype.createSession=function(){var t=this,e={responseType:"text"};return this.frmSessionId&&(this.injector.get(I.AppContext,null),e.headers=new h.HttpHeaders({SessionId:this.frmSessionId}),e.headers=e.headers.append("X-CAF-Runtime-CommonVariable",this.frmSessionId),e.headers=e.headers.append("Func-Inst-Id",this.beSessionUri),e.headers=w.toJson(e.headers)),this.httpService.request("POST",this.beSessionUri,e).pipe(d.tap(function(e){t.setSessionId(e)}))},L.prototype.extendHttpHeader=function(){},L.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+this.beSessionUri},L);function L(e,t,n,r,o){var i=N.call(this,e,t)||this;return i.beSessionUri=r,i.httpClient=n,i.httpService=new V(i.httpClient),i.injector=o,i}var K,G=(x(J,K=k),J.prototype.getSessionId=function(){var e=this.getSessionStorageKey(),t=this.storageStrategy.getItem(e);return b.of(t)},J.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},J.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.removeItem(e)},J.prototype.extendRequestHeaders=function(e,t){var n=this.getFrameworkSessionId(t),r=this.getSessionIdFromStorage(t),o=this.injector.get(I.AppContext,null);if(o){var i=o.Token;e=w.appendFuncInstId(e,i)}return e=w.appendCafRuntimeCommonVariable(e,n),r&&(e=w.appendCafRuntimeContext(e,r)),e},J.prototype.handleReponseHeaders=function(e){console.log(e)},J.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+this.beSessionUri},J);function J(e,t,n,r){var o=K.call(this,e,t)||this;return o.beSessionUri=n,o.injector=r,o}var z=(W.prototype.create=function(e,t,n,r,o){var i=this.createStorageStrategy(),a=this.createBeSessionUri(n);return"UnifiedSession"===e?new G(i,t,a,o):new _(i,t,r,a,o)},W.prototype.createStorageStrategy=function(){return new v},W.prototype.createBeSessionUri=function(e){return e+"/service/createsession"},W.decorators=[{type:i.Injectable}],W);function W(){}var Y=(Object.defineProperty(Q.prototype,"token",{get:function(){return this.handlingStrategy.getFrameworkSessionId()},enumerable:!0,configurable:!0}),Q.prototype.getBeSessionId=function(){return this.handlingStrategy.getSessionId()},Q.prototype.setBeSessionId=function(e){this.handlingStrategy.setSessionId(e),this.setSessionId(e)},Q.prototype.clearBeSessionId=function(){this.handlingStrategy.clearSessionId()},Q.prototype.extendRequestHeaders=function(e,t){return this.handlingStrategy.extendRequestHeaders(e,t)},Q.prototype.handleResponseHeaders=function(e){return this.handlingStrategy.handleReponseHeaders(e)},Q.prototype.createBeSession=function(){return this.handlingStrategy.createSession()},Q.prototype.setSessionId=function(e){var t=this.injector.get(I.AppContext,null,i.InjectFlags.Optional);t&&e&&t.params.set("sessionId",e)},Q.prototype.createHandlingStrategy=function(e,t,n,r){var o;return o=(o=e?e.get(a,null,i.InjectFlags.Optional):"SeparatedSession")||"SeparatedSession",(new z).create(o,n,r,t,e)},Q.decorators=[{type:i.Injectable}],Q.ctorParameters=function(){return[{type:h.HttpClient},{type:String},{type:f},{type:i.Injector}]},Q);function Q(e,t,n,r){this.beBaseUri=t,this.injector=r,this.handlingStrategy=this.createHandlingStrategy(r,e,n,t)}var X,Z="@farris/bef NG_VARIABLE",$=I.makePropDecorator(Z,function(e){return e}),ee=(x(te,X=I.Repository),Object.defineProperty(te.prototype,"restService",{get:function(){return this.dataService.restService},enumerable:!0,configurable:!0}),Object.defineProperty(te.prototype,"changeBuilder",{get:function(){return this.entityManager.changeBuilder},enumerable:!0,configurable:!0}),Object.defineProperty(te.prototype,"changeHandler",{get:function(){return this.entityManager.changeHandler},enumerable:!0,configurable:!0}),te.prototype.getList=function(){return this.dataService.getList(null,null,null,null)},te.prototype.getById=function(e){return this.dataService.getById(e)},te.prototype.updateById=function(e){return this.dataService.updateById(e)},te.prototype.create=function(e){return this.dataService.create(e)},te.prototype.append=function(e){return this.dataService.append(e)},te.prototype.appendByPath=function(e){return this.dataService.appendByPath(e)},te.prototype.removeById=function(e,t){return this.dataService.removeById(e,t)},te.prototype.removeByIds=function(e,t){return this.dataService.removeByIds(e,t)},te.prototype.removeByPath=function(e,t){return this.dataService.removeByPath(e,t)},te.prototype.updateChangesById=function(e){return this.dataService.updateChangesById(e)},te.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},te.prototype.updateAllChanges=function(){return this.dataService.updateAllChanges()},te.prototype.applyChanges=function(){return this.dataService.applyChanges()},te.prototype.updateDataAndVariableChanges=function(){var e={FilterConditions:[],SortConditions:[],IsUsePagination:!0,Pagination:{PageIndex:1,PageSize:1,PageCount:0,TotalCount:0}},t=JSON.stringify(e),n=this.restService.buildRequestInfo();if(this.isEmptyRequestInfo(n))return b.of(null);var r=this.restService.baseUri+"/extension/query?entityFilter="+t,o={body:n};return this.restService.invoke(r,"PUT",null,o,!1,!0,!0)},te.prototype.applyChangesById=function(e){return this.dataService.applyChangesById(e)},te.prototype.cancelChanges=function(e){return this.dataService.cancelChanges(e)},te.prototype.clearAllEntityChanges=function(){return this.entityManager.clearAllEntityChanges()},te.prototype.getDataChangeDetails=function(){return this.entityManager.buildAllEntityChangeDetails()},te.prototype.handleDataChangeDetails=function(e){return this.entityManager.handleDataChangeDetails(e)},te.prototype.getVariableChangeDetail=function(){return this.variableManager.buildChangeDetail()},te.prototype.handleVariableChangeDetail=function(e){this.variableManager.handleChangeDetail(e)},te.prototype.isEmptyRequestInfo=function(e){return!e||(!e.dataChange||e.dataChange.length<1)&&(!e.variableChange||Object.keys(e.variableChange).length<1)},te.decorators=[{type:i.Injectable}],te.ctorParameters=function(){return[]},te);function te(){return X.call(this)||this}var ne,re=(x(oe,ne=I.EntityManager),oe.prototype.buildAllEntityChangeDetails=function(){var n=this,r=[];return this.entityCollection.getAllEntities().forEach(function(e){if(0!==e.changes.length){var t=n.changeBuilder.build(e.changes);t&&t.ChangeInfo&&t.ChangeInfo.DataId&&r.push(t)}}),r},oe.prototype.buildEntityChangeDetailById=function(e){var t=this.entityCollection.getEntityById(e);return 0===t.changes.length?null:this.changeBuilder.build(t.changes)},oe.prototype.handleDataChangeDetails=function(e){this.changeHandler.handle(this.entityType,this.entityCollection,e)},oe.prototype.reset=function(){this.entityCollection.clear()},oe);function oe(e){var t=ne.call(this,e)||this;return t.changeBuilder=new p(t.entityCollection.entityType,t.entityCollection),t.changeHandler=new c,t}var ie=(ae.createEmpty=function(e,t){var n={ChangeType:e,ChangeInfo:{}};return t&&(n.ChangeInfo.DataId=t),n},ae.getChangeInfo=function(e){return!0===this.isChangeDetail(e)?e.ChangeInfo:e},ae.isChangeDetail=function(e){var t=Object.keys(e);return 2===t.length&&-1<t.indexOf("ChangeType")&&-1<t.indexOf("ChangeInfo")},ae);function ae(){}var se=(pe.prototype.handleChangeDetail=function(e){var o=this,i=e.ChangeInfo;Object.keys(i).forEach(function(e){var t=o.ngVariableMap.get(e);if(t){var n=t.mapping,r=i[e];o.innerValueMap.get(e)!==r&&(o.setValueToUIState(n,r),o.innerValueMap.set(e,r))}})},pe.prototype.buildChangeDetail=function(){var i=this,a=ie.createEmpty(S.Modify);return this.ngVariableMap.forEach(function(e,t){var n=e.mapping,r=i.getValueFromUIState(n),o=i.innerValueMap.get(t);!1===i.isValueEqual(r,o)&&(i.innerValueMap.set(t,r),i.appendToChangeInfo(a,t,r))}),0===Object.keys(a.ChangeInfo).length?null:a},pe.prototype.reset=function(){this.innerValueMap.clear()},pe.prototype.clearChanges=function(){var i=this;this.ngVariableMap.forEach(function(e,t){var n=e.mapping,r=i.getValueFromUIState(n),o=i.innerValueMap.get(t);!1===i.isValueEqual(r,o)&&i.innerValueMap.set(t,r)})},pe.prototype.appendToChangeInfo=function(e,t,n){if(!0===this.isUdtVariable(n)){var r=ie.createEmpty(S.Modify);r.ChangeInfo=n,e.ChangeInfo[t]=r}else e.ChangeInfo[t]=n},pe.prototype.getValueFromUIState=function(e){var t=this.getRootUIState(),n=e.split(".").reduce(function(e,t){return e?e[t]:null},t);return n instanceof Date?r.format(n,"yyyy-MM-dd HH:mm:ss"):n},pe.prototype.getRootUIState=function(){var e=this.appContext.frameContextManager.getRootFrameContext();if(this.injector){var t=this.injector.get(I.FrameContext,null);t&&(e=t.getVirtualRootFrameContext()||e)}if(e)return e.uiState},pe.prototype.isValueEqual=function(e,t){return JSON.stringify(e)===JSON.stringify(t)},pe.prototype.isUdtVariable=function(e){return e&&e.constructor&&"[object Object]"===e.toString()&&e.constructor.prototype.hasOwnProperty("isPrototypeOf")},pe.prototype.setValueToUIState=function(e,t){this.getRootUIState()[e]=t},pe.ctorParameters=function(){return[{type:I.AppContext},{type:undefined},{type:i.Injector,decorators:[{type:i.Optional}]}]},pe);function pe(e,t,n){var r=this;this.appContext=e,this.ngVariables=t,this.injector=n,this.ngVariableMap=new Map,this.innerValueMap=new Map,Object.keys(t).forEach(function(e){r.ngVariableMap.set(e,t[e])})}var ue=(ce.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},ce);function ce(){}var he=(ye.convertToPathArray=function(e,t){var r=this,n=I.BindingPathConverter.toBindingPathArray(e),o=[],i=t.list.currentItem;return o.push(i.primaryKeyValue),n.forEach(function(e){var t=I.PropertyUtil.getPropertyByName(i.properties,e);if(t.type!==I.BindingPropertyType.List)throw new Error(t.name+"不是子表对应的属性");var n=i[e];i=n.currentItem,o.push(r.trimTrailingS(e)),o.push(i.primaryKeyValue)}),o},ye.convertToPathUrl=function(e,t){var n=this.convertToPathArray(e,t);return n.pop(),"/"+n.join("/")},ye.convertToObjectCodes=function(e,t){for(var n=this.convertToPathArray(e,t),r=n.length,o=[],i=1;i<r;i+=2)o.push(n[i]);return o},ye.convertToDataIdsForUpdate=function(e,t){for(var n=this.convertToPathArray(e,t),r=n.length,o=[],i=0;i<r;i+=2)o.push(n[i]);return o},ye.convertToDataIdsForAdd=function(e,t){var n=this.convertToDataIdsForUpdate(e,t);return n.pop(),n},ye.convertPathToUrl=function(e){for(var t=e.split("/"),n=t.length-1;0<n;n--)t[n]&&t[n].endsWith("s")&&(t[n]=t[n].substr(0,t[n].length-1).toLowerCase());return t.join("/")},ye.trimTrailingS=function(e){return e.substr(0,e.length-1)},ye.convertPathsToNodeCodes=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1===e.indexOf(":")}).forEach(function(e){t.push(e)}),t},ye.convertPathsToIds=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1!==e.indexOf(":")}).forEach(function(e){t.push(e.split(":")[1])}),t},ye);function ye(){}var le=(Object.defineProperty(de.prototype,"restProxy",{get:function(){return this.repository.restService.proxy},enumerable:!0,configurable:!0}),de.prototype.getList=function(e,t,n,r){var p=this;0!==n&&(n=n||this.repository.entityCollection.pageSize,r=r||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(e,t,n,r),i=this.restService.buildRequestInfo();return this.restProxy.extendQuery(o,i).pipe(d.map(function(e){var t=e.returnValue,n=t.result,r=[];n.forEach(function(e){var t=p.repository.buildEntity(e);C.appendInitialData(t,e),r.push(t)});var o=t.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:r.length});return p.repository.entityCollection.loadEntities(r),r}))},de.prototype.filter=function(e,t,n,r){var p=this;0!==n&&(n=n||this.repository.entityCollection.pageSize,r=r||this.repository.entityCollection.pageIndex);var o=this.buildEntityFilter(e,t,n,r),i=this.restService.buildRequestInfo();return this.restProxy.filter(o,i).pipe(d.map(function(e){var t=e.returnValue,n=t.result,r=[];n.forEach(function(e){var t=p.repository.buildEntity(e);C.appendInitialData(t,e),r.push(t)});var o=t.pagination;if(o&&0<Object.keys(o).length){var i=o.pageSize,a=o.pageIndex,s=o.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:i,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:r.length});return p.repository.entityCollection.loadEntities(r),r}))},de.prototype.buildEntityFilter=function(e,t,n,r){return e||t||n||r?(e&&0<e.length&&(e[e.length-1].Relation=0),{FilterConditions:e,SortConditions:t,IsUsePagination:0!==n,Pagination:{PageIndex:r,PageSize:n,PageCount:0,TotalCount:0}}):null},de.prototype.getById=function(e){var r=this,t=this.restService.buildRequestInfo();return this.restService.extendRetrieve(e,t).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntity(t);return r.repository.entityCollection.loadEntities([n]),n}))},de.prototype.getPagedById=function(o){var i=this,e=this.restService.buildRequestInfo(),t=this.repository.entityCollection.getPaginationConfigByPath("/"),n=this.buildChildPagination(t),r=this.buildRetrieveParam(n);return this.restService.serviceRetrieve(o,r,e).pipe(d.map(function(e){var t=e.dataResult,n=e.paginations;i.updatePagination(n);var r=i.repository.entityCollection.getEntityById(o);return i.reloadEntityData(r,t),r}))},de.prototype.queryChild=function(s,e,t,n,r){var p=this,o=this.restService.buildRequestInfo(),u=he.convertPathsToNodeCodes(s),i=u.map(function(e){return e.substring(0,e.length-1)}),a=he.convertPathsToIds(s),c=B({nodeCodes:i,ids:a,pagination:{pageIndex:e,pageSize:t}},o),h=u[u.length-1];return h=h.substring(0,h.length-1),this.restService.queryChild(c).pipe(d.map(function(e){console.log(e);var t=e.returnValue;if(!t)return null;var n=t.result,r=void 0===n?[]:n,o=t.pagination,i=void 0===o?{}:o,a=[];r.forEach(function(e){var t=new(I.FieldMetadataUtil.getNgList(p.repository.entityType)[u[u.length-1]].type)(e);C.appendInitialData(t,e),a.push(t)}),u=u.map(function(e){return e.charAt(0).toLocaleLowerCase()+e.substr(1)}),p.repository.entityCollection.resetEntities(s,a),p.repository.entityCollection.setPaginationConfigByPath("/"+h,i)}))},de.prototype.buildChildPagination=function(n){var r={};return Object.keys(n).forEach(function(e){var t=n[e];"object"==typeof t&&(r[e]=t)}),r},de.prototype.updatePagination=function(t){var n=this;t&&Object.keys(t).forEach(function(e){n.repository.entityCollection.setPaginationConfigByPath("/"+e,t[e])})},de.prototype.buildRetrieveParam=function(r){var e={};if(r&&0<Object.keys(r).length){var o=[];Object.keys(r).forEach(function(e){var t=r[e],n={};n[e]={pagination:{pageSize:t.pageSize||0,pageIndex:1}},o.push(n)}),e.filters=o}return e},de.prototype.editById=function(r){var o=this;if(!this.repository.entityCollection.getEntityById(r))return b.of(null);var e=ue.buildRequestInfo(this.repository);return this.restProxy.edit(r,e).pipe(d.map(function(e){var t=e.returnValue.data,n=o.repository.entityCollection.getEntityById(r);return n&&t&&o.reloadEntityData(n,t),n}))},de.prototype.updateById=function(r){var o=this;if(!this.repository.entityCollection.getEntityById(r))return b.of(null);var e=this.restService.buildRequestInfo();return this.restService.extendRetrieve(r,e).pipe(d.map(function(e){var t=e.returnValue,n=o.repository.entityCollection.getEntityById(r);return o.reloadEntityData(n,t),n}))},de.prototype.reloadEntityData=function(e,t){e&&(this.appContext.changeDetectionController.detach(),this.repository.entityCollection.updateEntity(e,t),e.changes.splice(0,e.changes.length),this.appContext.changeDetectionController.reattach())},de.prototype.create=function(e){var r=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntity(t);return C.appendInitialData(n,t),r.repository.entityCollection.loadEntities([n],!0),n}))},de.prototype.append=function(e){var r=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntity(t);return r.repository.entityCollection.addEntity(n),n}))},de.prototype.insert=function(r,e){var o=this,t=this.buildRequestInfo();return this.restProxy.create(e,t).pipe(d.map(function(e){var t=e.returnValue,n=o.repository.buildEntity(t);return o.repository.entityCollection.insertEntity(n,r),n}))},de.prototype.appendByPath=function(n){var r=this,e=this.restService.buildRequestInfo();return this.restService.createByPath(n,e).pipe(d.map(function(e){var t=e.returnValue;return r.repository.entityManager.appendEntityByPath(n,t,t)}))},de.prototype.insertByPath=function(n,r){var o=this,e=this.buildRequestInfo();return this.restProxy.createByPath(n,e).pipe(d.map(function(e){var t=e.returnValue;return o.repository.entityManager.insertEntityByPath(n,t,t,r)}))},de.prototype.removeById=function(e,t){var n=this;t=t===undefined||t;var r=ue.buildRequestInfo(this.repository);return t?this.restProxy.deleteAndSave(e,r).pipe(d.switchMap(function(){return n.repository.entityCollection.removeEntityById(e),b.of(!0)})):this.restService.extendDelete(e,r).pipe(d.switchMap(function(){return n.repository.entityCollection.removeEntityById(e),n.repository.dataChangeHistory.addChange({dataId:e,changeType:I.DataChangeType.Delete}),b.of(!0)}))},de.prototype.removeAndSaveById=function(e){var t=this,n=ue.buildRequestInfo(this.repository);return this.restProxy.deleteAndSave(e,n).pipe(d.switchMap(function(){return t.repository.entityCollection.removeEntityById(e),b.of(!0)}))},de.prototype.removeByIds=function(n,e){var r=this;e=e===undefined||e;var t=this.restService.buildRequestInfo();return this.restService.extendBatchDelete(n,t).pipe(d.switchMap(function(){if(e)return r.applyChangesByIdArray(n).pipe(d.tap(function(e){e&&r.repository.entityCollection.removeEntities(function(e){return r.checkEntityValueExists(e,n)})}));if(r.repository.entityCollection.removeEntities(function(e){return r.checkEntityValueExists(e,n)}),n&&0<n.length){var t=[];n.forEach(function(e){t.push({dataId:e,changeType:I.DataChangeType.Delete})}),r.repository.dataChangeHistory.addChanges(t)}return b.of(!0)}))},de.prototype.batchRemove=function(t,e){var n=this,r=this.restService.buildRequestInfo();return this.restService.extendBatchDeletion(t,r).pipe(d.switchMap(function(){return e?n.applyChangesByIdArray(t).pipe(d.tap(function(e){e&&n.removeEntities(t)})):(n.removeEntities(t),n.addBatchRemoveHistory(t),b.of(!0))}))},de.prototype.addBatchRemoveHistory=function(e){if(e&&0<e.length){var t=[];e.forEach(function(e){t.push({dataId:e,changeType:I.DataChangeType.Delete})}),this.repository.dataChangeHistory.addChanges(t)}},de.prototype.removeEntities=function(t){var n=this;this.repository.entityCollection.removeEntities(function(e){return n.checkEntityValueExists(e,t)})},de.prototype.checkEntityValueExists=function(e,t){for(var n=!1,r=0;r<t.length;r++)if(e.primaryValue===t[r]){n=!0;break}return n},de.prototype.removeByPath=function(e,t){var n=this,r=this.restService.buildRequestInfo();return this.restService.extendDeletByPath(e,t,r).pipe(d.map(function(){return n.repository.entityManager.removeEntityByPath(e,t),n.repository.dataChangeHistory.addChange({fpath:e,dataId:t,changeType:I.DataChangeType.Delete}),!0}))},de.prototype.batchRemoveByPath=function(t,n){var r=this,e=this.restService.buildRequestInfo();return this.restService.batchDeleteByPath(t,n,e).pipe(d.map(function(){var e=n.split(",");return 0<e.length&&e.forEach(function(e){r.repository.entityManager.removeEntityByPath(t,e),r.repository.dataChangeHistory.addChange({fPath:t,dataId:e,changeType:I.DataChangeType.Delete})}),!0}))},de.prototype.updateChangesById=function(e){var t=this,n=this.repository.entityCollection.getEntityById(e);if(!n.changes)return b.of(!0);if(0===n.changes.length)return b.of(!0);var r=this.repository.entityManager.buildEntityChangeDetailById(e),o=this.restService.buildRequestInfo();return this.restService.update(r,o).pipe(d.tap(function(){t.repository.entityManager.clearEntityChangesById(e)}),d.map(function(){return!0}))},de.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},de.prototype.updateAllChanges=function(){var n=this,r=[],e=this.repository.entityCollection.toArray();return 0===e.length?b.of(!0):(e.forEach(function(e){var t=n.updateChangesById(e.primaryValue);r.push(t)}),b.zip.apply(void 0,D(r)).pipe(d.map(function(){return!0})))},de.prototype.applyChanges=function(){var e=this,t=this.restService.buildRequestInfo();return this.restService.save(t).pipe(d.tap(function(){e.repository.entityManager.clearAllEntityChanges(),e.repository.dataChangeHistory.clear()}),d.map(function(){return!0}))},de.prototype.applyChangesByIdArray=function(e){var t=this,n=this.restService.buildRequestInfo();return this.restService.save(n).pipe(d.tap(function(){t.repository.entityManager.clearEntityChangesByArray(e),t.repository.dataChangeHistory.clearByIds(e)}),d.map(function(){return!0}))},de.prototype.applyChangesById=function(e){var t=this,n=this.restService.buildRequestInfo();return this.restService.save(n).pipe(d.tap(function(){t.repository.entityManager.clearEntityChangesById(e),t.repository.dataChangeHistory.clearByIds([e])}),d.map(function(){return!0}))},de.prototype.cancelChanges=function(e){var t=this;return this.restService.cancel(e).pipe(d.tap(function(){t.repository.entityManager.clearAllEntityChanges(),t.repository.dataChangeHistory.clear()}),d.map(function(){return!0}))},de.prototype.batchAppendByPath=function(o,e){var i=this,t=this.buildRequestInfo();return this.restProxy.batchAppendByPath(o,e,t).pipe(d.map(function(e){var t=e.returnValue,n=i.repository.entityManager.createEntitiesByPath(o,t),r=o.split("/").filter(function(e){return e});return i.repository.entityManager.appendEntitiesByPath(r,n),n}))},de.prototype.batchAppend=function(e){var r=this,t=this.buildRequestInfo();return this.restProxy.batchAppend(e,t).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntities(t);return r.repository.entityCollection.addEntities(n),n}))},de.prototype.buildRequestInfo=function(){return{dataChange:this.repository.entityManager.buildAllEntityChangeDetails(),variableChange:this.repository.variableManager.buildChangeDetail()}},de);function de(e,t){this.injector=e,this.repository=t;var n=e.get(f),r=e.get(h.HttpClient),o=e.get(y)+"/"+this.repository.apiUri,i=e.get(I.EventBus);this.restService=new Oe(r,o,n,this.repository,i),this.appContext=e.get(I.AppContext)}var fe=(ge.handleMessage=function(e,t,n){var r={ns:t.get(I.NAMESPACE,null),appContext:t.get(I.AppContext,null)},o=this.buildBackEndMessages(e),i=new I.BackEndMessage.Message(o,r),a=t.get(I.BACK_END_MESSAGE_HANDLER_TOKEN,null);a&&a.handle(i,n)},ge.isBackEndMessageHandlerExist=function(e){return!!e.get(I.BACK_END_MESSAGE_HANDLER_TOKEN,null)},ge.getFormlessMessages=function(e){return(this.buildBackEndMessages(e)||[]).filter(function(e){return!e.location||!e.location.columns||e.location.columns.length<1||!e.location.nodeCode})},ge.buildBackEndMessages=function(e){if(!e||e.length<1||!Array.isArray(e))return null;var n=[];return e.forEach(function(e){var t={level:e.level,message:e.message};e.hasOwnProperty("location")&&e.location&&(t.location={nodeCode:e.location.nodeCode,rows:e.location.dataIds,columns:e.location.columnNames}),n.push(t)}),n},ge);function ge(){}var ve=(Ie.getSessionId=function(e,t){var n=e.ApplicationId+"_"+t.beBaseUri;return this.createSessionHistory.includes(n)?b.of(null):(this.createSessionHistory.push(n),t.getBeSessionId())},Ie.createSessionHistory=[],Ie.decorators=[{type:i.Injectable}],Ie);function Ie(){}var Se=(be.prototype.onResponse=function(e,t){e&&e.innerDataChange&&!0!==t&&this.context.handleDataChangeDetails(e.innerDataChange),e&&e.innerVariableChange&&this.context.handleVariableChangeDetail(e.innerVariableChange);var n=A.parseBackEndMessage(e);return fe.handleMessage(n,this.context.getInjector()),this.context.clearAllEntityChanges(),e&&e.hasOwnProperty("returnValue")?e.returnValue:e},be.prototype.onError=function(e,t,n){var r,o,i=this.context.appContext.getFormAppContext(),a=i.ApplicationId,s=window.DEVKIT_LOADING_SERVICE,p=A.parseBackEndError(e);if(fe.handleMessage(p,this.context.getInjector()),s&&s instanceof Array&&0<s.length)try{for(var u=P(s),c=u.next();!c.done;c=u.next()){var h=c.value;"function"==typeof h.clearAll&&h.clearAll()}}catch(S){r={error:S}}finally{try{c&&!c.done&&(o=u["return"])&&o.call(u)}finally{if(r)throw r.error}}if(t)return b.throwError(e);var y=this.context.restService.eventBus,l=!!(window[a]||{}).isExceptionHandlerExist,d=A.parseBackEndError(e),f=fe.getFormlessMessages(d),g=f&&0<f.length||!1,v=!(e&&e.error&&e.error.extensionMessage&&fe.isBackEndMessageHandlerExist(this.context.getInjector())&&!g),I=!!y&&l&&v;return fe.handleMessage(d,this.context.getInjector(),{hasThrowError:I,isException:!0,eventBus:y,error:e,formAppContext:i}),y&&l&&!A.isReported401Error(e)?(v&&y.post("Exception","","onException",e,i),n?b.of(null):b.EMPTY):b.throwError(e)},be.prototype.extendHeaders=function(t,n){var r=this,e=this.context.appContext.getFormAppContext();return ve.getSessionId(e,this.context.restService.sessionService).pipe(d.switchMap(function(e){return t=r.context.restService.sessionService.extendRequestHeaders(t,n),b.of(t)}))},be.prototype.extendUrl=function(e,t){if(!t)return e;for(var n in t)if(t.hasOwnProperty(n)){var r=JSON.stringify(t[n]);e=-1===e.indexOf("?")?e+"?"+n+"="+r:e+"&"+n+"="+r}return e},be.prototype.extendBody=function(t){var n=this;return!t||"object"!=typeof t||Object.keys(t).length<1||(Object.keys(t).forEach(function(e){"requestInfo"===e&&(t.requestInfo=n.context.restService.buildRequestInfo())}),1===Object.keys(t).length&&(t=Object.values(t)[0])),t},be.prototype.parseHeaders=function(e){var t="BEFSessionID";e.headers&&e.headers.has(t)&&this.context.restService.sessionService.setBeSessionId(e.headers.get(t))},be);function be(e){this.context=e}var Ce,me=(x(Ee,Ce=ee),Object.defineProperty(Ee.prototype,"proxy",{get:function(){return this.befProxy},set:function(e){this.befProxy=e,this.befProxy.setProxyExtend(new Se(this))},enumerable:!0,configurable:!0}),Ee.prototype.getEntities=function(e,t,n,r){return this.dataService.getList(e,t,n,r)},Ee.prototype.filter=function(e,t,n,r){return void 0===e&&(e=[]),void 0===t&&(t=[]),this.dataService.filter(e,t,n,r)},Ee.prototype.getPagedById=function(e){return this.dataService.getPagedById(e)},Ee.prototype.queryChild=function(e,t,n,r,o){return this.dataService.queryChild(e,t,n,r,o)},Ee.prototype.getEntityById=function(e){return this.dataService.getById(e)},Ee.prototype.updateEntityById=function(e){return this.dataService.updateById(e)},Ee.prototype.editEntityById=function(e){return this.dataService.editById(e)},Ee.prototype.createEntity=function(e){return this.dataService.create(e)},Ee.prototype.appendEntity=function(e){return this.dataService.append(e)},Ee.prototype.insert=function(e,t){return this.dataService.insert(e,t)},Ee.prototype.insertByPath=function(e,t){return this.dataService.insertByPath(e,t)},Ee.prototype.appendEntityByPath=function(e){return this.dataService.appendByPath(e)},Ee.prototype.removeEntityById=function(e,t){return this.dataService.removeById(e,t)},Ee.prototype.removeEntityAndSaveById=function(e){return this.dataService.removeAndSaveById(e)},Ee.prototype.removeEntityByPath=function(e,t){return this.dataService.removeByPath(e,t)},Ee.prototype.batchRemove=function(e,t){return void 0===t&&(t=!1),this.dataService.batchRemove(e,t)},Ee.prototype.batchRemoveByPath=function(e,t){return this.dataService.batchRemoveByPath(e,t)},Ee.prototype.saveEntityById=function(e){return this.dataService.applyChangesById(e)},Ee.prototype.saveEntities=function(){return this.dataService.applyChanges()},Ee.prototype.cancelEntityChanges=function(){return this.dataService.cancelChanges()},Ee.prototype.batchAppendByPath=function(e,t){return this.dataService.batchAppendByPath(e,t)},Ee.prototype.batchAppend=function(e){return this.dataService.batchAppend(e)},Ee.prototype.reset=function(){this.entityManager.reset(),this.variableManager.reset(),this.restService.sessionService.clearBeSessionId()},Ee.prototype.getInjector=function(){return this.injector},Ee.prototype.clearAllVariableChanges=function(){},Ee.decorators=[{type:i.Injectable}],Ee.ctorParameters=function(){return[{type:i.Injector}]},Ee);function Ee(e){var t=Ce.call(this)||this;t.injector=e,t.entityCollection&&(t.entityManager=new re(t.entityCollection)),t.appContext=t.injector.get(I.AppContext);var n=I.MetadataUtil.getPropsMetadatasByName(t.constructor,Z);return t.variableManager=new se(t.appContext,n,t.injector),t.dataService=new le(t.injector,t),t.serverUri=e.get(y),t}var xe=(Be.prototype.extendUri=function(e){return this.serverUri+"/"+e},Be.decorators=[{type:i.Injectable}],Be.ctorParameters=function(){return[{type:String,decorators:[{type:i.Inject,args:[y]}]}]},Be);function Be(e){this.serverUri=e}var Pe="DELETE",Re="PUT",De="POST",we=(qe.prototype.setBaseUri=function(e){this.baseUri=e},qe.prototype.setProxyExtend=function(e){this.proxyExtend=e},qe.prototype.query=function(e){var t=this.baseUri;return e&&(t=t+"?entityFilter="+JSON.stringify(e)),this.request(t,"GET")},qe.prototype.extendQuery=function(e,t){var n=this.baseUri+"/extension/query";if(e){var r=JSON.stringify(e);n=n+"?entityFilter="+(r=I.encodeUrl(r))}var o=t,i=this.addBodyToOptions({},o);return this.request(n,Re,null,i,!1)},qe.prototype.filter=function(e,t){var n=this.baseUri+"/extension/filter",r={requestInfo:t};e&&(r={entityFilter:e,requestInfo:t});var o=this.addBodyToOptions({},r);return this.request(n,De,null,o,!1)},qe.prototype.retrieve=function(e){var t=this.baseUri+"/"+e;return this.request(t,"GET")},qe.prototype.serviceRetrieve=function(e,t,n){var r=this.baseUri+"/service/retrieve/"+e,o={body:{retrieveParam:t,requestInfo:n}};return this.request(r,Re,null,o)},qe.prototype.queryChild=function(e){var t=this.baseUri+"/service/querychild",n={body:e};return this.request(t,Re,null,n)},qe.prototype.extendRetrieve=function(e,t){var n=this.baseUri+"/extension/retrieve/"+e,r=t,o=this.addBodyToOptions({},r);return this.request(n,Re,null,o)},qe.prototype.edit=function(e,t){var n=this.baseUri+"/service/edit/"+e,r=t,o=this.addBodyToOptions({},r);return this.request(n,Re,null,o)},qe.prototype.create=function(e,t){var n={defaultValue:e,requestInfo:t},r=this.addBodyToOptions({},n);return this.request(this.baseUri,De,null,r)},qe.prototype.createByPath=function(e,t){var n=he.convertPathToUrl(e),r=""+this.baseUri+n,o=t,i=this.addBodyToOptions({},o);return this.request(r,De,null,i)},qe.prototype.update=function(e,t){var n={changeDetail:e,requestInfo:t},r=this.addBodyToOptions({},n);return this.request(this.baseUri,"PATCH",null,r)},qe.prototype.save=function(e){var t=e,n=this.addBodyToOptions({},t);return this.request(this.baseUri,Re,null,n)},qe.prototype["delete"]=function(e){var t=this.baseUri+"/"+e;return this.request(t,Pe)},qe.prototype.deleteAndSave=function(e,t){var n=this.baseUri+"/service/delete/"+e,r=t,o=this.addBodyToOptions({},r);return this.request(n,Re,null,o)},qe.prototype.extendDelete=function(e,t){var n=this.baseUri+"/extension/delete/"+e,r=t,o=this.addBodyToOptions({},r);return this.request(n,Re,null,o)},qe.prototype.deletByPath=function(e,t){var n=he.convertPathToUrl(e),r=""+this.baseUri+n+"/"+t;return this.request(r,Pe)},qe.prototype.extendDeletByPath=function(e,t,n){var r=he.convertPathToUrl(e),o=this.baseUri+"/extension"+r+"/"+t,i=n,a=this.addBodyToOptions({},i);return this.request(o,Re,null,a)},qe.prototype.batchDeleteByPath=function(e,t,n){var r=he.convertPathToUrl(e);if(r.split("/").length<3)throw Error("根据path删除实体数据出错了。传入的path["+e+"]格式不对");var o=this.baseUri+"/extension"+r+"/batch",i={ids:t.split(","),requestInfo:n},a=this.addBodyToOptions({},i);return this.request(o,Re,null,a)},qe.prototype.batchDelete=function(e){var t={ids:e.join(",")};return this.request(this.baseUri,Pe,t)},qe.prototype.extendBatchDeletion=function(e,t){var n=this.baseUri+"/extension/batchdeletion",r={ids:e,requestInfo:t},o=this.addBodyToOptions({},r);return this.request(n,Re,null,o)},qe.prototype.extendBatchDelete=function(e,t){var n=this.baseUri+"/extension/batchdelete",r={ids:e.join(",")},o=t,i=this.addBodyToOptions({},o);return this.request(n,Re,r,i)},qe.prototype.cancel=function(e){var t=this.baseUri+"/service/cancel";return this.request(t,De,null,null,!1,!1,!1,e)},qe.prototype.batchAppendByPath=function(e,t,n){var r=he.convertPathToUrl(e),o=""+this.baseUri+r+"/batch",i={requestInfo:n,retrieveDefaultParam:{defaultValues:t}},a=this.addBodyToOptions({},i);return this.request(o,De,null,a)},qe.prototype.batchAppend=function(e,t){var n=this.baseUri+"/batch",r={requestInfo:t,retrieveDefaultParam:{defaultValues:e}},o=this.addBodyToOptions({},r);return this.request(n,De,null,o)},qe.prototype.request=function(t,n,e,r,o,i,a,s){var p=this;r=r||{},void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),e&&(r.params=e),r.headers=w.convertToHeaders(r.headers);var u=this.hasRequestInfo(r);return r&&r.body&&r.body.hasOwnProperty("RequestInfo")&&(r.body.requestInfo=r.body.RequestInfo,delete r.body.RequestInfo),this.proxyExtend.extendHeaders(r.headers,s).pipe(d.switchMap(function(e){return r.headers=w.toJson(e),r.observe="response",p.httpService.request(n,t,r)}),d.tap(function(e){return p.proxyExtend.parseHeaders(e)}),d.map(function(e){return e.body}),d.map(function(e){return u?(p.proxyExtend.onResponse(e,a),e):p.unWrapResponseInfo(e)}),d.catchError(function(e){return p.proxyExtend.onError(e,o,i)}))},qe.prototype.invoke=function(t,n,r){var o=this;return r.params&&(t=this.proxyExtend.extendUrl(t,r.params),r.params=null),r.body&&(r.body=this.proxyExtend.extendBody(r.body)),r.headers=w.convertToHeaders(r.headers),this.proxyExtend.extendHeaders(r.headers).pipe(d.switchMap(function(e){return r.headers=w.toJson(e),r.observe="response",o.httpService.request(n,t,r).pipe(d.tap(function(e){return o.proxyExtend.parseHeaders(e)}),d.map(function(e){return e.body}),d.map(function(e){return o.proxyExtend.onResponse(e)}),d.catchError(function(e){return o.proxyExtend.onError(e,!1,!1)}))}))},qe.prototype.addBodyToOptions=function(e,t){return e=e||{},Object.assign(e,{body:t})},qe.prototype.buildParams=function(e){return O.buildParams(e)},qe.prototype.hasRequestInfo=function(e){return M.hasRequestInfo(e)||M.hasRequestInfoWithR(e)},qe.prototype.unWrapResponseInfo=function(e){return A.unWrapResponseInfo(e)},qe.decorators=[{type:i.Injectable}],qe.ctorParameters=function(){return[{type:h.HttpClient},{type:xe}]},qe);function qe(e,t){this.httpClient=e,this.uriService=t,this.httpService=new V(this.httpClient)}var Oe=(Object.defineProperty(Te.prototype,"proxy",{get:function(){return this.repository.proxy?this.repository.proxy:this.createBefProxy()},enumerable:!0,configurable:!0}),Te.prototype.createBefProxy=function(){var e=this.repository.serverUri,t=new xe(e),n=new we(this.httpClient,t);n.setBaseUri(this.baseUri);var r=new Se(this.repository);return n.setProxyExtend(r),n},Te.prototype.query=function(e){return this.proxy.query(e)},Te.prototype.extendQuery=function(e,t){return this.proxy.extendQuery(e,t)},Te.prototype.serviceRetrieve=function(e,t,n){return this.proxy.serviceRetrieve(e,t,n)},Te.prototype.queryChild=function(e){return this.proxy.queryChild(e)},Te.prototype.retrieve=function(e){return this.proxy.retrieve(e)},Te.prototype.extendRetrieve=function(e,t){return this.proxy.extendRetrieve(e,t)},Te.prototype.create=function(e,t){return this.proxy.create(e,t)},Te.prototype.createByPath=function(e,t){return this.proxy.createByPath(e,t)},Te.prototype.update=function(e,t){return this.proxy.update(e,t)},Te.prototype.save=function(e){return this.proxy.save(e)},Te.prototype["delete"]=function(e){return this.proxy["delete"](e)},Te.prototype.extendDelete=function(e,t){return this.proxy.extendDelete(e,t)},Te.prototype.deletByPath=function(e,t){return this.proxy.deletByPath(e,t)},Te.prototype.extendDeletByPath=function(e,t,n){return this.proxy.extendDeletByPath(e,t,n)},Te.prototype.batchDeleteByPath=function(e,t,n){return this.proxy.batchDeleteByPath(e,t,n)},Te.prototype.batchDelete=function(e){return this.proxy.batchDelete(e)},Te.prototype.extendBatchDelete=function(e,t){return this.proxy.extendBatchDelete(e,t)},Te.prototype.extendBatchDeletion=function(e,t){return this.proxy.extendBatchDeletion(e,t)},Te.prototype.cancel=function(e){return this.proxy.cancel(e)},Te.prototype.request=function(e,t,n,r,o,i,a){return this.innerRequest(e,t,n,r,o,i,a,!1)},Te.prototype.invoke=function(e,t,n,r,o,i,a){if(r&&r.body&&r.body.RequestInfo)throw new Error("请使用requestInfo提交变更");return this.innerRequest(e,t,n,r,o,i,a,!0)},Te.prototype.innerRequest=function(t,n,e,r,o,i,a,s){var p=this;r=r||{};var u="BEFSessionID";void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==i&&"boolean"==typeof i||(i=!1),void 0!==s&&"boolean"==typeof s||(s=!1);var c=s?this.existRequestInfo:this.hasRequestInfo;e&&(r.params=e);var h=c(r),y=w.convertToHeaders(r.headers),l=this.repository.appContext.getFormAppContext();return ve.getSessionId(l,this.sessionService).pipe(d.switchMap(function(e){return y=p.sessionService.extendRequestHeaders(y),r.headers=w.toJson(y),r.observe="response",p.httpService.request(n,t,r)}),d.tap(function(e){e.headers&&e.headers.has(u)&&p.sessionService.setBeSessionId(e.headers.get(u))}),d.map(function(e){return e.body}),d.map(function(e){var t=A.parseBackEndMessage(e);return fe.handleMessage(t,p.repository.getInjector()),p.handleReponseInfo(e,h,a)}),d.catchError(function(e){return p.handleErrors(e,o,i)}))},Te.prototype.handleReponseInfo=function(e,t,n){return t?(e&&e.innerDataChange&&!0!==n&&this.repository.handleDataChangeDetails(e.innerDataChange),e&&e.innerVariableChange&&this.repository.handleVariableChangeDetail(e.innerVariableChange),this.repository.clearAllEntityChanges(),e):this.unWrapResponseInfo(e)},Te.prototype.handleErrors=function(e,t,n){if(this.clearLoading(),t)return b.throwError(e);var r=this.repository.appContext.getFormAppContext(),o=r.ApplicationId,i=window[o]||{},a=A.parseBackEndError(e),s=fe.getFormlessMessages(a),p=!!i.isExceptionHandlerExist,u=s&&0<s.length||!1,c=!(e&&e.error&&e.error.extensionMessage&&fe.isBackEndMessageHandlerExist(this.repository.getInjector())&&!u),h=!!this.eventBus&&p&&c;return fe.handleMessage(a,this.repository.getInjector(),{hasThrowError:h,isException:!0,eventBus:this.eventBus,error:e,formAppContext:r}),this.eventBus&&p&&!A.isReported401Error(e)?(c&&this.eventBus.post("Exception","","onException",e,r),n?b.of(null):b.EMPTY):b.throwError(e)},Te.prototype.clearLoading=function(){var e,t;if(!1!==(window.DEVKIT_LOADING_SERVICE&&window.DEVKIT_LOADING_SERVICE instanceof Array&&0<window.DEVKIT_LOADING_SERVICE.length||!1)){var n=window.DEVKIT_LOADING_SERVICE;try{for(var r=P(n),o=r.next();!o.done;o=r.next()){var i=o.value;"function"==typeof i.clearAll&&i.clearAll()}}catch(a){e={error:a}}finally{try{o&&!o.done&&(t=r["return"])&&t.call(r)}finally{if(e)throw e.error}}}},Te.prototype.unWrapResponseInfo=function(e){return A.unWrapResponseInfo(e)},Te.prototype.hasRequestInfo=function(e){return M.hasRequestInfoWithR(e)},Te.prototype.existRequestInfo=function(e){return M.hasRequestInfo(e)},Te.prototype.buildParams=function(e){return O.buildParams(e)},Te.prototype.buildBodyWithRequestInfo=function(e){return M.buildBodyWithRequestInfo(e,this.repository)},Te.prototype.buildRequestInfo=function(){return M.buildRequestInfo(this.repository)},Te.decorators=[{type:i.Injectable}],Te.ctorParameters=function(){return[{type:h.HttpClient},{type:String},{type:f},{type:me},{type:I.EventBus}]},Te);function Te(e,t,n,r,o){this.httpClient=e,this.httpService=new V(this.httpClient),this.baseUri=t;var i=r.getInjector();this.sessionService=new Y(e,t,n,i),this.repository=r,this.eventBus=o}var Me=(je.prototype.getData=function(e,t){var n=e.split(".")[0],r=e.split(".")[1];return t=t||{},!0===this.ifEnableExtendLoadMethod(e)?this.extendGetHelpData(r,n,t):this.getHelpData(r,n,t)},je.prototype.saveUserSettings=function(e){var n=this;return this.befRepository.restService.invoke("/api/runtime/bcc/v1.0/datagrid/settings","POST",null,{body:e},!1).pipe(d.catchError(function(e){var t=n.befRepository.appContext.getFormAppContext();return n.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))},je.prototype.getUserSettings=function(e){var n=this,t="/api/runtime/bcc/v1.0/datagrid/settings/"+e;return this.befRepository.restService.invoke(t,"GET",null,null,!1).pipe(d.catchError(function(e){var t=n.befRepository.appContext.getFormAppContext();return n.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))},je.prototype.ifEnableExtendLoadMethod=function(e){if(this.context&&this.context.hasOwnProperty("enableExtendLoadMethod"))return this.context.enableExtendLoadMethod;var t=!1;if(this.frameContext){var n=e+"@"+this.frameContext.repository.apiUri;t=this.frameContext.getParam(n)}return t},je.prototype.getHelpData=function(e,t,n){var r=this,o=this.befRepository.restService.baseUri+"/elementhelps/"+e;return this.befRepository.updateDataAndVariableChanges().pipe(d.switchMap(function(){return r.befRepository.restService.invoke(o,"GET",{nodeCode:t,queryParam:JSON.stringify(n)},null,!1).pipe(d.catchError(function(e){var t=r.befRepository.appContext.getFormAppContext();return r.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))}))},je.prototype.extendGetHelpData=function(e,t,n){var r=this,o=this.befRepository.restService.baseUri+"/extension/elementhelps",i={body:{labelId:e,nodeCode:t,queryParam:n,requestInfo:this.befRepository.restService.buildRequestInfo()}};return this.befRepository.restService.invoke(o,"PUT",null,i,!1,!0,!0).pipe(d.map(function(e){return e&&e.returnValue||null}),d.catchError(function(e){var t=r.befRepository.appContext.getFormAppContext();return r.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))},je.prototype.convert2TreeDataWithPathCode=function(r,t,n){var o=this;void 0===t&&(t=1),void 0===n&&(n="01");var e=r.filter(function(e){return e.layer===t&&e.pathcode===n});if(1<t&&(e=r.filter(function(e){return e.layer===t&&e.pathcode.substr(0,2*(t-1))===n})),e.length){var i=e.map(function(e){return{data:e,children:[]}});return i.forEach(function(e){var t,n=o.convert2TreeDataWithPathCode(r,e.data.layer+1,e.data.pathcode);(t=e.children).push.apply(t,D(n))}),i}},je.decorators=[{type:i.Injectable}],je.ctorParameters=function(){return[{type:I.Repository},{type:I.FrameContext,decorators:[{type:i.Optional}]}]},je);function je(e,t){this.frameContext=t,this.befRepository=e}var Ae=(Ue.prototype.createSession=function(e){var t=this.sessionService.getUserSessionId();return t?this.befRepository.restService.invoke(e,"POST",null,{headers:new h.HttpHeaders({SessionId:t}),responseType:"text"},!1).pipe(d.switchMap(function(e){return b.of({status:!0,payload:e})})):b.of({status:!1,payload:"用户登录信息已过期,请重新登录"})},Ue.prototype.getData=function(e,t){var n=this,r={};t.condition&&(r=t.condition),"/"===e[e.length-1]&&(e=e.substr(0,e.length-1));var o=e+"/extension/query",i=e+"/service/createsession";if(r){var a=JSON.stringify(r);o=o+"?entityFilter="+a}return this.createSession(i).pipe(d.switchMap(function(e){if(e.status)return e.payload,n.befRepository.restService.invoke(o,"PUT",null,{},!1);throw new Error(e.payload)}),s.map(function(e){var t=e.returnValue,n={items:t.result};return t.pagination?Object.assign({},n,{total:t.pagination.totalCount,pageInfo:{pageSize:t.pagination.pageSize,pageIndex:t.pagination.pageIndex,enablePager:!0}}):n}))},Ue.decorators=[{type:i.Injectable}],Ue.ctorParameters=function(){return[{type:I.Repository},{type:f}]},Ue);function Ue(e,t){this.sessionService=t,this.befRepository=e}var Ve=(He.isExistUnsaveData=function(e){var t=!1;if(!e||!e.entityCollection)throw"Current Object is null or it's entityCollection is null.";var n=e.entityCollection.toArray();if(e.dataChangeHistory.isChanged())return!0;for(var r=0;r<n.length;r++)if(0<n[r].changes.length){t=!0;break}return t},He);function He(){}var ke=(Fe.prototype.toString=function(){return this.url},Fe);function Fe(e,t){void 0===t&&(t=null);var n=this;this.url=e,this.paths=t,this.paths&&Object.keys(t).forEach(function(e){-1!==n.url.indexOf("{"+e+"}")&&(n.url=n.url.replace("{"+e+"}",""+t[e]))})}var Ne=(_e.prototype.getData=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n="GET");var r=new h.HttpHeaders({"content-type":"application/json"});return"get"!==n.toLowerCase()?this.befRest.restService.invoke(e,n,null,{headers:r,body:t}):this.befRest.restService.invoke(e,n,t,{headers:r})},_e.decorators=[{type:i.Injectable}],_e.ctorParameters=function(){return[{type:I.Repository}]},_e);function _e(e){this.befRest=e}var Le=(Ke.prototype.getData=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n="GET");var r=new h.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(e,n,t,{headers:r})},Ke.decorators=[{type:i.Injectable}],Ke.ctorParameters=function(){return[{type:I.Repository}]},Ke);function Ke(e){this.befRest=e}var Ge,Je=(x(ze,Ge=me),ze.prototype.batchAppend=function(e){throw new Error("Method not implemented.")},ze);function ze(e,t,n,r,o){var i=Ge.call(this,e)||this;i.name=t,i.entityType=n,i.serverUri=r,i.apiUri=o,i.apiUri=o;var a={};a[n.typeName]={pageSize:20},i.paginationInfo=a,i.entityTypeInfo=new I.DataTypeInfo(i.entityType),i.entityCollection=new I.EntityCollection(i.entityType),i.entityManager=new re(i.entityCollection);var s=e.get(h.HttpClient),p=new xe(r),u=new we(s,p),c=p.extendUri(o);return u.setBaseUri(c),i.dataService=new le(e,i),i.serverUri=e.get(y),i}var We,Ye=(x(Qe,We=me),Qe.prototype.batchAppend=function(e){throw new Error("Method not implemented.")},Qe);function Qe(e,t){var n=We.call(this,e)||this;n.schema=t;var r=new I.EntityTypeFactory;return n.entityType=r.create(t),n.entityTypeInfo=new I.DataTypeInfo(n.entityType),n.entityCollection=new I.EntityCollection(n.entityType),n.entityManager=new re(n.entityCollection),n}e.VERSION="ver.",e.ChangeDetailType=S,e.BE_SERVER_URI_TOKEN=y,e.BE_SESSION_HANDLING_STRATEGY_TOKEN=a,e.BefChangeBuilder=p,e.BefChangeHandler=c,e.BefSessionService=Y,e.BefRestService=Oe,e.BefProxy=we,e.BefLookupRestService=Me,e.BefLookupDefaultService=Ae,e.BefRepository=me,e.FrameworkSessionService=f,e.NG_VARIABLE=Z,e.NgVariable=$,e.BefRepositoryUtil=Ve,e.BefDataPathUtil=he,e.UriService=xe,e.Uri=ke,e.DefaultComboHttpService=Ne,e.DefaultDynamiControlGroupHttpService=Le,e.BefEntityManager=re,e.DynamicBefRepository=Je,e.PresetBefRepository=Ye,e.ɵa=ee,Object.defineProperty(e,"__esModule",{value:!0})});
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@ecp-caf/caf-common"),require("date-fns"),require("rxjs"),require("rxjs/operators"),require("rxjs/operators/map"),require("@angular/core"),require("@angular/common/http"),require("@farris/devkit")):"function"==typeof define&&define.amd?define("@farris/bef",["exports","@ecp-caf/caf-common","date-fns","rxjs","rxjs/operators","rxjs/operators/map","@angular/core","@angular/common/http","@farris/devkit"],t):t((e.farris=e.farris||{},e.farris.bef={}),e.cafCommon,e.dateFns,e.rxjs,e.rxjs.operators,e.rxjs["operators/map"],e.ng.core,e.ng.common.http,e.devkit)}(this,function(e,t,r,b,d,s,o,h,I){"use strict";var S=(n.Added="Added",n.Modify="Modify",n.Deleted="Deleted",n);function n(){}var y=new o.InjectionToken("@farris/be BE_SERVER_URL"),a=new o.InjectionToken("@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"),C=(i.getPropInfo=function(e,t){var n,r,i,o=I.FieldMetadataUtil.getNgFields(e);Object.keys(o).forEach(function(e){e===t&&(n="NgField",r=null,i=o[e])});var a=I.FieldMetadataUtil.getNgObjects(e);Object.keys(a).forEach(function(e){e===t&&(n="NgObject",r=a[e].type,i=a[e])});var s=I.FieldMetadataUtil.getNgList(e);Object.keys(s).forEach(function(e){e===t&&(n="NgList",r=s[e].type,i=s[e])});var p=I.FieldMetadataUtil.getNgDynamic(e);return Object.keys(p).forEach(function(e){e===t&&(n="NgDynamic",r=p[e].type,i=p[e])}),{propType:n,propEntityType:r,propMetadata:i}},i.getPrimaryKey=function(e){var t=I.FieldMetadataUtil.getPrimaryFieldMetadata(e);return t?t.dataField:""},i.isObjectProp=function(e,t){var n=!1,r=I.FieldMetadataUtil.getNgObjects(e);return Object.keys(r).forEach(function(e){e===t&&(n=!0)}),n},i.isDynamicProp=function(e,t){var n=!1,r=I.FieldMetadataUtil.getNgDynamic(e);return Object.keys(r).forEach(function(e){e===t&&(n=!0)}),n},i.appendInitialData=function(e,t){var n=Object.assign({},t);delete n.id,delete n.parentID,e.initialData=n},i);function i(){}var p=(u.prototype.build=function(e){var t=this;return this.changeDetail={ChangeType:S.Modify,ChangeInfo:{DataId:""}},e.forEach(function(e){t.buildChangeDetail(e)}),this.changeDetail},u.prototype.buildChangeDetail=function(l){var d=l.path.concat();this.changeDetail.ChangeInfo.DataId||(this.changeDetail.ChangeInfo.DataId=d[0].split(":")[1]);for(var f=this.changeDetail,g=this.entityType,e=function(e){var t=v.getChangeInfo(f),n=d[e],r=C.getPropInfo(g,n),i=r.propType,o=r.propEntityType,a=r.propMetadata.dataField||n;if("NgField"===i){if(n===C.getPrimaryKey(g))return"continue";if(l.type!==I.ModifyType.ValueChange)throw Error("简单类型的属性上不支持ValueChange类型之外的变更");t[a]=l.value,f=null}else if("NgObject"===i)if(d[e+1].split(":")[1],d[e+1].split(":")[0]){var s=t[a],p=d.slice(0,e+1);s=(y=v.entityCollection.getEntityByPath(p))?y.toJSON(!0):{},t[a]=s,g=f=null}else c=(c=t[a])||{ChangeType:S.Modify,ChangeInfo:{}},t[a]=c,f=c,g=o;else if("NgList"===i){f.ChangeInfo[a]||(f.ChangeInfo[a]=[]);var u=f.ChangeInfo[a];if(e!==d.length-1){var c,h=d[e+1].split(":")[1];return(c=u.find(function(e){return e.ChangeInfo.DataId===h}))||(c=v.createEmptyChangeDetail(S.Modify,h),u.push(c)),f=c,g=o,"continue"}l.type===I.ModifyType.Add||l.type===I.ModifyType.Insert||(l.type,I.ModifyType.Remove),g=f=null}else if("NgDynamic"===i){p=d.slice(0,e+1);var y=v.entityCollection.getEntityByPath(p);t[a]={ChangeType:S.Modify,ChangeInfo:y?y.toJSON(!0):{}},g=f=null}},v=this,t=1;t<d.length&&f;t+=2)e(t)},u.prototype.getChangeInfo=function(e){return e.hasOwnProperty("ChangeInfo")?e.ChangeInfo:e},u.prototype.createEmptyChangeDetail=function(e,t){return{ChangeType:e,ChangeInfo:{DataId:t}}},u);function u(e,t){this.entityType=e,this.entityCollection=t}var c=(l.prototype.handle=function(e,t,n){this.handleChangeDetails(e,t,n)},l.prototype.handleChangeDetails=function(r,i,e){var o=this;e&&e.forEach(function(e){var t=e.ChangeInfo.dataId||e.ChangeInfo.DataId,n=o.getEntityById(i,t);n&&o.handleChangeDetail(r,n,e)})},l.prototype.handleChangeDetail=function(u,c,e){var h=this;if(e&&c&&e.ChangeType===S.Modify){var y=e.ChangeInfo;Object.keys(y).forEach(function(e){var t=C.getPropInfo(u,e),n=t.propType,r=t.propEntityType;if("NgField"===n)c[e]=y[e];else if("NgObject"===n){var i=c[e];if(i.primaryKey){var o=y[e];i.load(o)}else{var a=y[e];h.handleChangeDetail(r,i,a)}}else if("NgList"===n){var s=c[e],p=y[e];h.handleChangeDetails(r,s,p)}})}},l.prototype.getEntityById=function(e,t){return(e instanceof I.EntityCollection?e.getEntityById(t):e.get(t))||null},l);function l(){}var f=(g.prototype.getUserSessionId=function(){return this.sessionService.getUserSessionId()},g.prototype.getCurrentSessionId=function(e){var t,n=this.getRuntimeSessionId();if(n)return n;if(this.sessionService)if(e&&e.hasOwnProperty("tabId")){var r=e.tabId;t=this.sessionService.getCurrentSeesionId(r)}else t=this.sessionService.getCurrentSeesionId();return t=t||this.getUserSessionId()},g.prototype.getRuntimeSessionId=function(){var e=window.location.hash,t=this.parse(e);return t&&t.rsi||null},g.prototype.parse=function(e){return e?e.slice(e.indexOf("?")+1).split("&").reduce(function(e,t){var n,r=t.indexOf("="),i=t.slice(0,r),o=t.slice(r+1);return Object.assign(e,((n={})[i]=decodeURIComponent(o),n))},{}):{}},g.decorators=[{type:o.Injectable}],g.ctorParameters=function(){return[{type:t.SessionService,decorators:[{type:o.Optional}]}]},g);function g(e){this.sessionService=e}var v=(m.prototype.getItem=function(e){return this.getAllBeSessions()[e]},m.prototype.setItem=function(e,t){var n=this.getAllBeSessions();n[e]=t,this.setAllBeSessions(n)},m.prototype.removeItem=function(e){var t=this.getAllBeSessions();t[e]&&delete t[e],this.setAllBeSessions(t)},m.prototype.clear=function(e,t){!0===this.isInFramework()?this.removeItemsByFrmSessionId(e):this.removeItem(t)},m.prototype.removeItemsByFrmSessionId=function(t){var n=this.getAllBeSessions();Object.keys(n).forEach(function(e){!0===e.startsWith(t)&&delete n[e]}),this.setAllBeSessions(n)},m.prototype.getAllBeSessions=function(){var e=window.sessionStorage.getItem(this.sessionStorageKey);return e?JSON.parse(e):{}},m.prototype.setAllBeSessions=function(e){var t=JSON.stringify(e);window.sessionStorage.setItem(this.sessionStorageKey,t)},m.prototype.isInFramework=function(){var e=window.location.hash;return!!e&&-1!==e.indexOf("tabId=")},m);function m(){this.sessionStorageKey="BE_SESSION_ID"}var E=function(e,t){return(E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};function x(e,t){function n(){this.constructor=e}E(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function B(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function P(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||0<t--)&&!(r=o.next()).done;)a.push(r.value)}catch(s){i={error:s}}finally{try{r&&!r.done&&(n=o["return"])&&n.call(o)}finally{if(i)throw i.error}}return a}function R(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(P(arguments[t]));return e}var D=(q.convertToHeaders=function(t){if(1==(t=t||new h.HttpHeaders)instanceof h.HttpHeaders)return t;if(0<Object.keys(t).length){var n=new h.HttpHeaders;Object.keys(t).forEach(function(e){n=n.append(e,t[e])}),t=n}else t=new h.HttpHeaders;return t},q.appendSessionId=function(e,t){return e.append("SessionId",t)},q.appendCafRuntimeCommonVariable=function(e,t){return e.append("X-CAF-Runtime-CommonVariable",t)},q.appendCafRuntimeContext=function(e,t){return e.append("X-CAF-Runtime-Context",t)},q.appendContextType=function(e,t){return t=t||"application/json",e.append("Content-Type",t)},q.appendRequireMessage=function(e,t){return void 0===t&&(t=!0),e.append("Bff-Require-Message",t.toString())},q.appendFuncInstId=function(e,t){return e.append("Func-Inst-Id",t)},q.toJson=function(n){if(!(n instanceof h.HttpHeaders))return null;var r={};return n.keys().forEach(function(e){var t=n.getAll(e);1<t.length?r[e]=t:r[e]=t[0]||""}),r},q);function q(){}var w=(T.buildParams=function(e){var t=new h.HttpParams;for(var n in e)if(e.hasOwnProperty(n)){var r=e[n].toString();t=t.append(n,r)}return t},T);function T(){}var M=(O.hasRequestInfo=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.requestInfo||!t.requestInfo.dataChange)||!!t.dataChange},O.hasRequestInfoWithR=function(e){if(!e||!e.body)return!1;var t=e.body;return!(!t.RequestInfo||!t.RequestInfo.dataChange)||!!t.dataChange},O.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},O.buildBodyWithRequestInfo=function(e,t){if(e.RequestInfo||e.requestInfo)return e;var n=this.buildRequestInfo(t);return Object.assign({},e,{requestInfo:n})},O);function O(){}var j=(A.unWrapResponseInfo=function(e){if(!e)return e;if(!1===e.hasOwnProperty("returnValue"))return e.hasOwnProperty("result")&&e.hasOwnProperty("pagination")?e.result:e;var t=e.returnValue;return t&&t.hasOwnProperty("result")&&t.hasOwnProperty("pagination")?t.result:e.returnValue},A.isReported401Error=function(e){return 401===e.status},A.parseBackEndMessage=function(e){return e&&e.message&&Array.isArray(e.message)&&0<e.message.length?e.message:null},A.parseBackEndError=function(e){var t=e&&e.error;return t&&t.hasOwnProperty("extensionMessage")&&t.extensionMessage&&t.extensionMessage.hasOwnProperty("UIMsg")&&t.extensionMessage.UIMsg&&0<t.extensionMessage.UIMsg.length?JSON.parse(t.extensionMessage.UIMsg):null},A);function A(){}var U=(V.prototype.getService=function(){for(var e=window;!e.gspframeworkService&&e!==window.top&&this.isSameOrigin(e);)e=window.parent;return e.gspframeworkService&&e.gspframeworkService.rtf||{}},V.prototype.isSameOrigin=function(e){var t=window.location.host;try{if(e&&e.location&&"undefined"!=typeof e.location.host)return e.location.host===t}catch(n){return!1}return!1},Object.defineProperty(V.prototype,"params",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("session")&&"function"==typeof this.rtf.session.getCommonVariable?this.rtf.session.getCommonVariable():null},enumerable:!0,configurable:!0}),Object.defineProperty(V.prototype,"httpService",{get:function(){return this.rtf&&this.rtf.hasOwnProperty("http")&&"function"==typeof this.rtf.http.request?this.rtf.http:null},enumerable:!0,configurable:!0}),V.prototype.request=function(e,t,n){return void 0===n&&(n={}),this.defaultHttpClient.request(e,t,n)},V.decorators=[{type:o.Injectable}],V.ctorParameters=function(){return[{type:h.HttpClient}]},V);function V(e){this.defaultHttpClient=e,this.httpClient=e,this.rtf=this.getService()}var H=(k.prototype.getFrmSessionId=function(e){return this.frmSessionService.getCurrentSessionId(e)},Object.defineProperty(k.prototype,"frmSessionId",{get:function(){return this.frmSessionService.getCurrentSessionId()},enumerable:!0,configurable:!0}),k.prototype.getFrameworkSessionId=function(e){return this.getFrmSessionId(e)},k.prototype.getSessionIdFromStorage=function(e){var t=this.getSessionStorageKey(e);return this.storageStrategy.getItem(t)},k);function k(e,t){this.storageStrategy=e,this.frmSessionService=t}var F,N=(x(_,F=H),_.prototype.getSessionId=function(){var e=this.getSessionIdFromStorage();return e?b.of(e):this.createSession()},_.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},_.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.clear(this.frmSessionId,e)},_.prototype.extendRequestHeaders=function(e,t){var n=this.getFrameworkSessionId(t),r=this.getSessionIdFromStorage(t);return e=D.appendCafRuntimeCommonVariable(e,n),r&&(e=D.appendCafRuntimeContext(e,r),e=D.appendSessionId(e,r)),e=D.appendFuncInstId(e,this.beSessionUri)},_.prototype.handleReponseHeaders=function(e){console.log(e)},_.prototype.createSession=function(){var t=this,e={responseType:"text"};return this.frmSessionId&&(this.injector.get(I.AppContext,null),e.headers=new h.HttpHeaders({SessionId:this.frmSessionId}),e.headers=e.headers.append("X-CAF-Runtime-CommonVariable",this.frmSessionId),e.headers=e.headers.append("Func-Inst-Id",this.beSessionUri),e.headers=D.toJson(e.headers)),this.httpService.request("POST",this.beSessionUri,e).pipe(d.tap(function(e){t.setSessionId(e)}))},_.prototype.extendHttpHeader=function(){},_.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+this.beSessionUri},_);function _(e,t,n,r,i){var o=F.call(this,e,t)||this;return o.beSessionUri=r,o.httpClient=n,o.httpService=new U(o.httpClient),o.injector=i,o}var L,K=(x(G,L=H),G.prototype.getSessionId=function(){var e=this.getSessionStorageKey(),t=this.storageStrategy.getItem(e);return b.of(t)},G.prototype.setSessionId=function(e){var t=this.getSessionStorageKey();this.storageStrategy.setItem(t,e)},G.prototype.clearSessionId=function(){var e=this.getSessionStorageKey();this.storageStrategy.removeItem(e)},G.prototype.extendRequestHeaders=function(e,t){var n=this.getFrameworkSessionId(t),r=this.getSessionIdFromStorage(t),i=this.injector.get(I.AppContext,null);if(i){var o=i.Token;e=D.appendFuncInstId(e,o)}return e=D.appendCafRuntimeCommonVariable(e,n),r&&(e=D.appendCafRuntimeContext(e,r)),e},G.prototype.handleReponseHeaders=function(e){console.log(e)},G.prototype.getSessionStorageKey=function(e){return(e?this.getFrameworkSessionId(e):this.frmSessionId)+"_"+this.beSessionUri},G);function G(e,t,n,r){var i=L.call(this,e,t)||this;return i.beSessionUri=n,i.injector=r,i}var z=(J.prototype.create=function(e,t,n,r,i){var o=this.createStorageStrategy(),a=this.createBeSessionUri(n);return"UnifiedSession"===e?new K(o,t,a,i):new N(o,t,r,a,i)},J.prototype.createStorageStrategy=function(){return new v},J.prototype.createBeSessionUri=function(e){return e+"/service/createsession"},J.decorators=[{type:o.Injectable}],J);function J(){}var W=(Object.defineProperty(Y.prototype,"token",{get:function(){return this.handlingStrategy.getFrameworkSessionId()},enumerable:!0,configurable:!0}),Y.prototype.getBeSessionId=function(){return this.handlingStrategy.getSessionId()},Y.prototype.setBeSessionId=function(e){this.handlingStrategy.setSessionId(e),this.setSessionId(e)},Y.prototype.clearBeSessionId=function(){this.handlingStrategy.clearSessionId()},Y.prototype.extendRequestHeaders=function(e,t){return this.handlingStrategy.extendRequestHeaders(e,t)},Y.prototype.handleResponseHeaders=function(e){return this.handlingStrategy.handleReponseHeaders(e)},Y.prototype.createBeSession=function(){return this.handlingStrategy.createSession()},Y.prototype.setSessionId=function(e){var t=this.injector.get(I.AppContext,null,o.InjectFlags.Optional);t&&e&&t.params.set("sessionId",e)},Y.prototype.createHandlingStrategy=function(e,t,n,r){var i;return i=(i=e?e.get(a,null,o.InjectFlags.Optional):"SeparatedSession")||"SeparatedSession",(new z).create(i,n,r,t,e)},Y.decorators=[{type:o.Injectable}],Y.ctorParameters=function(){return[{type:h.HttpClient},{type:String},{type:f},{type:o.Injector}]},Y);function Y(e,t,n,r){this.beBaseUri=t,this.injector=r,this.handlingStrategy=this.createHandlingStrategy(r,e,n,t)}var Q,X="@farris/bef NG_VARIABLE",Z=I.makePropDecorator(X,function(e){return e}),$=(x(ee,Q=I.Repository),Object.defineProperty(ee.prototype,"restService",{get:function(){return this.dataService.restService},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"changeBuilder",{get:function(){return this.entityManager.changeBuilder},enumerable:!0,configurable:!0}),Object.defineProperty(ee.prototype,"changeHandler",{get:function(){return this.entityManager.changeHandler},enumerable:!0,configurable:!0}),ee.prototype.getList=function(){return this.dataService.getList(null,null,null,null)},ee.prototype.getById=function(e){return this.dataService.getById(e)},ee.prototype.updateById=function(e){return this.dataService.updateById(e)},ee.prototype.create=function(e){return this.dataService.create(e)},ee.prototype.append=function(e){return this.dataService.append(e)},ee.prototype.appendByPath=function(e){return this.dataService.appendByPath(e)},ee.prototype.removeById=function(e,t){return this.dataService.removeById(e,t)},ee.prototype.removeByIds=function(e,t){return this.dataService.removeByIds(e,t)},ee.prototype.removeByPath=function(e,t){return this.dataService.removeByPath(e,t)},ee.prototype.updateChangesById=function(e){return this.dataService.updateChangesById(e)},ee.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},ee.prototype.updateAllChanges=function(){return this.dataService.updateAllChanges()},ee.prototype.applyChanges=function(){return this.dataService.applyChanges()},ee.prototype.updateDataAndVariableChanges=function(){var e={FilterConditions:[],SortConditions:[],IsUsePagination:!0,Pagination:{PageIndex:1,PageSize:1,PageCount:0,TotalCount:0}},t=JSON.stringify(e),n=this.restService.buildRequestInfo();if(this.isEmptyRequestInfo(n))return b.of(null);var r=this.restService.baseUri+"/extension/query?entityFilter="+t,i={body:n};return this.restService.invoke(r,"PUT",null,i,!1,!0,!0)},ee.prototype.applyChangesById=function(e){return this.dataService.applyChangesById(e)},ee.prototype.cancelChanges=function(e){return this.dataService.cancelChanges(e)},ee.prototype.clearAllEntityChanges=function(){return this.entityManager.clearAllEntityChanges()},ee.prototype.getDataChangeDetails=function(){return this.entityManager.buildAllEntityChangeDetails()},ee.prototype.handleDataChangeDetails=function(e){return this.entityManager.handleDataChangeDetails(e)},ee.prototype.getVariableChangeDetail=function(){return this.variableManager.buildChangeDetail()},ee.prototype.handleVariableChangeDetail=function(e){this.variableManager.handleChangeDetail(e)},ee.prototype.isEmptyRequestInfo=function(e){return!e||(!e.dataChange||e.dataChange.length<1)&&(!e.variableChange||Object.keys(e.variableChange).length<1)},ee.decorators=[{type:o.Injectable}],ee.ctorParameters=function(){return[]},ee);function ee(){return Q.call(this)||this}var te,ne=(x(re,te=I.EntityManager),re.prototype.buildAllEntityChangeDetails=function(){var n=this,r=[];return this.entityCollection.getAllEntities().forEach(function(e){if(0!==e.changes.length){var t=n.changeBuilder.build(e.changes);t&&t.ChangeInfo&&t.ChangeInfo.DataId&&r.push(t)}}),r},re.prototype.buildEntityChangeDetailById=function(e){var t=this.entityCollection.getEntityById(e);return 0===t.changes.length?null:this.changeBuilder.build(t.changes)},re.prototype.handleDataChangeDetails=function(e){this.changeHandler.handle(this.entityType,this.entityCollection,e)},re.prototype.reset=function(){this.entityCollection.clear()},re);function re(e){var t=te.call(this,e)||this;return t.changeBuilder=new p(t.entityCollection.entityType,t.entityCollection),t.changeHandler=new c,t}var ie=(oe.createEmpty=function(e,t){var n={ChangeType:e,ChangeInfo:{}};return t&&(n.ChangeInfo.DataId=t),n},oe.getChangeInfo=function(e){return!0===this.isChangeDetail(e)?e.ChangeInfo:e},oe.isChangeDetail=function(e){var t=Object.keys(e);return 2===t.length&&-1<t.indexOf("ChangeType")&&-1<t.indexOf("ChangeInfo")},oe);function oe(){}var ae=(se.prototype.handleChangeDetail=function(e){var i=this,o=e.ChangeInfo;Object.keys(o).forEach(function(e){var t=i.ngVariableMap.get(e);if(t){var n=t.mapping,r=o[e];i.innerValueMap.get(e)!==r&&(i.setValueToUIState(n,r),i.innerValueMap.set(e,r))}})},se.prototype.buildChangeDetail=function(){var o=this,a=ie.createEmpty(S.Modify);return this.ngVariableMap.forEach(function(e,t){var n=e.mapping,r=o.getValueFromUIState(n),i=o.innerValueMap.get(t);!1===o.isValueEqual(r,i)&&(o.innerValueMap.set(t,r),o.appendToChangeInfo(a,t,r))}),0===Object.keys(a.ChangeInfo).length?null:a},se.prototype.reset=function(){this.innerValueMap.clear()},se.prototype.clearChanges=function(){var o=this;this.ngVariableMap.forEach(function(e,t){var n=e.mapping,r=o.getValueFromUIState(n),i=o.innerValueMap.get(t);!1===o.isValueEqual(r,i)&&o.innerValueMap.set(t,r)})},se.prototype.appendToChangeInfo=function(e,t,n){if(!0===this.isUdtVariable(n)){var r=ie.createEmpty(S.Modify);r.ChangeInfo=n,e.ChangeInfo[t]=r}else e.ChangeInfo[t]=n},se.prototype.getValueFromUIState=function(e){var t=this.getRootUIState(),n=e.split(".").reduce(function(e,t){return e?e[t]:null},t);return n instanceof Date?r.format(n,"yyyy-MM-dd HH:mm:ss"):n},se.prototype.getRootUIState=function(){var e=this.appContext.frameContextManager.getRootFrameContext();if(this.injector){var t=this.injector.get(I.FrameContext,null);t&&(e=t.getVirtualRootFrameContext()||e)}if(e)return e.uiState},se.prototype.isValueEqual=function(e,t){return JSON.stringify(e)===JSON.stringify(t)},se.prototype.isUdtVariable=function(e){return e&&e.constructor&&"[object Object]"===e.toString()&&e.constructor.prototype.hasOwnProperty("isPrototypeOf")},se.prototype.setValueToUIState=function(e,t){this.getRootUIState()[e]=t},se.ctorParameters=function(){return[{type:I.AppContext},{type:undefined},{type:o.Injector,decorators:[{type:o.Optional}]}]},se);function se(e,t,n){var r=this;this.appContext=e,this.ngVariables=t,this.injector=n,this.ngVariableMap=new Map,this.innerValueMap=new Map,Object.keys(t).forEach(function(e){r.ngVariableMap.set(e,t[e])})}var pe=(ue.buildRequestInfo=function(e){return{dataChange:e.entityManager.buildAllEntityChangeDetails(),variableChange:e.variableManager.buildChangeDetail()}},ue);function ue(){}var ce=(he.convertToPathArray=function(e,t){var r=this,n=I.BindingPathConverter.toBindingPathArray(e),i=[],o=t.list.currentItem;return i.push(o.primaryKeyValue),n.forEach(function(e){var t=I.PropertyUtil.getPropertyByName(o.properties,e);if(t.type!==I.BindingPropertyType.List)throw new Error(t.name+"不是子表对应的属性");var n=o[e];o=n.currentItem,i.push(r.trimTrailingS(e)),i.push(o.primaryKeyValue)}),i},he.convertToPathUrl=function(e,t){var n=this.convertToPathArray(e,t);return n.pop(),"/"+n.join("/")},he.convertToObjectCodes=function(e,t){for(var n=this.convertToPathArray(e,t),r=n.length,i=[],o=1;o<r;o+=2)i.push(n[o]);return i},he.convertToDataIdsForUpdate=function(e,t){for(var n=this.convertToPathArray(e,t),r=n.length,i=[],o=0;o<r;o+=2)i.push(n[o]);return i},he.convertToDataIdsForAdd=function(e,t){var n=this.convertToDataIdsForUpdate(e,t);return n.pop(),n},he.convertPathToUrl=function(e){for(var t=e.split("/"),n=t.length-1;0<n;n--)t[n]&&t[n].endsWith("s")&&(t[n]=t[n].substr(0,t[n].length-1).toLowerCase());return t.join("/")},he.trimTrailingS=function(e){return e.substr(0,e.length-1)},he.convertPathsToNodeCodes=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1===e.indexOf(":")}).forEach(function(e){t.push(e)}),t},he.convertPathsToIds=function(e){var t=[];return!e||e.length<1||e.filter(function(e){return!!e&&-1!==e.indexOf(":")}).forEach(function(e){t.push(e.split(":")[1])}),t},he);function he(){}var ye=(Object.defineProperty(le.prototype,"restProxy",{get:function(){return this.repository.restService.proxy},enumerable:!0,configurable:!0}),le.prototype.getList=function(e,t,n,r){var p=this;0!==n&&(n=n||this.repository.entityCollection.pageSize,r=r||this.repository.entityCollection.pageIndex);var i=this.buildEntityFilter(e,t,n,r),o=this.restService.buildRequestInfo();return this.restProxy.extendQuery(i,o).pipe(d.map(function(e){var t=e.returnValue,n=t.result,r=[];n.forEach(function(e){var t=p.repository.buildEntity(e);C.appendInitialData(t,e),r.push(t)});var i=t.pagination;if(i&&0<Object.keys(i).length){var o=i.pageSize,a=i.pageIndex,s=i.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:o,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:r.length});return p.repository.entityCollection.loadEntities(r),r}))},le.prototype.filter=function(e,t,n,r){var p=this;0!==n&&(n=n||this.repository.entityCollection.pageSize,r=r||this.repository.entityCollection.pageIndex);var i=this.buildEntityFilter(e,t,n,r),o=this.restService.buildRequestInfo();return this.restProxy.filter(i,o).pipe(d.map(function(e){var t=e.returnValue,n=t.result,r=[];n.forEach(function(e){var t=p.repository.buildEntity(e);C.appendInitialData(t,e),r.push(t)});var i=t.pagination;if(i&&0<Object.keys(i).length){var o=i.pageSize,a=i.pageIndex,s=i.totalCount;p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:a,pageSize:o,totalCount:s})}else p.repository.entityCollection.updatePaginationInfoByPath("/",{pageIndex:1,pageSize:0,totalCount:r.length});return p.repository.entityCollection.loadEntities(r),r}))},le.prototype.buildEntityFilter=function(e,t,n,r){return e||t||n||r?(e&&0<e.length&&(e[e.length-1].Relation=0),{FilterConditions:e,SortConditions:t,IsUsePagination:0!==n,Pagination:{PageIndex:r,PageSize:n,PageCount:0,TotalCount:0}}):null},le.prototype.getById=function(e){var r=this,t=this.restService.buildRequestInfo(),n=this.buildRetrieveParam();return n?this.getEntityById(e):this.restService.extendRetrieve(e,t,n).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntity(t);return r.repository.entityCollection.loadEntities([n]),n}))},le.prototype.getEntityById=function(e){var o=this,t=this.restService.buildRequestInfo(),n=this.buildRetrieveParam();return this.restService.serviceRetrieve(e,n,t).pipe(d.map(function(e){var t=e.returnValue||{},n=t.result,r=t.pagination;o.updatePagination(r);var i=o.repository.buildEntity(n);return o.repository.entityCollection.loadEntities([i]),i}))},le.prototype.queryChild=function(p,e,t,n,r){var u=this,i=this.restService.buildRequestInfo(),o=ce.convertPathsToNodeCodes(p).map(function(e){return e.substring(0,e.length-1)}),c=o[o.length-1],a=(this.repository.entityCollection.getPaginationConfigByPath("/"+c)||{}).pageSize,s=void 0===a?0:a,h=this.injector.get(I.ViewModel,null),y=!1;if(h&&(y=h.frameContext.appContext.params.get("forceQueryChild")||!1),0==s&&!y)return b.of(null);var l={nodeCodes:o,ids:ce.convertPathsToIds(p),pagination:{pageIndex:e,pageSize:t},requestInfo:i};return this.restService.queryChild(l).pipe(d.map(function(e){var t=e.returnValue;if(!t)return null;var n=t.result,r=void 0===n?[]:n,i=t.pagination,o=void 0===i?{}:i,a=p.map(function(e,t){return e.includes(":")&&t%2==0?e.split(":")[1]:e}),s=u.repository.entityManager.createEntitiesByPath("/"+a.join("/"),r);u.repository.entityCollection.resetEntities(p,s),u.repository.entityCollection.setPaginationConfigByPath("/"+c,o)}))},le.prototype.buildChildrenPagination=function(){var r=this.repository.entityCollection.getPaginationConfigByPath("/"),i={},o=[];return I.DataTypeInfoUtil.getChildrenNodeCodes(this.repository.entityTypeInfo,o),!o||o.length<1?null:(Object.keys(r).forEach(function(e){var t=r[e];if("object"==typeof t){var n=e&&e.includes("_")&&e.split("_")[0]||null;n&&o.includes(n+"s")||(i[e]=t)}}),i)},le.prototype.updatePagination=function(n){var r=this;if(n){var i=[];I.DataTypeInfoUtil.getChildrenNodeCodes(this.repository.entityTypeInfo,i),i=i.map(function(e){return e.substr(0,e.length-1)}),!n||Object.keys(n).length<1?i&&0<i.length&&i.forEach(function(e){var t=r.repository.entityCollection.getPaginationConfigByPath("/"+e);t&&(t.pageIndex=1,t.totalCount=0,r.repository.entityCollection.setPaginationConfigByPath("/"+e,t))}):Object.keys(n).forEach(function(t){var e=i.find(function(e){return t.startsWith(e+"_")});r.repository.entityCollection.setPaginationConfigByPath("/"+e,n[t])})}},le.prototype.buildRetrieveParam=function(){var r=this.buildChildrenPagination();if(!r||Object.keys(r).length<1)return null;var i={filters:{},parentIds:{}};return I.ExpressionUtil.getChildrenEntityPaths(this.repository.entityTypeInfo,[]),Object.keys(r).forEach(function(e){var t=r[e],n=t.pageIndex||1;i.filters[e]={pagination:{pageSize:t.pageSize||0,pageIndex:n}}}),i},le.prototype.editById=function(r){var i=this;if(!this.repository.entityCollection.getEntityById(r))return b.of(null);var e=pe.buildRequestInfo(this.repository);return this.restProxy.edit(r,e).pipe(d.map(function(e){var t=e.returnValue.data,n=i.repository.entityCollection.getEntityById(r);return n&&t&&i.reloadEntityData(n,t),n}))},le.prototype.updateById=function(r){var i=this;if(!this.repository.entityCollection.getEntityById(r))return b.of(null);var e=this.restService.buildRequestInfo(),t=this.buildRetrieveParam();return t?this.updateEntityById(r):this.restService.extendRetrieve(r,e,t).pipe(d.map(function(e){var t=e.returnValue,n=i.repository.entityCollection.getEntityById(r);return i.reloadEntityData(n,t),n}))},le.prototype.updateEntityById=function(o){var a=this,e=this.restService.buildRequestInfo(),t=this.buildRetrieveParam();return this.restService.serviceRetrieve(o,t,e).pipe(d.map(function(e){var t=e.returnValue||{},n=t.result,r=t.pagination;a.updatePagination(r);var i=a.repository.entityCollection.getEntityById(o);return a.reloadEntityData(i,n),i}))},le.prototype.reloadEntityData=function(e,t){e&&(this.appContext.changeDetectionController.detach(),this.repository.entityCollection.updateEntity(e,t),e.changes.splice(0,e.changes.length),this.appContext.changeDetectionController.reattach())},le.prototype.create=function(e){var r=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntity(t);return C.appendInitialData(n,t),r.repository.entityCollection.loadEntities([n],!0),n}))},le.prototype.append=function(e){var r=this,t=this.restService.buildRequestInfo();return this.restService.create(e,t).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntity(t);return r.repository.entityCollection.addEntity(n),n}))},le.prototype.insert=function(r,e){var i=this,t=this.buildRequestInfo();return this.restProxy.create(e,t).pipe(d.map(function(e){var t=e.returnValue,n=i.repository.buildEntity(t);return i.repository.entityCollection.insertEntity(n,r),n}))},le.prototype.appendByPath=function(n){var r=this,e=this.restService.buildRequestInfo();return this.restService.createByPath(n,e).pipe(d.map(function(e){var t=e.returnValue;return r.repository.entityManager.appendEntityByPath(n,t,t)}))},le.prototype.insertByPath=function(n,r){var i=this,e=this.buildRequestInfo();return this.restProxy.createByPath(n,e).pipe(d.map(function(e){var t=e.returnValue;return i.repository.entityManager.insertEntityByPath(n,t,t,r)}))},le.prototype.removeById=function(e,t){var n=this;t=t===undefined||t;var r=pe.buildRequestInfo(this.repository);return t?this.restProxy.deleteAndSave(e,r).pipe(d.switchMap(function(){return n.repository.entityCollection.removeEntityById(e),b.of(!0)})):this.restService.extendDelete(e,r).pipe(d.switchMap(function(){return n.repository.entityCollection.removeEntityById(e),n.repository.dataChangeHistory.addChange({dataId:e,changeType:I.DataChangeType.Delete}),b.of(!0)}))},le.prototype.removeAndSaveById=function(e){var t=this,n=pe.buildRequestInfo(this.repository);return this.restProxy.deleteAndSave(e,n).pipe(d.switchMap(function(){return t.repository.entityCollection.removeEntityById(e),b.of(!0)}))},le.prototype.removeByIds=function(n,e){var r=this;e=e===undefined||e;var t=this.restService.buildRequestInfo();return this.restService.extendBatchDelete(n,t).pipe(d.switchMap(function(){if(e)return r.applyChangesByIdArray(n).pipe(d.tap(function(e){e&&r.repository.entityCollection.removeEntities(function(e){return r.checkEntityValueExists(e,n)})}));if(r.repository.entityCollection.removeEntities(function(e){return r.checkEntityValueExists(e,n)}),n&&0<n.length){var t=[];n.forEach(function(e){t.push({dataId:e,changeType:I.DataChangeType.Delete})}),r.repository.dataChangeHistory.addChanges(t)}return b.of(!0)}))},le.prototype.batchRemove=function(t,e){var n=this,r=this.restService.buildRequestInfo();return this.restService.extendBatchDeletion(t,r).pipe(d.switchMap(function(){return e?n.applyChangesByIdArray(t).pipe(d.tap(function(e){e&&n.removeEntities(t)})):(n.removeEntities(t),n.addBatchRemoveHistory(t),b.of(!0))}))},le.prototype.addBatchRemoveHistory=function(e){if(e&&0<e.length){var t=[];e.forEach(function(e){t.push({dataId:e,changeType:I.DataChangeType.Delete})}),this.repository.dataChangeHistory.addChanges(t)}},le.prototype.removeEntities=function(t){var n=this;this.repository.entityCollection.removeEntities(function(e){return n.checkEntityValueExists(e,t)})},le.prototype.checkEntityValueExists=function(e,t){for(var n=!1,r=0;r<t.length;r++)if(e.primaryValue===t[r]){n=!0;break}return n},le.prototype.removeByPath=function(e,t){var n=this,r=this.restService.buildRequestInfo();return this.restService.extendDeletByPath(e,t,r).pipe(d.map(function(){return n.repository.entityManager.removeEntityByPath(e,t),n.repository.dataChangeHistory.addChange({fpath:e,dataId:t,changeType:I.DataChangeType.Delete}),!0}))},le.prototype.batchRemoveByPath=function(t,n){var r=this,e=this.restService.buildRequestInfo();return this.restService.batchDeleteByPath(t,n,e).pipe(d.map(function(){var e=n.split(",");return 0<e.length&&e.forEach(function(e){r.repository.entityManager.removeEntityByPath(t,e),r.repository.dataChangeHistory.addChange({fPath:t,dataId:e,changeType:I.DataChangeType.Delete})}),!0}))},le.prototype.updateChangesById=function(e){var t=this,n=this.repository.entityCollection.getEntityById(e);if(!n.changes)return b.of(!0);if(0===n.changes.length)return b.of(!0);var r=this.repository.entityManager.buildEntityChangeDetailById(e),i=this.restService.buildRequestInfo();return this.restService.update(r,i).pipe(d.tap(function(){t.repository.entityManager.clearEntityChangesById(e)}),d.map(function(){return!0}))},le.prototype.updateChangesByPath=function(e,t){throw new Error("Not Implement")},le.prototype.updateAllChanges=function(){var n=this,r=[],e=this.repository.entityCollection.toArray();return 0===e.length?b.of(!0):(e.forEach(function(e){var t=n.updateChangesById(e.primaryValue);r.push(t)}),b.zip.apply(void 0,R(r)).pipe(d.map(function(){return!0})))},le.prototype.applyChanges=function(){var e=this,t=this.restService.buildRequestInfo();return this.restService.save(t).pipe(d.tap(function(){e.repository.entityManager.clearAllEntityChanges(),e.repository.dataChangeHistory.clear()}),d.map(function(){return!0}))},le.prototype.applyChangesByIdArray=function(e){var t=this,n=this.restService.buildRequestInfo();return this.restService.save(n).pipe(d.tap(function(){t.repository.entityManager.clearEntityChangesByArray(e),t.repository.dataChangeHistory.clearByIds(e)}),d.map(function(){return!0}))},le.prototype.applyChangesById=function(e){var t=this,n=this.restService.buildRequestInfo();return this.restService.save(n).pipe(d.tap(function(){t.repository.entityManager.clearEntityChangesById(e),t.repository.dataChangeHistory.clearByIds([e])}),d.map(function(){return!0}))},le.prototype.cancelChanges=function(e){var t=this;return this.restService.cancel(e).pipe(d.tap(function(){t.repository.entityManager.clearAllEntityChanges(),t.repository.dataChangeHistory.clear()}),d.map(function(){return!0}))},le.prototype.batchAppendByPath=function(i,e){var o=this,t=this.buildRequestInfo();return this.restProxy.batchAppendByPath(i,e,t).pipe(d.map(function(e){var t=e.returnValue,n=o.repository.entityManager.createEntitiesByPath(i,t),r=i.split("/").filter(function(e){return e});return o.repository.entityManager.appendEntitiesByPath(r,n),n}))},le.prototype.batchAppend=function(e){var r=this,t=this.buildRequestInfo();return this.restProxy.batchAppend(e,t).pipe(d.map(function(e){var t=e.returnValue,n=r.repository.buildEntities(t);return r.repository.entityCollection.addEntities(n),n}))},le.prototype.buildRequestInfo=function(){return{dataChange:this.repository.entityManager.buildAllEntityChangeDetails(),variableChange:this.repository.variableManager.buildChangeDetail()}},le);function le(e,t){this.injector=e,this.repository=t;var n=e.get(f),r=e.get(h.HttpClient),i=e.get(y)+"/"+this.repository.apiUri,o=e.get(I.EventBus);this.restService=new we(r,i,n,this.repository,o),this.appContext=e.get(I.AppContext)}var de=(fe.handleMessage=function(e,t,n){var r={ns:t.get(I.NAMESPACE,null),appContext:t.get(I.AppContext,null)},i=this.buildBackEndMessages(e),o=new I.BackEndMessage.Message(i,r),a=t.get(I.BACK_END_MESSAGE_HANDLER_TOKEN,null);a&&a.handle(o,n)},fe.isBackEndMessageHandlerExist=function(e){return!!e.get(I.BACK_END_MESSAGE_HANDLER_TOKEN,null)},fe.getFormlessMessages=function(e){return(this.buildBackEndMessages(e)||[]).filter(function(e){return!e.location||!e.location.columns||e.location.columns.length<1||!e.location.nodeCode})},fe.buildBackEndMessages=function(e){if(!e||e.length<1||!Array.isArray(e))return null;var n=[];return e.forEach(function(e){var t={level:e.level,message:e.message};e.hasOwnProperty("location")&&e.location&&(t.location={nodeCode:e.location.nodeCode,rows:e.location.dataIds,columns:e.location.columnNames}),n.push(t)}),n},fe);function fe(){}var ge=(ve.getSessionId=function(e,t){var n=e.ApplicationId+"_"+t.beBaseUri;return this.createSessionHistory.includes(n)?b.of(null):(this.createSessionHistory.push(n),t.getBeSessionId())},ve.createSessionHistory=[],ve.decorators=[{type:o.Injectable}],ve);function ve(){}var Ie=(Se.prototype.onResponse=function(e,t){e&&e.innerDataChange&&!0!==t&&this.context.handleDataChangeDetails(e.innerDataChange),e&&e.innerVariableChange&&this.context.handleVariableChangeDetail(e.innerVariableChange);var n=j.parseBackEndMessage(e);return de.handleMessage(n,this.context.getInjector()),this.context.clearAllEntityChanges(),e&&e.hasOwnProperty("returnValue")?e.returnValue:e},Se.prototype.onError=function(e,t,n){var r,i,o=this.context.appContext.getFormAppContext(),a=o.ApplicationId,s=window.DEVKIT_LOADING_SERVICE,p=j.parseBackEndError(e);if(de.handleMessage(p,this.context.getInjector()),s&&s instanceof Array&&0<s.length)try{for(var u=B(s),c=u.next();!c.done;c=u.next()){var h=c.value;"function"==typeof h.clearAll&&h.clearAll()}}catch(S){r={error:S}}finally{try{c&&!c.done&&(i=u["return"])&&i.call(u)}finally{if(r)throw r.error}}if(t)return b.throwError(e);var y=this.context.restService.eventBus,l=!!(window[a]||{}).isExceptionHandlerExist,d=j.parseBackEndError(e),f=de.getFormlessMessages(d),g=f&&0<f.length||!1,v=!(e&&e.error&&e.error.extensionMessage&&de.isBackEndMessageHandlerExist(this.context.getInjector())&&!g),I=!!y&&l&&v;return de.handleMessage(d,this.context.getInjector(),{hasThrowError:I,isException:!0,eventBus:y,error:e,formAppContext:o}),y&&l&&!j.isReported401Error(e)?(v&&y.post("Exception","","onException",e,o),n?b.of(null):b.EMPTY):b.throwError(e)},Se.prototype.extendHeaders=function(t,n){var r=this,e=this.context.appContext.getFormAppContext();return ge.getSessionId(e,this.context.restService.sessionService).pipe(d.switchMap(function(e){return t=r.context.restService.sessionService.extendRequestHeaders(t,n),b.of(t)}))},Se.prototype.extendUrl=function(e,t){if(!t)return e;for(var n in t)if(t.hasOwnProperty(n)){var r=JSON.stringify(t[n]);e=-1===e.indexOf("?")?e+"?"+n+"="+r:e+"&"+n+"="+r}return e},Se.prototype.extendBody=function(t){var n=this;return!t||"object"!=typeof t||Object.keys(t).length<1||(Object.keys(t).forEach(function(e){"requestInfo"===e&&(t.requestInfo=n.context.restService.buildRequestInfo())}),1===Object.keys(t).length&&(t=Object.values(t)[0])),t},Se.prototype.parseHeaders=function(e){var t="BEFSessionID";e.headers&&e.headers.has(t)&&this.context.restService.sessionService.setBeSessionId(e.headers.get(t))},Se);function Se(e){this.context=e}var be,Ce=(x(me,be=$),Object.defineProperty(me.prototype,"proxy",{get:function(){return this.befProxy},set:function(e){this.befProxy=e,this.befProxy.setProxyExtend(new Ie(this))},enumerable:!0,configurable:!0}),me.prototype.getEntities=function(e,t,n,r){return this.dataService.getList(e,t,n,r)},me.prototype.filter=function(e,t,n,r){return void 0===e&&(e=[]),void 0===t&&(t=[]),this.dataService.filter(e,t,n,r)},me.prototype.queryChild=function(e,t,n,r,i){return this.dataService.queryChild(e,t,n,r,i)},me.prototype.updateEntityById=function(e){return this.dataService.updateById(e)},me.prototype.editEntityById=function(e){return this.dataService.editById(e)},me.prototype.createEntity=function(e){return this.dataService.create(e)},me.prototype.appendEntity=function(e){return this.dataService.append(e)},me.prototype.insert=function(e,t){return this.dataService.insert(e,t)},me.prototype.insertByPath=function(e,t){return this.dataService.insertByPath(e,t)},me.prototype.appendEntityByPath=function(e){return this.dataService.appendByPath(e)},me.prototype.removeEntityById=function(e,t){return this.dataService.removeById(e,t)},me.prototype.removeEntityAndSaveById=function(e){return this.dataService.removeAndSaveById(e)},me.prototype.removeEntityByPath=function(e,t){return this.dataService.removeByPath(e,t)},me.prototype.batchRemove=function(e,t){return void 0===t&&(t=!1),this.dataService.batchRemove(e,t)},me.prototype.batchRemoveByPath=function(e,t){return this.dataService.batchRemoveByPath(e,t)},me.prototype.saveEntityById=function(e){return this.dataService.applyChangesById(e)},me.prototype.saveEntities=function(){return this.dataService.applyChanges()},me.prototype.cancelEntityChanges=function(){return this.dataService.cancelChanges()},me.prototype.batchAppendByPath=function(e,t){return this.dataService.batchAppendByPath(e,t)},me.prototype.batchAppend=function(e){return this.dataService.batchAppend(e)},me.prototype.reset=function(){this.entityManager.reset(),this.variableManager.reset(),this.restService.sessionService.clearBeSessionId()},me.prototype.getInjector=function(){return this.injector},me.prototype.clearAllVariableChanges=function(){},me.decorators=[{type:o.Injectable}],me.ctorParameters=function(){return[{type:o.Injector}]},me);function me(e){var t=be.call(this)||this;t.injector=e,t.entityCollection&&(t.entityManager=new ne(t.entityCollection)),t.appContext=t.injector.get(I.AppContext);var n=I.MetadataUtil.getPropsMetadatasByName(t.constructor,X);return t.variableManager=new ae(t.appContext,n,t.injector),t.dataService=new ye(t.injector,t),t.serverUri=e.get(y),t}var Ee=(xe.prototype.extendUri=function(e){return this.serverUri+"/"+e},xe.decorators=[{type:o.Injectable}],xe.ctorParameters=function(){return[{type:String,decorators:[{type:o.Inject,args:[y]}]}]},xe);function xe(e){this.serverUri=e}var Be="DELETE",Pe="PUT",Re="POST",De=(qe.prototype.setBaseUri=function(e){this.baseUri=e},qe.prototype.setProxyExtend=function(e){this.proxyExtend=e},qe.prototype.query=function(e){var t=this.baseUri;return e&&(t=t+"?entityFilter="+JSON.stringify(e)),this.request(t,"GET")},qe.prototype.extendQuery=function(e,t){var n=this.baseUri+"/extension/query";if(e){var r=JSON.stringify(e);n=n+"?entityFilter="+(r=I.encodeUrl(r))}var i=t,o=this.addBodyToOptions({},i);return this.request(n,Pe,null,o,!1)},qe.prototype.filter=function(e,t){var n=this.baseUri+"/extension/filter",r={requestInfo:t};e&&(r={entityFilter:e,requestInfo:t});var i=this.addBodyToOptions({},r);return this.request(n,Re,null,i,!1)},qe.prototype.retrieve=function(e){var t=this.baseUri+"/"+e;return this.request(t,"GET")},qe.prototype.serviceRetrieve=function(e,t,n){var r=this.baseUri+"/service/retrieve/"+e,i={body:{retrieveParam:t,requestInfo:n}};return this.request(r,Pe,null,i)},qe.prototype.queryChild=function(e){var t=this.baseUri+"/service/querychild",n={body:e};return this.request(t,Pe,null,n)},qe.prototype.extendRetrieve=function(e,t,n){var r=this.baseUri+"/extension/retrieve/"+e,i=t;n&&(i={retrieveParam:n,requestInfo:t});var o=this.addBodyToOptions({},i);return this.request(r,Pe,null,o)},qe.prototype.edit=function(e,t){var n=this.baseUri+"/service/edit/"+e,r=t,i=this.addBodyToOptions({},r);return this.request(n,Pe,null,i)},qe.prototype.create=function(e,t){var n={defaultValue:e,requestInfo:t},r=this.addBodyToOptions({},n);return this.request(this.baseUri,Re,null,r)},qe.prototype.createByPath=function(e,t){var n=ce.convertPathToUrl(e),r=""+this.baseUri+n,i=t,o=this.addBodyToOptions({},i);return this.request(r,Re,null,o)},qe.prototype.update=function(e,t){var n={changeDetail:e,requestInfo:t},r=this.addBodyToOptions({},n);return this.request(this.baseUri,"PATCH",null,r)},qe.prototype.save=function(e){var t=e,n=this.addBodyToOptions({},t);return this.request(this.baseUri,Pe,null,n)},qe.prototype["delete"]=function(e){var t=this.baseUri+"/"+e;return this.request(t,Be)},qe.prototype.deleteAndSave=function(e,t){var n=this.baseUri+"/service/delete/"+e,r=t,i=this.addBodyToOptions({},r);return this.request(n,Pe,null,i)},qe.prototype.extendDelete=function(e,t){var n=this.baseUri+"/extension/delete/"+e,r=t,i=this.addBodyToOptions({},r);return this.request(n,Pe,null,i)},qe.prototype.deletByPath=function(e,t){var n=ce.convertPathToUrl(e),r=""+this.baseUri+n+"/"+t;return this.request(r,Be)},qe.prototype.extendDeletByPath=function(e,t,n){var r=ce.convertPathToUrl(e),i=this.baseUri+"/extension"+r+"/"+t,o=n,a=this.addBodyToOptions({},o);return this.request(i,Pe,null,a)},qe.prototype.batchDeleteByPath=function(e,t,n){var r=ce.convertPathToUrl(e);if(r.split("/").length<3)throw Error("根据path删除实体数据出错了。传入的path["+e+"]格式不对");var i=this.baseUri+"/extension"+r+"/batch",o={ids:t.split(","),requestInfo:n},a=this.addBodyToOptions({},o);return this.request(i,Pe,null,a)},qe.prototype.batchDelete=function(e){var t={ids:e.join(",")};return this.request(this.baseUri,Be,t)},qe.prototype.extendBatchDeletion=function(e,t){var n=this.baseUri+"/extension/batchdeletion",r={ids:e,requestInfo:t},i=this.addBodyToOptions({},r);return this.request(n,Pe,null,i)},qe.prototype.extendBatchDelete=function(e,t){var n=this.baseUri+"/extension/batchdelete",r={ids:e.join(",")},i=t,o=this.addBodyToOptions({},i);return this.request(n,Pe,r,o)},qe.prototype.cancel=function(e){var t=this.baseUri+"/service/cancel";return this.request(t,Re,null,null,!1,!1,!1,e)},qe.prototype.batchAppendByPath=function(e,t,n){var r=ce.convertPathToUrl(e),i=""+this.baseUri+r+"/batch",o={requestInfo:n,retrieveDefaultParam:{defaultValues:t}},a=this.addBodyToOptions({},o);return this.request(i,Re,null,a)},qe.prototype.batchAppend=function(e,t){var n=this.baseUri+"/batch",r={requestInfo:t,retrieveDefaultParam:{defaultValues:e}},i=this.addBodyToOptions({},r);return this.request(n,Re,null,i)},qe.prototype.request=function(t,n,e,r,i,o,a,s){var p=this;r=r||{},void 0!==i&&"boolean"==typeof i||(i=!1),void 0!==o&&"boolean"==typeof o||(o=!1),e&&(r.params=e),r.headers=D.convertToHeaders(r.headers);var u=this.hasRequestInfo(r);return r&&r.body&&r.body.hasOwnProperty("RequestInfo")&&(r.body.requestInfo=r.body.RequestInfo,delete r.body.RequestInfo),this.proxyExtend.extendHeaders(r.headers,s).pipe(d.switchMap(function(e){return r.headers=D.toJson(e),r.observe="response",p.httpService.request(n,t,r)}),d.tap(function(e){return p.proxyExtend.parseHeaders(e)}),d.map(function(e){return e.body}),d.map(function(e){return u?(p.proxyExtend.onResponse(e,a),e):p.unWrapResponseInfo(e)}),d.catchError(function(e){return p.proxyExtend.onError(e,i,o)}))},qe.prototype.invoke=function(t,n,r){var i=this;return r.params&&(t=this.proxyExtend.extendUrl(t,r.params),r.params=null),r.body&&(r.body=this.proxyExtend.extendBody(r.body)),r.headers=D.convertToHeaders(r.headers),this.proxyExtend.extendHeaders(r.headers).pipe(d.switchMap(function(e){return r.headers=D.toJson(e),r.observe="response",i.httpService.request(n,t,r).pipe(d.tap(function(e){return i.proxyExtend.parseHeaders(e)}),d.map(function(e){return e.body}),d.map(function(e){return i.proxyExtend.onResponse(e)}),d.catchError(function(e){return i.proxyExtend.onError(e,!1,!1)}))}))},qe.prototype.addBodyToOptions=function(e,t){return e=e||{},Object.assign(e,{body:t})},qe.prototype.buildParams=function(e){return w.buildParams(e)},qe.prototype.hasRequestInfo=function(e){return M.hasRequestInfo(e)||M.hasRequestInfoWithR(e)},qe.prototype.unWrapResponseInfo=function(e){return j.unWrapResponseInfo(e)},qe.decorators=[{type:o.Injectable}],qe.ctorParameters=function(){return[{type:h.HttpClient},{type:Ee}]},qe);function qe(e,t){this.httpClient=e,this.uriService=t,this.httpService=new U(this.httpClient)}var we=(Object.defineProperty(Te.prototype,"proxy",{get:function(){return this.repository.proxy?this.repository.proxy:this.createBefProxy()},enumerable:!0,configurable:!0}),Te.prototype.createBefProxy=function(){var e=this.repository.serverUri,t=new Ee(e),n=new De(this.httpClient,t);n.setBaseUri(this.baseUri);var r=new Ie(this.repository);return n.setProxyExtend(r),n},Te.prototype.query=function(e){return this.proxy.query(e)},Te.prototype.extendQuery=function(e,t){return this.proxy.extendQuery(e,t)},Te.prototype.serviceRetrieve=function(e,t,n){return this.proxy.serviceRetrieve(e,t,n)},Te.prototype.queryChild=function(e){return this.proxy.queryChild(e)},Te.prototype.retrieve=function(e){return this.proxy.retrieve(e)},Te.prototype.extendRetrieve=function(e,t,n){return this.proxy.extendRetrieve(e,t,n)},Te.prototype.create=function(e,t){return this.proxy.create(e,t)},Te.prototype.createByPath=function(e,t){return this.proxy.createByPath(e,t)},Te.prototype.update=function(e,t){return this.proxy.update(e,t)},Te.prototype.save=function(e){return this.proxy.save(e)},Te.prototype["delete"]=function(e){return this.proxy["delete"](e)},Te.prototype.extendDelete=function(e,t){return this.proxy.extendDelete(e,t)},Te.prototype.deletByPath=function(e,t){return this.proxy.deletByPath(e,t)},Te.prototype.extendDeletByPath=function(e,t,n){return this.proxy.extendDeletByPath(e,t,n)},Te.prototype.batchDeleteByPath=function(e,t,n){return this.proxy.batchDeleteByPath(e,t,n)},Te.prototype.batchDelete=function(e){return this.proxy.batchDelete(e)},Te.prototype.extendBatchDelete=function(e,t){return this.proxy.extendBatchDelete(e,t)},Te.prototype.extendBatchDeletion=function(e,t){return this.proxy.extendBatchDeletion(e,t)},Te.prototype.cancel=function(e){return this.proxy.cancel(e)},Te.prototype.request=function(e,t,n,r,i,o,a){return this.innerRequest(e,t,n,r,i,o,a,!1)},Te.prototype.invoke=function(e,t,n,r,i,o,a){if(r&&r.body&&r.body.RequestInfo)throw new Error("请使用requestInfo提交变更");return this.innerRequest(e,t,n,r,i,o,a,!0)},Te.prototype.innerRequest=function(t,n,e,r,i,o,a,s){var p=this;r=r||{};var u="BEFSessionID";void 0!==i&&"boolean"==typeof i||(i=!1),void 0!==o&&"boolean"==typeof o||(o=!1),void 0!==s&&"boolean"==typeof s||(s=!1);var c=s?this.existRequestInfo:this.hasRequestInfo;e&&(r.params=e);var h=c(r),y=D.convertToHeaders(r.headers),l=this.repository.appContext.getFormAppContext();return ge.getSessionId(l,this.sessionService).pipe(d.switchMap(function(e){return y=p.sessionService.extendRequestHeaders(y),r.headers=D.toJson(y),r.observe="response",p.httpService.request(n,t,r)}),d.tap(function(e){e.headers&&e.headers.has(u)&&p.sessionService.setBeSessionId(e.headers.get(u))}),d.map(function(e){return e.body}),d.map(function(e){var t=j.parseBackEndMessage(e);return de.handleMessage(t,p.repository.getInjector()),p.handleReponseInfo(e,h,a)}),d.catchError(function(e){return p.handleErrors(e,i,o)}))},Te.prototype.handleReponseInfo=function(e,t,n){return t?(e&&e.innerDataChange&&!0!==n&&this.repository.handleDataChangeDetails(e.innerDataChange),e&&e.innerVariableChange&&this.repository.handleVariableChangeDetail(e.innerVariableChange),this.repository.clearAllEntityChanges(),e):this.unWrapResponseInfo(e)},Te.prototype.handleErrors=function(e,t,n){if(this.clearLoading(),t)return b.throwError(e);var r=this.repository.appContext.getFormAppContext(),i=r.ApplicationId,o=window[i]||{},a=j.parseBackEndError(e),s=de.getFormlessMessages(a),p=!!o.isExceptionHandlerExist,u=s&&0<s.length||!1,c=!(e&&e.error&&e.error.extensionMessage&&de.isBackEndMessageHandlerExist(this.repository.getInjector())&&!u),h=!!this.eventBus&&p&&c;return de.handleMessage(a,this.repository.getInjector(),{hasThrowError:h,isException:!0,eventBus:this.eventBus,error:e,formAppContext:r}),this.eventBus&&p&&!j.isReported401Error(e)?(c&&this.eventBus.post("Exception","","onException",e,r),n?b.of(null):b.EMPTY):b.throwError(e)},Te.prototype.clearLoading=function(){var e,t;if(!1!==(window.DEVKIT_LOADING_SERVICE&&window.DEVKIT_LOADING_SERVICE instanceof Array&&0<window.DEVKIT_LOADING_SERVICE.length||!1)){var n=window.DEVKIT_LOADING_SERVICE;try{for(var r=B(n),i=r.next();!i.done;i=r.next()){var o=i.value;"function"==typeof o.clearAll&&o.clearAll()}}catch(a){e={error:a}}finally{try{i&&!i.done&&(t=r["return"])&&t.call(r)}finally{if(e)throw e.error}}}},Te.prototype.unWrapResponseInfo=function(e){return j.unWrapResponseInfo(e)},Te.prototype.hasRequestInfo=function(e){return M.hasRequestInfoWithR(e)},Te.prototype.existRequestInfo=function(e){return M.hasRequestInfo(e)},Te.prototype.buildParams=function(e){return w.buildParams(e)},Te.prototype.buildBodyWithRequestInfo=function(e){return M.buildBodyWithRequestInfo(e,this.repository)},Te.prototype.buildRequestInfo=function(){return M.buildRequestInfo(this.repository)},Te.decorators=[{type:o.Injectable}],Te.ctorParameters=function(){return[{type:h.HttpClient},{type:String},{type:f},{type:Ce},{type:I.EventBus}]},Te);function Te(e,t,n,r,i){this.httpClient=e,this.httpService=new U(this.httpClient),this.baseUri=t;var o=r.getInjector();this.sessionService=new W(e,t,n,o),this.repository=r,this.eventBus=i}var Me=(Oe.prototype.getData=function(e,t){var n=e.split(".")[0],r=e.split(".")[1];return t=t||{},!0===this.ifEnableExtendLoadMethod(e)?this.extendGetHelpData(r,n,t):this.getHelpData(r,n,t)},Oe.prototype.saveUserSettings=function(e){var n=this;return this.befRepository.restService.invoke("/api/runtime/bcc/v1.0/datagrid/settings","POST",null,{body:e},!1).pipe(d.catchError(function(e){var t=n.befRepository.appContext.getFormAppContext();return n.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))},Oe.prototype.getUserSettings=function(e){var n=this,t="/api/runtime/bcc/v1.0/datagrid/settings/"+e;return this.befRepository.restService.invoke(t,"GET",null,null,!1).pipe(d.catchError(function(e){var t=n.befRepository.appContext.getFormAppContext();return n.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))},Oe.prototype.ifEnableExtendLoadMethod=function(e){if(this.context&&this.context.hasOwnProperty("enableExtendLoadMethod"))return this.context.enableExtendLoadMethod;var t=!1;if(this.frameContext){var n=e+"@"+this.frameContext.repository.apiUri;t=this.frameContext.getParam(n)}return t},Oe.prototype.getHelpData=function(e,t,n){var r=this,i=this.befRepository.restService.baseUri+"/elementhelps/"+e;return this.befRepository.updateDataAndVariableChanges().pipe(d.switchMap(function(){return r.befRepository.restService.invoke(i,"GET",{nodeCode:t,queryParam:JSON.stringify(n)},null,!1).pipe(d.catchError(function(e){var t=r.befRepository.appContext.getFormAppContext();return r.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))}))},Oe.prototype.extendGetHelpData=function(e,t,n){var r=this,i=this.befRepository.restService.baseUri+"/extension/elementhelps",o={body:{labelId:e,nodeCode:t,queryParam:n,requestInfo:this.befRepository.restService.buildRequestInfo()}};return this.befRepository.restService.invoke(i,"PUT",null,o,!1,!0,!0).pipe(d.map(function(e){return e&&e.returnValue||null}),d.catchError(function(e){var t=r.befRepository.appContext.getFormAppContext();return r.befRepository.restService.eventBus.post("Exception","","onException",e,t),b.EMPTY}))},Oe.prototype.convert2TreeDataWithPathCode=function(r,t,n){var i=this;void 0===t&&(t=1),void 0===n&&(n="01");var e=r.filter(function(e){return e.layer===t&&e.pathcode===n});if(1<t&&(e=r.filter(function(e){return e.layer===t&&e.pathcode.substr(0,2*(t-1))===n})),e.length){var o=e.map(function(e){return{data:e,children:[]}});return o.forEach(function(e){var t,n=i.convert2TreeDataWithPathCode(r,e.data.layer+1,e.data.pathcode);(t=e.children).push.apply(t,R(n))}),o}},Oe.decorators=[{type:o.Injectable}],Oe.ctorParameters=function(){return[{type:I.Repository},{type:I.FrameContext,decorators:[{type:o.Optional}]}]},Oe);function Oe(e,t){this.frameContext=t,this.befRepository=e}var je=(Ae.prototype.createSession=function(e){var t=this.sessionService.getUserSessionId();return t?this.befRepository.restService.invoke(e,"POST",null,{headers:new h.HttpHeaders({SessionId:t}),responseType:"text"},!1).pipe(d.switchMap(function(e){return b.of({status:!0,payload:e})})):b.of({status:!1,payload:"用户登录信息已过期,请重新登录"})},Ae.prototype.getData=function(e,t){var n=this,r={};t.condition&&(r=t.condition),"/"===e[e.length-1]&&(e=e.substr(0,e.length-1));var i=e+"/extension/query",o=e+"/service/createsession";if(r){var a=JSON.stringify(r);i=i+"?entityFilter="+a}return this.createSession(o).pipe(d.switchMap(function(e){if(e.status)return e.payload,n.befRepository.restService.invoke(i,"PUT",null,{},!1);throw new Error(e.payload)}),s.map(function(e){var t=e.returnValue,n={items:t.result};return t.pagination?Object.assign({},n,{total:t.pagination.totalCount,pageInfo:{pageSize:t.pagination.pageSize,pageIndex:t.pagination.pageIndex,enablePager:!0}}):n}))},Ae.decorators=[{type:o.Injectable}],Ae.ctorParameters=function(){return[{type:I.Repository},{type:f}]},Ae);function Ae(e,t){this.sessionService=t,this.befRepository=e}var Ue=(Ve.isExistUnsaveData=function(e){var t=!1;if(!e||!e.entityCollection)throw"Current Object is null or it's entityCollection is null.";var n=e.entityCollection.toArray();if(e.dataChangeHistory.isChanged())return!0;for(var r=0;r<n.length;r++)if(0<n[r].changes.length){t=!0;break}return t},Ve);function Ve(){}var He=(ke.prototype.toString=function(){return this.url},ke);function ke(e,t){void 0===t&&(t=null);var n=this;this.url=e,this.paths=t,this.paths&&Object.keys(t).forEach(function(e){-1!==n.url.indexOf("{"+e+"}")&&(n.url=n.url.replace("{"+e+"}",""+t[e]))})}var Fe=(Ne.prototype.getData=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n="GET");var r=new h.HttpHeaders({"content-type":"application/json"});return"get"!==n.toLowerCase()?this.befRest.restService.invoke(e,n,null,{headers:r,body:t}):this.befRest.restService.invoke(e,n,t,{headers:r})},Ne.decorators=[{type:o.Injectable}],Ne.ctorParameters=function(){return[{type:I.Repository}]},Ne);function Ne(e){this.befRest=e}var _e=(Le.prototype.getData=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n="GET");var r=new h.HttpHeaders({"content-type":"application/json"});return this.befRest.restService.invoke(e,n,t,{headers:r})},Le.decorators=[{type:o.Injectable}],Le.ctorParameters=function(){return[{type:I.Repository}]},Le);function Le(e){this.befRest=e}var Ke,Ge=(x(ze,Ke=Ce),ze.prototype.batchAppend=function(e){throw new Error("Method not implemented.")},ze);function ze(e,t,n,r,i){var o=Ke.call(this,e)||this;o.name=t,o.entityType=n,o.serverUri=r,o.apiUri=i,o.apiUri=i;var a={};a[n.typeName]={pageSize:20},o.paginationInfo=a,o.entityTypeInfo=new I.DataTypeInfo(o.entityType),o.entityCollection=new I.EntityCollection(o.entityType),o.entityManager=new ne(o.entityCollection);var s=e.get(h.HttpClient),p=new Ee(r),u=new De(s,p),c=p.extendUri(i);return u.setBaseUri(c),o.dataService=new ye(e,o),o.serverUri=e.get(y),o}var Je,We=(x(Ye,Je=Ce),Ye.prototype.batchAppend=function(e){throw new Error("Method not implemented.")},Ye);function Ye(e,t){var n=Je.call(this,e)||this;n.schema=t;var r=new I.EntityTypeFactory;return n.entityType=r.create(t),n.entityTypeInfo=new I.DataTypeInfo(n.entityType),n.entityCollection=new I.EntityCollection(n.entityType),n.entityManager=new ne(n.entityCollection),n}e.VERSION="ver.",e.ChangeDetailType=S,e.BE_SERVER_URI_TOKEN=y,e.BE_SESSION_HANDLING_STRATEGY_TOKEN=a,e.BefChangeBuilder=p,e.BefChangeHandler=c,e.BefSessionService=W,e.BefRestService=we,e.BefProxy=De,e.BefLookupRestService=Me,e.BefLookupDefaultService=je,e.BefRepository=Ce,e.FrameworkSessionService=f,e.NG_VARIABLE=X,e.NgVariable=Z,e.BefRepositoryUtil=Ue,e.BefDataPathUtil=ce,e.UriService=Ee,e.Uri=He,e.DefaultComboHttpService=Fe,e.DefaultDynamiControlGroupHttpService=_e,e.BefEntityManager=ne,e.DynamicBefRepository=Ge,e.PresetBefRepository=We,e.ɵa=$,Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=farris-bef.umd.min.js.map

@@ -121,4 +121,4 @@ /**

/**
* 分页查询各从表数据
* @param {?} id 主表id
* @deprecated 方法已经废弃,请勿使用
* @param {?} id
* @param {?} retrieveParam

@@ -153,9 +153,13 @@ * @param {?} requestInfo

* @param {?} requestInfo
* @param {?=} retrieveParam
* @return {?}
*/
extendRetrieve(id, requestInfo) {
extendRetrieve(id, requestInfo, retrieveParam) {
/** @type {?} */
const url = `${this.baseUri}/extension/retrieve/${id}`;
/** @type {?} */
const body = requestInfo;
let body = requestInfo;
if (retrieveParam) {
body = { retrieveParam, requestInfo };
}
/** @type {?} */

@@ -648,2 +652,2 @@ const options = this.addBodyToOptions({}, body);

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFL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QWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGVuY29kZVVybCB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSVByb3h5RXh0ZW5kLCBSZXF1ZXN0SW5mbywgUmVzcG9uc2VJbmZvLCBDaGFuZ2VEZXRhaWwgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmRGF0YVBhdGhVdGlsIH0gZnJvbSAnLi9iZWZfZGF0YV9wYXRoX3V0aWwnO1xyXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi91cmlfc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJVdGlsLCBIdHRwUGFyYW1VdGlsLCBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzL2luZGV4JztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XHJcblxyXG5cclxuY29uc3QgR0VUID0gJ0dFVCc7XHJcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xyXG5jb25zdCBQVVQgPSAnUFVUJztcclxuY29uc3QgUE9TVCA9ICdQT1NUJztcclxuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xyXG5cclxuLyoqXHJcbiAqIEJlZuS7o+eQhuexu1xyXG4gKiDku6PnkIbnsbvnmoTogYzotKPmmK/lpITnkIZodHRw6K+35rGC77yM5Y+R6YCB5LiA5LiqaHR0cOivt+axguaJgOmcgOeahOi1hOa6kOacie+8mnVyae+8jG1ldGhvZO+8jGhlYWRlcuOAgWJvZHnjgIFxdWVyeSBwYXJhbWV0ZXJcclxuICogdXJpIOeUsXVyaVNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJlZlByb3h5IHtcclxuICBwcm90ZWN0ZWQgcHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZDtcclxuICAvKipcclxuICAgKiByZXN0ZnVs5Z+66Lev5b6EXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhc2VVcmk6IHN0cmluZztcclxuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHVibGljIHVyaVNlcnZpY2U6IFVyaVNlcnZpY2UpIHtcclxuICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgSHR0cFNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u5Z+66Lev5b6EXHJcbiAgICogQHBhcmFtIGJhc2VVcmkg5Z+66Lev5b6EXHJcbiAgICovXHJcbiAgcHVibGljIHNldEJhc2VVcmkoYmFzZVVyaTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7nrZbnlaXmqKHlvI9cclxuICAgKiBAcGFyYW0gc3RyYXRlZ3kg562W55WlXHJcbiAgICovXHJcbiAgcHVibGljIHNldFByb3h5RXh0ZW5kKHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQpIHtcclxuICAgIHRoaXMucHJveHlFeHRlbmQgPSBwcm94eUV4dGVuZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJpO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9xdWVyeWA7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGxldCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgZW50aXR5RmlsdGVySnNvbiA9IGVuY29kZVVybChlbnRpdHlGaWx0ZXJKc29uKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+i5pWw5o2u77yI5bim6L+H5ruk5p2h5Lu277yJXHJcbiAgICogQHBhcmFtIGVudGl0eUZpbHRlciDov4fmu6TjgIHmjpLluo/jgIHliIbpobXkv6Hmga9cclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKiBAZGVzY3JpcHRpb24g5ZKMZXh0ZW5kUXVlcnnkuIDoh7TvvIzku4XlsIbmn6Xor6Llj4LmlbDmlL7liLBib2R55LitXHJcbiAgICovXHJcbiAgcHVibGljIGZpbHRlcihlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9maWx0ZXJgO1xyXG4gICAgbGV0IGJvZHk6IGFueSA9IHsgcmVxdWVzdEluZm8gfTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgYm9keSA9IHsgZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOWNleaNruWGheeggVxyXG4gICAqIEByZXR1cm4g5pWw5o2u5a+56LGhXHJcbiAgICovXHJcbiAgcHVibGljIHJldHJpZXZlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5ZCE5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOS4u+ihqGlkXHJcbiAgICogQHBhcmFtIG9wdGlvbnMg6YCJ6aG5XHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keTogeyByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcXVlcnljaGlsZGA7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyBib2R5OiBwYXJhbXMgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2u77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9yZXRyaWV2ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICovXHJcbiAgcHVibGljIGVkaXQoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9lZGl0LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7rkuIDmnaHmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBkZWZhdWx0VmFsdWUsXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mbyxcclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQT1NULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOS7juihqOaWsOWinlxyXG4gICAqIEBwYXRoIOaWsOWinui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVCeVBhdGgoZnBhdGg6IHN0cmluZywgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH1gO1xyXG5cclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5o+Q5Lqk5Y+Y5pu0XHJcbiAgICovXHJcbiAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGNoYW5nZURldGFpbCxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBQQVRDSCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmiafooYzkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZShyZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOW5tuS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGVBbmRTYXZlKGlkOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvZGVsZXRlLyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTvvIjmianlsZXvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIERFTEVURSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlkI7ku6PvvIjmianlsZXvvIlcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZnBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24ke3BhdGhVcmx9LyR7aWR9YDtcclxuICAgIGNvbnN0IGJvZHkgPSByZXF1ZXN0SW5mbztcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpOWQjuS7o1xyXG4gICAqIEBwYXJhbSBmUGF0aCAnZXh0ZW5zaW9uL3tyb290SWR9L2NjL2JhdGNoJ1xyXG4gICAqIEBwYXJhbSAgaWRzIOWtkOmbhmlkXHJcbiAgICogQHBhcmFtICByZXF1ZXN0SW5mbyDor7fmsYLkv6Hmga9cclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCBwYXRoVXJsID0gQmVmRGF0YVBhdGhVdGlsLmNvbnZlcnRQYXRoVG9VcmwoZlBhdGgpO1xyXG4gICAgY29uc3QgcGF0aEFycmF5ID0gcGF0aFVybC5zcGxpdCgnLycpO1xyXG4gICAgaWYgKHBhdGhBcnJheS5sZW5ndGggPCAzKSB7XHJcbiAgICAgIHRocm93IEVycm9yKGDmoLnmja5wYXRo5Yig6Zmk5a6e5L2T5pWw5o2u5Ye66ZSZ5LqG44CC5Lyg5YWl55qEcGF0aFske2ZQYXRofV3moLzlvI/kuI3lr7lgKTtcclxuICAgIH1cclxuICAgIC8qICAgY29uc3Qgcm9vdElkID0gcGF0aEFycmF5WzFdO1xyXG5cclxuICAgIGNvbnN0IG5hbWVBcnJheSA9IFtdO1xyXG4gICAgcGF0aEFycmF5LmZvckVhY2goKG5hbWUsIGluZGV4KSA9PiB7XHJcbiAgICAgIGlmIChpbmRleCA+IDEgKSB7XHJcbiAgICAgICAgaWYgKG5hbWUuaW5kZXhPZigncycpICE9PSAtMSkge1xyXG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZS5zdWJzdHIoMCwgbmFtZS5sZW5ndGggLSAxKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5hbWVBcnJheS5wdXNoKG5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjaGlsZE5hbWUgPSBuYW1lQXJyYXkuam9pbignLycpOyovXHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbiR7cGF0aFVybH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgaWRzQXJyYXkgPSBpZHMuc3BsaXQoJywnKTtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGlkczogaWRzQXJyYXksXHJcbiAgICAgIHJlcXVlc3RJbmZvOiByZXF1ZXN0SW5mb1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpFxyXG4gICAqIEBwYXJhbSBpZHMg5b6F5Yig6Zmk55qEaWTmlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodGhpcy5iYXNlVXJpLCBERUxFVEUsIHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOagueaNrmlkc+aJuemHj+WIoOmZpOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZHMgaWRzXHJcbiAgICogQHBhcmFtIGlmU2F2ZSDmmK/lkKbkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQmF0Y2hEZWxldGlvbihpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vYmF0Y2hkZWxldGlvbmA7XHJcbiAgICBjb25zdCBib2R5ID0ge1xyXG4gICAgICBpZHM6IGlkcyxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vYmF0Y2hkZWxldGVgO1xyXG4gICAgY29uc3QgcGFyYW1zID0ge1xyXG4gICAgICBpZHM6IGlkcy5qb2luKCcsJylcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBwYXJhbXMsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIOWPlua2iFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWwoY29udGV4dD86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvY2FuY2VsYDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQT1NULCBudWxsLCBudWxsLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBjb250ZXh0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+aWsOWinuS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGF0aCDlrp7kvZPnu5Hlrprot6/lvoTvvIxsaWtlIDEvY2hpbGRzIG9yIDEvY2hpbGRzLzExL2NoaWxkY2hpbGRzXHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZXMg6buY6K6k5a6e5L2T5pWw5o2u5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoQXBwZW5kQnlQYXRoKHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlczogQXJyYXk8YW55PiwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChwYXRoKTtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0ke3BhdGhVcmx9L2JhdGNoYDtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIHJlcXVlc3RJbmZvLFxyXG4gICAgICByZXRyaWV2ZURlZmF1bHRQYXJhbToge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmibnph4/mlrDlop7kuLvooajmlbDmja5cclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlcyDpu5jorqTlrp7kvZPmlbDmja7mlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hBcHBlbmQoZGVmYXVsdFZhbHVlczogQXJyYXk8YW55PiwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vYmF0Y2hgOztcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIHJlcXVlc3RJbmZvLFxyXG4gICAgICByZXRyaWV2ZURlZmF1bHRQYXJhbToge1xyXG4gICAgICAgIGRlZmF1bHRWYWx1ZXNcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG1heC1saW5lLWxlbmd0aFxyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbiwgcnVudGltZUNvbnRleHQ/OiBhbnlcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq6KGM5aSE55CG6ZSZ6K+vXHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDlpITnkIZoZWFkZXJzXHJcbiAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICAvLyAx44CB5Yik5pat5piv5ZCm5bimcmVxdWVzdEluZm/vvIjkuI3ljLrliIbpppblrZfmr43lpKflsI/lhpnvvIk7XHJcbiAgICAvLyAy44CB5aaC5p6c5Lyg6YCS55qE5pivUmVxdWVzdEluZm/vvIzliJnovazmjaLkuLpyZXF1ZXN0SW5mb++8m1xyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSB0aGlzLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5ib2R5ICYmIG9wdGlvbnMuYm9keS5oYXNPd25Qcm9wZXJ0eSgnUmVxdWVzdEluZm8nKSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkucmVxdWVzdEluZm8gPSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICAgIGRlbGV0ZSBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm87XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycywgcnVudGltZUNvbnRleHQpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcChoZWFkZXJzID0+IHtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5wYXJzZUhlYWRlcnMocmVzcG9uc2UpKSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gcmVzdWx0LmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGhhc1JlcXVlc3RJbmZvKSB7XHJcbiAgICAgICAgICB0aGlzLnByb3h5RXh0ZW5kLm9uUmVzcG9uc2UocmVzdWx0LCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuXHJcbiAgICAgICAgICAvLyBib2R56YeM5rKh5pyJcmVxdWVzdEluZm/nmoTmg4XlhrXvvIzmqKHmi5/ogIHnmoTlpITnkIbmlrnlvI/vvIjkuI3muIXnkIblj5jmm7TjgIHlsIZyZXR1cm5WYWx1Zeino+aekOWHuuadpe+8iVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqGh0dHBjbGllbnTlj5bmlbBcclxuICAgKiBAcGFyYW0gdXJsIHVybFxyXG4gICAqIEBwYXJhbSBtZXRob2QgbWV0aG9kc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgb3B0aW9uczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChvcHRpb25zLnBhcmFtcykge1xyXG4gICAgICB1cmwgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZFVybCh1cmwsIG9wdGlvbnMucGFyYW1zKTtcclxuICAgICAgb3B0aW9ucy5wYXJhbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdGlvbnMuYm9keSkge1xyXG4gICAgICBvcHRpb25zLmJvZHkgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEJvZHkob3B0aW9ucy5ib2R5KTtcclxuICAgIH1cclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIGNvbnN0IGhlYWRlcnMkID0gdGhpcy5wcm94eUV4dGVuZC5leHRlbmRIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcbiAgICByZXR1cm4gaGVhZGVycyQucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpXHJcbiAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICAgICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQpKSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLnByb3h5RXh0ZW5kLm9uRXJyb3IoZXJyb3IsIGZhbHNlLCBmYWxzZSkpXHJcbiAgICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWQkUh0dHBPcHRpb25z5a+56LGh5Lit5re75YqgYm9keVxyXG4gICAqIEBwYXJhbSBvcHRpb25zIOWOn+adpeeahG9wdGlvbnNcclxuICAgKiBAcGFyYW0gYm9keSBib2R55YaF5a65XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhZGRCb2R5VG9PcHRpb25zKG9wdGlvbnM6IGFueSwgYm9keTogYW55KSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IG1lcmdlZE9wdGlvbnMgPSBPYmplY3QuYXNzaWduKG9wdGlvbnMsIHsgYm9keSB9KTtcclxuICAgIHJldHVybiBtZXJnZWRPcHRpb25zO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmnoTpgKBIdHRwUGFyYW1z5a+56LGhXHJcbiAgICogQHBhcmFtIHBhcmFtcyDor7fmsYLlj4LmlbBcclxuICAgKi9cclxuICBwcml2YXRlIGJ1aWxkUGFyYW1zKHBhcmFtczogb2JqZWN0KTogSHR0cFBhcmFtcyB7XHJcbiAgICByZXR1cm4gSHR0cFBhcmFtVXRpbC5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpIHx8IFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mb1dpdGhSKG9wdGlvbnMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgKi9cclxuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Byb3h5LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGZhcnJpcy9iZWYvIiwic291cmNlcyI6WyJsaWIvYmVmX3Byb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakcsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztNQUd2QyxHQUFHLEdBQUcsS0FBSzs7TUFDWCxNQUFNLEdBQUcsUUFBUTs7TUFDakIsR0FBRyxHQUFHLEtBQUs7O01BQ1gsSUFBSSxHQUFHLE1BQU07O01BQ2IsS0FBSyxHQUFHLE9BQU87Ozs7OztBQVFyQixNQUFNLE9BQU8sUUFBUTs7Ozs7SUFPbkIsWUFBbUIsVUFBc0IsRUFBUyxVQUFzQjtRQUFyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0RSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7SUFLTSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDOzs7Ozs7SUFL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YkYsVUFBVTs7OztZQXBCVSxVQUFVO1lBSXRCLFVBQVU7Ozs7Ozs7SUFrQmpCLCtCQUFvQzs7Ozs7O0lBSXBDLDJCQUEwQjs7Ozs7SUFDMUIsK0JBQWlDOztJQUNyQiw4QkFBNkI7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMsIEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IGVuY29kZVVybCB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSVByb3h5RXh0ZW5kLCBSZXF1ZXN0SW5mbywgUmVzcG9uc2VJbmZvLCBDaGFuZ2VEZXRhaWwsIFJldHJpZXZlUGFyYW0gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmRGF0YVBhdGhVdGlsIH0gZnJvbSAnLi9iZWZfZGF0YV9wYXRoX3V0aWwnO1xyXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi91cmlfc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJVdGlsLCBIdHRwUGFyYW1VdGlsLCBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzL2luZGV4JztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XHJcblxyXG5cclxuY29uc3QgR0VUID0gJ0dFVCc7XHJcbmNvbnN0IERFTEVURSA9ICdERUxFVEUnO1xyXG5jb25zdCBQVVQgPSAnUFVUJztcclxuY29uc3QgUE9TVCA9ICdQT1NUJztcclxuY29uc3QgUEFUQ0ggPSAnUEFUQ0gnO1xyXG5cclxuLyoqXHJcbiAqIEJlZuS7o+eQhuexu1xyXG4gKiDku6PnkIbnsbvnmoTogYzotKPmmK/lpITnkIZodHRw6K+35rGC77yM5Y+R6YCB5LiA5LiqaHR0cOivt+axguaJgOmcgOeahOi1hOa6kOacie+8mnVyae+8jG1ldGhvZO+8jGhlYWRlcuOAgWJvZHnjgIFxdWVyeSBwYXJhbWV0ZXJcclxuICogdXJpIOeUsXVyaVNlcnZpY2VcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJlZlByb3h5IHtcclxuICBwcm90ZWN0ZWQgcHJveHlFeHRlbmQ6IElQcm94eUV4dGVuZDtcclxuICAvKipcclxuICAgKiByZXN0ZnVs5Z+66Lev5b6EXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGJhc2VVcmk6IHN0cmluZztcclxuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cENsaWVudDogSHR0cENsaWVudCwgcHVibGljIHVyaVNlcnZpY2U6IFVyaVNlcnZpY2UpIHtcclxuICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgSHR0cFNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6K6+572u5Z+66Lev5b6EXHJcbiAgICogQHBhcmFtIGJhc2VVcmkg5Z+66Lev5b6EXHJcbiAgICovXHJcbiAgcHVibGljIHNldEJhc2VVcmkoYmFzZVVyaTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmJhc2VVcmkgPSBiYXNlVXJpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDorr7nva7nrZbnlaXmqKHlvI9cclxuICAgKiBAcGFyYW0gc3RyYXRlZ3kg562W55WlXHJcbiAgICovXHJcbiAgcHVibGljIHNldFByb3h5RXh0ZW5kKHByb3h5RXh0ZW5kOiBJUHJveHlFeHRlbmQpIHtcclxuICAgIHRoaXMucHJveHlFeHRlbmQgPSBwcm94eUV4dGVuZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+iXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgdXJsID0gdGhpcy5iYXNlVXJpO1xyXG4gICAgaWYgKGVudGl0eUZpbHRlcikge1xyXG4gICAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJqeWxleafpeivolxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRRdWVyeShlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9xdWVyeWA7XHJcbiAgICBpZiAoZW50aXR5RmlsdGVyKSB7XHJcbiAgICAgIGxldCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgICAgZW50aXR5RmlsdGVySnNvbiA9IGVuY29kZVVybChlbnRpdHlGaWx0ZXJKc29uKTtcclxuICAgICAgdXJsID0gYCR7dXJsfT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICB9XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMsIGZhbHNlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5p+l6K+i5pWw5o2u77yI5bim6L+H5ruk5p2h5Lu277yJXHJcbiAgICogQHBhcmFtIGVudGl0eUZpbHRlciDov4fmu6TjgIHmjpLluo/jgIHliIbpobXkv6Hmga9cclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKiBAZGVzY3JpcHRpb24g5ZKMZXh0ZW5kUXVlcnnkuIDoh7TvvIzku4XlsIbmn6Xor6Llj4LmlbDmlL7liLBib2R55LitXHJcbiAgICovXHJcbiAgcHVibGljIGZpbHRlcihlbnRpdHlGaWx0ZXI6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9maWx0ZXJgO1xyXG4gICAgbGV0IGJvZHk6IGFueSA9IHsgcmVxdWVzdEluZm8gfTtcclxuICAgIGlmIChlbnRpdHlGaWx0ZXIpIHtcclxuICAgICAgYm9keSA9IHsgZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucywgZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOWNleaNruWGheeggVxyXG4gICAqIEByZXR1cm4g5pWw5o2u5a+56LGhXHJcbiAgICovXHJcbiAgcHVibGljIHJldHJpZXZlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgR0VUKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQg5pa55rOV5bey57uP5bqf5byD77yM6K+35Yu/5L2/55SoXHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keTogeyByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyB9XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L3NlcnZpY2UvcXVlcnljaGlsZGA7XHJcbiAgICBjb25zdCBvcHRpb25zID0geyBib2R5OiBwYXJhbXMgfTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qOA57Si5pWw5o2u77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbywgcmV0cmlldmVQYXJhbT86IFJldHJpZXZlUGFyYW0pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9leHRlbnNpb24vcmV0cmlldmUvJHtpZH1gO1xyXG4gICAgbGV0IGJvZHk6IGFueSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgaWYgKHJldHJpZXZlUGFyYW0pIHtcclxuICAgICAgYm9keSA9IHsgcmV0cmlldmVQYXJhbSwgcmVxdWVzdEluZm8gfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBVVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmo4DntKLmlbDmja5cclxuICAgKi9cclxuICBwdWJsaWMgZWRpdChpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9zZXJ2aWNlL2VkaXQvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuS4gOadoeaVsOaNrlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55LCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGRlZmF1bHRWYWx1ZSxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmFkZEJvZHlUb09wdGlvbnMoe30sIGJvZHkpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBPU1QsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5LuO6KGo5paw5aKeXHJcbiAgICogQHBhdGgg5paw5aKe6Lev5b6E77yI5LuO6KGo5b2i5aaC77yaLzEvZWR1c++8jOS7juS7juihqOW9ouWmgu+8mi8xL2VkdXMvMTEvZ3JhZGVz77yJXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfWA7XHJcblxyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqTlj5jmm7RcclxuICAgKi9cclxuICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgY2hhbmdlRGV0YWlsLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm8sXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIFBBVENILCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJp+ihjOS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHRoaXMuYmFzZVVyaSwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9LyR7aWR9YDtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBERUxFVEUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5bm25L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0ZUFuZFNhdmUoaWQ6IGFueSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9kZWxldGUvJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpO+8iOaJqeWxle+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uL2RlbGV0ZS8ke2lkfWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5ZCO5LujXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8iOS7juihqOW9ouWmgu+8mi8xL2VkdXPvvIzku47ku47ooajlvaLlpoLvvJovMS9lZHVzLzExL2dyYWRlc++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9JHtwYXRoVXJsfS8ke2lkfWA7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgREVMRVRFKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpOWQjuS7o++8iOaJqeWxle+8iVxyXG4gICAqIEBwYXJhbSBmcGF0aCDniLbot6/lvoTvvIjku47ooajlvaLlpoLvvJovMS9lZHVz77yM5LuO5LuO6KGo5b2i5aaC77yaLzEvZWR1cy8xMS9ncmFkZXPvvIlcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmcGF0aCk7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbiR7cGF0aFVybH0vJHtpZH1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk5ZCO5LujXHJcbiAgICogQHBhcmFtIGZQYXRoICdleHRlbnNpb24ve3Jvb3RJZH0vY2MvYmF0Y2gnXHJcbiAgICogQHBhcmFtICBpZHMg5a2Q6ZuGaWRcclxuICAgKiBAcGFyYW0gIHJlcXVlc3RJbmZvIOivt+axguS/oeaBr1xyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZUJ5UGF0aChmUGF0aDogc3RyaW5nLCBpZHM6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIGNvbnN0IHBhdGhVcmwgPSBCZWZEYXRhUGF0aFV0aWwuY29udmVydFBhdGhUb1VybChmUGF0aCk7XHJcbiAgICBjb25zdCBwYXRoQXJyYXkgPSBwYXRoVXJsLnNwbGl0KCcvJyk7XHJcbiAgICBpZiAocGF0aEFycmF5Lmxlbmd0aCA8IDMpIHtcclxuICAgICAgdGhyb3cgRXJyb3IoYOagueaNrnBhdGjliKDpmaTlrp7kvZPmlbDmja7lh7rplJnkuobjgILkvKDlhaXnmoRwYXRoWyR7ZlBhdGh9XeagvOW8j+S4jeWvuWApO1xyXG4gICAgfVxyXG4gICAgLyogICBjb25zdCByb290SWQgPSBwYXRoQXJyYXlbMV07XHJcblxyXG4gICAgY29uc3QgbmFtZUFycmF5ID0gW107XHJcbiAgICBwYXRoQXJyYXkuZm9yRWFjaCgobmFtZSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKGluZGV4ID4gMSApIHtcclxuICAgICAgICBpZiAobmFtZS5pbmRleE9mKCdzJykgIT09IC0xKSB7XHJcbiAgICAgICAgICBuYW1lQXJyYXkucHVzaChuYW1lLnN1YnN0cigwLCBuYW1lLmxlbmd0aCAtIDEpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbmFtZUFycmF5LnB1c2gobmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnN0IGNoaWxkTmFtZSA9IG5hbWVBcnJheS5qb2luKCcvJyk7Ki9cclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vZXh0ZW5zaW9uJHtwYXRoVXJsfS9iYXRjaGA7XHJcbiAgICBjb25zdCBpZHNBcnJheSA9IGlkcy5zcGxpdCgnLCcpO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgaWRzOiBpZHNBcnJheSxcclxuICAgICAgcmVxdWVzdEluZm86IHJlcXVlc3RJbmZvXHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUFVULCBudWxsLCBvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6ZmkXHJcbiAgICogQHBhcmFtIGlkcyDlvoXliKDpmaTnmoRpZOaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgaWRzOiBpZHMuam9pbignLCcpXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh0aGlzLmJhc2VVcmksIERFTEVURSwgcGFyYW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWRz5om56YeP5Yig6Zmk5a6e5L2TXHJcbiAgICogQHBhcmFtIGlkcyBpZHNcclxuICAgKiBAcGFyYW0gaWZTYXZlIOaYr+WQpuS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0aW9uKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0aW9uYDtcclxuICAgIGNvbnN0IGJvZHkgPSB7XHJcbiAgICAgIGlkczogaWRzLFxyXG4gICAgICByZXF1ZXN0SW5mbzogcmVxdWVzdEluZm9cclxuICAgIH07XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIG51bGwsIG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk77yI5omp5bGV77yJXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmJhc2VVcml9L2V4dGVuc2lvbi9iYXRjaGRlbGV0ZWA7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkczogaWRzLmpvaW4oJywnKVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hZGRCb2R5VG9PcHRpb25zKHt9LCBib2R5KTtcclxuICAgIHJldHVybiB0aGlzLnJlcXVlc3QodXJsLCBQVVQsIHBhcmFtcywgb3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raIXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbChjb250ZXh0PzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYmFzZVVyaX0vc2VydmljZS9jYW5jZWxgO1xyXG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCh1cmwsIFBPU1QsIG51bGwsIG51bGwsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGNvbnRleHQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXRoIOWunuS9k+e7keWumui3r+W+hO+8jGxpa2UgMS9jaGlsZHMgb3IgMS9jaGlsZHMvMTEvY2hpbGRjaGlsZHNcclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlcyDpu5jorqTlrp7kvZPmlbDmja7mlbDnu4RcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hBcHBlbmRCeVBhdGgocGF0aDogc3RyaW5nLCBkZWZhdWx0VmFsdWVzOiBBcnJheTxhbnk+LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgcGF0aFVybCA9IEJlZkRhdGFQYXRoVXRpbC5jb252ZXJ0UGF0aFRvVXJsKHBhdGgpO1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfSR7cGF0aFVybH0vYmF0Y2hgO1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgcmVxdWVzdEluZm8sXHJcbiAgICAgIHJldHJpZXZlRGVmYXVsdFBhcmFtOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlc1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+aWsOWinuS4u+ihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaEFwcGVuZChkZWZhdWx0VmFsdWVzOiBBcnJheTxhbnk+LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5iYXNlVXJpfS9iYXRjaGA7O1xyXG4gICAgY29uc3QgYm9keSA9IHtcclxuICAgICAgcmVxdWVzdEluZm8sXHJcbiAgICAgIHJldHJpZXZlRGVmYXVsdFBhcmFtOiB7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlc1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMuYWRkQm9keVRvT3B0aW9ucyh7fSwgYm9keSk7XHJcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KHVybCwgUE9TVCwgbnVsbCwgb3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbWF4LWxpbmUtbGVuZ3RoXHJcbiAgcHVibGljIHJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLCBydW50aW1lQ29udGV4dD86IGFueVxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAvLyDmmK/lkKboh6rooYzlpITnkIbplJnor69cclxuICAgIGlmICh0eXBlb2YgKHNlbGZIYW5kRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHNlbGZIYW5kRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgc2VsZkhhbmRFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOaYr+WQpuW/veeVpeW8guW4uOe7p+e7reaJp+ihjFxyXG4gICAgaWYgKHR5cGVvZiAoaWdub3JlRXJyb3IpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKGlnbm9yZUVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIGlnbm9yZUVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcGFyYW1zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWkhOeQhmhlYWRlcnNcclxuICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIC8vIDHjgIHliKTmlq3mmK/lkKbluKZyZXF1ZXN0SW5mb++8iOS4jeWMuuWIhummluWtl+avjeWkp+Wwj+WGme+8iTtcclxuICAgIC8vIDLjgIHlpoLmnpzkvKDpgJLnmoTmmK9SZXF1ZXN0SW5mb++8jOWImei9rOaNouS4unJlcXVlc3RJbmZv77ybXHJcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IHRoaXMuaGFzUmVxdWVzdEluZm8ob3B0aW9ucyk7XHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5Lmhhc093blByb3BlcnR5KCdSZXF1ZXN0SW5mbycpKSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keS5yZXF1ZXN0SW5mbyA9IG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgICAgZGVsZXRlIG9wdGlvbnMuYm9keS5SZXF1ZXN0SW5mbztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzLCBydW50aW1lQ29udGV4dCkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKGhlYWRlcnMgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB0aGlzLnByb3h5RXh0ZW5kLnBhcnNlSGVhZGVycyhyZXNwb25zZSkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuYm9keSksXHJcbiAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcclxuICAgICAgICAgIHRoaXMucHJveHlFeHRlbmQub25SZXNwb25zZShyZXN1bHQsIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgICAgIC8vIGJvZHnph4zmsqHmnIlyZXF1ZXN0SW5mb+eahOaDheWGte+8jOaooeaLn+iAgeeahOWkhOeQhuaWueW8j++8iOS4jea4heeQhuWPmOabtOOAgeWwhnJldHVyblZhbHVl6Kej5p6Q5Ye65p2l77yJXHJcbiAgICAgICAgICByZXR1cm4gdGhpcy51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm94eUV4dGVuZC5vbkVycm9yKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6LCD55SoaHR0cGNsaWVudOWPluaVsFxyXG4gICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RzXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBpbnZva2UodXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBvcHRpb25zOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKG9wdGlvbnMucGFyYW1zKSB7XHJcbiAgICAgIHVybCA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kVXJsKHVybCwgb3B0aW9ucy5wYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucy5ib2R5KSB7XHJcbiAgICAgIG9wdGlvbnMuYm9keSA9IHRoaXMucHJveHlFeHRlbmQuZXh0ZW5kQm9keShvcHRpb25zLmJvZHkpO1xyXG4gICAgfVxyXG4gICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwuY29udmVydFRvSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xyXG4gICAgY29uc3QgaGVhZGVycyQgPSB0aGlzLnByb3h5RXh0ZW5kLmV4dGVuZEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuICAgIHJldHVybiBoZWFkZXJzJC5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoaGVhZGVycyA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5oZWFkZXJzID0gSHR0cEhlYWRlclV0aWwudG9Kc29uKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMub2JzZXJ2ZSA9ICdyZXNwb25zZSc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cFNlcnZpY2UucmVxdWVzdChtZXRob2QsIHVybCwgb3B0aW9ucylcclxuICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICB0YXAoKHJlc3BvbnNlOiBhbnkpID0+IHRoaXMucHJveHlFeHRlbmQucGFyc2VIZWFkZXJzKHJlc3BvbnNlKSksXHJcbiAgICAgICAgICAgIG1hcCgocmVzdWx0OiBhbnkpID0+IHJlc3VsdC5ib2R5KSxcclxuICAgICAgICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4gdGhpcy5wcm94eUV4dGVuZC5vblJlc3BvbnNlKHJlc3VsdCkpLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHRoaXMucHJveHlFeHRlbmQub25FcnJvcihlcnJvciwgZmFsc2UsIGZhbHNlKSlcclxuICAgICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5ZCRSHR0cE9wdGlvbnPlr7nosaHkuK3mt7vliqBib2R5XHJcbiAgICogQHBhcmFtIG9wdGlvbnMg5Y6f5p2l55qEb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBib2R5IGJvZHnlhoXlrrlcclxuICAgKi9cclxuICBwcml2YXRlIGFkZEJvZHlUb09wdGlvbnMob3B0aW9uczogYW55LCBib2R5OiBhbnkpIHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24ob3B0aW9ucywgeyBib2R5IH0pO1xyXG4gICAgcmV0dXJuIG1lcmdlZE9wdGlvbnM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBvYmplY3QpOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm8ob3B0aW9ucykgfHwgUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhui/lOWbnuWAvO+8jOWFvOWuueiAgeeJiOacrFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdDogYW55KSB7XHJcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICB9XHJcbn1cclxuIl19

@@ -130,17 +130,2 @@ /**

/**
* 通过id获取实体数据及带分页的子表数据
* \@description
* 实体仓库中对应的实体及其子表数据会自动更新,返回id对应的主表实体 \
* 使用示例:
* ```typescript
* const id = this.bindingData.list.currentId as string;
* const update$ = this.repository.getPagedById(id);
* ```
* @param {?} id 主表上的实体id
* @return {?}
*/
getPagedById(id) {
return this.dataService.getPagedById(id);
}
/**
* 分页查询从表/从从表数据

@@ -184,13 +169,2 @@ * \@todo 目前并未应用排序和过滤条件

/**
* 获取主键为id的实体
* \@description
* 获取主表上对应主键的实体,调用该方法成功后实体仓库中仅包含这一个实体 \
* 如果仅仅想要将对应id的实体同步为服务器上的值,请调用 {\@link updateEntityById} 方法
* @param {?} id 主表实体主键
* @return {?}
*/
getEntityById(id) {
return this.dataService.getById(id);
}
/**
* 更新实体数据

@@ -468,2 +442,2 @@ * \@description

export { BefRepository };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3JlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmFycmlzL2JlZi8iLCJzb3VyY2VzIjpbImxpYi9iZWZfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckQsT0FBTyxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7QUFPL0MsTUFDZSxhQUFnQyxTQUFRLHVCQUEwQjs7OztJQXFDL0UsWUFBb0IsUUFBa0I7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBR3BDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLFdBQVc7WUFDWCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbEU7UUFFRCxXQUFXO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBYSxVQUFVLENBQUMsQ0FBQzs7Y0FDdEQsV0FBVyxHQUFHLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJ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SUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzs7Ozs7SUFNTSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzFDLENBQUM7Ozs7Ozs7OztJQVNNLGlCQUFpQixDQUFDLElBQVksRUFBRSxhQUF5QjtRQUM5RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Ozs7OztJQUtNLFdBQVcsQ0FBQyxhQUF5QjtRQUMxQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Ozs7OztJQUtNLEtBQUs7UUFDVixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNyRCxDQUFDOzs7Ozs7SUFNTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDOzs7OztJQUlNLHVCQUF1QjtRQUM1Qix1Q0FBdUM7SUFDekMsQ0FBQzs7O1lBM1lGLFVBQVU7Ozs7WUFuQlUsUUFBUTs7Ozs7OztJQXNCM0IsaUNBQTJCOzs7Ozs7SUFnQjNCLHNDQUEwQzs7Ozs7O0lBTTFDLHdDQUEyQzs7SUFFM0MsbUNBQThCOzs7Ozs7O0lBSzlCLG9DQUF5Qzs7SUFFekMsa0NBQXlCOzs7OztJQUliLGlDQUEwQjs7QUF5V3hDLE9BQU8sRUFBRSxhQUFhLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIEBBdXRob3I6IFdpdHRcclxuICogQERhdGU6IDIwMTgtMTAtMTEgMTc6MzQ6MjZcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wOS0xMSAxNzoyMzoxNVxyXG4gKiBAdG9kb1xyXG4gKiAx44CB5L+u5pS5Y29tbWFuZC1zZXJ2aWNlc+S4reeahERhdGFTZXJ2aWNl77yM6LCD55So5paw55qEQVBJXHJcbiAqIDLjgIHnp7vpmaREZXByZWNhdGVkQmVmUmVwb3NpdG9yee+8jOWQr+eUqOaWsEFQSVxyXG4gKiAz44CB5L+u5pS5UmVwb3NpdG9yeeaKveixoeexu++8jOa3u+WKoOaWsEFQSVxyXG4gKiA044CB5a+5cGF0aOWBmuWkhOeQhu+8jOS/ruaUueS4uuaVsOe7hFxyXG4gKi9cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTWV0YWRhdGFVdGlsLCBFbnRpdHksIEFwcENvbnRleHQgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcblxyXG5pbXBvcnQgeyBOR19WQVJJQUJMRSB9IGZyb20gJy4vZGVjb3JhdG9ycyc7XHJcbmltcG9ydCB7IERlcHJlY2F0ZWRCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9kZXByZWNhdGVkL2RlcHJlY2F0ZWRfYmVmX3JlcG9zaXRvcnknO1xyXG5pbXBvcnQgeyBCZWZFbnRpdHlNYW5hZ2VyIH0gZnJvbSAnLi9iZWZfZW50aXR5X21hbmFnZXInO1xyXG5pbXBvcnQgeyBCZWZWYXJpYWJsZU1hbmFnZXIgfSBmcm9tICcuL2JlZl92YXJpYWJsZV9tYW5hZ2VyJztcclxuaW1wb3J0IHsgQmVmRGF0YVNlcnZpY2UgfSBmcm9tICcuL2JlZl9kYXRhX3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZQcm94eSB9IGZyb20gJy4vYmVmX3Byb3h5JztcclxuaW1wb3J0IHsgQmVmUHJveHlFeHRlbmQgfSBmcm9tICcuL2JlZl9wcm94eV9leHRlbmQnO1xyXG5pbXBvcnQgeyBCRV9TRVJWRVJfVVJJX1RPS0VOIH0gZnJvbSAnLi90b2tlbnMnO1xyXG4vKipcclxuICogQkVG5a6e5L2T5LuT5YKoXHJcbiAqIEBkZXNjcmlwdGlvblxyXG4gKiDotJ/otKPkuI7lkI7nq6/nmoTkuJrliqHlrp7kvZPmoYbmnrbkuqTkupLvvIznrqHnkIbkuJrliqHlrp7kvZPmlbDmja4gXFxcclxuICogYXBpVXJp56S65L6L5aaC5LiL77yaYXBpL3NjbS9zZC92MS4wL2VtcHNlcnZpY2XvvIzliY3lkI7lnYfkuI3luKbmlpzmnaBcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuYWJzdHJhY3QgY2xhc3MgQmVmUmVwb3NpdG9yeTxUIGV4dGVuZHMgRW50aXR5PiBleHRlbmRzIERlcHJlY2F0ZWRCZWZSZXBvc2l0b3J5PFQ+IHtcclxuXHJcbiAgcHJpdmF0ZSBiZWZQcm94eTogQmVmUHJveHk7XHJcbiAgLyoqXHJcbiAgICogQG1lbWJlciB7QmVmUHJveHl9IHByb3h5XHJcbiAgICogQGRlc2NyaXB0aW9uIOavj+S4gOS4qkJlZlJlcG9zaXRvcnnpg73pnIDopoHkuIDkuKpCZWbku6PnkIbvvIznlKjmnaXlpITnkIZodHRw6K+35rGCXHJcbiAgICovXHJcbiAgcHVibGljIHNldCBwcm94eSh2YWx1ZSkge1xyXG4gICAgdGhpcy5iZWZQcm94eSA9IHZhbHVlO1xyXG4gICAgdGhpcy5iZWZQcm94eS5zZXRQcm94eUV4dGVuZChuZXcgQmVmUHJveHlFeHRlbmQodGhpcykpO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHByb3h5KCk6IEJlZlByb3h5IHtcclxuICAgIHJldHVybiB0aGlzLmJlZlByb3h5O1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlrp7kvZPnrqHnkIblmahcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgZW50aXR5TWFuYWdlcjogQmVmRW50aXR5TWFuYWdlcjxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICog5Y+Y6YeP566h55CG5ZmoXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIHZhcmlhYmxlTWFuYWdlcjogQmVmVmFyaWFibGVNYW5hZ2VyO1xyXG5cclxuICBwdWJsaWMgYXBwQ29udGV4dDogQXBwQ29udGV4dDtcclxuICAvKipcclxuICAgKiDlj5bmlbDmnI3liqFcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IEJlZkRhdGFTZXJ2aWNlPFQ+O1xyXG5cclxuICBwdWJsaWMgc2VydmVyVXJpOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogQHBhcmFtIGluamVjdG9yIOS+nei1luazqOWFpeWZqFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGlmICh0aGlzLmVudGl0eUNvbGxlY3Rpb24pIHtcclxuICAgICAgLy8g5Yid5aeL5YyW5a6e5L2T566h55CG5ZmoXHJcbiAgICAgIHRoaXMuZW50aXR5TWFuYWdlciA9IG5ldyBCZWZFbnRpdHlNYW5hZ2VyKHRoaXMuZW50aXR5Q29sbGVjdGlvbik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5Yid5aeL5YyW5Y+Y6YeP566h55CG5ZmoXHJcbiAgICB0aGlzLmFwcENvbnRleHQgPSB0aGlzLmluamVjdG9yLmdldDxBcHBDb250ZXh0PihBcHBDb250ZXh0KTtcclxuICAgIGNvbnN0IG5nVmFyaWFibGVzID0gTWV0YWRhdGFVdGlsLmdldFByb3BzTWV0YWRhdGFzQnlOYW1lKHRoaXMuY29uc3RydWN0b3IsIE5HX1ZBUklBQkxFKTtcclxuICAgIHRoaXMudmFyaWFibGVNYW5hZ2VyID0gbmV3IEJlZlZhcmlhYmxlTWFuYWdlcih0aGlzLmFwcENvbnRleHQsIG5nVmFyaWFibGVzLCB0aGlzLmluamVjdG9yKTtcclxuXHJcbiAgICAvLyDliJ3lp4vljJZEYXRhU2VydmljZVxyXG4gICAgdGhpcy5kYXRhU2VydmljZSA9IG5ldyBCZWZEYXRhU2VydmljZSh0aGlzLmluamVjdG9yLCB0aGlzKTtcclxuICAgIHRoaXMuc2VydmVyVXJpID0gaW5qZWN0b3IuZ2V0PHN0cmluZz4oQkVfU0VSVkVSX1VSSV9UT0tFTik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDojrflj5blrp7kvZPliJfooahcclxuICAgKiBAcGFyYW0gZmlsdGVyIOi/h+a7pOadoeS7tlxyXG4gICAqIEBwYXJhbSBzb3J0IOaOkuW6j+adoeS7tlxyXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSDliIbpobXlpKflsI9cclxuICAgKiBAcGFyYW0gcGFnZUluZGV4IOmhteeggVxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOi/h+a7pOadoeS7tueahOekuuS+i+WmguS4i++8mu+8iOS4gOiIrOeUseetm+mAieadoeS7tuetiee7hOS7tueUn+aIkO+8jOebtOaOpeiOt+WPluW5tuS8oOWAvOWNs+WPr++8iVxyXG4gICAqIGBgYGpzb25cclxuICAgKiBbXHJcbiAgICogICB7XHJcbiAgICogICAgIFwiRmlsdGVyRmllbGRcIjogXCJEb21haW5JRC5Eb21haW5JRF9uYW1lXCIsXHJcbiAgICogICAgIFwiQ29tcGFyZVwiOiAwLFxyXG4gICAqICAgICBcIlZhbHVlXCI6IFwi5Lq65Yqb6LWE5rqQ6YOoXCIsXHJcbiAgICogICAgIFwiUmVsYXRpb25cIjogMSxcclxuICAgKiAgICAgXCJFeHByZXNzdHlwZVwiOiAwLFxyXG4gICAqICAgICBcIkxicmFja2V0XCI6IFwiKFwiLFxyXG4gICAqICAgICBcIlJicmFja2V0XCI6IFwiKVwiXHJcbiAgICogICB9LCB7XHJcbiAgICogICAgIFwiRmlsdGVyRmllbGRcIjogXCJCaWxsRGF0ZVwiLFxyXG4gICAqICAgICBcIkNvbXBhcmVcIjogMyxcclxuICAgKiAgICAgXCJWYWx1ZVwiOiBcIjIwMjEtMDktMDNcIixcclxuICAgKiAgICAgXCJSZWxhdGlvblwiOiAxLFxyXG4gICAqICAgICBcIkV4cHJlc3N0eXBlXCI6IDBcclxuICAgKiAgIH0sIHtcclxuICAgKiAgICAgXCJGaWx0ZXJGaWVsZFwiOiBcIkJpbGxEYXRlXCIsXHJcbiAgICogICAgIFwiQ29tcGFyZVwiOiA1LFxyXG4gICAqICAgICBcIlZhbHVlXCI6IFwiMjAyMS0xMC0wNVwiLFxyXG4gICAqICAgICBcIlJlbGF0aW9uXCI6IDEsXHJcbiAgICogICAgIFwiRXhwcmVzc3R5cGVcIjogMFxyXG4gICAqICAgfVxyXG4gICAqIF1cclxuICAgKiBgYGBcclxuICAgKiDkvb/nlKjnpLrkvovvvJpcclxuICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICogLy8g5LiA6Iis5Lya5Lul5a2X56ym5Liy55qE5b2i5byP6I635Y+W5Yiw6L+H5ruk5ZKM5o6S5bqP5p2h5Lu277yM5omA5Lul6ZyA6KaB6L+b6KGM6Kej5p6QXHJcbiAgICogY29uc3QgcXVlcnkkID0gdGhpcy5yZXBvc2l0b3J5LmdldEVudGl0aWVzKEpTT04ucGFyc2UoZmlsdGVyKSwgSlNPTi5wYXJzZShzb3J0KSwgbnVsbCwgbnVsbCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIGdldEVudGl0aWVzKGZpbHRlcjogYW55W10sIHNvcnQ6IGFueVtdLCBwYWdlU2l6ZTogbnVtYmVyIHwgbnVsbCwgcGFnZUluZGV4OiBudW1iZXIgfCBudWxsKTogT2JzZXJ2YWJsZTxUW10+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldExpc3QoZmlsdGVyLCBzb3J0LCBwYWdlU2l6ZSwgcGFnZUluZGV4KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog6I635Y+W5a6e5L2T5YiX6KGoXHJcbiAgICogQHBhcmFtIGZpbHRlciDov4fmu6TmnaHku7ZcclxuICAgKiBAcGFyYW0gc29ydHMg5o6S5bqP5p2h5Lu2XHJcbiAgICogQHBhcmFtIHBhZ2VTaXplIOWIhumhteWkp+Wwj1xyXG4gICAqIEBwYXJhbSBwYWdlSW5kZXgg6aG156CBXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog5LiOZ2V0RW50aXRpZXPmlrnms5Xlip/og73nm7jov5HvvIznlKjms5Xnm7jlkIwgXFxcclxuICAgKiDljLrliKvmmK/lnKjlj5HpgIHor7fmsYLml7bvvIzmnKzmlrnms5XkvJrlsIbmn6Xor6LmnaHku7bmlL7liLDor7fmsYLnmoRib2R55Lit77yM6ICMZ2V0RW50aXRpZXPmlrnms5XkvJrlsIbmn6Xor6LmnaHku7bmianlsZXliLDor7fmsYLnmoR1cmzkuIpcclxuICAgKiBAc2VlIHtAbGluayBnZXRFbnRpdGllc31cclxuICAgKi9cclxuICBwdWJsaWMgZmlsdGVyKGZpbHRlcjogYW55W10gPSBbXSwgc29ydHM6IGFueVtdID0gW10sIHBhZ2VTaXplOiBudW1iZXIgfCBudWxsLCBwYWdlSW5kZXg6IG51bWJlciB8IG51bGwpOiBPYnNlcnZhYmxlPFRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZmlsdGVyKGZpbHRlciwgc29ydHMsIHBhZ2VTaXplLCBwYWdlSW5kZXgpO1xyXG4gIH1cclxuICAvLyAjZW5kcmVnaW9uXHJcbiAgLyoqXHJcbiAgICog6YCa6L+HaWTojrflj5blrp7kvZPmlbDmja7lj4rluKbliIbpobXnmoTlrZDooajmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGo5LiK55qE5a6e5L2TaWRcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDlrp7kvZPku5PlupPkuK3lr7nlupTnmoTlrp7kvZPlj4rlhbblrZDooajmlbDmja7kvJroh6rliqjmm7TmlrDvvIzov5Tlm55pZOWvueW6lOeahOS4u+ihqOWunuS9kyBcXFxyXG4gICAqIOS9v+eUqOekuuS+i++8mlxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBjb25zdCBpZCA9IHRoaXMuYmluZGluZ0RhdGEubGlzdC5jdXJyZW50SWQgYXMgc3RyaW5nO1xyXG4gICAqIGNvbnN0IHVwZGF0ZSQgPSB0aGlzLnJlcG9zaXRvcnkuZ2V0UGFnZWRCeUlkKGlkKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0UGFnZWRCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldFBhZ2VkQnlJZChpZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGF0aHMg6YCa55So6Lev5b6EXHJcbiAgICogQHBhcmFtIHBhZ2VJbmRleCDpobXnoIFcclxuICAgKiBAcGFyYW0gcGFnZVNpemUg5YiG6aG15aSn5bCPXHJcbiAgICogQHBhcmFtIGZpbHRlciDov4fmu6TmnaHku7ZcclxuICAgKiBAcGFyYW0gc29ydCDmjpLluo9cclxuICAgKiBAdG9kbyDnm67liY3lubbmnKrlupTnlKjmjpLluo/lkozov4fmu6TmnaHku7ZcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDpgJrnlKjot6/lvoTmoLzlvI/kuLrvvJpbJ2lkOuS4u+ihqOS4u+mUruWAvCcsICfkuLvooajlrp7kvZPlsZ7mgKflkI0nLCAnaWQ65LuO6KGo5Li76ZSu5YC8JywgJ+S7juihqOWunuS9k+WxnuaAp+WQjSddIFxcXHJcbiAgICog6YCa55So6Lev5b6E55qE5Li76ZSu5YC85YmN5b+F6aG75ZCr5pyJ5YaS5Y+377yM5YaS5Y+35LmL5YmN55qEXCJpZFwi5YiZ5Y+v5Lul55yB55Wl77yI5Zug5Li66YCa55So6Lev5b6E6Zmk5LqG5oyH5ZCR5LuO6KGo77yM6L+Y5Y+v5Lul5oyH5ZCR5LuO6KGo5YWz6IGU562J562J77yM5omA5Lul5b+F6aG76YCa6L+H5YaS5Y+35p2l5Yy65Yir5Li76ZSu5YC85ZKM5bGe5oCn5ZCN77yJIFxcXHJcbiAgICog6YCa55So6Lev5b6E56S65L6L77yaWydpZDpUZWQnLCAnYWNjb3VudHMnLCAnaWQ6MTA4MTYnLCAnbG9ncyddIOaMh+WQkWFjY291bnRz5LuO6KGo5LiL55qEbG9nc+S7juS7juihqCBcXFxyXG4gICAqIHBhdGhz5Y+C5pWw6YG15LuO6YCa55So6Lev5b6E55qE5qC85byP77yM5bm25LiU5oyH5ZCR5LiA5Liq5LuO6KGo77yI5oiW6ICF5LuO5LuO6KGo77yJIFxcXHJcbiAgICog5L2/55So56S65L6L77yaXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIC8vIOWwhue7keWumui3r+W+hOS4i+W9k+WJjeihjOeahOi3r+W+hOi9rOaNouS4ukVudGl0eeWPr+ivhuWIq+eahOmAmueUqOi3r+W+hFxyXG4gICAqIGNvbnN0IGZ1bGxQYXRocyA9IEVudGl0eVBhdGhDb252ZXJ0ZXIudG9FbnRpdHlQYXRoQXJyYXkodGhpcy52aWV3TW9kZWwuYmluZGluZ1BhdGgsIHRoaXMuYmluZGluZ0RhdGEpO1xyXG4gICAqIGNvbnN0IHBhdGhzID0gZnVsbFBhdGhzLnNsaWNlKDAsIGZ1bGxQYXRocy5sZW5ndGggLSAxKTtcclxuICAgKiBjb25zdCBiaW5kaW5nUGF0aHMgPSB0aGlzLnZpZXdNb2RlbC5iaW5kaW5nUGF0aC5zcGxpdCgnLycpLmZpbHRlcihpdGVtID0+IGl0ZW0pO1xyXG4gICAqIGNvbnN0IGJpbmRpbmdEYXRhID0gdGhpcy52aWV3TW9kZWwuYmluZGluZ0RhdGE7XHJcbiAgICogbGV0IG5vZGVDb2RlID0gYmluZGluZ1BhdGhzW2JpbmRpbmdQYXRocy5sZW5ndGggLSAxXTtcclxuICAgKiBub2RlQ29kZSA9IG5vZGVDb2RlLnN1YnN0cigwLCBub2RlQ29kZS5sZW5ndGggLSAxKTtcclxuICAgKiAvLyDojrflj5bkuIrnuqflrp7kvZNcclxuICAgKiBjb25zdCBwYXJlbnRQYXRocyA9IGJpbmRpbmdQYXRocy5zbGljZSgwLCBiaW5kaW5nUGF0aHMubGVuZ3RoIC0gMSk7XHJcbiAgICogY29uc3QgcGFyZW50T2JqZWN0ID0gYmluZGluZ0RhdGEuZ2V0VmFsdWUocGFyZW50UGF0aHMpIGFzIEJpbmRpbmdPYmplY3Q7XHJcbiAgICogaWYgKCFwYXJlbnRPYmplY3QpIHtcclxuICAgKiAgIHRocm93IG5ldyBFcnJvcign5LiK57qn5a6e5L2T5LiN5a2Y5ZyoJyk7XHJcbiAgICogfVxyXG4gICAqIGNvbnN0IGNvbmZpZ1BhdGggPSBgLyR7bm9kZUNvZGV9XyR7cGFyZW50T2JqZWN0W3BhcmVudE9iamVjdC5wcmltYXJ5S2V5XX1gO1xyXG4gICAqIC8vIOiOt+WPlue7keWumui3r+W+hOWvueW6lOeahOWIhumhteS/oeaBr1xyXG4gICAqIGNvbnN0IHsgcGFnZUluZGV4ID0gMSwgcGFnZVNpemUgfSA9IHRoaXMucmVwb3NpdG9yeS5lbnRpdHlDb2xsZWN0aW9uLmdldFBhZ2luYXRpb25Db25maWdCeVBhdGgoY29uZmlnUGF0aCk7XHJcbiAgICogY29uc3QgcmVxdWVzdCQgPSB0aGlzLnJlcG9zaXRvcnkucXVlcnlDaGlsZChwYXRocywgcGFnZUluZGV4LCBwYWdlU2l6ZSk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGF0aHM6IHN0cmluZ1tdLCBwYWdlSW5kZXg6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgZmlsdGVyPzogc3RyaW5nLCBzb3J0Pzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5xdWVyeUNoaWxkKHBhdGhzLCBwYWdlSW5kZXgsIHBhZ2VTaXplLCBmaWx0ZXIsIHNvcnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDojrflj5bkuLvplK7kuLppZOeahOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDkuLvooajlrp7kvZPkuLvplK5cclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDojrflj5bkuLvooajkuIrlr7nlupTkuLvplK7nmoTlrp7kvZPvvIzosIPnlKjor6Xmlrnms5XmiJDlip/lkI7lrp7kvZPku5PlupPkuK3ku4XljIXlkKvov5nkuIDkuKrlrp7kvZMgXFxcclxuICAgKiDlpoLmnpzku4Xku4Xmg7PopoHlsIblr7nlupRpZOeahOWunuS9k+WQjOatpeS4uuacjeWKoeWZqOS4iueahOWAvO+8jOivt+iwg+eUqCB7QGxpbmsgdXBkYXRlRW50aXR5QnlJZH0g5pa55rOVXHJcbiAgICovXHJcbiAgcHVibGljIGdldEVudGl0eUJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0QnlJZChpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmm7TmlrDlrp7kvZPmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGo5a6e5L2T5Li76ZSuXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog6YeN5paw5LuO5pyN5Yqh5Zmo6I635Y+W5Li76KGo5LiK5a+55bqU5Li76ZSu55qE5a6e5L2T5pWw5o2uIFxcXHJcbiAgICog5L2/55So56S65L6L77yaXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIGNvbnN0IHJvb3REYXRhSWQgPSB0aGlzLmJpbmRpbmdEYXRhLmxpc3QuY3VycmVudElkO1xyXG4gICAqIHJldHVybiB0aGlzLnJlcG9zaXRvcnkudXBkYXRlRW50aXR5QnlJZChyb290RGF0YUlkKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlRW50aXR5QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOabtOaWsOWunuS9k+aVsOaNruW5tuWKoOmUgVxyXG4gICAqIEBwYXJhbSBpZCDkuLvooajlrp7kvZPkuLvplK5cclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDkvb/nlKjnpLrkvovvvJpcclxuICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICogaWQgPSB0aGlzLmJpbmRpbmdEYXRhLmxpc3QuY3VycmVudElkOyAgLy8g57yW6L6R5b2T5YmN6KGMXHJcbiAgICogY29uc3QgZWRpdCQgPSB0aGlzLnJlcG9zaXRvcnkuZWRpdEVudGl0eUJ5SWQoaWQpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHB1YmxpYyBlZGl0RW50aXR5QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5lZGl0QnlJZChpZCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65a6e5L2TXHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSDpu5jorqTlgLzvvIxKU09O5a+56LGhXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog6K+35rGC5Yib5bu65LiA5Liq5paw55qE5a6e5L2T77yM5bm25Yqg6L295Yiw5a6e5L2T5LuT5bqT77yI5Yqg6L295ZCO5LuT5bqT5Lit5Y+q5Lya5pyJ6L+Z5LiA5Liq5a6e5L2T77yM6YCC55So5LqO5Y2h54mH77yJIFxcXHJcbiAgICog5L2/55So56S65L6L77yaXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIC8vIOWcqOWIm+W7uuaWsOWunuS9k+WQjui/m+WFpee8lui+keeKtuaAgVxyXG4gICAqIGNvbnN0IGNyZWF0ZSQgPSB0aGlzLnJlcG9zaXRvcnkuY3JlYXRlRW50aXR5KCk7XHJcbiAgICogY3JlYXRlJC5waXBlKFxyXG4gICAqICAgdGFwKCgpID0+IHtcclxuICAgKiAgICAgICBFZGl0U3RhdGVVdGlsLnNldEVkaXRTdGF0ZSh0aGlzLmZyYW1lQ29udGV4dCwgbGFzdE1vZGlmaWVkSWQpO1xyXG4gICAqICAgfSlcclxuICAgKiApO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGVFbnRpdHkoZGVmYXVsdFZhbHVlPzogYW55KTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jcmVhdGUoZGVmYXVsdFZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOi/veWKoOWunuS9k1xyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUg6buY6K6k5YC8XHJcbiAgICogQGRlc2NyaXB0aW9uIOivt+axguWIm+W7uuS4gOS4quaWsOeahOWunuS9k++8jOW5tui/veWKoOWIsOWunuS9k+S7k+W6k++8iOmAgueUqOS6juWIl+ihqO+8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBlbmRFbnRpdHkoZGVmYXVsdFZhbHVlPzogYW55KTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5hcHBlbmQoZGVmYXVsdFZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuW5tuaPkuWFpeaWsOWunuS9k++8iOWQkeS4u+ihqOaPkuWFpe+8iVxyXG4gICAqIEBwYXJhbSBwb3NpdGlvbiDmj5LlhaXkvY3nva5cclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIOm7mOiupOWAvFxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOWFs+S6juaPkuWFpeS9jee9ru+8jOWPr+mAieWAvO+8mjHmiJYtMe+8jDHku6PooajlnKjlvZPliY3ooYzlkI7vvIwtMeS7o+ihqOWcqOW9k+WJjeihjOWJjVxyXG4gICAqL1xyXG4gIHB1YmxpYyBpbnNlcnQocG9zaXRpb246IDEgfCAtMSwgZGVmYXVsdFZhbHVlPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmluc2VydChwb3NpdGlvbiwgZGVmYXVsdFZhbHVlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5Yib5bu65a2Q5a6e5L2T5bm25o+S5YWl5Yiw5oyH5a6a5L2N572u77yI5ZCR5LuO6KGo5oiW5LuO5LuO6KGo5o+S5YWl77yJXHJcbiAgICogQHBhcmFtIHBhdGgg54i26Lev5b6EXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIOaPkuWFpeS9jee9rlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOWFs+S6jueItui3r+W+hOagvOW8j++8jOS7juihqOW9ouWmgu+8mlwiLzEvZWR1c1wi77yM5LuO5LuO6KGo5b2i5aaC77yaXCIvMS9lZHVzLzEyL2dyYWRlc1wiIFxcXHJcbiAgICog54i26Lev5b6E5piv55Sx5a6e5L2T5Li76ZSu5YC85ZKM5a6e5L2T5bGe5oCn5ZCN5oiQ5a+55ou85o6l6ICM5oiQ55qE5a2X56ym5Liy77yI55So5pac5p2g5YiG6ZqU77yJ77yM5oyH5ZCR6KaB5o+S5YWl55qE6YKj5byg6KGoIFxcXHJcbiAgICog54i26Lev5b6E5LiO5a6e5L2T6YCa55So6Lev5b6E5piv55u45Ly855qE77yM5Yy65Yir5Li76KaB5piv5qC85byP5LiK55qE5LiN5ZCM77yM54i26Lev5b6E5piv5a2X56ym5Liy6ICM5LiN5piv5pWw57uE77yM5Li76ZSu5YC85YmN6Z2i5LiN6ZyA6KaB5Yqg5YaS5Y+377yM54i26Lev5b6E5b+F6aG75oyH5ZCR5LuO6KGo6ICM5a6e5L2T6YCa55So6Lev5b6E6L+Y5Y+v5Lul5oyH5ZCR5a6e5L2T55qE5pmu6YCa5bGe5oCn5oiW6ICF5YWz6IGUIFxcXHJcbiAgICog5o+S5YWl5L2N572u5Y+C6ICDIHtAbGluayBpbnNlcnR9IFxcXHJcbiAgICog5L2/55So56S65L6L77yaXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIC8vIOaIkeS7rOWPr+S7pemAmui/h2JpbmRpbmdQYXRo5Lul5Y+KYmluZGluZ0RhdGHorqHnrpfmi7zmjqXlh7rlvZPliY3ooYzmiYDlsZ7ku47ooajnmoTniLbot6/lvoRcclxuICAgKiBjb25zdCBhcHBlbmQkID0gdGhpcy5yZXBvc2l0b3J5Lmluc2VydEJ5UGF0aChwYXRoLCBwb3NpdGlvbik7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIGluc2VydEJ5UGF0aChwYXRoOiBzdHJpbmcsIHBvc2l0aW9uOiAxIHwgLTEpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuaW5zZXJ0QnlQYXRoKHBhdGgsIHBvc2l0aW9uKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5Yib5bu65a2Q5a6e5L2T5bm26L+95Yqg5Yiw5pyr5bC+XHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hFxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOeItui3r+W+hOagvOW8j+WPguiAgyB7QGxpbmsgaW5zZXJ0QnlQYXRofVxyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBlbmRFbnRpdHlCeVBhdGgoZnBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8RW50aXR5PiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5hcHBlbmRCeVBhdGgoZnBhdGgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWTliKDpmaTlrp7kvZNcclxuICAgKiBAcGFyYW0gaWQg5Li76KGo5a6e5L2T5Li76ZSuXHJcbiAgICogQHBhcmFtIGlmU2F2ZSDmmK/lkKbkv53lrZjvvIzlj6/pgInvvIzpu5jorqTkuLp0cnVlXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog5aaC5p6caWZTYXZl5Lyg6YCS5Li6ZmFsc2XvvIzliJnkvJrmt7vliqDkuIDkuKrliKDpmaTlj5jmm7TvvIznrYnlvoXku6XlkI7kv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlRW50aXR5QnlJZChpZDogc3RyaW5nLCBpZlNhdmU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeUlkKGlkLCBpZlNhdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWTliKDpmaTlrp7kvZPlubbmiafooYzkv53lrZhcclxuICAgKiBAcGFyYW0gaWQg5Li76KGo5a6e5L2T5Li76ZSuXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUVudGl0eUFuZFNhdmVCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnJlbW92ZUFuZFNhdmVCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNrmlk5Yig6Zmk54i26Lev5b6E5LiL5a2Q6KGo5Lit55qE5a6e5L2TXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hFxyXG4gICAqIEBwYXJhbSBpZCDlrp7kvZPkuLvplK5cclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDniLbot6/lvoTmoLzlvI/lj4LogIMge0BsaW5rIGluc2VydEJ5UGF0aH1cclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlRW50aXR5QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnJlbW92ZUJ5UGF0aChmcGF0aCwgaWQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmoLnmja5pZHPmibnph4/liKDpmaTlrp7kvZNcclxuICAgKiBAcGFyYW0gaWRzIGlkc1xyXG4gICAqIEBwYXJhbSBpZlNhdmUg5piv5ZCm5L+d5a2YKOm7mOiupOS4umZhbHNlKVxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaFJlbW92ZShpZHM6IHN0cmluZ1tdLCBpZlNhdmU6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5iYXRjaFJlbW92ZShpZHMsIGlmU2F2ZSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+WIoOmZpOWtkOe6p+WunuS9k1xyXG4gICAqIEBwYXJhbSBmUGF0aCDniLbot6/lvoRcclxuICAgKiBAcGFyYW0gaWRzIOWtkOe6p2lk6ZuG5ZCIXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICogaWRz5Lit5ZCE5LiqaWTkuYvpl7Tku6XpgJflj7fliIbpmpTvvIzniLbot6/lvoTmoLzlvI/lj4LogIMge0BsaW5rIGluc2VydEJ5UGF0aH0gXFxcclxuICAgKiDkvb/nlKjnpLrkvovvvJpcclxuICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICogLy8gaWRz5a2X56ym5Liy5Y+v5Lul5LuO6KGo5Y2V5Y+Y6YePVUlTdGF0ZeS4reiOt+WPlu+8jOWIl+ihqOe7hOS7tueahOWLvumAieeKtuaAgeWPmOWMluWQjuS8muiHquWKqOabtOaWsOihqOWNleWPmOmHj1xyXG4gICAqIGNvbnN0IHJlbW92ZSQgPSB0aGlzLnJlcG9zaXRvcnkuYmF0Y2hSZW1vdmVCeVBhdGgocGF0aCwgaWRzKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hSZW1vdmVCeVBhdGgoZlBhdGg6IHN0cmluZywgaWRzOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmJhdGNoUmVtb3ZlQnlQYXRoKGZQYXRoLCBpZHMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDkv53lrZjkuLvplK7kuLppZOeahOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDkuLvooajlrp7kvZPkuLvplK5cclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDosIPnlKjor6Xmlrnms5XkvJrlupTnlKhpZOWvueW6lOWunuS9k+S4iueahOWPmOabtCBcXFxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBjb25zdCBpZCA9IHRoaXMuYmluZGluZ0RhdGEubGlzdC5jdXJyZW50SWQgYXMgc3RyaW5nO1xyXG4gICAqIGNvbnN0IHNhdmUkID0gdGhpcy5yZXBvc2l0b3J5LnNhdmVFbnRpdHlCeUlkKGlkKTsgIC8vIOWQkeacjeWKoeWZqOaPkOS6pOWPmOabtOW5tuW6lOeUqFxyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzYXZlRW50aXR5QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5hcHBseUNoYW5nZXNCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+S/neWtmFxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOW6lOeUqOaJgOacieWPmOabtO+8jOavlOWmguiwg+eUqOS6hiB7QGxpbmsgcmVtb3ZlRW50aXR5QnlJZH0g5LiU5pyq5L+d5a2Y5YiZ5Y+v5Lul6YCa6L+H5q2k5pa55rOV5L+d5a2YIFxcXHJcbiAgICog5Zyo5YiX6KGo5pyN5Yqh5Lit77yM5oiR5Lus5Y+v5Lul6YCa6L+H6LCD55So6K+l5pa55rOV5a6e546w5YiX6KGo5pWw5o2u55qE5om56YeP5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmVFbnRpdGllcygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGx5Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raI5a6e5L2T5Y+Y5pu0XHJcbiAgICogQGRlc2NyaXB0aW9uIOa4heepuuaJgOacieWunuS9k+WPmOabtO+8jOS4jeW4jOacm+S/neWtmOWPmOabtOaXtuiwg+eUqOatpOaWueazlVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWxFbnRpdHlDaGFuZ2VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY2FuY2VsQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5paw5aKe5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXRoIOeItui3r+W+hO+8jOWPguiAgyB7QGxpbmsgaW5zZXJ0QnlQYXRofVxyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOWQjuerr+aOpeWPo+WPquaUr+aMgeaJuemHj+aWsOWinuWtkOihqO+8jOaJuemHj+aWsOWinuS4u+ihqOebruWJjeS4jeaUr+aMgVxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaEFwcGVuZEJ5UGF0aChwYXRoOiBzdHJpbmcsIGRlZmF1bHRWYWx1ZXM6IEFycmF5PGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYmF0Y2hBcHBlbmRCeVBhdGgocGF0aCwgZGVmYXVsdFZhbHVlcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaJuemHj+aWsOWinuS4u+ihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIOm7mOiupOWunuS9k+aVsOaNruaVsOe7hFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaEFwcGVuZChkZWZhdWx0VmFsdWVzOiBBcnJheTxhbnk+KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmJhdGNoQXBwZW5kKGRlZmF1bHRWYWx1ZXMpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmuIXnqbpSZXBvc2l0b3nlhoXnmoTmlbDmja7lkozlj5jph49cclxuICAgKiBAZGVzY3JpcHRpb24g5riF56m65omA5pyJ5a6e5L2T44CB5Y+Y6YeP77yM5bm25riF56m6QmVTZXNzaW9uSWRcclxuICAgKi9cclxuICBwdWJsaWMgcmVzZXQoKSB7XHJcbiAgICB0aGlzLmVudGl0eU1hbmFnZXIucmVzZXQoKTtcclxuICAgIHRoaXMudmFyaWFibGVNYW5hZ2VyLnJlc2V0KCk7XHJcbiAgICB0aGlzLnJlc3RTZXJ2aWNlLnNlc3Npb25TZXJ2aWNlLmNsZWFyQmVTZXNzaW9uSWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPlkluamVjdG9y77yI5aSW6YOo6K+35Yu/5L2/55So77yJXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIGdldEluamVjdG9yKCk6IEluamVjdG9yIHtcclxuICAgIHJldHVybiB0aGlzLmluamVjdG9yO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmuIXnqbp2b+WPmOmHj+WPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhckFsbFZhcmlhYmxlQ2hhbmdlcygpIHtcclxuICAgIC8vIHRoaXMudmFyaWFibGVNYW5hZ2VyLmNsZWFyQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbmV4cG9ydCB7IEJlZlJlcG9zaXRvcnkgfTtcclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3JlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmFycmlzL2JlZi8iLCJzb3VyY2VzIjpbImxpYi9iZWZfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBV0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckQsT0FBTyxFQUFFLFlBQVksRUFBVSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDOzs7Ozs7Ozs7QUFPL0MsTUFDZSxhQUFnQyxTQUFRLHVCQUEwQjs7OztJQXFDL0UsWUFBb0IsUUFBa0I7UUFDcEMsS0FBSyxFQUFFLENBQUM7UUFEVSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBR3BDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLFdBQVc7WUFDWCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbEU7UUFFRCxXQUFXO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBYSxVQUFVLENBQUMsQ0FBQzs7Y0FDdEQsV0FBVyxHQUFHLFlBQVksQ0FBQyx1QkFBdUIsQ0FBQyxJ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QUFpQixDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUNqRSxDQUFDOzs7Ozs7SUFLTSxXQUFXLENBQUMsYUFBeUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNyRCxDQUFDOzs7Ozs7SUFLTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDckQsQ0FBQzs7Ozs7O0lBTU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQzs7Ozs7SUFJTSx1QkFBdUI7UUFDNUIsdUNBQXVDO0lBQ3pDLENBQUM7OztZQWpYRixVQUFVOzs7O1lBbkJVLFFBQVE7Ozs7Ozs7SUFzQjNCLGlDQUEyQjs7Ozs7O0lBZ0IzQixzQ0FBMEM7Ozs7OztJQU0xQyx3Q0FBMkM7O0lBRTNDLG1DQUE4Qjs7Ozs7OztJQUs5QixvQ0FBeUM7O0lBRXpDLGtDQUF5Qjs7Ozs7SUFJYixpQ0FBMEI7O0FBK1V4QyxPQUFPLEVBQUUsYUFBYSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAQXV0aG9yOiBXaXR0XHJcbiAqIEBEYXRlOiAyMDE4LTEwLTExIDE3OjM0OjI2XHJcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBhYWxpenp3ZWxsXHJcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDktMTEgMTc6MjM6MTVcclxuICogQHRvZG9cclxuICogMeOAgeS/ruaUuWNvbW1hbmQtc2VydmljZXPkuK3nmoREYXRhU2VydmljZe+8jOiwg+eUqOaWsOeahEFQSVxyXG4gKiAy44CB56e76ZmkRGVwcmVjYXRlZEJlZlJlcG9zaXRvcnnvvIzlkK/nlKjmlrBBUElcclxuICogM+OAgeS/ruaUuVJlcG9zaXRvcnnmir3osaHnsbvvvIzmt7vliqDmlrBBUElcclxuICogNOOAgeWvuXBhdGjlgZrlpITnkIbvvIzkv67mlLnkuLrmlbDnu4RcclxuICovXHJcbmltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1ldGFkYXRhVXRpbCwgRW50aXR5LCBBcHBDb250ZXh0IH0gZnJvbSAnQGZhcnJpcy9kZXZraXQnO1xyXG5cclxuaW1wb3J0IHsgTkdfVkFSSUFCTEUgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBEZXByZWNhdGVkQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vZGVwcmVjYXRlZC9kZXByZWNhdGVkX2JlZl9yZXBvc2l0b3J5JztcclxuaW1wb3J0IHsgQmVmRW50aXR5TWFuYWdlciB9IGZyb20gJy4vYmVmX2VudGl0eV9tYW5hZ2VyJztcclxuaW1wb3J0IHsgQmVmVmFyaWFibGVNYW5hZ2VyIH0gZnJvbSAnLi9iZWZfdmFyaWFibGVfbWFuYWdlcic7XHJcbmltcG9ydCB7IEJlZkRhdGFTZXJ2aWNlIH0gZnJvbSAnLi9iZWZfZGF0YV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmUHJveHkgfSBmcm9tICcuL2JlZl9wcm94eSc7XHJcbmltcG9ydCB7IEJlZlByb3h5RXh0ZW5kIH0gZnJvbSAnLi9iZWZfcHJveHlfZXh0ZW5kJztcclxuaW1wb3J0IHsgQkVfU0VSVkVSX1VSSV9UT0tFTiB9IGZyb20gJy4vdG9rZW5zJztcclxuLyoqXHJcbiAqIEJFRuWunuS9k+S7k+WCqFxyXG4gKiBAZGVzY3JpcHRpb25cclxuICog6LSf6LSj5LiO5ZCO56uv55qE5Lia5Yqh5a6e5L2T5qGG5p625Lqk5LqS77yM566h55CG5Lia5Yqh5a6e5L2T5pWw5o2uIFxcXHJcbiAqIGFwaVVyaeekuuS+i+WmguS4i++8mmFwaS9zY20vc2QvdjEuMC9lbXBzZXJ2aWNl77yM5YmN5ZCO5Z2H5LiN5bim5pac5p2gXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmFic3RyYWN0IGNsYXNzIEJlZlJlcG9zaXRvcnk8VCBleHRlbmRzIEVudGl0eT4gZXh0ZW5kcyBEZXByZWNhdGVkQmVmUmVwb3NpdG9yeTxUPiB7XHJcblxyXG4gIHByaXZhdGUgYmVmUHJveHk6IEJlZlByb3h5O1xyXG4gIC8qKlxyXG4gICAqIEBtZW1iZXIge0JlZlByb3h5fSBwcm94eVxyXG4gICAqIEBkZXNjcmlwdGlvbiDmr4/kuIDkuKpCZWZSZXBvc2l0b3J56YO96ZyA6KaB5LiA5LiqQmVm5Luj55CG77yM55So5p2l5aSE55CGaHR0cOivt+axglxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXQgcHJveHkodmFsdWUpIHtcclxuICAgIHRoaXMuYmVmUHJveHkgPSB2YWx1ZTtcclxuICAgIHRoaXMuYmVmUHJveHkuc2V0UHJveHlFeHRlbmQobmV3IEJlZlByb3h5RXh0ZW5kKHRoaXMpKTtcclxuICB9XHJcbiAgcHVibGljIGdldCBwcm94eSgpOiBCZWZQcm94eSB7XHJcbiAgICByZXR1cm4gdGhpcy5iZWZQcm94eTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5a6e5L2T566h55CG5ZmoXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIGVudGl0eU1hbmFnZXI6IEJlZkVudGl0eU1hbmFnZXI8VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIOWPmOmHj+euoeeQhuWZqFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB2YXJpYWJsZU1hbmFnZXI6IEJlZlZhcmlhYmxlTWFuYWdlcjtcclxuXHJcbiAgcHVibGljIGFwcENvbnRleHQ6IEFwcENvbnRleHQ7XHJcbiAgLyoqXHJcbiAgICog5Y+W5pWw5pyN5YqhXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBCZWZEYXRhU2VydmljZTxUPjtcclxuXHJcbiAgcHVibGljIHNlcnZlclVyaTogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSBpbmplY3RvciDkvp3otZbms6jlhaXlmahcclxuICAgKi9cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBpZiAodGhpcy5lbnRpdHlDb2xsZWN0aW9uKSB7XHJcbiAgICAgIC8vIOWIneWni+WMluWunuS9k+euoeeQhuWZqFxyXG4gICAgICB0aGlzLmVudGl0eU1hbmFnZXIgPSBuZXcgQmVmRW50aXR5TWFuYWdlcih0aGlzLmVudGl0eUNvbGxlY3Rpb24pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWIneWni+WMluWPmOmHj+euoeeQhuWZqFxyXG4gICAgdGhpcy5hcHBDb250ZXh0ID0gdGhpcy5pbmplY3Rvci5nZXQ8QXBwQ29udGV4dD4oQXBwQ29udGV4dCk7XHJcbiAgICBjb25zdCBuZ1ZhcmlhYmxlcyA9IE1ldGFkYXRhVXRpbC5nZXRQcm9wc01ldGFkYXRhc0J5TmFtZSh0aGlzLmNvbnN0cnVjdG9yLCBOR19WQVJJQUJMRSk7XHJcbiAgICB0aGlzLnZhcmlhYmxlTWFuYWdlciA9IG5ldyBCZWZWYXJpYWJsZU1hbmFnZXIodGhpcy5hcHBDb250ZXh0LCBuZ1ZhcmlhYmxlcywgdGhpcy5pbmplY3Rvcik7XHJcblxyXG4gICAgLy8g5Yid5aeL5YyWRGF0YVNlcnZpY2VcclxuICAgIHRoaXMuZGF0YVNlcnZpY2UgPSBuZXcgQmVmRGF0YVNlcnZpY2UodGhpcy5pbmplY3RvciwgdGhpcyk7XHJcbiAgICB0aGlzLnNlcnZlclVyaSA9IGluamVjdG9yLmdldDxzdHJpbmc+KEJFX1NFUlZFUl9VUklfVE9LRU4pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5a6e5L2T5YiX6KGoXHJcbiAgICogQHBhcmFtIGZpbHRlciDov4fmu6TmnaHku7ZcclxuICAgKiBAcGFyYW0gc29ydCDmjpLluo/mnaHku7ZcclxuICAgKiBAcGFyYW0gcGFnZVNpemUg5YiG6aG15aSn5bCPXHJcbiAgICogQHBhcmFtIHBhZ2VJbmRleCDpobXnoIFcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDov4fmu6TmnaHku7bnmoTnpLrkvovlpoLkuIvvvJrvvIjkuIDoiKznlLHnrZvpgInmnaHku7bnrYnnu4Tku7bnlJ/miJDvvIznm7TmjqXojrflj5blubbkvKDlgLzljbPlj6/vvIlcclxuICAgKiBgYGBqc29uXHJcbiAgICogW1xyXG4gICAqICAge1xyXG4gICAqICAgICBcIkZpbHRlckZpZWxkXCI6IFwiRG9tYWluSUQuRG9tYWluSURfbmFtZVwiLFxyXG4gICAqICAgICBcIkNvbXBhcmVcIjogMCxcclxuICAgKiAgICAgXCJWYWx1ZVwiOiBcIuS6uuWKm+i1hOa6kOmDqFwiLFxyXG4gICAqICAgICBcIlJlbGF0aW9uXCI6IDEsXHJcbiAgICogICAgIFwiRXhwcmVzc3R5cGVcIjogMCxcclxuICAgKiAgICAgXCJMYnJhY2tldFwiOiBcIihcIixcclxuICAgKiAgICAgXCJSYnJhY2tldFwiOiBcIilcIlxyXG4gICAqICAgfSwge1xyXG4gICAqICAgICBcIkZpbHRlckZpZWxkXCI6IFwiQmlsbERhdGVcIixcclxuICAgKiAgICAgXCJDb21wYXJlXCI6IDMsXHJcbiAgICogICAgIFwiVmFsdWVcIjogXCIyMDIxLTA5LTAzXCIsXHJcbiAgICogICAgIFwiUmVsYXRpb25cIjogMSxcclxuICAgKiAgICAgXCJFeHByZXNzdHlwZVwiOiAwXHJcbiAgICogICB9LCB7XHJcbiAgICogICAgIFwiRmlsdGVyRmllbGRcIjogXCJCaWxsRGF0ZVwiLFxyXG4gICAqICAgICBcIkNvbXBhcmVcIjogNSxcclxuICAgKiAgICAgXCJWYWx1ZVwiOiBcIjIwMjEtMTAtMDVcIixcclxuICAgKiAgICAgXCJSZWxhdGlvblwiOiAxLFxyXG4gICAqICAgICBcIkV4cHJlc3N0eXBlXCI6IDBcclxuICAgKiAgIH1cclxuICAgKiBdXHJcbiAgICogYGBgXHJcbiAgICog5L2/55So56S65L6L77yaXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIC8vIOS4gOiIrOS8muS7peWtl+espuS4sueahOW9ouW8j+iOt+WPluWIsOi/h+a7pOWSjOaOkuW6j+adoeS7tu+8jOaJgOS7pemcgOimgei/m+ihjOino+aekFxyXG4gICAqIGNvbnN0IHF1ZXJ5JCA9IHRoaXMucmVwb3NpdG9yeS5nZXRFbnRpdGllcyhKU09OLnBhcnNlKGZpbHRlciksIEpTT04ucGFyc2Uoc29ydCksIG51bGwsIG51bGwpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRFbnRpdGllcyhmaWx0ZXI6IGFueVtdLCBzb3J0OiBhbnlbXSwgcGFnZVNpemU6IG51bWJlciB8IG51bGwsIHBhZ2VJbmRleDogbnVtYmVyIHwgbnVsbCk6IE9ic2VydmFibGU8VFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5nZXRMaXN0KGZpbHRlciwgc29ydCwgcGFnZVNpemUsIHBhZ2VJbmRleCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWunuS9k+WIl+ihqFxyXG4gICAqIEBwYXJhbSBmaWx0ZXIg6L+H5ruk5p2h5Lu2XHJcbiAgICogQHBhcmFtIHNvcnRzIOaOkuW6j+adoeS7tlxyXG4gICAqIEBwYXJhbSBwYWdlU2l6ZSDliIbpobXlpKflsI9cclxuICAgKiBAcGFyYW0gcGFnZUluZGV4IOmhteeggVxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOS4jmdldEVudGl0aWVz5pa55rOV5Yqf6IO955u46L+R77yM55So5rOV55u45ZCMIFxcXHJcbiAgICog5Yy65Yir5piv5Zyo5Y+R6YCB6K+35rGC5pe277yM5pys5pa55rOV5Lya5bCG5p+l6K+i5p2h5Lu25pS+5Yiw6K+35rGC55qEYm9keeS4re+8jOiAjGdldEVudGl0aWVz5pa55rOV5Lya5bCG5p+l6K+i5p2h5Lu25omp5bGV5Yiw6K+35rGC55qEdXJs5LiKXHJcbiAgICogQHNlZSB7QGxpbmsgZ2V0RW50aXRpZXN9XHJcbiAgICovXHJcbiAgcHVibGljIGZpbHRlcihmaWx0ZXI6IGFueVtdID0gW10sIHNvcnRzOiBhbnlbXSA9IFtdLCBwYWdlU2l6ZTogbnVtYmVyIHwgbnVsbCwgcGFnZUluZGV4OiBudW1iZXIgfCBudWxsKTogT2JzZXJ2YWJsZTxUW10+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmZpbHRlcihmaWx0ZXIsIHNvcnRzLCBwYWdlU2l6ZSwgcGFnZUluZGV4KTtcclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvblxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGF0aHMg6YCa55So6Lev5b6EXHJcbiAgICogQHBhcmFtIHBhZ2VJbmRleCDpobXnoIFcclxuICAgKiBAcGFyYW0gcGFnZVNpemUg5YiG6aG15aSn5bCPXHJcbiAgICogQHBhcmFtIGZpbHRlciDov4fmu6TmnaHku7ZcclxuICAgKiBAcGFyYW0gc29ydCDmjpLluo9cclxuICAgKiBAdG9kbyDnm67liY3lubbmnKrlupTnlKjmjpLluo/lkozov4fmu6TmnaHku7ZcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDpgJrnlKjot6/lvoTmoLzlvI/kuLrvvJpbJ2lkOuS4u+ihqOS4u+mUruWAvCcsICfkuLvooajlrp7kvZPlsZ7mgKflkI0nLCAnaWQ65LuO6KGo5Li76ZSu5YC8JywgJ+S7juihqOWunuS9k+WxnuaAp+WQjSddIFxcXHJcbiAgICog6YCa55So6Lev5b6E55qE5Li76ZSu5YC85YmN5b+F6aG75ZCr5pyJ5YaS5Y+377yM5YaS5Y+35LmL5YmN55qEXCJpZFwi5YiZ5Y+v5Lul55yB55Wl77yI5Zug5Li66YCa55So6Lev5b6E6Zmk5LqG5oyH5ZCR5LuO6KGo77yM6L+Y5Y+v5Lul5oyH5ZCR5LuO6KGo5YWz6IGU562J562J77yM5omA5Lul5b+F6aG76YCa6L+H5YaS5Y+35p2l5Yy65Yir5Li76ZSu5YC85ZKM5bGe5oCn5ZCN77yJIFxcXHJcbiAgICog6YCa55So6Lev5b6E56S65L6L77yaWydpZDpUZWQnLCAnYWNjb3VudHMnLCAnaWQ6MTA4MTYnLCAnbG9ncyddIOaMh+WQkWFjY291bnRz5LuO6KGo5LiL55qEbG9nc+S7juS7juihqCBcXFxyXG4gICAqIHBhdGhz5Y+C5pWw6YG15LuO6YCa55So6Lev5b6E55qE5qC85byP77yM5bm25LiU5oyH5ZCR5LiA5Liq5LuO6KGo77yI5oiW6ICF5LuO5LuO6KGo77yJIFxcXHJcbiAgICog5L2/55So56S65L6L77yaXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIC8vIOWwhue7keWumui3r+W+hOS4i+W9k+WJjeihjOeahOi3r+W+hOi9rOaNouS4ukVudGl0eeWPr+ivhuWIq+eahOmAmueUqOi3r+W+hFxyXG4gICAqIGNvbnN0IGZ1bGxQYXRocyA9IEVudGl0eVBhdGhDb252ZXJ0ZXIudG9FbnRpdHlQYXRoQXJyYXkodGhpcy52aWV3TW9kZWwuYmluZGluZ1BhdGgsIHRoaXMuYmluZGluZ0RhdGEpO1xyXG4gICAqIGNvbnN0IHBhdGhzID0gZnVsbFBhdGhzLnNsaWNlKDAsIGZ1bGxQYXRocy5sZW5ndGggLSAxKTtcclxuICAgKiBjb25zdCBiaW5kaW5nUGF0aHMgPSB0aGlzLnZpZXdNb2RlbC5iaW5kaW5nUGF0aC5zcGxpdCgnLycpLmZpbHRlcihpdGVtID0+IGl0ZW0pO1xyXG4gICAqIGNvbnN0IGJpbmRpbmdEYXRhID0gdGhpcy52aWV3TW9kZWwuYmluZGluZ0RhdGE7XHJcbiAgICogbGV0IG5vZGVDb2RlID0gYmluZGluZ1BhdGhzW2JpbmRpbmdQYXRocy5sZW5ndGggLSAxXTtcclxuICAgKiBub2RlQ29kZSA9IG5vZGVDb2RlLnN1YnN0cigwLCBub2RlQ29kZS5sZW5ndGggLSAxKTtcclxuICAgKiAvLyDojrflj5bkuIrnuqflrp7kvZNcclxuICAgKiBjb25zdCBwYXJlbnRQYXRocyA9IGJpbmRpbmdQYXRocy5zbGljZSgwLCBiaW5kaW5nUGF0aHMubGVuZ3RoIC0gMSk7XHJcbiAgICogY29uc3QgcGFyZW50T2JqZWN0ID0gYmluZGluZ0RhdGEuZ2V0VmFsdWUocGFyZW50UGF0aHMpIGFzIEJpbmRpbmdPYmplY3Q7XHJcbiAgICogaWYgKCFwYXJlbnRPYmplY3QpIHtcclxuICAgKiAgIHRocm93IG5ldyBFcnJvcign5LiK57qn5a6e5L2T5LiN5a2Y5ZyoJyk7XHJcbiAgICogfVxyXG4gICAqIGNvbnN0IGNvbmZpZ1BhdGggPSBgLyR7bm9kZUNvZGV9XyR7cGFyZW50T2JqZWN0W3BhcmVudE9iamVjdC5wcmltYXJ5S2V5XX1gO1xyXG4gICAqIC8vIOiOt+WPlue7keWumui3r+W+hOWvueW6lOeahOWIhumhteS/oeaBr1xyXG4gICAqIGNvbnN0IHsgcGFnZUluZGV4ID0gMSwgcGFnZVNpemUgfSA9IHRoaXMucmVwb3NpdG9yeS5lbnRpdHlDb2xsZWN0aW9uLmdldFBhZ2luYXRpb25Db25maWdCeVBhdGgoY29uZmlnUGF0aCk7XHJcbiAgICogY29uc3QgcmVxdWVzdCQgPSB0aGlzLnJlcG9zaXRvcnkucXVlcnlDaGlsZChwYXRocywgcGFnZUluZGV4LCBwYWdlU2l6ZSk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGF0aHM6IHN0cmluZ1tdLCBwYWdlSW5kZXg6IG51bWJlciwgcGFnZVNpemU6IG51bWJlciwgZmlsdGVyPzogc3RyaW5nLCBzb3J0Pzogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5xdWVyeUNoaWxkKHBhdGhzLCBwYWdlSW5kZXgsIHBhZ2VTaXplLCBmaWx0ZXIsIHNvcnQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmm7TmlrDlrp7kvZPmlbDmja5cclxuICAgKiBAcGFyYW0gaWQg5Li76KGo5a6e5L2T5Li76ZSuXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog6YeN5paw5LuO5pyN5Yqh5Zmo6I635Y+W5Li76KGo5LiK5a+55bqU5Li76ZSu55qE5a6e5L2T5pWw5o2uIFxcXHJcbiAgICog5L2/55So56S65L6L77yaXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIGNvbnN0IHJvb3REYXRhSWQgPSB0aGlzLmJpbmRpbmdEYXRhLmxpc3QuY3VycmVudElkO1xyXG4gICAqIHJldHVybiB0aGlzLnJlcG9zaXRvcnkudXBkYXRlRW50aXR5QnlJZChyb290RGF0YUlkKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlRW50aXR5QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVCeUlkKGlkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5pu05paw5a6e5L2T5pWw5o2u5bm25Yqg6ZSBXHJcbiAgICogQHBhcmFtIGlkIOS4u+ihqOWunuS9k+S4u+mUrlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOS9v+eUqOekuuS+i++8mlxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiBpZCA9IHRoaXMuYmluZGluZ0RhdGEubGlzdC5jdXJyZW50SWQ7ICAvLyDnvJbovpHlvZPliY3ooYxcclxuICAgKiBjb25zdCBlZGl0JCA9IHRoaXMucmVwb3NpdG9yeS5lZGl0RW50aXR5QnlJZChpZCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIGVkaXRFbnRpdHlCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmVkaXRCeUlkKGlkKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7rlrp7kvZNcclxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIOm7mOiupOWAvO+8jEpTT07lr7nosaFcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDor7fmsYLliJvlu7rkuIDkuKrmlrDnmoTlrp7kvZPvvIzlubbliqDovb3liLDlrp7kvZPku5PlupPvvIjliqDovb3lkI7ku5PlupPkuK3lj6rkvJrmnInov5nkuIDkuKrlrp7kvZPvvIzpgILnlKjkuo7ljaHniYfvvIkgXFxcclxuICAgKiDkvb/nlKjnpLrkvovvvJpcclxuICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICogLy8g5Zyo5Yib5bu65paw5a6e5L2T5ZCO6L+b5YWl57yW6L6R54q25oCBXHJcbiAgICogY29uc3QgY3JlYXRlJCA9IHRoaXMucmVwb3NpdG9yeS5jcmVhdGVFbnRpdHkoKTtcclxuICAgKiBjcmVhdGUkLnBpcGUoXHJcbiAgICogICB0YXAoKCkgPT4ge1xyXG4gICAqICAgICAgIEVkaXRTdGF0ZVV0aWwuc2V0RWRpdFN0YXRlKHRoaXMuZnJhbWVDb250ZXh0LCBsYXN0TW9kaWZpZWRJZCk7XHJcbiAgICogICB9KVxyXG4gICAqICk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZUVudGl0eShkZWZhdWx0VmFsdWU/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNyZWF0ZShkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6L+95Yqg5a6e5L2TXHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZSDpu5jorqTlgLxcclxuICAgKiBAZGVzY3JpcHRpb24g6K+35rGC5Yib5bu65LiA5Liq5paw55qE5a6e5L2T77yM5bm26L+95Yqg5Yiw5a6e5L2T5LuT5bqT77yI6YCC55So5LqO5YiX6KGo77yJXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZEVudGl0eShkZWZhdWx0VmFsdWU/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZChkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65bm25o+S5YWl5paw5a6e5L2T77yI5ZCR5Li76KGo5o+S5YWl77yJXHJcbiAgICogQHBhcmFtIHBvc2l0aW9uIOaPkuWFpeS9jee9rlxyXG4gICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUg6buY6K6k5YC8XHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog5YWz5LqO5o+S5YWl5L2N572u77yM5Y+v6YCJ5YC877yaMeaIli0x77yMMeS7o+ihqOWcqOW9k+WJjeihjOWQju+8jC0x5Luj6KGo5Zyo5b2T5YmN6KGM5YmNXHJcbiAgICovXHJcbiAgcHVibGljIGluc2VydChwb3NpdGlvbjogMSB8IC0xLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuaW5zZXJ0KHBvc2l0aW9uLCBkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliJvlu7rlrZDlrp7kvZPlubbmj5LlhaXliLDmjIflrprkvY3nva7vvIjlkJHku47ooajmiJbku47ku47ooajmj5LlhaXvvIlcclxuICAgKiBAcGFyYW0gcGF0aCDniLbot6/lvoRcclxuICAgKiBAcGFyYW0gcG9zaXRpb24g5o+S5YWl5L2N572uXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog5YWz5LqO54i26Lev5b6E5qC85byP77yM5LuO6KGo5b2i5aaC77yaXCIvMS9lZHVzXCLvvIzku47ku47ooajlvaLlpoLvvJpcIi8xL2VkdXMvMTIvZ3JhZGVzXCIgXFxcclxuICAgKiDniLbot6/lvoTmmK/nlLHlrp7kvZPkuLvplK7lgLzlkozlrp7kvZPlsZ7mgKflkI3miJDlr7nmi7zmjqXogIzmiJDnmoTlrZfnrKbkuLLvvIjnlKjmlpzmnaDliIbpmpTvvInvvIzmjIflkJHopoHmj5LlhaXnmoTpgqPlvKDooaggXFxcclxuICAgKiDniLbot6/lvoTkuI7lrp7kvZPpgJrnlKjot6/lvoTmmK/nm7jkvLznmoTvvIzljLrliKvkuLvopoHmmK/moLzlvI/kuIrnmoTkuI3lkIzvvIzniLbot6/lvoTmmK/lrZfnrKbkuLLogIzkuI3mmK/mlbDnu4TvvIzkuLvplK7lgLzliY3pnaLkuI3pnIDopoHliqDlhpLlj7fvvIzniLbot6/lvoTlv4XpobvmjIflkJHku47ooajogIzlrp7kvZPpgJrnlKjot6/lvoTov5jlj6/ku6XmjIflkJHlrp7kvZPnmoTmma7pgJrlsZ7mgKfmiJbogIXlhbPogZQgXFxcclxuICAgKiDmj5LlhaXkvY3nva7lj4LogIMge0BsaW5rIGluc2VydH0gXFxcclxuICAgKiDkvb/nlKjnpLrkvovvvJpcclxuICAgKiBgYGB0eXBlc2NyaXB0XHJcbiAgICogLy8g5oiR5Lus5Y+v5Lul6YCa6L+HYmluZGluZ1BhdGjku6Xlj4piaW5kaW5nRGF0Yeiuoeeul+aLvOaOpeWHuuW9k+WJjeihjOaJgOWxnuS7juihqOeahOeItui3r+W+hFxyXG4gICAqIGNvbnN0IGFwcGVuZCQgPSB0aGlzLnJlcG9zaXRvcnkuaW5zZXJ0QnlQYXRoKHBhdGgsIHBvc2l0aW9uKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwdWJsaWMgaW5zZXJ0QnlQYXRoKHBhdGg6IHN0cmluZywgcG9zaXRpb246IDEgfCAtMSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5pbnNlcnRCeVBhdGgocGF0aCwgcG9zaXRpb24pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDliJvlu7rlrZDlrp7kvZPlubbov73liqDliLDmnKvlsL5cclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6EXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog54i26Lev5b6E5qC85byP5Y+C6ICDIHtAbGluayBpbnNlcnRCeVBhdGh9XHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZEVudGl0eUJ5UGF0aChmcGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTxFbnRpdHk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZEJ5UGF0aChmcGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5pZOWIoOmZpOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDkuLvooajlrp7kvZPkuLvplK5cclxuICAgKiBAcGFyYW0gaWZTYXZlIOaYr+WQpuS/neWtmO+8jOWPr+mAie+8jOm7mOiupOS4unRydWVcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiDlpoLmnpxpZlNhdmXkvKDpgJLkuLpmYWxzZe+8jOWImeS8mua3u+WKoOS4gOS4quWIoOmZpOWPmOabtO+8jOetieW+heS7peWQjuS/neWtmFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVFbnRpdHlCeUlkKGlkOiBzdHJpbmcsIGlmU2F2ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnJlbW92ZUJ5SWQoaWQsIGlmU2F2ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5pZOWIoOmZpOWunuS9k+W5tuaJp+ihjOS/neWtmFxyXG4gICAqIEBwYXJhbSBpZCDkuLvooajlrp7kvZPkuLvplK5cclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlRW50aXR5QW5kU2F2ZUJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVtb3ZlQW5kU2F2ZUJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWTliKDpmaTniLbot6/lvoTkuIvlrZDooajkuK3nmoTlrp7kvZNcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6EXHJcbiAgICogQHBhcmFtIGlkIOWunuS9k+S4u+mUrlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOeItui3r+W+hOagvOW8j+WPguiAgyB7QGxpbmsgaW5zZXJ0QnlQYXRofVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVFbnRpdHlCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVtb3ZlQnlQYXRoKGZwYXRoLCBpZCk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOagueaNrmlkc+aJuemHj+WIoOmZpOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZHMgaWRzXHJcbiAgICogQHBhcmFtIGlmU2F2ZSDmmK/lkKbkv53lrZgo6buY6K6k5Li6ZmFsc2UpXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoUmVtb3ZlKGlkczogc3RyaW5nW10sIGlmU2F2ZTogYm9vbGVhbiA9IGZhbHNlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmJhdGNoUmVtb3ZlKGlkcywgaWZTYXZlKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6Zmk5a2Q57qn5a6e5L2TXHJcbiAgICogQHBhcmFtIGZQYXRoIOeItui3r+W+hFxyXG4gICAqIEBwYXJhbSBpZHMg5a2Q57qnaWTpm4blkIhcclxuICAgKiBAZGVzY3JpcHRpb25cclxuICAgKiBpZHPkuK3lkITkuKppZOS5i+mXtOS7pemAl+WPt+WIhumalO+8jOeItui3r+W+hOagvOW8j+WPguiAgyB7QGxpbmsgaW5zZXJ0QnlQYXRofSBcXFxyXG4gICAqIOS9v+eUqOekuuS+i++8mlxyXG4gICAqIGBgYHR5cGVzY3JpcHRcclxuICAgKiAvLyBpZHPlrZfnrKbkuLLlj6/ku6Xku47ooajljZXlj5jph49VSVN0YXRl5Lit6I635Y+W77yM5YiX6KGo57uE5Lu255qE5Yu+6YCJ54q25oCB5Y+Y5YyW5ZCO5Lya6Ieq5Yqo5pu05paw6KGo5Y2V5Y+Y6YePXHJcbiAgICogY29uc3QgcmVtb3ZlJCA9IHRoaXMucmVwb3NpdG9yeS5iYXRjaFJlbW92ZUJ5UGF0aChwYXRoLCBpZHMpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHB1YmxpYyBiYXRjaFJlbW92ZUJ5UGF0aChmUGF0aDogc3RyaW5nLCBpZHM6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYmF0Y2hSZW1vdmVCeVBhdGgoZlBhdGgsIGlkcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOS/neWtmOS4u+mUruS4umlk55qE5a6e5L2TXHJcbiAgICogQHBhcmFtIGlkIOS4u+ihqOWunuS9k+S4u+mUrlxyXG4gICAqIEBkZXNjcmlwdGlvblxyXG4gICAqIOiwg+eUqOivpeaWueazleS8muW6lOeUqGlk5a+55bqU5a6e5L2T5LiK55qE5Y+Y5pu0IFxcXHJcbiAgICogYGBgdHlwZXNjcmlwdFxyXG4gICAqIGNvbnN0IGlkID0gdGhpcy5iaW5kaW5nRGF0YS5saXN0LmN1cnJlbnRJZCBhcyBzdHJpbmc7XHJcbiAgICogY29uc3Qgc2F2ZSQgPSB0aGlzLnJlcG9zaXRvcnkuc2F2ZUVudGl0eUJ5SWQoaWQpOyAgLy8g5ZCR5pyN5Yqh5Zmo5o+Q5Lqk5Y+Y5pu05bm25bqU55SoXHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmVFbnRpdHlCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGx5Q2hhbmdlc0J5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5L+d5a2YXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog5bqU55So5omA5pyJ5Y+Y5pu077yM5q+U5aaC6LCD55So5LqGIHtAbGluayByZW1vdmVFbnRpdHlCeUlkfSDkuJTmnKrkv53lrZjliJnlj6/ku6XpgJrov4fmraTmlrnms5Xkv53lrZggXFxcclxuICAgKiDlnKjliJfooajmnI3liqHkuK3vvIzmiJHku6zlj6/ku6XpgJrov4fosIPnlKjor6Xmlrnms5Xlrp7njrDliJfooajmlbDmja7nmoTmibnph4/kv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgc2F2ZUVudGl0aWVzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYXBwbHlDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlj5bmtojlrp7kvZPlj5jmm7RcclxuICAgKiBAZGVzY3JpcHRpb24g5riF56m65omA5pyJ5a6e5L2T5Y+Y5pu077yM5LiN5biM5pyb5L+d5a2Y5Y+Y5pu05pe26LCD55So5q2k5pa55rOVXHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbEVudGl0eUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jYW5jZWxDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/mlrDlop7ku47ooagv5LuO5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIHBhdGgg54i26Lev5b6E77yM5Y+C6ICDIHtAbGluayBpbnNlcnRCeVBhdGh9XHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZXMg6buY6K6k5a6e5L2T5pWw5o2u5pWw57uEXHJcbiAgICogQGRlc2NyaXB0aW9uXHJcbiAgICog5ZCO56uv5o6l5Y+j5Y+q5pSv5oyB5om56YeP5paw5aKe5a2Q6KGo77yM5om56YeP5paw5aKe5Li76KGo55uu5YmN5LiN5pSv5oyBXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoQXBwZW5kQnlQYXRoKHBhdGg6IHN0cmluZywgZGVmYXVsdFZhbHVlczogQXJyYXk8YW55Pik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5iYXRjaEFwcGVuZEJ5UGF0aChwYXRoLCBkZWZhdWx0VmFsdWVzKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5om56YeP5paw5aKe5Li76KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIGRlZmF1bHRWYWx1ZXMg6buY6K6k5a6e5L2T5pWw5o2u5pWw57uEXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoQXBwZW5kKGRlZmF1bHRWYWx1ZXM6IEFycmF5PGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYmF0Y2hBcHBlbmQoZGVmYXVsdFZhbHVlcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOa4heepulJlcG9zaXRveeWGheeahOaVsOaNruWSjOWPmOmHj1xyXG4gICAqIEBkZXNjcmlwdGlvbiDmuIXnqbrmiYDmnInlrp7kvZPjgIHlj5jph4/vvIzlubbmuIXnqbpCZVNlc3Npb25JZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXNldCgpIHtcclxuICAgIHRoaXMuZW50aXR5TWFuYWdlci5yZXNldCgpO1xyXG4gICAgdGhpcy52YXJpYWJsZU1hbmFnZXIucmVzZXQoKTtcclxuICAgIHRoaXMucmVzdFNlcnZpY2Uuc2Vzc2lvblNlcnZpY2UuY2xlYXJCZVNlc3Npb25JZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+WSW5qZWN0b3LvvIjlpJbpg6jor7fli7/kvb/nlKjvvIlcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0SW5qZWN0b3IoKTogSW5qZWN0b3Ige1xyXG4gICAgcmV0dXJuIHRoaXMuaW5qZWN0b3I7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOa4heepunZv5Y+Y6YeP5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyQWxsVmFyaWFibGVDaGFuZ2VzKCkge1xyXG4gICAgLy8gdGhpcy52YXJpYWJsZU1hbmFnZXIuY2xlYXJDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IHsgQmVmUmVwb3NpdG9yeSB9O1xyXG4iXX0=

@@ -144,6 +144,7 @@ /**

* @param {?} requestInfo
* @param {?=} retrieveParam
* @return {?}
*/
extendRetrieve(id, requestInfo) {
return this.proxy.extendRetrieve(id, requestInfo);
extendRetrieve(id, requestInfo, retrieveParam) {
return this.proxy.extendRetrieve(id, requestInfo, retrieveParam);
}

@@ -595,2 +596,2 @@ /**

export { BefRestService };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7TUFFNUQsR0FBRyxHQUFHLEtBQUs7O01BQ1gs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QUMsQ0FBQztJQUN0RCxDQUFDOzs7Ozs7O0lBSU8sZ0JBQWdCLENBQUMsT0FBWTtRQUNuQyxPQUFPLGVBQWUsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQzs7Ozs7OztJQU1PLFdBQVcsQ0FBQyxNQUFXO1FBQzdCLE9BQU8sYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQyxDQUFDOzs7Ozs7O0lBTU0sd0JBQXdCLENBQUMsSUFBUztRQUN2QyxPQUFPLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7Ozs7O0lBS00sZ0JBQWdCO1FBQ3JCLE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMzRCxDQUFDOzs7WUFwY0YsVUFBVTs7OztZQTFCRixVQUFVOztZQU1WLHVCQUF1QjtZQUR2QixhQUFhO1lBRkwsUUFBUTs7Ozs7OztJQTBCdkIsb0NBQTBDOzs7Ozs7SUFLMUMsb0NBQStCOzs7OztJQUMvQixxQ0FBaUM7Ozs7O0lBS2pDLHdDQUF5Qzs7Ozs7SUFLekMsaUNBQXVCOzs7OztJQUt2QixrQ0FBMEI7O0FBa2I1QixPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAQXV0aG9yOiBXaXR0XHJcbiAqIEBEYXRlOiAyMDE5LTAyLTIzIDEzOjU3OjQ3XHJcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBhYWxpenp3ZWxsXHJcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDktMjQgMTQ6MTA6NDBcclxuICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBvZiwgRU1QVFkgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwLCBtYXAsIGNhdGNoRXJyb3IsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW50aXR5LCBFdmVudEJ1cyB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuaW1wb3J0IHsgSHR0cEhlYWRlclV0aWwsIEh0dHBQYXJhbVV0aWwsIFJlcXVlc3RJbmZvVXRpbCwgUmVzcG9uc2VJbmZvVXRpbCB9IGZyb20gJy4vdXRpbHMvaW5kZXgnO1xyXG5pbXBvcnQgeyBCZWZSZXBvc2l0b3J5IH0gZnJvbSAnLi9iZWZfcmVwb3NpdG9yeSc7XHJcbmltcG9ydCB7IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9mcmFtZXdvcmtfc2Vzc2lvbl9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmU2Vzc2lvblNlcnZpY2UgfSBmcm9tICcuL3Nlc3Npb24vaW5kZXgnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvLCBSZXNwb25zZUluZm8gfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQmVmUHJveHkgfSBmcm9tICcuL2JlZl9wcm94eSc7XHJcbmltcG9ydCB7IFVyaVNlcnZpY2UgfSBmcm9tICcuL3VyaV9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmUHJveHlFeHRlbmQgfSBmcm9tICcuL2JlZl9wcm94eV9leHRlbmQnO1xyXG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4vaHR0cF9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmFja0VuZE1lc3NhZ2VVdGlsIH0gZnJvbSAnLi91dGlscy9iYWNrX2VuZF9tZXNzYWdlLnV0aWwnO1xyXG5pbXBvcnQgeyBCZWZTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4vc2Vzc2lvbi9iZWZfc2Vzc2lvbl9tYW5hZ2VyJztcclxuXHJcbmNvbnN0IEdFVCA9ICdHRVQnO1xyXG5jb25zdCBERUxFVEUgPSAnREVMRVRFJztcclxuY29uc3QgUFVUID0gJ1BVVCc7XHJcbmNvbnN0IFBPU1QgPSAnUE9TVCc7XHJcbmNvbnN0IFBBVENIID0gJ1BBVENIJztcclxuXHJcbi8qKlxyXG4gKiBCRUblj5bmlbDmnI3liqFcclxuICog6K+l5pyN5Yqh55SxQmVmUmVwb3NpdG9yeeWunuS+i+WMlu+8jOS4jeWBmuazqOWFpe+8jOavj+S4qkJlZlJlcG9zaXRvcnnmi6XmnInkuIDkuKpCZWZSZXN0U2VydmljZeWunuS+i+OAglxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5jbGFzcyBCZWZSZXN0U2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+O1xyXG5cclxuICAvKipcclxuICAgKiBodHRwQ2xpZW50XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50O1xyXG4gIHByaXZhdGUgaHR0cFNlcnZpY2U6IEh0dHBTZXJ2aWNlO1xyXG5cclxuICAvKipcclxuICAgKiDkvJror53mnI3liqFcclxuICAgKi9cclxuICBwdWJsaWMgc2Vzc2lvblNlcnZpY2U6IEJlZlNlc3Npb25TZXJ2aWNlO1xyXG5cclxuICAvKipcclxuICAgKiDmjqXlj6PmoLlVcmlcclxuICAgKi9cclxuICBwdWJsaWMgYmFzZVVyaTogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiDkuovku7bmgLvnur9cclxuICAgKi9cclxuICBwdWJsaWMgZXZlbnRCdXM6IEV2ZW50QnVzO1xyXG5cclxuICAvKipcclxuICAgKiDmnoTpgKDlh73mlbBcclxuICAgKiBAcGFyYW0gaHR0cENsaWVudCBodHRw5pyN5YqhXHJcbiAgICogQHBhcmFtIHNlcnZlclVyaSDlupTnlKjmnI3liqHlmajlnLDlnYBcclxuICAgKiBAcGFyYW0gYmVVcmkgQkUgQVBJ5Zyw5Z2AXHJcbiAgICovXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LCBiYXNlVXJpOiBzdHJpbmcsXHJcbiAgICBmcm1TZXNzaW9uU2VydmljZTogRnJhbWV3b3JrU2Vzc2lvblNlcnZpY2UsXHJcbiAgICByZXBvc2l0b3J5OiBCZWZSZXBvc2l0b3J5PEVudGl0eT4sXHJcbiAgICBldmVudEJ1cz86IEV2ZW50QnVzXHJcbiAgKSB7XHJcbiAgICB0aGlzLmh0dHBDbGllbnQgPSBodHRwQ2xpZW50O1xyXG4gICAgdGhpcy5odHRwU2VydmljZSA9IG5ldyBIdHRwU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xyXG4gICAgdGhpcy5iYXNlVXJpID0gYmFzZVVyaTtcclxuICAgIGNvbnN0IGluamVjdG9yID0gcmVwb3NpdG9yeS5nZXRJbmplY3RvcigpO1xyXG4gICAgdGhpcy5zZXNzaW9uU2VydmljZSA9IG5ldyBCZWZTZXNzaW9uU2VydmljZShodHRwQ2xpZW50LCBiYXNlVXJpLCBmcm1TZXNzaW9uU2VydmljZSwgaW5qZWN0b3IpO1xyXG4gICAgdGhpcy5yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeTtcclxuICAgIHRoaXMuZXZlbnRCdXMgPSBldmVudEJ1cztcclxuICB9XHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOS7o+eQhuebuOWFs1xyXG5cclxuICAvKipcclxuICAgKiDojrflj5ZCZWbku6PnkIZcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IHByb3h5KCk6IEJlZlByb3h5IHtcclxuICAgIGlmICghIXRoaXMucmVwb3NpdG9yeS5wcm94eSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnByb3h5O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQmVmUHJveHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7ukJlZuS7o+eQhlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY3JlYXRlQmVmUHJveHkoKSB7XHJcbiAgICBjb25zdCBzZXJ2ZXJVcmkgPSB0aGlzLnJlcG9zaXRvcnkuc2VydmVyVXJpO1xyXG4gICAgY29uc3QgdXJpU2VydmljZSA9IG5ldyBVcmlTZXJ2aWNlKHNlcnZlclVyaSk7XHJcbiAgICBjb25zdCBkZWZhdWx0UHJveHkgPSBuZXcgQmVmUHJveHkodGhpcy5odHRwQ2xpZW50LCB1cmlTZXJ2aWNlKTtcclxuICAgIGRlZmF1bHRQcm94eS5zZXRCYXNlVXJpKHRoaXMuYmFzZVVyaSk7XHJcbiAgICBjb25zdCBleHRlbmQgPSBuZXcgQmVmUHJveHlFeHRlbmQodGhpcy5yZXBvc2l0b3J5KTtcclxuICAgIGRlZmF1bHRQcm94eS5zZXRQcm94eUV4dGVuZChleHRlbmQpO1xyXG4gICAgcmV0dXJuIGRlZmF1bHRQcm94eTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5Z+65pysQ1JVROaWueazlVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgcXVlcnkoZW50aXR5RmlsdGVyPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnF1ZXJ5KGVudGl0eUZpbHRlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRRdWVyeShlbnRpdHlGaWx0ZXIsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5ZCE5LuO6KGo5pWw5o2uXHJcbiAgICogQHBhcmFtIGlkIOS4u+ihqGlkXHJcbiAgICogQHBhcmFtIHJldHJpZXZlUGFyYW0g5Y+C5pWwXHJcbiAgICovXHJcbiAgcHVibGljIHNlcnZpY2VSZXRyaWV2ZShpZDogc3RyaW5nLCByZXRyaWV2ZVBhcmFtOiBhbnksIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5zZXJ2aWNlUmV0cmlldmUoaWQsIHJldHJpZXZlUGFyYW0sIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5YiG6aG15p+l6K+i5LuO6KGoL+S7juS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBwYXJhbXMg5p+l6K+i5Y+C5pWwXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5Q2hpbGQocGFyYW1zOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnF1ZXJ5Q2hpbGQocGFyYW1zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHJldHJpZXZlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkucmV0cmlldmUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFJldHJpZXZlKGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRSZXRyaWV2ZShpZCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnksIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuY3JlYXRlKGRlZmF1bHRWYWx1ZSwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmNyZWF0ZUJ5UGF0aChmcGF0aCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgdXBkYXRlKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsLCByZXF1ZXN0SW5mbz86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnVwZGF0ZShjaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzYXZlKHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuc2F2ZShyZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZGVsZXRlKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldGUoaWQ6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZERlbGV0ZShpZCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGRlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZGVsZXRCeVBhdGgoZnBhdGgsIGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmREZWxldEJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRCeVBhdGgoZnBhdGgsIGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIHB1YmxpYyBiYXRjaERlbGV0ZUJ5UGF0aChmUGF0aDogc3RyaW5nLCBpZHM6IHN0cmluZywgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoLCBpZHMsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuYmF0Y2hEZWxldGUoaWRzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRCYXRjaERlbGV0ZShpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGUoaWRzLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOagueaNrmlkc+aJuemHj+WIoOmZpOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZHMgaWRzXHJcbiAgICogQHBhcmFtIHJlcXVlc3RJbmZvIHJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRpb24oaWRzOiBzdHJpbmdbXSwgcmVxdWVzdEluZm86IFJlcXVlc3RJbmZvKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZEJhdGNoRGVsZXRpb24oaWRzLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY2FuY2VsKG9wdGlvbnM/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuY2FuY2VsKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiByZXF1ZXN05pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXF1ZXN0KFxyXG4gICAgdXJsOiBzdHJpbmcsIG1ldGhvZDogc3RyaW5nLCBwYXJhbXM/OiBhbnksIG9wdGlvbnM/OiBhbnksXHJcbiAgICBzZWxmSGFuZEVycm9yPzogYm9vbGVhbiwgaWdub3JlRXJyb3I/OiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhblxyXG4gICk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5pbm5lclJlcXVlc3QodXJsLCBtZXRob2QsIHBhcmFtcywgb3B0aW9ucywgc2VsZkhhbmRFcnJvciwgaWdub3JlRXJyb3IsIGlnbm9yZUNoYW5nZXMsIGZhbHNlKTtcclxuICB9XHJcbiAgLy8gdHNsaW50OmRpc2FibGU6IGFsaWduXHJcblxyXG4gIC8qKlxyXG4gICAqIOiwg+eUqOWQjuerr+aWueazlVxyXG4gICAqIEBwYXJhbSB1cmwgdXJsXHJcbiAgICogQHBhcmFtIG1ldGhvZCBtZXRob2RcclxuICAgKiBAcGFyYW0gcGFyYW1zIHBhcmFtc1xyXG4gICAqIEBwYXJhbSBvcHRpb25zIG9wdGlvbnNcclxuICAgKiBAcGFyYW0gc2VsZkhhbmRFcnJvciDoh6rlt7HlpITnkIblvILluLhcclxuICAgKiBAcGFyYW0gaWdub3JlRXJyb3Ig5b+955Wl6ZSZ6K+vXHJcbiAgICogQHBhcmFtIGlnbm9yZUNoYW5nZXMg5b+955Wl5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGludm9rZSh1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuKSB7XHJcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJvZHkgJiYgb3B0aW9ucy5ib2R5LlJlcXVlc3RJbmZvKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcign6K+35L2/55SocmVxdWVzdEluZm/mj5DkuqTlj5jmm7QnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlhoXpg6jnmoRyZXF1ZXN05pa55rOVXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbm5lclJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuLFxyXG4gICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2Q/OiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcclxuICAgIGNvbnN0IGJlZlNlc3Npb25JZEtleSA9ICdCRUZTZXNzaW9uSUQnO1xyXG5cclxuICAgIC8vIOaYr+WQpuiHquW3seWkhOeQhuW8guW4uFxyXG4gICAgaWYgKHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoc2VsZkhhbmRFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBzZWxmSGFuZEVycm9yID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5piv5ZCm5b+955Wl5byC5bi457un57ut5omn6KGMXHJcbiAgICBpZiAodHlwZW9mIChpZ25vcmVFcnJvcikgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAoaWdub3JlRXJyb3IpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgaWdub3JlRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDpgInmi6nmo4Dmn6VSZXF1ZXN0SW5mb+eahOaWueazlVxyXG4gICAgaWYgKHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpID09PSAndW5kZWZpbmVkJyB8fCB0eXBlb2YgKHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHVzZUNvcnJlY3RSZXF1ZXN0SW5mb0NoZWNrTWV0aG9kID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGVja1JlcXVlc3RJbmZvTWV0aG9kID0gdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPyB0aGlzLmV4aXN0UmVxdWVzdEluZm8gOiB0aGlzLmhhc1JlcXVlc3RJbmZvO1xyXG5cclxuICAgIC8vIHBhcmFtc1xyXG4gICAgaWYgKHBhcmFtcykge1xyXG4gICAgICAvLyBjb25zdCBodHRwUGFyYW1zID0gdGhpcy5idWlsZFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgICBvcHRpb25zLnBhcmFtcyA9IHBhcmFtcztcclxuICAgIH1cclxuXHJcbiAgICAvLyDluKbmnIlyZXF1ZXN0SW5mb+eahOivt+axgu+8jOivt+axguaIkOWKn+WQjua4heepuuWPmOabtOmbhlxyXG4gICAgY29uc3QgaGFzUmVxdWVzdEluZm8gPSBjaGVja1JlcXVlc3RJbmZvTWV0aG9kKG9wdGlvbnMpO1xyXG4gICAgbGV0IGhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC5jb252ZXJ0VG9IZWFkZXJzKG9wdGlvbnMuaGVhZGVycyk7XHJcblxyXG4gICAgLy8g5Liy6IGUc2Vzc2lvbua1geWSjGh0dHDmtYFcclxuICAgIGNvbnN0IGZvcm1BcHBDb250ZXh0ID0gdGhpcy5yZXBvc2l0b3J5LmFwcENvbnRleHQuZ2V0Rm9ybUFwcENvbnRleHQoKTtcclxuICAgIHJldHVybiBCZWZTZXNzaW9uTWFuYWdlci5nZXRTZXNzaW9uSWQoZm9ybUFwcENvbnRleHQsIHRoaXMuc2Vzc2lvblNlcnZpY2UpLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgoc2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBoZWFkZXJzID0gdGhpcy5zZXNzaW9uU2VydmljZS5leHRlbmRSZXF1ZXN0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLmhlYWRlcnMgPSBIdHRwSGVhZGVyVXRpbC50b0pzb24oaGVhZGVycyk7XHJcbiAgICAgICAgb3B0aW9ucy5vYnNlcnZlID0gJ3Jlc3BvbnNlJztcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwU2VydmljZS5yZXF1ZXN0KG1ldGhvZCwgdXJsLCBvcHRpb25zKTtcclxuICAgICAgfSksXHJcbiAgICAgIHRhcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5oZWFkZXJzICYmIHJlc3BvbnNlLmhlYWRlcnMuaGFzKGJlZlNlc3Npb25JZEtleSkpIHtcclxuICAgICAgICAgIHRoaXMuc2Vzc2lvblNlcnZpY2Uuc2V0QmVTZXNzaW9uSWQocmVzcG9uc2UuaGVhZGVycy5nZXQoYmVmU2Vzc2lvbklkS2V5KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5ib2R5KSxcclxuICAgICAgbWFwKChyZXN1bHQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRNZXNzYWdlKHJlc3VsdCk7XHJcbiAgICAgICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMucmVwb3NpdG9yeS5nZXRJbmplY3RvcigpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVSZXBvbnNlSW5mbyhyZXN1bHQsIGhhc1JlcXVlc3RJbmZvLCBpZ25vcmVDaGFuZ2VzKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFuZGxlRXJyb3JzKGVycm9yLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue57uT5p6cXHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdDogYW55LCBoYXNSZXF1ZXN0SW5mbzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlczogYm9vbGVhbik6IGFueSB7XHJcbiAgICBpZiAoaGFzUmVxdWVzdEluZm8pIHtcclxuICAgICAgLy8g5aaC5p6c5pyJ5bim5pyJUmVxdWVzdEluZm/vvIzliJnmjInmlrDnu5PmnoTlpITnkIZcclxuICAgICAgLy8gMeOAgeW6lOeUqOacjeWKoeWZqOerr+i/lOWbnueahOWPmOabtO+8m1xyXG4gICAgICAvLyAy44CB5riF56m65pys5Zyw5Y+Y5pu06ZuG77ybXHJcbiAgICAgIC8vIDPjgIHov5Tlm57mlrDnu5PmnoRcclxuICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5uZXJEYXRhQ2hhbmdlICYmIGlnbm9yZUNoYW5nZXMgIT09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnJlcG9zaXRvcnkuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMocmVzdWx0LmlubmVyRGF0YUNoYW5nZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuaW5uZXJWYXJpYWJsZUNoYW5nZSkge1xyXG4gICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVWYXJpYWJsZUNoYW5nZURldGFpbChyZXN1bHQuaW5uZXJWYXJpYWJsZUNoYW5nZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZXBvc2l0b3J5LmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gICAgICAvLyB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxWYXJpYWJsZUNoYW5nZXMoKTtcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIOWmguaenOacieayoeaciVJlcXVlc3RJbmZv77yM5YiZ5oyJ6ICB55qE5pa55byP5aSE55CGXHJcbiAgICAgIC8vIDHjgIHkuI3lpITnkIbmnI3liqHlmajnq6/ov5Tlm57nmoTlj5jmm7TvvJrot5/ogIHnmoTooYzkuLrkuIDmoLfvvJtcclxuICAgICAgLy8gMuOAgeS4jea4heeQhuacrOWcsOWPmOabtO+8muWboOS4uuWPmOabtOayoeacieaPkOS6pO+8m1xyXG4gICAgICAvLyAz44CB6L+U5Zue6ICB55qE57uT5p6E77ya5YW85a656ICB55qE5Luj56CBXHJcbiAgICAgIHJldHVybiB0aGlzLnVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6ZSZ6K+v5aSE55CGXHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZUVycm9ycyhlcnJvcjogYW55LCBzZWxmSGFuZEVycm9yOiBib29sZWFuLCBpZ25vcmVFcnJvcjogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLmNsZWFyTG9hZGluZygpO1xyXG5cclxuICAgIGlmICghIXNlbGZIYW5kRXJyb3IpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLnJlcG9zaXRvcnkuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbklkID0gZm9ybUFwcENvbnRleHQuQXBwbGljYXRpb25JZDtcclxuICAgICAgY29uc3QgYXBwbGljYXRpb25Db250ZXh0OiBhbnkgPSB3aW5kb3dbYXBwbGljYXRpb25JZF0gfHwge307XHJcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gUmVzcG9uc2VJbmZvVXRpbC5wYXJzZUJhY2tFbmRFcnJvcihlcnJvcik7XHJcbiAgICAgIGNvbnN0IGJpek1lc3NhZ2VzID0gQmFja0VuZE1lc3NhZ2VVdGlsLmdldEZvcm1sZXNzTWVzc2FnZXMobWVzc2FnZXMpO1xyXG4gICAgICBjb25zdCBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCA9ICEhYXBwbGljYXRpb25Db250ZXh0LmlzRXhjZXB0aW9uSGFuZGxlckV4aXN0O1xyXG4gICAgICBjb25zdCBpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlID0gYml6TWVzc2FnZXMgJiYgYml6TWVzc2FnZXMubGVuZ3RoID4gMCB8fCBmYWxzZTtcclxuICAgICAgY29uc3QgbmVlZFRocm93RXhjZXB0aW9uID0gIShlcnJvciAmJiBlcnJvci5lcnJvciAmJiBlcnJvci5lcnJvci5leHRlbnNpb25NZXNzYWdlICYmIEJhY2tFbmRNZXNzYWdlVXRpbC5pc0JhY2tFbmRNZXNzYWdlSGFuZGxlckV4aXN0KHRoaXMucmVwb3NpdG9yeS5nZXRJbmplY3RvcigpKSAmJiAhaXNFeGlzdEZvcm1sZXNzTWVzc2FnZSk7XHJcbiAgICAgIGNvbnN0IHdpbGxUaHJvd0V4Y2VwdGlvbiA9ICEhdGhpcy5ldmVudEJ1cyAmJiBpc0V4Y2VwdGlvbkhhbmRsZXJFeGlzdCAmJiBuZWVkVGhyb3dFeGNlcHRpb247XHJcbiAgICAgIEJhY2tFbmRNZXNzYWdlVXRpbC5oYW5kbGVNZXNzYWdlKG1lc3NhZ2VzLCB0aGlzLnJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKSwgeyBoYXNUaHJvd0Vycm9yOiB3aWxsVGhyb3dFeGNlcHRpb24sIGlzRXhjZXB0aW9uOiB0cnVlLCBldmVudEJ1czogdGhpcy5ldmVudEJ1cywgZXJyb3IsIGZvcm1BcHBDb250ZXh0IH0pO1xyXG4gICAgICBpZiAoISF0aGlzLmV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0KSB7XHJcbiAgICAgICAgaWYgKFJlc3BvbnNlSW5mb1V0aWwuaXNSZXBvcnRlZDQwMUVycm9yKGVycm9yKSkge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobmVlZFRocm93RXhjZXB0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50QnVzLnBvc3QoJ0V4Y2VwdGlvbicsICcnLCAnb25FeGNlcHRpb24nLCBlcnJvciwgZm9ybUFwcENvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcclxuICAgICAgICAgIHJldHVybiBvZihudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIEVNUFRZO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5bel5YW35pa55rOVXHJcblxyXG4gIC8qKlxyXG4gICAqIOa4heepukxvYWRpbmdcclxuICAgKi9cclxuICBwcml2YXRlIGNsZWFyTG9hZGluZygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlmTG9hZGluZ0V4aXN0cyA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddICYmXHJcbiAgICAgIHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddIGluc3RhbmNlb2YgQXJyYXkgJiZcclxuICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10ubGVuZ3RoID4gMCB8fCBmYWxzZTtcclxuXHJcbiAgICBpZiAoaWZMb2FkaW5nRXhpc3RzID09PSBmYWxzZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbG9hZGluZ1NlcnZpY2VzOiBhbnlbXSA9IHdpbmRvd1snREVWS0lUX0xPQURJTkdfU0VSVklDRSddO1xyXG4gICAgZm9yIChjb25zdCBzZXJ2aWNlIG9mIGxvYWRpbmdTZXJ2aWNlcykge1xyXG4gICAgICBpZiAodHlwZW9mIChzZXJ2aWNlLmNsZWFyQWxsKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHNlcnZpY2UuY2xlYXJBbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5aSE55CG6L+U5Zue5YC877yM5YW85a656ICB54mI5pysXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1bldyYXBSZXNwb25zZUluZm8ocmVzdWx0OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIFJlc3BvbnNlSW5mb1V0aWwudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmmK/lkKbluKbmnIlSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaGFzUmVxdWVzdEluZm8ob3B0aW9uczogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvV2l0aFIob3B0aW9ucyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciXJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBleGlzdFJlcXVlc3RJbmZvKG9wdGlvbnM6IGFueSkge1xyXG4gICAgcmV0dXJuIFJlcXVlc3RJbmZvVXRpbC5oYXNSZXF1ZXN0SW5mbyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoEh0dHBQYXJhbXPlr7nosaFcclxuICAgKiBAcGFyYW0gcGFyYW1zIOivt+axguWPguaVsFxyXG4gICAqL1xyXG4gIHByaXZhdGUgYnVpbGRQYXJhbXMocGFyYW1zOiBhbnkpOiBIdHRwUGFyYW1zIHtcclxuICAgIHJldHVybiBIdHRwUGFyYW1VdGlsLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmnoTpgKDluKZSZXF1ZXN0SW5mb+eahEJvZHnvvIjpgILnlKjkuo7lpJrkuKrlj4LmlbDnmoTmg4XlhrXvvIzlpoLmnpzlj6rmnInkuIDkuKpSZXF1ZXN0SW5mb+WPguaVsO+8jGJvZHk9UmVxdWVzdEluZm/vvIlcclxuICAgKiBAYm9keSDmnKrmkLrluKZSZXF1ZXN0SW5mb+eahGJvZHnvvIzmoLzlvI/lvaLlpoI6IHtrZXkxOiB2YWx1ZTEsIGtleTI6IHZhbHVlMn1cclxuICAgKi9cclxuICBwdWJsaWMgYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHk6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkQm9keVdpdGhSZXF1ZXN0SW5mbyhib2R5LCB0aGlzLnJlcG9zaXRvcnkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCgUmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwdWJsaWMgYnVpbGRSZXF1ZXN0SW5mbygpOiBSZXF1ZXN0SW5mbyB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmJ1aWxkUmVxdWVzdEluZm8odGhpcy5yZXBvc2l0b3J5KTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcbn1cclxuXHJcbmV4cG9ydCB7IEJlZlJlc3RTZXJ2aWNlIH07XHJcblxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmX3Jlc3Rfc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2JlZl9yZXN0X3NlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQTJCLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFjLFVBQVUsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRSxPQUFPLEVBQVUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7TUFFNUQsR0FBRyxHQUFHLEtBQUs7O01BQ1gs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QUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7Ozs7OztJQUlPLGdCQUFnQixDQUFDLE9BQVk7UUFDbkMsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7Ozs7Ozs7SUFNTyxXQUFXLENBQUMsTUFBVztRQUM3QixPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7Ozs7OztJQU1NLHdCQUF3QixDQUFDLElBQVM7UUFDdkMsT0FBTyxlQUFlLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN6RSxDQUFDOzs7OztJQUtNLGdCQUFnQjtRQUNyQixPQUFPLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0QsQ0FBQzs7O1lBcGNGLFVBQVU7Ozs7WUExQkYsVUFBVTs7WUFNVix1QkFBdUI7WUFEdkIsYUFBYTtZQUZMLFFBQVE7Ozs7Ozs7SUEwQnZCLG9DQUEwQzs7Ozs7O0lBSzFDLG9DQUErQjs7Ozs7SUFDL0IscUNBQWlDOzs7OztJQUtqQyx3Q0FBeUM7Ozs7O0lBS3pDLGlDQUF1Qjs7Ozs7SUFLdkIsa0NBQTBCOztBQWtiNUIsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQEF1dGhvcjogV2l0dFxyXG4gKiBARGF0ZTogMjAxOS0wMi0yMyAxMzo1Nzo0N1xyXG4gKiBATGFzdCBNb2RpZmllZCBieTogYWFsaXp6d2VsbFxyXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE5LTA5LTI0IDE0OjEwOjQwXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciwgb2YsIEVNUFRZIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHN3aXRjaE1hcCwgbWFwLCBjYXRjaEVycm9yLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IEVudGl0eSwgRXZlbnRCdXMgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcbmltcG9ydCB7IEh0dHBIZWFkZXJVdGlsLCBIdHRwUGFyYW1VdGlsLCBSZXF1ZXN0SW5mb1V0aWwsIFJlc3BvbnNlSW5mb1V0aWwgfSBmcm9tICcuL3V0aWxzL2luZGV4JztcclxuaW1wb3J0IHsgQmVmUmVwb3NpdG9yeSB9IGZyb20gJy4vYmVmX3JlcG9zaXRvcnknO1xyXG5pbXBvcnQgeyBGcmFtZXdvcmtTZXNzaW9uU2VydmljZSB9IGZyb20gJy4vZnJhbWV3b3JrX3Nlc3Npb25fc2VydmljZSc7XHJcbmltcG9ydCB7IEJlZlNlc3Npb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXNzaW9uL2luZGV4JztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0YWlsLCBSZXF1ZXN0SW5mbywgUmVzcG9uc2VJbmZvLCBSZXRyaWV2ZVBhcmFtIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IEJlZlByb3h5IH0gZnJvbSAnLi9iZWZfcHJveHknO1xyXG5pbXBvcnQgeyBVcmlTZXJ2aWNlIH0gZnJvbSAnLi91cmlfc2VydmljZSc7XHJcbmltcG9ydCB7IEJlZlByb3h5RXh0ZW5kIH0gZnJvbSAnLi9iZWZfcHJveHlfZXh0ZW5kJztcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UgfSBmcm9tICcuL2h0dHBfc2VydmljZSc7XHJcbmltcG9ydCB7IEJhY2tFbmRNZXNzYWdlVXRpbCB9IGZyb20gJy4vdXRpbHMvYmFja19lbmRfbWVzc2FnZS51dGlsJztcclxuaW1wb3J0IHsgQmVmU2Vzc2lvbk1hbmFnZXIgfSBmcm9tICcuL3Nlc3Npb24vYmVmX3Nlc3Npb25fbWFuYWdlcic7XHJcblxyXG5jb25zdCBHRVQgPSAnR0VUJztcclxuY29uc3QgREVMRVRFID0gJ0RFTEVURSc7XHJcbmNvbnN0IFBVVCA9ICdQVVQnO1xyXG5jb25zdCBQT1NUID0gJ1BPU1QnO1xyXG5jb25zdCBQQVRDSCA9ICdQQVRDSCc7XHJcblxyXG4vKipcclxuICogQkVG5Y+W5pWw5pyN5YqhXHJcbiAqIOivpeacjeWKoeeUsUJlZlJlcG9zaXRvcnnlrp7kvovljJbvvIzkuI3lgZrms6jlhaXvvIzmr4/kuKpCZWZSZXBvc2l0b3J55oul5pyJ5LiA5LiqQmVmUmVzdFNlcnZpY2Xlrp7kvovjgIJcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuY2xhc3MgQmVmUmVzdFNlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHJlcG9zaXRvcnk6IEJlZlJlcG9zaXRvcnk8RW50aXR5PjtcclxuXHJcbiAgLyoqXHJcbiAgICogaHR0cENsaWVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudDtcclxuICBwcml2YXRlIGh0dHBTZXJ2aWNlOiBIdHRwU2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICog5Lya6K+d5pyN5YqhXHJcbiAgICovXHJcbiAgcHVibGljIHNlc3Npb25TZXJ2aWNlOiBCZWZTZXNzaW9uU2VydmljZTtcclxuXHJcbiAgLyoqXHJcbiAgICog5o6l5Y+j5qC5VXJpXHJcbiAgICovXHJcbiAgcHVibGljIGJhc2VVcmk6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICog5LqL5Lu25oC757q/XHJcbiAgICovXHJcbiAgcHVibGljIGV2ZW50QnVzOiBFdmVudEJ1cztcclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCg5Ye95pWwXHJcbiAgICogQHBhcmFtIGh0dHBDbGllbnQgaHR0cOacjeWKoVxyXG4gICAqIEBwYXJhbSBzZXJ2ZXJVcmkg5bqU55So5pyN5Yqh5Zmo5Zyw5Z2AXHJcbiAgICogQHBhcmFtIGJlVXJpIEJFIEFQSeWcsOWdgFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaHR0cENsaWVudDogSHR0cENsaWVudCwgYmFzZVVyaTogc3RyaW5nLFxyXG4gICAgZnJtU2Vzc2lvblNlcnZpY2U6IEZyYW1ld29ya1Nlc3Npb25TZXJ2aWNlLFxyXG4gICAgcmVwb3NpdG9yeTogQmVmUmVwb3NpdG9yeTxFbnRpdHk+LFxyXG4gICAgZXZlbnRCdXM/OiBFdmVudEJ1c1xyXG4gICkge1xyXG4gICAgdGhpcy5odHRwQ2xpZW50ID0gaHR0cENsaWVudDtcclxuICAgIHRoaXMuaHR0cFNlcnZpY2UgPSBuZXcgSHR0cFNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcclxuICAgIHRoaXMuYmFzZVVyaSA9IGJhc2VVcmk7XHJcbiAgICBjb25zdCBpbmplY3RvciA9IHJlcG9zaXRvcnkuZ2V0SW5qZWN0b3IoKTtcclxuICAgIHRoaXMuc2Vzc2lvblNlcnZpY2UgPSBuZXcgQmVmU2Vzc2lvblNlcnZpY2UoaHR0cENsaWVudCwgYmFzZVVyaSwgZnJtU2Vzc2lvblNlcnZpY2UsIGluamVjdG9yKTtcclxuICAgIHRoaXMucmVwb3NpdG9yeSA9IHJlcG9zaXRvcnk7XHJcbiAgICB0aGlzLmV2ZW50QnVzID0gZXZlbnRCdXM7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDku6PnkIbnm7jlhbNcclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+WQmVm5Luj55CGXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBwcm94eSgpOiBCZWZQcm94eSB7XHJcbiAgICBpZiAoISF0aGlzLnJlcG9zaXRvcnkucHJveHkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5wcm94eTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJlZlByb3h5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7pCZWbku6PnkIZcclxuICAgKi9cclxuICBwcml2YXRlIGNyZWF0ZUJlZlByb3h5KCkge1xyXG4gICAgY29uc3Qgc2VydmVyVXJpID0gdGhpcy5yZXBvc2l0b3J5LnNlcnZlclVyaTtcclxuICAgIGNvbnN0IHVyaVNlcnZpY2UgPSBuZXcgVXJpU2VydmljZShzZXJ2ZXJVcmkpO1xyXG4gICAgY29uc3QgZGVmYXVsdFByb3h5ID0gbmV3IEJlZlByb3h5KHRoaXMuaHR0cENsaWVudCwgdXJpU2VydmljZSk7XHJcbiAgICBkZWZhdWx0UHJveHkuc2V0QmFzZVVyaSh0aGlzLmJhc2VVcmkpO1xyXG4gICAgY29uc3QgZXh0ZW5kID0gbmV3IEJlZlByb3h5RXh0ZW5kKHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgICBkZWZhdWx0UHJveHkuc2V0UHJveHlFeHRlbmQoZXh0ZW5kKTtcclxuICAgIHJldHVybiBkZWZhdWx0UHJveHk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOWfuuacrENSVUTmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHF1ZXJ5KGVudGl0eUZpbHRlcj86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeShlbnRpdHlGaWx0ZXIpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZFF1ZXJ5KGVudGl0eUZpbHRlcjogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kUXVlcnkoZW50aXR5RmlsdGVyLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouWQhOS7juihqOaVsOaNrlxyXG4gICAqIEBwYXJhbSBpZCDkuLvooahpZFxyXG4gICAqIEBwYXJhbSByZXRyaWV2ZVBhcmFtIOWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZXJ2aWNlUmV0cmlldmUoaWQ6IHN0cmluZywgcmV0cmlldmVQYXJhbTogYW55LCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuc2VydmljZVJldHJpZXZlKGlkLCByZXRyaWV2ZVBhcmFtLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOWIhumhteafpeivouS7juihqC/ku47ku47ooajmlbDmja5cclxuICAgKiBAcGFyYW0gcGFyYW1zIOafpeivouWPguaVsFxyXG4gICAqL1xyXG4gIHB1YmxpYyBxdWVyeUNoaWxkKHBhcmFtczogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5xdWVyeUNoaWxkKHBhcmFtcyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyByZXRyaWV2ZShpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LnJldHJpZXZlKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBleHRlbmRSZXRyaWV2ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8sIHJldHJpZXZlUGFyYW0/OiBSZXRyaWV2ZVBhcmFtKTogT2JzZXJ2YWJsZTxSZXNwb25zZUluZm8+IHtcclxuICAgIHJldHVybiB0aGlzLnByb3h5LmV4dGVuZFJldHJpZXZlKGlkLCByZXF1ZXN0SW5mbywgcmV0cmlldmVQYXJhbSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlKGRlZmF1bHRWYWx1ZT86IGFueSwgcmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jcmVhdGUoZGVmYXVsdFZhbHVlLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgY3JlYXRlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuY3JlYXRlQnlQYXRoKGZwYXRoLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICB1cGRhdGUoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwsIHJlcXVlc3RJbmZvPzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkudXBkYXRlKGNoYW5nZURldGFpbCwgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHNhdmUocmVxdWVzdEluZm8/OiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5zYXZlKHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBkZWxldGUoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldGUoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0ZShpZDogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kRGVsZXRlKGlkLCByZXF1ZXN0SW5mbyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgZGVsZXRCeVBhdGgoZnBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5kZWxldEJ5UGF0aChmcGF0aCwgaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZERlbGV0QnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmREZWxldEJ5UGF0aChmcGF0aCwgaWQsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcbiAgcHVibGljIGJhdGNoRGVsZXRlQnlQYXRoKGZQYXRoOiBzdHJpbmcsIGlkczogc3RyaW5nLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPFJlc3BvbnNlSW5mbz4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuYmF0Y2hEZWxldGVCeVBhdGgoZlBhdGgsIGlkcywgcmVxdWVzdEluZm8pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlt7Llup/lvIPvvIzor7fkvb/nlKhyZXBvc2l0b3J5LnByb3h55a+55bqU5pa55rOV5Luj5pu/XHJcbiAgICogQGRlcHJlY2F0ZWRcclxuICAgKi9cclxuICBwdWJsaWMgYmF0Y2hEZWxldGUoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5iYXRjaERlbGV0ZShpZHMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIGV4dGVuZEJhdGNoRGVsZXRlKGlkczogc3RyaW5nW10sIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbyk6IE9ic2VydmFibGU8UmVzcG9uc2VJbmZvPiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5leHRlbmRCYXRjaERlbGV0ZShpZHMsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWRz5om56YeP5Yig6Zmk5a6e5L2TXHJcbiAgICogQHBhcmFtIGlkcyBpZHNcclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwdWJsaWMgZXh0ZW5kQmF0Y2hEZWxldGlvbihpZHM6IHN0cmluZ1tdLCByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMucHJveHkuZXh0ZW5kQmF0Y2hEZWxldGlvbihpZHMsIHJlcXVlc3RJbmZvKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW3suW6n+W8g++8jOivt+S9v+eUqHJlcG9zaXRvcnkucHJveHnlr7nlupTmlrnms5Xku6Pmm79cclxuICAgKiBAZGVwcmVjYXRlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBjYW5jZWwob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5wcm94eS5jYW5jZWwob3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIHJlcXVlc3Tmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5bey5bqf5byD77yM6K+35L2/55SocmVwb3NpdG9yeS5wcm94eeWvueW6lOaWueazleS7o+abv1xyXG4gICAqIEBkZXByZWNhdGVkXHJcbiAgICovXHJcbiAgcHVibGljIHJlcXVlc3QoXHJcbiAgICB1cmw6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcsIHBhcmFtcz86IGFueSwgb3B0aW9ucz86IGFueSxcclxuICAgIHNlbGZIYW5kRXJyb3I/OiBib29sZWFuLCBpZ25vcmVFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUNoYW5nZXM/OiBib29sZWFuXHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmlubmVyUmVxdWVzdCh1cmwsIG1ldGhvZCwgcGFyYW1zLCBvcHRpb25zLCBzZWxmSGFuZEVycm9yLCBpZ25vcmVFcnJvciwgaWdub3JlQ2hhbmdlcywgZmFsc2UpO1xyXG4gIH1cclxuICAvLyB0c2xpbnQ6ZGlzYWJsZTogYWxpZ25cclxuXHJcbiAgLyoqXHJcbiAgICog6LCD55So5ZCO56uv5pa55rOVXHJcbiAgICogQHBhcmFtIHVybCB1cmxcclxuICAgKiBAcGFyYW0gbWV0aG9kIG1ldGhvZFxyXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1zXHJcbiAgICogQHBhcmFtIG9wdGlvbnMgb3B0aW9uc1xyXG4gICAqIEBwYXJhbSBzZWxmSGFuZEVycm9yIOiHquW3seWkhOeQhuW8guW4uFxyXG4gICAqIEBwYXJhbSBpZ25vcmVFcnJvciDlv73nlaXplJnor69cclxuICAgKiBAcGFyYW0gaWdub3JlQ2hhbmdlcyDlv73nlaXlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgaW52b2tlKHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pIHtcclxuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuYm9keSAmJiBvcHRpb25zLmJvZHkuUmVxdWVzdEluZm8pIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCfor7fkvb/nlKhyZXF1ZXN0SW5mb+aPkOS6pOWPmOabtCcpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaW5uZXJSZXF1ZXN0KHVybCwgbWV0aG9kLCBwYXJhbXMsIG9wdGlvbnMsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yLCBpZ25vcmVDaGFuZ2VzLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWGhemDqOeahHJlcXVlc3Tmlrnms5VcclxuICAgKi9cclxuICBwcml2YXRlIGlubmVyUmVxdWVzdChcclxuICAgIHVybDogc3RyaW5nLCBtZXRob2Q6IHN0cmluZywgcGFyYW1zPzogYW55LCBvcHRpb25zPzogYW55LFxyXG4gICAgc2VsZkhhbmRFcnJvcj86IGJvb2xlYW4sIGlnbm9yZUVycm9yPzogYm9vbGVhbiwgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4sXHJcbiAgICB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZD86IGJvb2xlYW5cclxuICApIHtcclxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xyXG4gICAgY29uc3QgYmVmU2Vzc2lvbklkS2V5ID0gJ0JFRlNlc3Npb25JRCc7XHJcblxyXG4gICAgLy8g5piv5ZCm6Ieq5bex5aSE55CG5byC5bi4XHJcbiAgICBpZiAodHlwZW9mIChzZWxmSGFuZEVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChzZWxmSGFuZEVycm9yKSAhPT0gJ2Jvb2xlYW4nKSB7XHJcbiAgICAgIHNlbGZIYW5kRXJyb3IgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmmK/lkKblv73nlaXlvILluLjnu6fnu63miafooYxcclxuICAgIGlmICh0eXBlb2YgKGlnbm9yZUVycm9yKSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIChpZ25vcmVFcnJvcikgIT09ICdib29sZWFuJykge1xyXG4gICAgICBpZ25vcmVFcnJvciA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOmAieaLqeajgOafpVJlcXVlc3RJbmZv55qE5pa55rOVXHJcbiAgICBpZiAodHlwZW9mICh1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCkgPT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiAodXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QpICE9PSAnYm9vbGVhbicpIHtcclxuICAgICAgdXNlQ29ycmVjdFJlcXVlc3RJbmZvQ2hlY2tNZXRob2QgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNoZWNrUmVxdWVzdEluZm9NZXRob2QgPSB1c2VDb3JyZWN0UmVxdWVzdEluZm9DaGVja01ldGhvZCA/IHRoaXMuZXhpc3RSZXF1ZXN0SW5mbyA6IHRoaXMuaGFzUmVxdWVzdEluZm87XHJcblxyXG4gICAgLy8gcGFyYW1zXHJcbiAgICBpZiAocGFyYW1zKSB7XHJcbiAgICAgIC8vIGNvbnN0IGh0dHBQYXJhbXMgPSB0aGlzLmJ1aWxkUGFyYW1zKHBhcmFtcyk7XHJcbiAgICAgIG9wdGlvbnMucGFyYW1zID0gcGFyYW1zO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOW4puaciXJlcXVlc3RJbmZv55qE6K+35rGC77yM6K+35rGC5oiQ5Yqf5ZCO5riF56m65Y+Y5pu06ZuGXHJcbiAgICBjb25zdCBoYXNSZXF1ZXN0SW5mbyA9IGNoZWNrUmVxdWVzdEluZm9NZXRob2Qob3B0aW9ucyk7XHJcbiAgICBsZXQgaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLmNvbnZlcnRUb0hlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcclxuXHJcbiAgICAvLyDkuLLogZRzZXNzaW9u5rWB5ZKMaHR0cOa1gVxyXG4gICAgY29uc3QgZm9ybUFwcENvbnRleHQgPSB0aGlzLnJlcG9zaXRvcnkuYXBwQ29udGV4dC5nZXRGb3JtQXBwQ29udGV4dCgpO1xyXG4gICAgcmV0dXJuIEJlZlNlc3Npb25NYW5hZ2VyLmdldFNlc3Npb25JZChmb3JtQXBwQ29udGV4dCwgdGhpcy5zZXNzaW9uU2VydmljZSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChzZXNzaW9uSWQ6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlc3Npb25TZXJ2aWNlLmV4dGVuZFJlcXVlc3RIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgICAgIG9wdGlvbnMuaGVhZGVycyA9IEh0dHBIZWFkZXJVdGlsLnRvSnNvbihoZWFkZXJzKTtcclxuICAgICAgICBvcHRpb25zLm9ic2VydmUgPSAncmVzcG9uc2UnO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHBTZXJ2aWNlLnJlcXVlc3QobWV0aG9kLCB1cmwsIG9wdGlvbnMpO1xyXG4gICAgICB9KSxcclxuICAgICAgdGFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMgJiYgcmVzcG9uc2UuaGVhZGVycy5oYXMoYmVmU2Vzc2lvbklkS2V5KSkge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9uU2VydmljZS5zZXRCZVNlc3Npb25JZChyZXNwb25zZS5oZWFkZXJzLmdldChiZWZTZXNzaW9uSWRLZXkpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmJvZHkpLFxyXG4gICAgICBtYXAoKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZE1lc3NhZ2UocmVzdWx0KTtcclxuICAgICAgICBCYWNrRW5kTWVzc2FnZVV0aWwuaGFuZGxlTWVzc2FnZShtZXNzYWdlcywgdGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhhbmRsZVJlcG9uc2VJbmZvKHJlc3VsdCwgaGFzUmVxdWVzdEluZm8sIGlnbm9yZUNoYW5nZXMpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVFcnJvcnMoZXJyb3IsIHNlbGZIYW5kRXJyb3IsIGlnbm9yZUVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57nu5PmnpxcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlUmVwb25zZUluZm8ocmVzdWx0OiBhbnksIGhhc1JlcXVlc3RJbmZvOiBib29sZWFuLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuKTogYW55IHtcclxuICAgIGlmIChoYXNSZXF1ZXN0SW5mbykge1xyXG4gICAgICAvLyDlpoLmnpzmnInluKbmnIlSZXF1ZXN0SW5mb++8jOWImeaMieaWsOe7k+aehOWkhOeQhlxyXG4gICAgICAvLyAx44CB5bqU55So5pyN5Yqh5Zmo56uv6L+U5Zue55qE5Y+Y5pu077ybXHJcbiAgICAgIC8vIDLjgIHmuIXnqbrmnKzlnLDlj5jmm7Tpm4bvvJtcclxuICAgICAgLy8gM+OAgei/lOWbnuaWsOe7k+aehFxyXG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbm5lckRhdGFDaGFuZ2UgJiYgaWdub3JlQ2hhbmdlcyAhPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMucmVwb3NpdG9yeS5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhyZXN1bHQuaW5uZXJEYXRhQ2hhbmdlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC5pbm5lclZhcmlhYmxlQ2hhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmhhbmRsZVZhcmlhYmxlQ2hhbmdlRGV0YWlsKHJlc3VsdC5pbm5lclZhcmlhYmxlQ2hhbmdlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlcG9zaXRvcnkuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgICAgIC8vIHRoaXMucmVwb3NpdG9yeS5jbGVhckFsbFZhcmlhYmxlQ2hhbmdlcygpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8g5aaC5p6c5pyJ5rKh5pyJUmVxdWVzdEluZm/vvIzliJnmjInogIHnmoTmlrnlvI/lpITnkIZcclxuICAgICAgLy8gMeOAgeS4jeWkhOeQhuacjeWKoeWZqOerr+i/lOWbnueahOWPmOabtO+8mui3n+iAgeeahOihjOS4uuS4gOagt++8m1xyXG4gICAgICAvLyAy44CB5LiN5riF55CG5pys5Zyw5Y+Y5pu077ya5Zug5Li65Y+Y5pu05rKh5pyJ5o+Q5Lqk77ybXHJcbiAgICAgIC8vIDPjgIHov5Tlm57ogIHnmoTnu5PmnoTvvJrlhbzlrrnogIHnmoTku6PnoIFcclxuICAgICAgcmV0dXJuIHRoaXMudW5XcmFwUmVzcG9uc2VJbmZvKHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDplJnor6/lpITnkIZcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlRXJyb3JzKGVycm9yOiBhbnksIHNlbGZIYW5kRXJyb3I6IGJvb2xlYW4sIGlnbm9yZUVycm9yOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMuY2xlYXJMb2FkaW5nKCk7XHJcblxyXG4gICAgaWYgKCEhc2VsZkhhbmRFcnJvcikge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmb3JtQXBwQ29udGV4dCA9IHRoaXMucmVwb3NpdG9yeS5hcHBDb250ZXh0LmdldEZvcm1BcHBDb250ZXh0KCk7XHJcbiAgICAgIGNvbnN0IGFwcGxpY2F0aW9uSWQgPSBmb3JtQXBwQ29udGV4dC5BcHBsaWNhdGlvbklkO1xyXG4gICAgICBjb25zdCBhcHBsaWNhdGlvbkNvbnRleHQ6IGFueSA9IHdpbmRvd1thcHBsaWNhdGlvbklkXSB8fCB7fTtcclxuICAgICAgY29uc3QgbWVzc2FnZXMgPSBSZXNwb25zZUluZm9VdGlsLnBhcnNlQmFja0VuZEVycm9yKGVycm9yKTtcclxuICAgICAgY29uc3QgYml6TWVzc2FnZXMgPSBCYWNrRW5kTWVzc2FnZVV0aWwuZ2V0Rm9ybWxlc3NNZXNzYWdlcyhtZXNzYWdlcyk7XHJcbiAgICAgIGNvbnN0IGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ID0gISFhcHBsaWNhdGlvbkNvbnRleHQuaXNFeGNlcHRpb25IYW5kbGVyRXhpc3Q7XHJcbiAgICAgIGNvbnN0IGlzRXhpc3RGb3JtbGVzc01lc3NhZ2UgPSBiaXpNZXNzYWdlcyAmJiBiaXpNZXNzYWdlcy5sZW5ndGggPiAwIHx8IGZhbHNlO1xyXG4gICAgICBjb25zdCBuZWVkVGhyb3dFeGNlcHRpb24gPSAhKGVycm9yICYmIGVycm9yLmVycm9yICYmIGVycm9yLmVycm9yLmV4dGVuc2lvbk1lc3NhZ2UgJiYgQmFja0VuZE1lc3NhZ2VVdGlsLmlzQmFja0VuZE1lc3NhZ2VIYW5kbGVyRXhpc3QodGhpcy5yZXBvc2l0b3J5LmdldEluamVjdG9yKCkpICYmICFpc0V4aXN0Rm9ybWxlc3NNZXNzYWdlKTtcclxuICAgICAgY29uc3Qgd2lsbFRocm93RXhjZXB0aW9uID0gISF0aGlzLmV2ZW50QnVzICYmIGlzRXhjZXB0aW9uSGFuZGxlckV4aXN0ICYmIG5lZWRUaHJvd0V4Y2VwdGlvbjtcclxuICAgICAgQmFja0VuZE1lc3NhZ2VVdGlsLmhhbmRsZU1lc3NhZ2UobWVzc2FnZXMsIHRoaXMucmVwb3NpdG9yeS5nZXRJbmplY3RvcigpLCB7IGhhc1Rocm93RXJyb3I6IHdpbGxUaHJvd0V4Y2VwdGlvbiwgaXNFeGNlcHRpb246IHRydWUsIGV2ZW50QnVzOiB0aGlzLmV2ZW50QnVzLCBlcnJvciwgZm9ybUFwcENvbnRleHQgfSk7XHJcbiAgICAgIGlmICghIXRoaXMuZXZlbnRCdXMgJiYgaXNFeGNlcHRpb25IYW5kbGVyRXhpc3QpIHtcclxuICAgICAgICBpZiAoUmVzcG9uc2VJbmZvVXRpbC5pc1JlcG9ydGVkNDAxRXJyb3IoZXJyb3IpKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuZWVkVGhyb3dFeGNlcHRpb24pIHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRCdXMucG9zdCgnRXhjZXB0aW9uJywgJycsICdvbkV4Y2VwdGlvbicsIGVycm9yLCBmb3JtQXBwQ29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpZ25vcmVFcnJvcikge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDlt6Xlhbfmlrnms5VcclxuXHJcbiAgLyoqXHJcbiAgICog5riF56m6TG9hZGluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgY2xlYXJMb2FkaW5nKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaWZMb2FkaW5nRXhpc3RzID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gJiZcclxuICAgICAgd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ10gaW5zdGFuY2VvZiBBcnJheSAmJlxyXG4gICAgICB3aW5kb3dbJ0RFVktJVF9MT0FESU5HX1NFUlZJQ0UnXS5sZW5ndGggPiAwIHx8IGZhbHNlO1xyXG5cclxuICAgIGlmIChpZkxvYWRpbmdFeGlzdHMgPT09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBsb2FkaW5nU2VydmljZXM6IGFueVtdID0gd2luZG93WydERVZLSVRfTE9BRElOR19TRVJWSUNFJ107XHJcbiAgICBmb3IgKGNvbnN0IHNlcnZpY2Ugb2YgbG9hZGluZ1NlcnZpY2VzKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgKHNlcnZpY2UuY2xlYXJBbGwpID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgc2VydmljZS5jbGVhckFsbCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbov5Tlm57lgLzvvIzlhbzlrrnogIHniYjmnKxcclxuICAgKi9cclxuICBwcml2YXRlIHVuV3JhcFJlc3BvbnNlSW5mbyhyZXN1bHQ6IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gUmVzcG9uc2VJbmZvVXRpbC51bldyYXBSZXNwb25zZUluZm8ocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaYr+WQpuW4puaciVJlcXVlc3RJbmZvXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYXNSZXF1ZXN0SW5mbyhvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuaGFzUmVxdWVzdEluZm9XaXRoUihvcHRpb25zKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5bim5pyJcmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGV4aXN0UmVxdWVzdEluZm8ob3B0aW9uczogYW55KSB7XHJcbiAgICByZXR1cm4gUmVxdWVzdEluZm9VdGlsLmhhc1JlcXVlc3RJbmZvKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5p6E6YCgSHR0cFBhcmFtc+WvueixoVxyXG4gICAqIEBwYXJhbSBwYXJhbXMg6K+35rGC5Y+C5pWwXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBidWlsZFBhcmFtcyhwYXJhbXM6IGFueSk6IEh0dHBQYXJhbXMge1xyXG4gICAgcmV0dXJuIEh0dHBQYXJhbVV0aWwuYnVpbGRQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaehOmAoOW4plJlcXVlc3RJbmZv55qEQm9kee+8iOmAgueUqOS6juWkmuS4quWPguaVsOeahOaDheWGte+8jOWmguaenOWPquacieS4gOS4qlJlcXVlc3RJbmZv5Y+C5pWw77yMYm9keT1SZXF1ZXN0SW5mb++8iVxyXG4gICAqIEBib2R5IOacquaQuuW4plJlcXVlc3RJbmZv55qEYm9kee+8jOagvOW8j+W9ouWmgjoge2tleTE6IHZhbHVlMSwga2V5MjogdmFsdWUyfVxyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZEJvZHlXaXRoUmVxdWVzdEluZm8oYm9keTogYW55KTogYW55IHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRCb2R5V2l0aFJlcXVlc3RJbmZvKGJvZHksIHRoaXMucmVwb3NpdG9yeSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmnoTpgKBSZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHB1YmxpYyBidWlsZFJlcXVlc3RJbmZvKCk6IFJlcXVlc3RJbmZvIHtcclxuICAgIHJldHVybiBSZXF1ZXN0SW5mb1V0aWwuYnVpbGRSZXF1ZXN0SW5mbyh0aGlzLnJlcG9zaXRvcnkpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxufVxyXG5cclxuZXhwb3J0IHsgQmVmUmVzdFNlcnZpY2UgfTtcclxuXHJcbiJdfQ==

@@ -61,3 +61,3 @@ /**

* 获取单个实体
* @param {?} id
* @param {?} id 主实体id
* @return {?}

@@ -299,2 +299,2 @@ */

export { DeprecatedBefRepository };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2RlcHJlY2F0ZWQvZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFlcEQsTUFDZSx1QkFBMEMsU0FBUSxVQUFhOzs7OztJQWtENUU7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Ozs7OztJQTFCRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxDQUFDOzs7OztJQUtELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7Ozs7O0lBS0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQzs7Ozs7O0lBaUJNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7Ozs7OztJQUtNLE9BQU8sQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7Ozs7O0lBTU0sVUFBVSxDQUFDLEVBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7Ozs7SUFLTSxNQUFN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QEF1dGhvcjogU2FnaSwgTHVjYXMsIFdpdHRcclxuICogQERhdGU6IDIwMTgtMTAtMTEgMTc6MzQ6MjZcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wNi0yOSAxMTozOTowMlxyXG4gKi9cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aFxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFbnRpdHksIFJlcG9zaXRvcnkgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcblxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgQmVmUmVzdFNlcnZpY2UgfSBmcm9tICcuLi9iZWZfcmVzdF9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmQ2hhbmdlQnVpbGRlciB9IGZyb20gJy4uL2JlZl9jaGFuZ2VfYnVpbGRlcic7XHJcbmltcG9ydCB7IEJlZkNoYW5nZUhhbmRsZXIgfSBmcm9tICcuLi9iZWZfY2hhbmdlX2hhbmRsZXInO1xyXG5cclxuaW1wb3J0IHsgQmVmRW50aXR5TWFuYWdlciB9IGZyb20gJy4uL2JlZl9lbnRpdHlfbWFuYWdlcic7XHJcbmltcG9ydCB7IEJlZlZhcmlhYmxlTWFuYWdlciB9IGZyb20gJy4uL2JlZl92YXJpYWJsZV9tYW5hZ2VyJztcclxuaW1wb3J0IHsgQmVmRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9iZWZfZGF0YV9zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiDpgILphY3ogIHnmoRBUEnvvIzkv53mjIHlhbzlrrlcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuYWJzdHJhY3QgY2xhc3MgRGVwcmVjYXRlZEJlZlJlcG9zaXRvcnk8VCBleHRlbmRzIEVudGl0eT4gZXh0ZW5kcyBSZXBvc2l0b3J5PFQ+IHtcclxuXHJcbiAgLyoqXHJcbiAgICog5a6e5L2T566h55CG5ZmoXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIGVudGl0eU1hbmFnZXI6IEJlZkVudGl0eU1hbmFnZXI8VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIOWPmOmHj+euoeeQhuWZqFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB2YXJpYWJsZU1hbmFnZXI6IEJlZlZhcmlhYmxlTWFuYWdlcjtcclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5pWw5pyN5YqhXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBCZWZEYXRhU2VydmljZTxUPjtcclxuXHJcblxyXG4gIC8vICNyZWdpb24g6ICB55qE5bGe5oCn5YyF6KOF5oiQZ2V05pa55rOV6L+b6KGM5YW85a65XHJcblxyXG4gIC8qKlxyXG4gICAqIOWPluaVsOacjeWKoVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgcmVzdFNlcnZpY2UoKTogQmVmUmVzdFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVzdFNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlrp7kvZPlj5jmm7TvvIjliY3nq6/vvIk9PiBCReWPmOabtO+8iOWQjuerr++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgY2hhbmdlQnVpbGRlcigpOiBCZWZDaGFuZ2VCdWlsZGVyIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuY2hhbmdlQnVpbGRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJF5Y+Y5pu077yI5ZCO56uv77yJPT4g5a6e5L2T5Y+Y5pu077yI5YmN56uv77yJXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBjaGFuZ2VIYW5kbGVyKCk6IEJlZkNoYW5nZUhhbmRsZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5TWFuYWdlci5jaGFuZ2VIYW5kbGVyO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgKiDmnoTpgKDlh73mlbBcclxuICAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24g5pWw5o2u6K6/6ZeuXHJcblxyXG4gIC8qKlxyXG4gICog6I635Y+W5a6e5L2T6ZuG5ZCIXHJcbiAgKi9cclxuICBwdWJsaWMgZ2V0TGlzdCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0TGlzdChudWxsLCBudWxsLCBudWxsLCBudWxsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWNleS4quWunuS9k1xyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldEJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWTmm7TmlrDlrp7kvZNcclxuICAgKiBAcGFyYW0gaWQg5a6e5L2TaWRcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuaWsOWunuS9k++8jOW5tuWKoOi9vVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNyZWF0ZShkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6L+95Yqg5a6e5L2TXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZChkZWZhdWx0VmFsdWU/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZChkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65a2Q5a6e5L2T77yM5bm26L+95YqgXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8jOagvOW8j+W9ouWmgu+8mi8xL2VkdXPvvIjku47ooajvvInmiJYvMS9lZHVzLzIvZ3JhZGVz77yI5LuO5LuO6KGo77yJXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZEJ5UGF0aChmcGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZEJ5UGF0aChmcGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5pZOWIoOmZpOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDlhoXnoIFcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlQnlJZChpZDogc3RyaW5nLCBpZlNhdmU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeUlkKGlkLCBpZlNhdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6ZmkXHJcbiAgICogQHBhcmFtIGlkIOWGheeggVxyXG4gICAqIEBwYXJhbSBpZlNhdmUg5piv5ZCm5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUJ5SWRzKGlkczogc3RyaW5nW10sIGlmU2F2ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVtb3ZlQnlJZHMoaWRzLCBpZlNhdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5a2Q57qnXHJcbiAgICogQHBhcmFtIHBhdGgg6Lev5b6EXHJcbiAgICogQHBhcmFtIGlkICAg5YaF56CBXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeVBhdGgoZnBhdGgsIGlkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5bCGaWTlr7nlupTnmoTlrp7kvZPnmoTlj5jmm7Tmj5DkuqTnmoTmnI3liqHlmajnq69cclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQ2hhbmdlc0J5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UudXBkYXRlQ2hhbmdlc0J5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5o+Q5LqkcGF0aOWvueW6lOWunuS9k+eahOWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVDaGFuZ2VzQnlQYXRoKHBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBJbXBsZW1lbnQnKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5o+Q5Lqk5omA5pyJ5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZUFsbENoYW5nZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVBbGxDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlupTnlKjlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlDaGFuZ2VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYXBwbHlDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqTmlbDmja7lj5jmm7Tlkozlj5jph4/lj5jmm7TvvIzpgJrov4dyZXRyaWV2ZeaooeaLn1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVEYXRhQW5kVmFyaWFibGVDaGFuZ2VzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJDb25kaXRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc29ydENvbmRpdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXIgPSB7XHJcbiAgICAgIEZpbHRlckNvbmRpdGlvbnM6IGZpbHRlckNvbmRpdGlvbnMsXHJcbiAgICAgIFNvcnRDb25kaXRpb25zOiBzb3J0Q29uZGl0aW9ucyxcclxuICAgICAgSXNVc2VQYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgICBQYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgUGFnZUluZGV4OiAxLFxyXG4gICAgICAgIFBhZ2VTaXplOiAxLFxyXG4gICAgICAgIFBhZ2VDb3VudDogMCxcclxuICAgICAgICBUb3RhbENvdW50OiAwXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgIGNvbnN0IHJlcXVlc3RJbmZvID0gdGhpcy5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XHJcbiAgICAvLyDmsqHmnInlj5jmm7Tml7bkuI3lho3mj5DkuqTlj5jmm7RcclxuICAgIGlmICh0aGlzLmlzRW1wdHlSZXF1ZXN0SW5mbyhyZXF1ZXN0SW5mbykpIHtcclxuICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5yZXN0U2VydmljZS5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnk/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmludm9rZSh1cmwsICdQVVQnLCBudWxsLCBvcHRpb25zLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlupTnlKhpZOWvueW6lOaVsOaNrueahOWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBseUNoYW5nZXNCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGx5Q2hhbmdlc0J5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raI5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbENoYW5nZXMob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY2FuY2VsQ2hhbmdlcyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5pWw5o2u5Y+Y5pu06ZuG5aSE55CGXHJcblxyXG4gIC8qKlxyXG4gICAqIOa4heepuuaJgOacieacrOWcsOWunuS9k+eahOWPmOabtOmbhlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhckFsbEVudGl0eUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlNYW5hZ2VyLmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGdldERhdGFDaGFuZ2VEZXRhaWxzKCk6IENoYW5nZURldGFpbFtdIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuYnVpbGRBbGxFbnRpdHlDaGFuZ2VEZXRhaWxzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbmlbDmja7lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlRGF0YUNoYW5nZURldGFpbHMoY2hhbmdlRGV0YWlsczogQ2hhbmdlRGV0YWlsW10pOiB2b2lkIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMoY2hhbmdlRGV0YWlscyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOWPmOmHj+WPmOabtOmbhuWkhOeQhlxyXG5cclxuICAvKipcclxuICAgKiDojrflj5blj5jph4/lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VmFyaWFibGVDaGFuZ2VEZXRhaWwoKTogQ2hhbmdlRGV0YWlsIHtcclxuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlTWFuYWdlci5idWlsZENoYW5nZURldGFpbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5aSE55CG5Y+Y6YeP5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZVZhcmlhYmxlQ2hhbmdlRGV0YWlsKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsKSB7XHJcbiAgICB0aGlzLnZhcmlhYmxlTWFuYWdlci5oYW5kbGVDaGFuZ2VEZXRhaWwoY2hhbmdlRGV0YWlsKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuICAvKipcclxuICAgKiDlj5jmm7Tpm4bmmK/lkKbkuLrnqbpcclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGlzRW1wdHlSZXF1ZXN0SW5mbyhyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pIHtcclxuICAgIGlmICghcmVxdWVzdEluZm8pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoKCFyZXF1ZXN0SW5mby5kYXRhQ2hhbmdlIHx8IHJlcXVlc3RJbmZvLmRhdGFDaGFuZ2UubGVuZ3RoIDwgMSkgJiYgKCFyZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZSB8fCBPYmplY3Qua2V5cyhyZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZSkubGVuZ3RoIDwgMSkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgeyBEZXByZWNhdGVkQmVmUmVwb3NpdG9yeSB9O1xyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2RlcHJlY2F0ZWQvZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFPQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFVLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7QUFlcEQsTUFDZSx1QkFBMEMsU0FBUSxVQUFhOzs7OztJQWtENUU7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7Ozs7OztJQTFCRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQztJQUN0QyxDQUFDOzs7OztJQUtELElBQVcsYUFBYTtRQUN0QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO0lBQzFDLENBQUM7Ozs7O0lBS0QsSUFBVyxhQUFhO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7SUFDMUMsQ0FBQzs7Ozs7O0lBaUJNLE9BQU87UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7Ozs7OztJQU1NLE9BQU8sQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7Ozs7O0lBTU0sVUFBVSxDQUFDLEVBQVU7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDOzs7Ozs7SUFLTSxNQUFN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QEF1dGhvcjogU2FnaSwgTHVjYXMsIFdpdHRcclxuICogQERhdGU6IDIwMTgtMTAtMTEgMTc6MzQ6MjZcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wNi0yOSAxMTozOTowMlxyXG4gKi9cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aFxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFbnRpdHksIFJlcG9zaXRvcnkgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcblxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgQmVmUmVzdFNlcnZpY2UgfSBmcm9tICcuLi9iZWZfcmVzdF9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmQ2hhbmdlQnVpbGRlciB9IGZyb20gJy4uL2JlZl9jaGFuZ2VfYnVpbGRlcic7XHJcbmltcG9ydCB7IEJlZkNoYW5nZUhhbmRsZXIgfSBmcm9tICcuLi9iZWZfY2hhbmdlX2hhbmRsZXInO1xyXG5cclxuaW1wb3J0IHsgQmVmRW50aXR5TWFuYWdlciB9IGZyb20gJy4uL2JlZl9lbnRpdHlfbWFuYWdlcic7XHJcbmltcG9ydCB7IEJlZlZhcmlhYmxlTWFuYWdlciB9IGZyb20gJy4uL2JlZl92YXJpYWJsZV9tYW5hZ2VyJztcclxuaW1wb3J0IHsgQmVmRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9iZWZfZGF0YV9zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiDpgILphY3ogIHnmoRBUEnvvIzkv53mjIHlhbzlrrlcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuYWJzdHJhY3QgY2xhc3MgRGVwcmVjYXRlZEJlZlJlcG9zaXRvcnk8VCBleHRlbmRzIEVudGl0eT4gZXh0ZW5kcyBSZXBvc2l0b3J5PFQ+IHtcclxuXHJcbiAgLyoqXHJcbiAgICog5a6e5L2T566h55CG5ZmoXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIGVudGl0eU1hbmFnZXI6IEJlZkVudGl0eU1hbmFnZXI8VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIOWPmOmHj+euoeeQhuWZqFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB2YXJpYWJsZU1hbmFnZXI6IEJlZlZhcmlhYmxlTWFuYWdlcjtcclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5pWw5pyN5YqhXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBCZWZEYXRhU2VydmljZTxUPjtcclxuXHJcblxyXG4gIC8vICNyZWdpb24g6ICB55qE5bGe5oCn5YyF6KOF5oiQZ2V05pa55rOV6L+b6KGM5YW85a65XHJcblxyXG4gIC8qKlxyXG4gICAqIOWPluaVsOacjeWKoVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgcmVzdFNlcnZpY2UoKTogQmVmUmVzdFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVzdFNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlrp7kvZPlj5jmm7TvvIjliY3nq6/vvIk9PiBCReWPmOabtO+8iOWQjuerr++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgY2hhbmdlQnVpbGRlcigpOiBCZWZDaGFuZ2VCdWlsZGVyIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuY2hhbmdlQnVpbGRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJF5Y+Y5pu077yI5ZCO56uv77yJPT4g5a6e5L2T5Y+Y5pu077yI5YmN56uv77yJXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBjaGFuZ2VIYW5kbGVyKCk6IEJlZkNoYW5nZUhhbmRsZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5TWFuYWdlci5jaGFuZ2VIYW5kbGVyO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgKiDmnoTpgKDlh73mlbBcclxuICAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24g5pWw5o2u6K6/6ZeuXHJcblxyXG4gIC8qKlxyXG4gICog6I635Y+W5a6e5L2T6ZuG5ZCIXHJcbiAgKi9cclxuICBwdWJsaWMgZ2V0TGlzdCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0TGlzdChudWxsLCBudWxsLCBudWxsLCBudWxsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWNleS4quWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDkuLvlrp7kvZNpZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldEJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWTmm7TmlrDlrp7kvZNcclxuICAgKiBAcGFyYW0gaWQg5a6e5L2TaWRcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuaWsOWunuS9k++8jOW5tuWKoOi9vVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNyZWF0ZShkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6L+95Yqg5a6e5L2TXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZChkZWZhdWx0VmFsdWU/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZChkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65a2Q5a6e5L2T77yM5bm26L+95YqgXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8jOagvOW8j+W9ouWmgu+8mi8xL2VkdXPvvIjku47ooajvvInmiJYvMS9lZHVzLzIvZ3JhZGVz77yI5LuO5LuO6KGo77yJXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZEJ5UGF0aChmcGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZEJ5UGF0aChmcGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5pZOWIoOmZpOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDlhoXnoIFcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlQnlJZChpZDogc3RyaW5nLCBpZlNhdmU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeUlkKGlkLCBpZlNhdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6ZmkXHJcbiAgICogQHBhcmFtIGlkIOWGheeggVxyXG4gICAqIEBwYXJhbSBpZlNhdmUg5piv5ZCm5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUJ5SWRzKGlkczogc3RyaW5nW10sIGlmU2F2ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVtb3ZlQnlJZHMoaWRzLCBpZlNhdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5a2Q57qnXHJcbiAgICogQHBhcmFtIHBhdGgg6Lev5b6EXHJcbiAgICogQHBhcmFtIGlkICAg5YaF56CBXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeVBhdGgoZnBhdGgsIGlkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5bCGaWTlr7nlupTnmoTlrp7kvZPnmoTlj5jmm7Tmj5DkuqTnmoTmnI3liqHlmajnq69cclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQ2hhbmdlc0J5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UudXBkYXRlQ2hhbmdlc0J5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5o+Q5LqkcGF0aOWvueW6lOWunuS9k+eahOWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVDaGFuZ2VzQnlQYXRoKHBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBJbXBsZW1lbnQnKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5o+Q5Lqk5omA5pyJ5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZUFsbENoYW5nZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVBbGxDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlupTnlKjlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlDaGFuZ2VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYXBwbHlDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqTmlbDmja7lj5jmm7Tlkozlj5jph4/lj5jmm7TvvIzpgJrov4dyZXRyaWV2ZeaooeaLn1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVEYXRhQW5kVmFyaWFibGVDaGFuZ2VzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJDb25kaXRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc29ydENvbmRpdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXIgPSB7XHJcbiAgICAgIEZpbHRlckNvbmRpdGlvbnM6IGZpbHRlckNvbmRpdGlvbnMsXHJcbiAgICAgIFNvcnRDb25kaXRpb25zOiBzb3J0Q29uZGl0aW9ucyxcclxuICAgICAgSXNVc2VQYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgICBQYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgUGFnZUluZGV4OiAxLFxyXG4gICAgICAgIFBhZ2VTaXplOiAxLFxyXG4gICAgICAgIFBhZ2VDb3VudDogMCxcclxuICAgICAgICBUb3RhbENvdW50OiAwXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgIGNvbnN0IHJlcXVlc3RJbmZvID0gdGhpcy5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XHJcbiAgICAvLyDmsqHmnInlj5jmm7Tml7bkuI3lho3mj5DkuqTlj5jmm7RcclxuICAgIGlmICh0aGlzLmlzRW1wdHlSZXF1ZXN0SW5mbyhyZXF1ZXN0SW5mbykpIHtcclxuICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5yZXN0U2VydmljZS5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnk/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmludm9rZSh1cmwsICdQVVQnLCBudWxsLCBvcHRpb25zLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlupTnlKhpZOWvueW6lOaVsOaNrueahOWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBseUNoYW5nZXNCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGx5Q2hhbmdlc0J5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raI5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbENoYW5nZXMob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY2FuY2VsQ2hhbmdlcyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5pWw5o2u5Y+Y5pu06ZuG5aSE55CGXHJcblxyXG4gIC8qKlxyXG4gICAqIOa4heepuuaJgOacieacrOWcsOWunuS9k+eahOWPmOabtOmbhlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhckFsbEVudGl0eUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlNYW5hZ2VyLmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGdldERhdGFDaGFuZ2VEZXRhaWxzKCk6IENoYW5nZURldGFpbFtdIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuYnVpbGRBbGxFbnRpdHlDaGFuZ2VEZXRhaWxzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbmlbDmja7lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlRGF0YUNoYW5nZURldGFpbHMoY2hhbmdlRGV0YWlsczogQ2hhbmdlRGV0YWlsW10pOiB2b2lkIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMoY2hhbmdlRGV0YWlscyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOWPmOmHj+WPmOabtOmbhuWkhOeQhlxyXG5cclxuICAvKipcclxuICAgKiDojrflj5blj5jph4/lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VmFyaWFibGVDaGFuZ2VEZXRhaWwoKTogQ2hhbmdlRGV0YWlsIHtcclxuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlTWFuYWdlci5idWlsZENoYW5nZURldGFpbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5aSE55CG5Y+Y6YeP5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZVZhcmlhYmxlQ2hhbmdlRGV0YWlsKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsKSB7XHJcbiAgICB0aGlzLnZhcmlhYmxlTWFuYWdlci5oYW5kbGVDaGFuZ2VEZXRhaWwoY2hhbmdlRGV0YWlsKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuICAvKipcclxuICAgKiDlj5jmm7Tpm4bmmK/lkKbkuLrnqbpcclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGlzRW1wdHlSZXF1ZXN0SW5mbyhyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pIHtcclxuICAgIGlmICghcmVxdWVzdEluZm8pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoKCFyZXF1ZXN0SW5mby5kYXRhQ2hhbmdlIHx8IHJlcXVlc3RJbmZvLmRhdGFDaGFuZ2UubGVuZ3RoIDwgMSkgJiYgKCFyZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZSB8fCBPYmplY3Qua2V5cyhyZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZSkubGVuZ3RoIDwgMSkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgeyBEZXByZWNhdGVkQmVmUmVwb3NpdG9yeSB9O1xyXG4iXX0=

@@ -193,2 +193,13 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmFycmlzL2JlZi8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBLE1BQU0sT0FBTyxnQkFBZ0I7Ozs7O0FBS3BCLHNCQUFLLEdBQUcsT0FBTyxDQUFDOzs7O0FBS2hCLHVCQUFNLEdBQUcsUUFBUSxDQUFDOzs7O0FBS2xCLHdCQUFPLEdBQUcsU0FBUyxDQUFDOzs7Ozs7SUFWM0IsdUJBQXVCOzs7OztJQUt2Qix3QkFBeUI7Ozs7O0lBS3pCLHlCQUEyQjs7Ozs7Ozs7OztBQVU3QixzQ0FHQzs7O0lBRkMsa0NBQWdCOzs7Ozs7Ozs7O0FBVWxCLGtDQUdDOzs7SUFGQyxrQ0FBNkI7O0lBQzdCLGtDQUE2Qjs7Ozs7O0FBTy9CLGlDQUdDOzs7SUFGQyxpQ0FBMkI7O0lBQzNCLHFDQUE4Qjs7Ozs7O0FBZ0JoQyxnQ0FLQzs7O0lBSkMsOEJBQWlCOztJQUNqQixnQ0FBbUI7O0lBQ25CLCtCQUFrQjs7SUFDbEIsK0JBQWtCOzs7Ozs7QUFNcEIsaUNBR0M7OztJQUZDLDZCQUFjOztJQUNkLGlDQUF1Qjs7Ozs7O0FBTXpCLGtDQUtDOzs7SUFKQyxtQ0FBaUI7O0lBQ2pCLCtCQUFlOztJQUNmLHVDQUFnQzs7SUFDaEMsMkNBQWtDOzs7Ozs7QUFNcEMsa0NBT0M7Ozs7Ozs7SUFOQyw4REFBb0U7Ozs7O0lBQ3BFLHdEQUFtRDs7Ozs7O0lBQ25ELDhFQUEyRjs7Ozs7O0lBQzNGLDJFQUE2RDs7Ozs7OztJQUM3RCxrRkFBb0Y7Ozs7O0lBQ3BGLDhEQUE0Qjs7Ozs7O0FBTTlCLHlDQUdDOzs7SUFGQywwQ0FBeUI7Ozs7Ozs7QUFPM0IsbUNBR0M7OztJQUZDLDZCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qXHJcbiAqIEBBdXRob3I6IFdpdHRcclxuICogQERhdGU6IDIwMTgtMTAtMTkgMTU6MzY6NDhcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wNy0zMCAxNzozNzowMlxyXG4gKi9cclxuXHJcblxyXG4vKipcclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICog5Y+Y5pu06ZuG55u45YWz57G75Z6LXHJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIOWPmOabtOexu+Wei1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENoYW5nZURldGFpbFR5cGUge1xyXG5cclxuICAvKipcclxuICAgKiDmlrDlop5cclxuICAgKi9cclxuICBzdGF0aWMgQWRkZWQgPSAnQWRkZWQnO1xyXG5cclxuICAvKipcclxuICAgKiDkv67mlLlcclxuICAgKi9cclxuICBzdGF0aWMgTW9kaWZ5ID0gJ01vZGlmeSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIHN0YXRpYyBEZWxldGVkID0gJ0RlbGV0ZWQnO1xyXG59XHJcblxyXG4vKipcclxuICog6KGM5Y+Y5pu05L+h5oGvXHJcbiAqIOW/hemhu+WMheWQq++8mlxyXG4gKiAx44CBRGF0YUlkICAgPT4g5Li76ZSu5YC877ybXHJcbiAqIDLjgIHlsZ7mgKflkI0gICA9PiDmlrDnmoTlsZ7mgKflgLzvvJtcclxuICogM+OAgeWtkOihqOWQjStzID0+IOWtkOihqOihjOeahENoYW5nZURldGFpbOaVsOe7hFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VEZXRhaWxJbmZvIHtcclxuICBEYXRhSWQ/OiBzdHJpbmc7XHJcbiAgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGwgfCBDaGFuZ2VEZXRhaWwgfCBDaGFuZ2VEZXRhaWxbXSB8IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDooYzlj5jmm7Tor6bmg4VcclxuICog5YyF5ZCr77yaXHJcbiAqIDHjgIHlj5jmm7TnsbvlnovvvJtcclxuICogMuOAgeWPmOabtOS/oeaBr1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VEZXRhaWwge1xyXG4gIENoYW5nZVR5cGU6IENoYW5nZURldGFpbFR5cGU7XHJcbiAgQ2hhbmdlSW5mbzogQ2hhbmdlRGV0YWlsSW5mbztcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiDor7fmsYLnsbvlnotcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEluZm8ge1xyXG4gIGRhdGFDaGFuZ2U6IENoYW5nZURldGFpbFtdO1xyXG4gIHZhcmlhYmxlQ2hhbmdlPzogQ2hhbmdlRGV0YWlsO1xyXG59XHJcblxyXG5cclxuXHJcbi8qKlxyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKiDor7fmsYLjgIHlk43lupTnm7jlhbPnsbvlnovlrprkuYlcclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICovXHJcblxyXG5cclxuXHJcbi8qKlxyXG4gKiDliIbpobXkv6Hmga9cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbiB7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICB0b3RhbENvdW50OiBudW1iZXI7XHJcbiAgcGFnZUNvdW50OiBudW1iZXI7XHJcbiAgcGFnZUluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDmn6Xor6Lnu5PmnpxcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSZXN1bHQge1xyXG4gIHJlc3VsdDogYW55W107XHJcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIOi/lOWbnue7k+aenOexu+Wei1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZUluZm8ge1xyXG4gIHJldHVyblZhbHVlOiBhbnk7XHJcbiAgbWVzc2FnZTogYW55W107XHJcbiAgaW5uZXJEYXRhQ2hhbmdlOiBDaGFuZ2VEZXRhaWxbXTtcclxuICBpbm5lclZhcmlhYmxlQ2hhbmdlOiBDaGFuZ2VEZXRhaWw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDku6PnkIbpkqnlrZBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb3h5RXh0ZW5kIHtcclxuICBleHRlbmRVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9KTogc3RyaW5nO1xyXG4gIGV4dGVuZEJvZHkoYm9keTogYW55KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9O1xyXG4gIGV4dGVuZEhlYWRlcnMoaGVhZGVyczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9LCBydW50aW1lQ29udGV4dD86IGFueSk6IE9ic2VydmFibGU8YW55PjtcclxuICBvblJlc3BvbnNlPyhyZXNwb25zZTogUmVzcG9uc2VJbmZvLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbik7XHJcbiAgb25FcnJvcj8oZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcGFyc2VIZWFkZXJzKHJlc3BvbnNlOiBhbnkpO1xyXG59XHJcblxyXG4vKipcclxuICog5bimUmVxdWVzdEluZm/nmoRib2R55a+56LGhXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEJvZHlXaXRoUmVxdWVzdEluZm8ge1xyXG4gIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiByZXF1ZXN0IG9wdGlvbuagvOW8j1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9uIHtcclxuICBib2R5OiBCb2R5V2l0aFJlcXVlc3RJbmZvO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG4iXX0=
/**
* 子表分页参数
* @record
*/
export function RetrieveParam() { }
if (false) {
/** @type {?} */
RetrieveParam.prototype.filters;
/** @type {?|undefined} */
RetrieveParam.prototype.parentIds;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmFycmlzL2JlZi8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBLE1BQU0sT0FBTyxnQkFBZ0I7Ozs7O0FBS3BCLHNCQUFLLEdBQUcsT0FBTyxDQUFDOzs7O0FBS2hCLHVCQUFNLEdBQUcsUUFBUSxDQUFDOzs7O0FBS2xCLHdCQUFPLEdBQUcsU0FBUyxDQUFDOzs7Ozs7SUFWM0IsdUJBQXVCOzs7OztJQUt2Qix3QkFBeUI7Ozs7O0lBS3pCLHlCQUEyQjs7Ozs7Ozs7OztBQVU3QixzQ0FHQzs7O0lBRkMsa0NBQWdCOzs7Ozs7Ozs7O0FBVWxCLGtDQUdDOzs7SUFGQyxrQ0FBNkI7O0lBQzdCLGtDQUE2Qjs7Ozs7O0FBTy9CLGlDQUdDOzs7SUFGQyxpQ0FBMkI7O0lBQzNCLHFDQUE4Qjs7Ozs7O0FBZ0JoQyxnQ0FLQzs7O0lBSkMsOEJBQWlCOztJQUNqQixnQ0FBbUI7O0lBQ25CLCtCQUFrQjs7SUFDbEIsK0JBQWtCOzs7Ozs7QUFNcEIsaUNBR0M7OztJQUZDLDZCQUFjOztJQUNkLGlDQUF1Qjs7Ozs7O0FBTXpCLGtDQUtDOzs7SUFKQyxtQ0FBaUI7O0lBQ2pCLCtCQUFlOztJQUNmLHVDQUFnQzs7SUFDaEMsMkNBQWtDOzs7Ozs7QUFNcEMsa0NBT0M7Ozs7Ozs7SUFOQyw4REFBb0U7Ozs7O0lBQ3BFLHdEQUFtRDs7Ozs7O0lBQ25ELDhFQUEyRjs7Ozs7O0lBQzNGLDJFQUE2RDs7Ozs7OztJQUM3RCxrRkFBb0Y7Ozs7O0lBQ3BGLDhEQUE0Qjs7Ozs7O0FBTTlCLHlDQUdDOzs7SUFGQywwQ0FBeUI7Ozs7Ozs7QUFPM0IsbUNBR0M7OztJQUZDLDZCQUEwQjs7Ozs7OztBQU01QixtQ0FHQzs7O0lBRkMsZ0NBQXlGOztJQUN6RixrQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKlxyXG4gKiBAQXV0aG9yOiBXaXR0XHJcbiAqIEBEYXRlOiAyMDE4LTEwLTE5IDE1OjM2OjQ4XHJcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBhYWxpenp3ZWxsXHJcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDctMzAgMTc6Mzc6MDJcclxuICovXHJcblxyXG5cclxuLyoqXHJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqIOWPmOabtOmbhuebuOWFs+exu+Wei1xyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiDlj5jmm7TnsbvlnotcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDaGFuZ2VEZXRhaWxUeXBlIHtcclxuXHJcbiAgLyoqXHJcbiAgICog5paw5aKeXHJcbiAgICovXHJcbiAgc3RhdGljIEFkZGVkID0gJ0FkZGVkJztcclxuXHJcbiAgLyoqXHJcbiAgICog5L+u5pS5XHJcbiAgICovXHJcbiAgc3RhdGljIE1vZGlmeSA9ICdNb2RpZnknO1xyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBzdGF0aWMgRGVsZXRlZCA9ICdEZWxldGVkJztcclxufVxyXG5cclxuLyoqXHJcbiAqIOihjOWPmOabtOS/oeaBr1xyXG4gKiDlv4XpobvljIXlkKvvvJpcclxuICogMeOAgURhdGFJZCAgID0+IOS4u+mUruWAvO+8m1xyXG4gKiAy44CB5bGe5oCn5ZCNICAgPT4g5paw55qE5bGe5oCn5YC877ybXHJcbiAqIDPjgIHlrZDooajlkI0rcyA9PiDlrZDooajooYznmoRDaGFuZ2VEZXRhaWzmlbDnu4RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGV0YWlsSW5mbyB7XHJcbiAgRGF0YUlkPzogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBudWxsIHwgQ2hhbmdlRGV0YWlsIHwgQ2hhbmdlRGV0YWlsW10gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG59XHJcblxyXG4vKipcclxuICog6KGM5Y+Y5pu06K+m5oOFXHJcbiAqIOWMheWQq++8mlxyXG4gKiAx44CB5Y+Y5pu057G75Z6L77ybXHJcbiAqIDLjgIHlj5jmm7Tkv6Hmga9cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGV0YWlsIHtcclxuICBDaGFuZ2VUeXBlOiBDaGFuZ2VEZXRhaWxUeXBlO1xyXG4gIENoYW5nZUluZm86IENoYW5nZURldGFpbEluZm87XHJcbn1cclxuXHJcblxyXG4vKipcclxuICog6K+35rGC57G75Z6LXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RJbmZvIHtcclxuICBkYXRhQ2hhbmdlOiBDaGFuZ2VEZXRhaWxbXTtcclxuICB2YXJpYWJsZUNoYW5nZT86IENoYW5nZURldGFpbDtcclxufVxyXG5cclxuXHJcblxyXG4vKipcclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICog6K+35rGC44CB5ZON5bqU55u45YWz57G75Z6L5a6a5LmJXHJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqL1xyXG5cclxuXHJcblxyXG4vKipcclxuICog5YiG6aG15L+h5oGvXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb24ge1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgdG90YWxDb3VudDogbnVtYmVyO1xyXG4gIHBhZ2VDb3VudDogbnVtYmVyO1xyXG4gIHBhZ2VJbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICog5p+l6K+i57uT5p6cXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UmVzdWx0IHtcclxuICByZXN1bHQ6IGFueVtdO1xyXG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDov5Tlm57nu5PmnpznsbvlnotcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2VJbmZvIHtcclxuICByZXR1cm5WYWx1ZTogYW55O1xyXG4gIG1lc3NhZ2U6IGFueVtdO1xyXG4gIGlubmVyRGF0YUNoYW5nZTogQ2hhbmdlRGV0YWlsW107XHJcbiAgaW5uZXJWYXJpYWJsZUNoYW5nZTogQ2hhbmdlRGV0YWlsO1xyXG59XHJcblxyXG4vKipcclxuICog5Luj55CG6ZKp5a2QXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElQcm94eUV4dGVuZCB7XHJcbiAgZXh0ZW5kVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZztcclxuICBleHRlbmRCb2R5KGJvZHk6IGFueSk6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfTtcclxuICBleHRlbmRIZWFkZXJzKGhlYWRlcnM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSwgcnVudGltZUNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgb25SZXNwb25zZT8ocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pO1xyXG4gIG9uRXJyb3I/KGVycm9yOiBhbnksIHNlbGZIYW5kRXJyb3I6IGJvb2xlYW4sIGlnbm9yZUVycm9yOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIOW4plJlcXVlc3RJbmZv55qEYm9keeWvueixoVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBCb2R5V2l0aFJlcXVlc3RJbmZvIHtcclxuICByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm87XHJcbiAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vKipcclxuICogcmVxdWVzdCBvcHRpb27moLzlvI9cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdE9wdGlvbiB7XHJcbiAgYm9keTogQm9keVdpdGhSZXF1ZXN0SW5mbztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuLyoqXHJcbiAqIOWtkOihqOWIhumhteWPguaVsFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZXRyaWV2ZVBhcmFtIHtcclxuICBmaWx0ZXJzOiB7IFtub2RlQ29kZTogc3RyaW5nXTogeyBwYWdpbmF0aW9uOiB7IHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyIH0gfSB9LFxyXG4gIHBhcmVudElkcz86IHsgW25vZGVDb2RlOiBzdHJpbmddOiBzdHJpbmcgfVxyXG59Il19

@@ -96,6 +96,7 @@ /**

* 获取单个实体
* @param id 主实体id
*/
/**
* 获取单个实体
* @param {?} id
* @param {?} id 主实体id
* @return {?}

@@ -105,3 +106,3 @@ */

* 获取单个实体
* @param {?} id
* @param {?} id 主实体id
* @return {?}

@@ -526,2 +527,2 @@ */

export { DeprecatedBefRepository };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2RlcHJlY2F0ZWQvZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBT0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBZXBEO0lBQ2lFLG1EQUFhO0lBNEM1RSxhQUFhO0lBR2I7O01BRUU7SUFDRjtlQUNFLGlCQUFPO0lBQ1QsQ0FBQztJQTFCRCxzQkFBVyxnREFBVztRQUx0QiwyQkFBMkI7UUFFM0I7O1dBRUc7Ozs7Ozs7UUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDdEMsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxrREFBYTtRQUh4Qjs7V0FFRzs7Ozs7UUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDMUMsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxrREFBYTtRQUh4Qjs7V0FFRzs7Ozs7UUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDMUMsQ0FBQzs7O09BQUE7SUFZRCxlQUFlO0lBRWY7O01BRUU7Ozs7OztJQUNLLHlDQUFPOzs7Ozs7SUFBZDtRQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSSx5Q0FBTzs7Ozs7SUFBZCxVQUFlLEVBQVU7UUFDdkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9B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Q0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRzs7Ozs7O0lBQ0ksNERBQTBCOzs7OztJQUFqQyxVQUFrQyxZQUEwQjtRQUMxRCxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxhQUFhO0lBQ2I7OztPQUdHOzs7Ozs7OztJQUNLLG9EQUFrQjs7Ozs7Ozs7SUFBMUIsVUFBMkIsV0FBd0I7UUFDakQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEVBQUU7WUFDekosT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs7Z0JBalFGLFVBQVU7Ozs7SUFrUVgsOEJBQUM7Q0FBQSxBQWxRRCxDQUNpRSxVQUFVLEdBaVExRTs7Ozs7OztJQTNQQyxnREFBMEM7Ozs7OztJQU0xQyxrREFBMkM7Ozs7Ozs7SUFNM0MsOENBQXlDOztBQWlQM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAQXV0aG9yOiBTYWdpLCBMdWNhcywgV2l0dFxyXG4gKiBARGF0ZTogMjAxOC0xMC0xMSAxNzozNDoyNlxyXG4gKiBATGFzdCBNb2RpZmllZCBieTogYWFsaXp6d2VsbFxyXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE5LTA2LTI5IDExOjM5OjAyXHJcbiAqL1xyXG4vLyB0c2xpbnQ6ZGlzYWJsZTogbWF4LWxpbmUtbGVuZ3RoXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IEVudGl0eSwgUmVwb3NpdG9yeSB9IGZyb20gJ0BmYXJyaXMvZGV2a2l0JztcclxuXHJcbmltcG9ydCB7IENoYW5nZURldGFpbCwgUmVxdWVzdEluZm8gfSBmcm9tICcuLi90eXBlcyc7XHJcblxyXG5pbXBvcnQgeyBCZWZSZXN0U2VydmljZSB9IGZyb20gJy4uL2JlZl9yZXN0X3NlcnZpY2UnO1xyXG5pbXBvcnQgeyBCZWZDaGFuZ2VCdWlsZGVyIH0gZnJvbSAnLi4vYmVmX2NoYW5nZV9idWlsZGVyJztcclxuaW1wb3J0IHsgQmVmQ2hhbmdlSGFuZGxlciB9IGZyb20gJy4uL2JlZl9jaGFuZ2VfaGFuZGxlcic7XHJcblxyXG5pbXBvcnQgeyBCZWZFbnRpdHlNYW5hZ2VyIH0gZnJvbSAnLi4vYmVmX2VudGl0eV9tYW5hZ2VyJztcclxuaW1wb3J0IHsgQmVmVmFyaWFibGVNYW5hZ2VyIH0gZnJvbSAnLi4vYmVmX3ZhcmlhYmxlX21hbmFnZXInO1xyXG5pbXBvcnQgeyBCZWZEYXRhU2VydmljZSB9IGZyb20gJy4uL2JlZl9kYXRhX3NlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIOmAgumFjeiAgeeahEFQSe+8jOS/neaMgeWFvOWuuVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5hYnN0cmFjdCBjbGFzcyBEZXByZWNhdGVkQmVmUmVwb3NpdG9yeTxUIGV4dGVuZHMgRW50aXR5PiBleHRlbmRzIFJlcG9zaXRvcnk8VD4ge1xyXG5cclxuICAvKipcclxuICAgKiDlrp7kvZPnrqHnkIblmahcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwdWJsaWMgZW50aXR5TWFuYWdlcjogQmVmRW50aXR5TWFuYWdlcjxUPjtcclxuXHJcbiAgLyoqXHJcbiAgICog5Y+Y6YeP566h55CG5ZmoXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIHZhcmlhYmxlTWFuYWdlcjogQmVmVmFyaWFibGVNYW5hZ2VyO1xyXG5cclxuICAvKipcclxuICAgKiDlj5bmlbDmnI3liqFcclxuICAgKiBAaW50ZXJuYWxcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZGF0YVNlcnZpY2U6IEJlZkRhdGFTZXJ2aWNlPFQ+O1xyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDogIHnmoTlsZ7mgKfljIXoo4XmiJBnZXTmlrnms5Xov5vooYzlhbzlrrlcclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5pWw5pyN5YqhXHJcbiAgICovXHJcbiAgcHVibGljIGdldCByZXN0U2VydmljZSgpOiBCZWZSZXN0U2VydmljZSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZXN0U2VydmljZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWunuS9k+WPmOabtO+8iOWJjeerr++8iT0+IEJF5Y+Y5pu077yI5ZCO56uv77yJXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBjaGFuZ2VCdWlsZGVyKCk6IEJlZkNoYW5nZUJ1aWxkZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5TWFuYWdlci5jaGFuZ2VCdWlsZGVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQkXlj5jmm7TvvIjlkI7nq6/vvIk9PiDlrp7kvZPlj5jmm7TvvIjliY3nq6/vvIlcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0IGNoYW5nZUhhbmRsZXIoKTogQmVmQ2hhbmdlSGFuZGxlciB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlNYW5hZ2VyLmNoYW5nZUhhbmRsZXI7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvKipcclxuICAqIOaehOmAoOWHveaVsFxyXG4gICovXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgLy8gI3JlZ2lvbiDmlbDmja7orr/pl65cclxuXHJcbiAgLyoqXHJcbiAgKiDojrflj5blrp7kvZPpm4blkIhcclxuICAqL1xyXG4gIHB1YmxpYyBnZXRMaXN0KCk6IE9ic2VydmFibGU8VFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5nZXRMaXN0KG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5Y2V5Liq5a6e5L2TXHJcbiAgICovXHJcbiAgcHVibGljIGdldEJ5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0QnlJZChpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5pZOabtOaWsOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDlrp7kvZNpZFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnVwZGF0ZUJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65paw5a6e5L2T77yM5bm25Yqg6L29XHJcbiAgICovXHJcbiAgcHVibGljIGNyZWF0ZShkZWZhdWx0VmFsdWU/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY3JlYXRlKGRlZmF1bHRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDov73liqDlrp7kvZNcclxuICAgKi9cclxuICBwdWJsaWMgYXBwZW5kKGRlZmF1bHRWYWx1ZT86IGFueSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYXBwZW5kKGRlZmF1bHRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliJvlu7rlrZDlrp7kvZPvvIzlubbov73liqBcclxuICAgKiBAcGFyYW0gZnBhdGgg54i26Lev5b6E77yM5qC85byP5b2i5aaC77yaLzEvZWR1c++8iOS7juihqO+8ieaIli8xL2VkdXMvMi9ncmFkZXPvvIjku47ku47ooajvvIlcclxuICAgKi9cclxuICBwdWJsaWMgYXBwZW5kQnlQYXRoKGZwYXRoOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYXBwZW5kQnlQYXRoKGZwYXRoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNrmlk5Yig6Zmk5a6e5L2TXHJcbiAgICogQHBhcmFtIGlkIOWGheeggVxyXG4gICAqL1xyXG4gIHB1YmxpYyByZW1vdmVCeUlkKGlkOiBzdHJpbmcsIGlmU2F2ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnJlbW92ZUJ5SWQoaWQsIGlmU2F2ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmibnph4/liKDpmaRcclxuICAgKiBAcGFyYW0gaWQg5YaF56CBXHJcbiAgICogQHBhcmFtIGlmU2F2ZSDmmK/lkKbkv53lrZhcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlQnlJZHMoaWRzOiBzdHJpbmdbXSwgaWZTYXZlPzogYm9vbGVhbik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeUlkcyhpZHMsIGlmU2F2ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDliKDpmaTlrZDnuqdcclxuICAgKiBAcGFyYW0gcGF0aCDot6/lvoRcclxuICAgKiBAcGFyYW0gaWQgICDlhoXnoIFcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlQnlQYXRoKGZwYXRoOiBzdHJpbmcsIGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnJlbW92ZUJ5UGF0aChmcGF0aCwgaWQpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDlsIZpZOWvueW6lOeahOWunuS9k+eahOWPmOabtOaPkOS6pOeahOacjeWKoeWZqOerr1xyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVDaGFuZ2VzQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVDaGFuZ2VzQnlJZChpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqRwYXRo5a+55bqU5a6e5L2T55qE5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZUNoYW5nZXNCeVBhdGgocGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRocm93IG5ldyBFcnJvcignTm90IEltcGxlbWVudCcpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiDmj5DkuqTmiYDmnInlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQWxsQ2hhbmdlcygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnVwZGF0ZUFsbENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW6lOeUqOWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBseUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5hcHBseUNoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOaPkOS6pOaVsOaNruWPmOabtOWSjOWPmOmHj+WPmOabtO+8jOmAmui/h3JldHJpZXZl5qih5oufXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZURhdGFBbmRWYXJpYWJsZUNoYW5nZXMoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGZpbHRlckNvbmRpdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBzb3J0Q29uZGl0aW9uczogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IGVudGl0eUZpbHRlciA9IHtcclxuICAgICAgRmlsdGVyQ29uZGl0aW9uczogZmlsdGVyQ29uZGl0aW9ucyxcclxuICAgICAgU29ydENvbmRpdGlvbnM6IHNvcnRDb25kaXRpb25zLFxyXG4gICAgICBJc1VzZVBhZ2luYXRpb246IHRydWUsXHJcbiAgICAgIFBhZ2luYXRpb246IHtcclxuICAgICAgICBQYWdlSW5kZXg6IDEsXHJcbiAgICAgICAgUGFnZVNpemU6IDEsXHJcbiAgICAgICAgUGFnZUNvdW50OiAwLFxyXG4gICAgICAgIFRvdGFsQ291bnQ6IDBcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGVudGl0eUZpbHRlckpzb24gPSBKU09OLnN0cmluZ2lmeShlbnRpdHlGaWx0ZXIpO1xyXG4gICAgY29uc3QgcmVxdWVzdEluZm8gPSB0aGlzLnJlc3RTZXJ2aWNlLmJ1aWxkUmVxdWVzdEluZm8oKTtcclxuICAgIC8vIOayoeacieWPmOabtOaXtuS4jeWGjeaPkOS6pOWPmOabtFxyXG4gICAgaWYgKHRoaXMuaXNFbXB0eVJlcXVlc3RJbmZvKHJlcXVlc3RJbmZvKSkge1xyXG4gICAgICByZXR1cm4gb2YobnVsbCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLnJlc3RTZXJ2aWNlLmJhc2VVcml9L2V4dGVuc2lvbi9xdWVyeT9lbnRpdHlGaWx0ZXI9JHtlbnRpdHlGaWx0ZXJKc29ufWA7XHJcbiAgICBjb25zdCBib2R5ID0gcmVxdWVzdEluZm87XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBib2R5XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuaW52b2tlKHVybCwgJ1BVVCcsIG51bGwsIG9wdGlvbnMsIGZhbHNlLCB0cnVlLCB0cnVlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOW6lOeUqGlk5a+55bqU5pWw5o2u55qE5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGFwcGx5Q2hhbmdlc0J5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYXBwbHlDaGFuZ2VzQnlJZChpZCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlj5bmtojlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgY2FuY2VsQ2hhbmdlcyhvcHRpb25zPzogYW55KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5jYW5jZWxDaGFuZ2VzKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gI3JlZ2lvbiDmlbDmja7lj5jmm7Tpm4blpITnkIZcclxuXHJcbiAgLyoqXHJcbiAgICog5riF56m65omA5pyJ5pys5Zyw5a6e5L2T55qE5Y+Y5pu06ZuGXHJcbiAgICovXHJcbiAgcHVibGljIGNsZWFyQWxsRW50aXR5Q2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuY2xlYXJBbGxFbnRpdHlDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDojrflj5bmlbDmja7lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0RGF0YUNoYW5nZURldGFpbHMoKTogQ2hhbmdlRGV0YWlsW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5TWFuYWdlci5idWlsZEFsbEVudGl0eUNoYW5nZURldGFpbHMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWkhOeQhuaVsOaNruWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBoYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhjaGFuZ2VEZXRhaWxzOiBDaGFuZ2VEZXRhaWxbXSk6IHZvaWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5TWFuYWdlci5oYW5kbGVEYXRhQ2hhbmdlRGV0YWlscyhjaGFuZ2VEZXRhaWxzKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5Y+Y6YeP5Y+Y5pu06ZuG5aSE55CGXHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWPmOmHj+WPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRWYXJpYWJsZUNoYW5nZURldGFpbCgpOiBDaGFuZ2VEZXRhaWwge1xyXG4gICAgcmV0dXJuIHRoaXMudmFyaWFibGVNYW5hZ2VyLmJ1aWxkQ2hhbmdlRGV0YWlsKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIblj5jph4/lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlVmFyaWFibGVDaGFuZ2VEZXRhaWwoY2hhbmdlRGV0YWlsOiBDaGFuZ2VEZXRhaWwpIHtcclxuICAgIHRoaXMudmFyaWFibGVNYW5hZ2VyLmhhbmRsZUNoYW5nZURldGFpbChjaGFuZ2VEZXRhaWwpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG4gIC8qKlxyXG4gICAqIOWPmOabtOmbhuaYr+WQpuS4uuepulxyXG4gICAqIEBwYXJhbSByZXF1ZXN0SW5mbyByZXF1ZXN0SW5mb1xyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNFbXB0eVJlcXVlc3RJbmZvKHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbykge1xyXG4gICAgaWYgKCFyZXF1ZXN0SW5mbykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICgoIXJlcXVlc3RJbmZvLmRhdGFDaGFuZ2UgfHwgcmVxdWVzdEluZm8uZGF0YUNoYW5nZS5sZW5ndGggPCAxKSAmJiAoIXJlcXVlc3RJbmZvLnZhcmlhYmxlQ2hhbmdlIHx8IE9iamVjdC5rZXlzKHJlcXVlc3RJbmZvLnZhcmlhYmxlQ2hhbmdlKS5sZW5ndGggPCAxKSkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB7IERlcHJlY2F0ZWRCZWZSZXBvc2l0b3J5IH07XHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BmYXJyaXMvYmVmLyIsInNvdXJjZXMiOlsibGliL2RlcHJlY2F0ZWQvZGVwcmVjYXRlZF9iZWZfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBT0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBVSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7O0FBZXBEO0lBQ2lFLG1EQUFhO0lBNEM1RSxhQUFhO0lBR2I7O01BRUU7SUFDRjtlQUNFLGlCQUFPO0lBQ1QsQ0FBQztJQTFCRCxzQkFBVyxnREFBVztRQUx0QiwyQkFBMkI7UUFFM0I7O1dBRUc7Ozs7Ozs7UUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDdEMsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxrREFBYTtRQUh4Qjs7V0FFRzs7Ozs7UUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDMUMsQ0FBQzs7O09BQUE7SUFLRCxzQkFBVyxrREFBYTtRQUh4Qjs7V0FFRzs7Ozs7UUFDSDtZQUNFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUM7UUFDMUMsQ0FBQzs7O09BQUE7SUFZRCxlQUFlO0lBRWY7O01BRUU7Ozs7OztJQUNLLHlDQUFPOzs7Ozs7SUFBZDtRQUNFLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7O0lBQ0kseUNBQU87Ozs7O0lBQWQsVUFBZSxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxP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LENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7Ozs7OztJQUNJLDREQUEwQjs7Ozs7SUFBakMsVUFBa0MsWUFBMEI7UUFDMUQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsYUFBYTtJQUNiOzs7T0FHRzs7Ozs7Ozs7SUFDSyxvREFBa0I7Ozs7Ozs7O0lBQTFCLFVBQTJCLFdBQXdCO1FBQ2pELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxVQUFVLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxjQUFjLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3pKLE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7O2dCQWxRRixVQUFVOzs7O0lBbVFYLDhCQUFDO0NBQUEsQUFuUUQsQ0FDaUUsVUFBVSxHQWtRMUU7Ozs7Ozs7SUE1UEMsZ0RBQTBDOzs7Ozs7SUFNMUMsa0RBQTJDOzs7Ozs7O0lBTTNDLDhDQUF5Qzs7QUFrUDNDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQEF1dGhvcjogU2FnaSwgTHVjYXMsIFdpdHRcclxuICogQERhdGU6IDIwMTgtMTAtMTEgMTc6MzQ6MjZcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wNi0yOSAxMTozOTowMlxyXG4gKi9cclxuLy8gdHNsaW50OmRpc2FibGU6IG1heC1saW5lLWxlbmd0aFxyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBFbnRpdHksIFJlcG9zaXRvcnkgfSBmcm9tICdAZmFycmlzL2RldmtpdCc7XHJcblxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRhaWwsIFJlcXVlc3RJbmZvIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5cclxuaW1wb3J0IHsgQmVmUmVzdFNlcnZpY2UgfSBmcm9tICcuLi9iZWZfcmVzdF9zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVmQ2hhbmdlQnVpbGRlciB9IGZyb20gJy4uL2JlZl9jaGFuZ2VfYnVpbGRlcic7XHJcbmltcG9ydCB7IEJlZkNoYW5nZUhhbmRsZXIgfSBmcm9tICcuLi9iZWZfY2hhbmdlX2hhbmRsZXInO1xyXG5cclxuaW1wb3J0IHsgQmVmRW50aXR5TWFuYWdlciB9IGZyb20gJy4uL2JlZl9lbnRpdHlfbWFuYWdlcic7XHJcbmltcG9ydCB7IEJlZlZhcmlhYmxlTWFuYWdlciB9IGZyb20gJy4uL2JlZl92YXJpYWJsZV9tYW5hZ2VyJztcclxuaW1wb3J0IHsgQmVmRGF0YVNlcnZpY2UgfSBmcm9tICcuLi9iZWZfZGF0YV9zZXJ2aWNlJztcclxuXHJcbi8qKlxyXG4gKiDpgILphY3ogIHnmoRBUEnvvIzkv53mjIHlhbzlrrlcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuYWJzdHJhY3QgY2xhc3MgRGVwcmVjYXRlZEJlZlJlcG9zaXRvcnk8VCBleHRlbmRzIEVudGl0eT4gZXh0ZW5kcyBSZXBvc2l0b3J5PFQ+IHtcclxuXHJcbiAgLyoqXHJcbiAgICog5a6e5L2T566h55CG5ZmoXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHVibGljIGVudGl0eU1hbmFnZXI6IEJlZkVudGl0eU1hbmFnZXI8VD47XHJcblxyXG4gIC8qKlxyXG4gICAqIOWPmOmHj+euoeeQhuWZqFxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB2YXJpYWJsZU1hbmFnZXI6IEJlZlZhcmlhYmxlTWFuYWdlcjtcclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5pWw5pyN5YqhXHJcbiAgICogQGludGVybmFsXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGRhdGFTZXJ2aWNlOiBCZWZEYXRhU2VydmljZTxUPjtcclxuXHJcblxyXG4gIC8vICNyZWdpb24g6ICB55qE5bGe5oCn5YyF6KOF5oiQZ2V05pa55rOV6L+b6KGM5YW85a65XHJcblxyXG4gIC8qKlxyXG4gICAqIOWPluaVsOacjeWKoVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgcmVzdFNlcnZpY2UoKTogQmVmUmVzdFNlcnZpY2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVzdFNlcnZpY2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlrp7kvZPlj5jmm7TvvIjliY3nq6/vvIk9PiBCReWPmOabtO+8iOWQjuerr++8iVxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXQgY2hhbmdlQnVpbGRlcigpOiBCZWZDaGFuZ2VCdWlsZGVyIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuY2hhbmdlQnVpbGRlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEJF5Y+Y5pu077yI5ZCO56uv77yJPT4g5a6e5L2T5Y+Y5pu077yI5YmN56uv77yJXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBjaGFuZ2VIYW5kbGVyKCk6IEJlZkNoYW5nZUhhbmRsZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuZW50aXR5TWFuYWdlci5jaGFuZ2VIYW5kbGVyO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLyoqXHJcbiAgKiDmnoTpgKDlh73mlbBcclxuICAqL1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24g5pWw5o2u6K6/6ZeuXHJcblxyXG4gIC8qKlxyXG4gICog6I635Y+W5a6e5L2T6ZuG5ZCIXHJcbiAgKi9cclxuICBwdWJsaWMgZ2V0TGlzdCgpOiBPYnNlcnZhYmxlPFRbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuZ2V0TGlzdChudWxsLCBudWxsLCBudWxsLCBudWxsKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWNleS4quWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDkuLvlrp7kvZNpZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXRCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmdldEJ5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qC55o2uaWTmm7TmlrDlrp7kvZNcclxuICAgKiBAcGFyYW0gaWQg5a6e5L2TaWRcclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVCeUlkKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIm+W7uuaWsOWunuS9k++8jOW5tuWKoOi9vVxyXG4gICAqL1xyXG4gIHB1YmxpYyBjcmVhdGUoZGVmYXVsdFZhbHVlPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmNyZWF0ZShkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6L+95Yqg5a6e5L2TXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZChkZWZhdWx0VmFsdWU/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZChkZWZhdWx0VmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yib5bu65a2Q5a6e5L2T77yM5bm26L+95YqgXHJcbiAgICogQHBhcmFtIGZwYXRoIOeItui3r+W+hO+8jOagvOW8j+W9ouWmgu+8mi8xL2VkdXPvvIjku47ooajvvInmiJYvMS9lZHVzLzIvZ3JhZGVz77yI5LuO5LuO6KGo77yJXHJcbiAgICovXHJcbiAgcHVibGljIGFwcGVuZEJ5UGF0aChmcGF0aDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGVuZEJ5UGF0aChmcGF0aCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoLnmja5pZOWIoOmZpOWunuS9k1xyXG4gICAqIEBwYXJhbSBpZCDlhoXnoIFcclxuICAgKi9cclxuICBwdWJsaWMgcmVtb3ZlQnlJZChpZDogc3RyaW5nLCBpZlNhdmU/OiBib29sZWFuKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeUlkKGlkLCBpZlNhdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5om56YeP5Yig6ZmkXHJcbiAgICogQHBhcmFtIGlkIOWGheeggVxyXG4gICAqIEBwYXJhbSBpZlNhdmUg5piv5ZCm5L+d5a2YXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUJ5SWRzKGlkczogc3RyaW5nW10sIGlmU2F2ZT86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucmVtb3ZlQnlJZHMoaWRzLCBpZlNhdmUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Yig6Zmk5a2Q57qnXHJcbiAgICogQHBhcmFtIHBhdGgg6Lev5b6EXHJcbiAgICogQHBhcmFtIGlkICAg5YaF56CBXHJcbiAgICovXHJcbiAgcHVibGljIHJlbW92ZUJ5UGF0aChmcGF0aDogc3RyaW5nLCBpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5yZW1vdmVCeVBhdGgoZnBhdGgsIGlkKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5bCGaWTlr7nlupTnmoTlrp7kvZPnmoTlj5jmm7Tmj5DkuqTnmoTmnI3liqHlmajnq69cclxuICAgKi9cclxuICBwdWJsaWMgdXBkYXRlQ2hhbmdlc0J5SWQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UudXBkYXRlQ2hhbmdlc0J5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5o+Q5LqkcGF0aOWvueW6lOWunuS9k+eahOWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVDaGFuZ2VzQnlQYXRoKHBhdGg6IHN0cmluZywgaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBJbXBsZW1lbnQnKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICog5o+Q5Lqk5omA5pyJ5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIHVwZGF0ZUFsbENoYW5nZXMoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS51cGRhdGVBbGxDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlupTnlKjlj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgYXBwbHlDaGFuZ2VzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuYXBwbHlDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmj5DkuqTmlbDmja7lj5jmm7Tlkozlj5jph4/lj5jmm7TvvIzpgJrov4dyZXRyaWV2ZeaooeaLn1xyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIHB1YmxpYyB1cGRhdGVEYXRhQW5kVmFyaWFibGVDaGFuZ2VzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBmaWx0ZXJDb25kaXRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgY29uc3Qgc29ydENvbmRpdGlvbnM6IGFueVtdID0gW107XHJcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXIgPSB7XHJcbiAgICAgIEZpbHRlckNvbmRpdGlvbnM6IGZpbHRlckNvbmRpdGlvbnMsXHJcbiAgICAgIFNvcnRDb25kaXRpb25zOiBzb3J0Q29uZGl0aW9ucyxcclxuICAgICAgSXNVc2VQYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgICBQYWdpbmF0aW9uOiB7XHJcbiAgICAgICAgUGFnZUluZGV4OiAxLFxyXG4gICAgICAgIFBhZ2VTaXplOiAxLFxyXG4gICAgICAgIFBhZ2VDb3VudDogMCxcclxuICAgICAgICBUb3RhbENvdW50OiAwXHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgICBjb25zdCBlbnRpdHlGaWx0ZXJKc29uID0gSlNPTi5zdHJpbmdpZnkoZW50aXR5RmlsdGVyKTtcclxuICAgIGNvbnN0IHJlcXVlc3RJbmZvID0gdGhpcy5yZXN0U2VydmljZS5idWlsZFJlcXVlc3RJbmZvKCk7XHJcbiAgICAvLyDmsqHmnInlj5jmm7Tml7bkuI3lho3mj5DkuqTlj5jmm7RcclxuICAgIGlmICh0aGlzLmlzRW1wdHlSZXF1ZXN0SW5mbyhyZXF1ZXN0SW5mbykpIHtcclxuICAgICAgcmV0dXJuIG9mKG51bGwpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5yZXN0U2VydmljZS5iYXNlVXJpfS9leHRlbnNpb24vcXVlcnk/ZW50aXR5RmlsdGVyPSR7ZW50aXR5RmlsdGVySnNvbn1gO1xyXG4gICAgY29uc3QgYm9keSA9IHJlcXVlc3RJbmZvO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgYm9keVxyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmludm9rZSh1cmwsICdQVVQnLCBudWxsLCBvcHRpb25zLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlupTnlKhpZOWvueW6lOaVsOaNrueahOWPmOabtFxyXG4gICAqL1xyXG4gIHB1YmxpYyBhcHBseUNoYW5nZXNCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLmFwcGx5Q2hhbmdlc0J5SWQoaWQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5Y+W5raI5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGNhbmNlbENoYW5nZXMob3B0aW9ucz86IGFueSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UuY2FuY2VsQ2hhbmdlcyhvcHRpb25zKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vICNyZWdpb24g5pWw5o2u5Y+Y5pu06ZuG5aSE55CGXHJcblxyXG4gIC8qKlxyXG4gICAqIOa4heepuuaJgOacieacrOWcsOWunuS9k+eahOWPmOabtOmbhlxyXG4gICAqL1xyXG4gIHB1YmxpYyBjbGVhckFsbEVudGl0eUNoYW5nZXMoKTogdm9pZCB7XHJcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlNYW5hZ2VyLmNsZWFyQWxsRW50aXR5Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5pWw5o2u5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGdldERhdGFDaGFuZ2VEZXRhaWxzKCk6IENoYW5nZURldGFpbFtdIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuYnVpbGRBbGxFbnRpdHlDaGFuZ2VEZXRhaWxzKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDlpITnkIbmlbDmja7lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgaGFuZGxlRGF0YUNoYW5nZURldGFpbHMoY2hhbmdlRGV0YWlsczogQ2hhbmdlRGV0YWlsW10pOiB2b2lkIHtcclxuICAgIHJldHVybiB0aGlzLmVudGl0eU1hbmFnZXIuaGFuZGxlRGF0YUNoYW5nZURldGFpbHMoY2hhbmdlRGV0YWlscyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uXHJcblxyXG5cclxuICAvLyAjcmVnaW9uIOWPmOmHj+WPmOabtOmbhuWkhOeQhlxyXG5cclxuICAvKipcclxuICAgKiDojrflj5blj5jph4/lj5jmm7RcclxuICAgKi9cclxuICBwdWJsaWMgZ2V0VmFyaWFibGVDaGFuZ2VEZXRhaWwoKTogQ2hhbmdlRGV0YWlsIHtcclxuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlTWFuYWdlci5idWlsZENoYW5nZURldGFpbCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5aSE55CG5Y+Y6YeP5Y+Y5pu0XHJcbiAgICovXHJcbiAgcHVibGljIGhhbmRsZVZhcmlhYmxlQ2hhbmdlRGV0YWlsKGNoYW5nZURldGFpbDogQ2hhbmdlRGV0YWlsKSB7XHJcbiAgICB0aGlzLnZhcmlhYmxlTWFuYWdlci5oYW5kbGVDaGFuZ2VEZXRhaWwoY2hhbmdlRGV0YWlsKTtcclxuICB9XHJcblxyXG4gIC8vICNlbmRyZWdpb25cclxuICAvKipcclxuICAgKiDlj5jmm7Tpm4bmmK/lkKbkuLrnqbpcclxuICAgKiBAcGFyYW0gcmVxdWVzdEluZm8gcmVxdWVzdEluZm9cclxuICAgKi9cclxuICBwcml2YXRlIGlzRW1wdHlSZXF1ZXN0SW5mbyhyZXF1ZXN0SW5mbzogUmVxdWVzdEluZm8pIHtcclxuICAgIGlmICghcmVxdWVzdEluZm8pIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoKCFyZXF1ZXN0SW5mby5kYXRhQ2hhbmdlIHx8IHJlcXVlc3RJbmZvLmRhdGFDaGFuZ2UubGVuZ3RoIDwgMSkgJiYgKCFyZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZSB8fCBPYmplY3Qua2V5cyhyZXF1ZXN0SW5mby52YXJpYWJsZUNoYW5nZSkubGVuZ3RoIDwgMSkpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgeyBEZXByZWNhdGVkQmVmUmVwb3NpdG9yeSB9O1xyXG4iXX0=

@@ -197,2 +197,13 @@ /**

}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmFycmlzL2JlZi8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBO0lBQUE7SUFnQkEsQ0FBQzs7OztJQVhRLHNCQUFLLEdBQUcsT0FBTyxDQUFDOzs7O0lBS2hCLHVCQUFNLEdBQUcsUUFBUSxDQUFDOzs7O0lBS2xCLHdCQUFPLEdBQUcsU0FBUyxDQUFDO0lBQzdCLHVCQUFDO0NBQUEsQUFoQkQsSUFnQkM7U0FoQlksZ0JBQWdCOzs7Ozs7SUFLM0IsdUJBQXVCOzs7OztJQUt2Qix3QkFBeUI7Ozs7O0lBS3pCLHlCQUEyQjs7Ozs7Ozs7OztBQVU3QixzQ0FHQzs7O0lBRkMsa0NBQWdCOzs7Ozs7Ozs7O0FBVWxCLGtDQUdDOzs7SUFGQyxrQ0FBNkI7O0lBQzdCLGtDQUE2Qjs7Ozs7O0FBTy9CLGlDQUdDOzs7SUFGQyxpQ0FBMkI7O0lBQzNCLHFDQUE4Qjs7Ozs7O0FBZ0JoQyxnQ0FLQzs7O0lBSkMsOEJBQWlCOztJQUNqQixnQ0FBbUI7O0lBQ25CLCtCQUFrQjs7SUFDbEIsK0JBQWtCOzs7Ozs7QUFNcEIsaUNBR0M7OztJQUZDLDZCQUFjOztJQUNkLGlDQUF1Qjs7Ozs7O0FBTXpCLGtDQUtDOzs7SUFKQyxtQ0FBaUI7O0lBQ2pCLCtCQUFlOztJQUNmLHVDQUFnQzs7SUFDaEMsMkNBQWtDOzs7Ozs7QUFNcEMsa0NBT0M7Ozs7Ozs7SUFOQyw4REFBb0U7Ozs7O0lBQ3BFLHdEQUFtRDs7Ozs7O0lBQ25ELDhFQUEyRjs7Ozs7O0lBQzNGLDJFQUE2RDs7Ozs7OztJQUM3RCxrRkFBb0Y7Ozs7O0lBQ3BGLDhEQUE0Qjs7Ozs7O0FBTTlCLHlDQUdDOzs7SUFGQywwQ0FBeUI7Ozs7Ozs7QUFPM0IsbUNBR0M7OztJQUZDLDZCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qXHJcbiAqIEBBdXRob3I6IFdpdHRcclxuICogQERhdGU6IDIwMTgtMTAtMTkgMTU6MzY6NDhcclxuICogQExhc3QgTW9kaWZpZWQgYnk6IGFhbGl6endlbGxcclxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxOS0wNy0zMCAxNzozNzowMlxyXG4gKi9cclxuXHJcblxyXG4vKipcclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICog5Y+Y5pu06ZuG55u45YWz57G75Z6LXHJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIOWPmOabtOexu+Wei1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIENoYW5nZURldGFpbFR5cGUge1xyXG5cclxuICAvKipcclxuICAgKiDmlrDlop5cclxuICAgKi9cclxuICBzdGF0aWMgQWRkZWQgPSAnQWRkZWQnO1xyXG5cclxuICAvKipcclxuICAgKiDkv67mlLlcclxuICAgKi9cclxuICBzdGF0aWMgTW9kaWZ5ID0gJ01vZGlmeSc7XHJcblxyXG4gIC8qKlxyXG4gICAqIOWIoOmZpFxyXG4gICAqL1xyXG4gIHN0YXRpYyBEZWxldGVkID0gJ0RlbGV0ZWQnO1xyXG59XHJcblxyXG4vKipcclxuICog6KGM5Y+Y5pu05L+h5oGvXHJcbiAqIOW/hemhu+WMheWQq++8mlxyXG4gKiAx44CBRGF0YUlkICAgPT4g5Li76ZSu5YC877ybXHJcbiAqIDLjgIHlsZ7mgKflkI0gICA9PiDmlrDnmoTlsZ7mgKflgLzvvJtcclxuICogM+OAgeWtkOihqOWQjStzID0+IOWtkOihqOihjOeahENoYW5nZURldGFpbOaVsOe7hFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VEZXRhaWxJbmZvIHtcclxuICBEYXRhSWQ/OiBzdHJpbmc7XHJcbiAgW2tleTogc3RyaW5nXTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGwgfCBDaGFuZ2VEZXRhaWwgfCBDaGFuZ2VEZXRhaWxbXSB8IHsgW2tleTogc3RyaW5nXTogYW55IH07XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDooYzlj5jmm7Tor6bmg4VcclxuICog5YyF5ZCr77yaXHJcbiAqIDHjgIHlj5jmm7TnsbvlnovvvJtcclxuICogMuOAgeWPmOabtOS/oeaBr1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VEZXRhaWwge1xyXG4gIENoYW5nZVR5cGU6IENoYW5nZURldGFpbFR5cGU7XHJcbiAgQ2hhbmdlSW5mbzogQ2hhbmdlRGV0YWlsSW5mbztcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiDor7fmsYLnsbvlnotcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdEluZm8ge1xyXG4gIGRhdGFDaGFuZ2U6IENoYW5nZURldGFpbFtdO1xyXG4gIHZhcmlhYmxlQ2hhbmdlPzogQ2hhbmdlRGV0YWlsO1xyXG59XHJcblxyXG5cclxuXHJcbi8qKlxyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKiDor7fmsYLjgIHlk43lupTnm7jlhbPnsbvlnovlrprkuYlcclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICovXHJcblxyXG5cclxuXHJcbi8qKlxyXG4gKiDliIbpobXkv6Hmga9cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvbiB7XHJcbiAgcGFnZVNpemU6IG51bWJlcjtcclxuICB0b3RhbENvdW50OiBudW1iZXI7XHJcbiAgcGFnZUNvdW50OiBudW1iZXI7XHJcbiAgcGFnZUluZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDmn6Xor6Lnu5PmnpxcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSZXN1bHQge1xyXG4gIHJlc3VsdDogYW55W107XHJcbiAgcGFnaW5hdGlvbjogUGFnaW5hdGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIOi/lOWbnue7k+aenOexu+Wei1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZUluZm8ge1xyXG4gIHJldHVyblZhbHVlOiBhbnk7XHJcbiAgbWVzc2FnZTogYW55W107XHJcbiAgaW5uZXJEYXRhQ2hhbmdlOiBDaGFuZ2VEZXRhaWxbXTtcclxuICBpbm5lclZhcmlhYmxlQ2hhbmdlOiBDaGFuZ2VEZXRhaWw7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDku6PnkIbpkqnlrZBcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb3h5RXh0ZW5kIHtcclxuICBleHRlbmRVcmwodXJsOiBzdHJpbmcsIHBhcmFtczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9KTogc3RyaW5nO1xyXG4gIGV4dGVuZEJvZHkoYm9keTogYW55KTogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9O1xyXG4gIGV4dGVuZEhlYWRlcnMoaGVhZGVyczogeyBbcHJvcE5hbWU6IHN0cmluZ106IGFueSB9LCBydW50aW1lQ29udGV4dD86IGFueSk6IE9ic2VydmFibGU8YW55PjtcclxuICBvblJlc3BvbnNlPyhyZXNwb25zZTogUmVzcG9uc2VJbmZvLCBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbik7XHJcbiAgb25FcnJvcj8oZXJyb3I6IGFueSwgc2VsZkhhbmRFcnJvcjogYm9vbGVhbiwgaWdub3JlRXJyb3I6IGJvb2xlYW4pOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgcGFyc2VIZWFkZXJzKHJlc3BvbnNlOiBhbnkpO1xyXG59XHJcblxyXG4vKipcclxuICog5bimUmVxdWVzdEluZm/nmoRib2R55a+56LGhXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEJvZHlXaXRoUmVxdWVzdEluZm8ge1xyXG4gIHJlcXVlc3RJbmZvOiBSZXF1ZXN0SW5mbztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiByZXF1ZXN0IG9wdGlvbuagvOW8j1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9uIHtcclxuICBib2R5OiBCb2R5V2l0aFJlcXVlc3RJbmZvO1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxufVxyXG4iXX0=
/**
* 子表分页参数
* @record
*/
export function RetrieveParam() { }
if (false) {
/** @type {?} */
RetrieveParam.prototype.filters;
/** @type {?|undefined} */
RetrieveParam.prototype.parentIds;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZmFycmlzL2JlZi8iLCJzb3VyY2VzIjpbImxpYi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbUJBO0lBQUE7SUFnQkEsQ0FBQzs7OztJQVhRLHNCQUFLLEdBQUcsT0FBTyxDQUFDOzs7O0lBS2hCLHVCQUFNLEdBQUcsUUFBUSxDQUFDOzs7O0lBS2xCLHdCQUFPLEdBQUcsU0FBUyxDQUFDO0lBQzdCLHVCQUFDO0NBQUEsQUFoQkQsSUFnQkM7U0FoQlksZ0JBQWdCOzs7Ozs7SUFLM0IsdUJBQXVCOzs7OztJQUt2Qix3QkFBeUI7Ozs7O0lBS3pCLHlCQUEyQjs7Ozs7Ozs7OztBQVU3QixzQ0FHQzs7O0lBRkMsa0NBQWdCOzs7Ozs7Ozs7O0FBVWxCLGtDQUdDOzs7SUFGQyxrQ0FBNkI7O0lBQzdCLGtDQUE2Qjs7Ozs7O0FBTy9CLGlDQUdDOzs7SUFGQyxpQ0FBMkI7O0lBQzNCLHFDQUE4Qjs7Ozs7O0FBZ0JoQyxnQ0FLQzs7O0lBSkMsOEJBQWlCOztJQUNqQixnQ0FBbUI7O0lBQ25CLCtCQUFrQjs7SUFDbEIsK0JBQWtCOzs7Ozs7QUFNcEIsaUNBR0M7OztJQUZDLDZCQUFjOztJQUNkLGlDQUF1Qjs7Ozs7O0FBTXpCLGtDQUtDOzs7SUFKQyxtQ0FBaUI7O0lBQ2pCLCtCQUFlOztJQUNmLHVDQUFnQzs7SUFDaEMsMkNBQWtDOzs7Ozs7QUFNcEMsa0NBT0M7Ozs7Ozs7SUFOQyw4REFBb0U7Ozs7O0lBQ3BFLHdEQUFtRDs7Ozs7O0lBQ25ELDhFQUEyRjs7Ozs7O0lBQzNGLDJFQUE2RDs7Ozs7OztJQUM3RCxrRkFBb0Y7Ozs7O0lBQ3BGLDhEQUE0Qjs7Ozs7O0FBTTlCLHlDQUdDOzs7SUFGQywwQ0FBeUI7Ozs7Ozs7QUFPM0IsbUNBR0M7OztJQUZDLDZCQUEwQjs7Ozs7OztBQU01QixtQ0FHQzs7O0lBRkMsZ0NBQXlGOztJQUN6RixrQ0FBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKlxyXG4gKiBAQXV0aG9yOiBXaXR0XHJcbiAqIEBEYXRlOiAyMDE4LTEwLTE5IDE1OjM2OjQ4XHJcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBhYWxpenp3ZWxsXHJcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTktMDctMzAgMTc6Mzc6MDJcclxuICovXHJcblxyXG5cclxuLyoqXHJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqIOWPmOabtOmbhuebuOWFs+exu+Wei1xyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiDlj5jmm7TnsbvlnotcclxuICovXHJcbmV4cG9ydCBjbGFzcyBDaGFuZ2VEZXRhaWxUeXBlIHtcclxuXHJcbiAgLyoqXHJcbiAgICog5paw5aKeXHJcbiAgICovXHJcbiAgc3RhdGljIEFkZGVkID0gJ0FkZGVkJztcclxuXHJcbiAgLyoqXHJcbiAgICog5L+u5pS5XHJcbiAgICovXHJcbiAgc3RhdGljIE1vZGlmeSA9ICdNb2RpZnknO1xyXG5cclxuICAvKipcclxuICAgKiDliKDpmaRcclxuICAgKi9cclxuICBzdGF0aWMgRGVsZXRlZCA9ICdEZWxldGVkJztcclxufVxyXG5cclxuLyoqXHJcbiAqIOihjOWPmOabtOS/oeaBr1xyXG4gKiDlv4XpobvljIXlkKvvvJpcclxuICogMeOAgURhdGFJZCAgID0+IOS4u+mUruWAvO+8m1xyXG4gKiAy44CB5bGe5oCn5ZCNICAgPT4g5paw55qE5bGe5oCn5YC877ybXHJcbiAqIDPjgIHlrZDooajlkI0rcyA9PiDlrZDooajooYznmoRDaGFuZ2VEZXRhaWzmlbDnu4RcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGV0YWlsSW5mbyB7XHJcbiAgRGF0YUlkPzogc3RyaW5nO1xyXG4gIFtrZXk6IHN0cmluZ106IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW4gfCBudWxsIHwgQ2hhbmdlRGV0YWlsIHwgQ2hhbmdlRGV0YWlsW10gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xyXG59XHJcblxyXG4vKipcclxuICog6KGM5Y+Y5pu06K+m5oOFXHJcbiAqIOWMheWQq++8mlxyXG4gKiAx44CB5Y+Y5pu057G75Z6L77ybXHJcbiAqIDLjgIHlj5jmm7Tkv6Hmga9cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGV0YWlsIHtcclxuICBDaGFuZ2VUeXBlOiBDaGFuZ2VEZXRhaWxUeXBlO1xyXG4gIENoYW5nZUluZm86IENoYW5nZURldGFpbEluZm87XHJcbn1cclxuXHJcblxyXG4vKipcclxuICog6K+35rGC57G75Z6LXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RJbmZvIHtcclxuICBkYXRhQ2hhbmdlOiBDaGFuZ2VEZXRhaWxbXTtcclxuICB2YXJpYWJsZUNoYW5nZT86IENoYW5nZURldGFpbDtcclxufVxyXG5cclxuXHJcblxyXG4vKipcclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICog6K+35rGC44CB5ZON5bqU55u45YWz57G75Z6L5a6a5LmJXHJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAqL1xyXG5cclxuXHJcblxyXG4vKipcclxuICog5YiG6aG15L+h5oGvXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFBhZ2luYXRpb24ge1xyXG4gIHBhZ2VTaXplOiBudW1iZXI7XHJcbiAgdG90YWxDb3VudDogbnVtYmVyO1xyXG4gIHBhZ2VDb3VudDogbnVtYmVyO1xyXG4gIHBhZ2VJbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG4vKipcclxuICog5p+l6K+i57uT5p6cXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5UmVzdWx0IHtcclxuICByZXN1bHQ6IGFueVtdO1xyXG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb247XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDov5Tlm57nu5PmnpznsbvlnotcclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2VJbmZvIHtcclxuICByZXR1cm5WYWx1ZTogYW55O1xyXG4gIG1lc3NhZ2U6IGFueVtdO1xyXG4gIGlubmVyRGF0YUNoYW5nZTogQ2hhbmdlRGV0YWlsW107XHJcbiAgaW5uZXJWYXJpYWJsZUNoYW5nZTogQ2hhbmdlRGV0YWlsO1xyXG59XHJcblxyXG4vKipcclxuICog5Luj55CG6ZKp5a2QXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElQcm94eUV4dGVuZCB7XHJcbiAgZXh0ZW5kVXJsKHVybDogc3RyaW5nLCBwYXJhbXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSk6IHN0cmluZztcclxuICBleHRlbmRCb2R5KGJvZHk6IGFueSk6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfTtcclxuICBleHRlbmRIZWFkZXJzKGhlYWRlcnM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSwgcnVudGltZUNvbnRleHQ/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT47XHJcbiAgb25SZXNwb25zZT8ocmVzcG9uc2U6IFJlc3BvbnNlSW5mbywgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW4pO1xyXG4gIG9uRXJyb3I/KGVycm9yOiBhbnksIHNlbGZIYW5kRXJyb3I6IGJvb2xlYW4sIGlnbm9yZUVycm9yOiBib29sZWFuKTogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIHBhcnNlSGVhZGVycyhyZXNwb25zZTogYW55KTtcclxufVxyXG5cclxuLyoqXHJcbiAqIOW4plJlcXVlc3RJbmZv55qEYm9keeWvueixoVxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBCb2R5V2l0aFJlcXVlc3RJbmZvIHtcclxuICByZXF1ZXN0SW5mbzogUmVxdWVzdEluZm87XHJcbiAgW2tleTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vKipcclxuICogcmVxdWVzdCBvcHRpb27moLzlvI9cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVxdWVzdE9wdGlvbiB7XHJcbiAgYm9keTogQm9keVdpdGhSZXF1ZXN0SW5mbztcclxuICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbn1cclxuLyoqXHJcbiAqIOWtkOihqOWIhumhteWPguaVsFxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBSZXRyaWV2ZVBhcmFtIHtcclxuICBmaWx0ZXJzOiB7IFtub2RlQ29kZTogc3RyaW5nXTogeyBwYWdpbmF0aW9uOiB7IHBhZ2VJbmRleDogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyIH0gfSB9LFxyXG4gIHBhcmVudElkcz86IHsgW25vZGVDb2RlOiBzdHJpbmddOiBzdHJpbmcgfVxyXG59Il19

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":31,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"setSessionId":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":34,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":67,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":70,"character":15}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":31,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":26,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":26,"character":38}]}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":30,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":68,"character":32}]}],"getEntities":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"getPagedById":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"batchRemove":[{"__symbolic":"method"}],"batchRemoveByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}],"clearAllVariableChanges":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}],"getRuntimeSessionId":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":49,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":49,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"BefEntityManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"EntityManager","line":20,"character":49},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":36,"character":49,"context":{"typeName":"T"},"module":"./lib/bef_entity_manager"}]}]}],"buildAllEntityChangeDetails":[{"__symbolic":"method"}],"buildEntityChangeDetailById":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"DynamicBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":23,"character":24},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}},"PresetBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":11,"character":24},{"__symbolic":"reference","name":"any"}]}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","BefEntityManager":"./lib/bef_entity_manager","DynamicBefRepository":"./lib/dynamic_bef_repository","PresetBefRepository":"./lib/preset_bef_repository","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}
{"__symbolic":"module","version":4,"metadata":{"VERSION":"ver.","ChangeDetailType":{"__symbolic":"class","members":{},"statics":{"Added":"Added","Modify":"Modify","Deleted":"Deleted"}},"ChangeDetailInfo":{"__symbolic":"interface"},"ChangeDetail":{"__symbolic":"interface"},"RequestInfo":{"__symbolic":"interface"},"Pagination":{"__symbolic":"interface"},"QueryResult":{"__symbolic":"interface"},"ResponseInfo":{"__symbolic":"interface"},"IProxyExtend":{"__symbolic":"interface"},"BodyWithRequestInfo":{"__symbolic":"interface"},"RequestOption":{"__symbolic":"interface"},"RetrieveParam":{"__symbolic":"interface"},"BE_SERVER_URI_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":9,"character":32},"arguments":["@farris/be BE_SERVER_URL"]},"BE_SESSION_HANDLING_STRATEGY_TOKEN":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":15,"character":47},"arguments":["@farris/be BE_SESSION_HANDLING_STRATEGY_TOKEN"]},"BefChangeBuilder":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Type","module":"@angular/core","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]},{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"reference","module":"@farris/devkit","name":"Entity","line":28,"character":29}]}]}],"build":[{"__symbolic":"method"}],"buildChangeDetail":[{"__symbolic":"method"}],"getChangeInfo":[{"__symbolic":"method"}],"createEmptyChangeDetail":[{"__symbolic":"method"}]}},"BefChangeHandler":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor"}],"handle":[{"__symbolic":"method"}],"handleChangeDetails":[{"__symbolic":"method"}],"handleChangeDetail":[{"__symbolic":"method"}],"getEntityById":[{"__symbolic":"method"}]}},"BefSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":16,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":31,"character":59}]}],"getBeSessionId":[{"__symbolic":"method"}],"setBeSessionId":[{"__symbolic":"method"}],"clearBeSessionId":[{"__symbolic":"method"}],"extendRequestHeaders":[{"__symbolic":"method"}],"handleResponseHeaders":[{"__symbolic":"method"}],"createBeSession":[{"__symbolic":"method"}],"setSessionId":[{"__symbolic":"method"}],"createHandlingStrategy":[{"__symbolic":"method"}]}},"BefRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":34,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":67,"character":16},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"FrameworkSessionService"},{"__symbolic":"reference","name":"BefRepository"},{"__symbolic":"reference","module":"@farris/devkit","name":"EventBus","line":70,"character":15}]}],"createBefProxy":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"innerRequest":[{"__symbolic":"method"}],"handleReponseInfo":[{"__symbolic":"method"}],"handleErrors":[{"__symbolic":"method"}],"clearLoading":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"existRequestInfo":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"buildBodyWithRequestInfo":[{"__symbolic":"method"}],"buildRequestInfo":[{"__symbolic":"method"}]}},"BefProxy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":23,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":31,"character":33},{"__symbolic":"reference","name":"UriService"}]}],"setBaseUri":[{"__symbolic":"method"}],"setProxyExtend":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"extendQuery":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"serviceRetrieve":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"extendRetrieve":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"createByPath":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"deleteAndSave":[{"__symbolic":"method"}],"extendDelete":[{"__symbolic":"method"}],"deletByPath":[{"__symbolic":"method"}],"extendDeletByPath":[{"__symbolic":"method"}],"batchDeleteByPath":[{"__symbolic":"method"}],"batchDelete":[{"__symbolic":"method"}],"extendBatchDeletion":[{"__symbolic":"method"}],"extendBatchDelete":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"invoke":[{"__symbolic":"method"}],"addBodyToOptions":[{"__symbolic":"method"}],"buildParams":[{"__symbolic":"method"}],"hasRequestInfo":[{"__symbolic":"method"}],"unWrapResponseInfo":[{"__symbolic":"method"}]}},"BefLookupRestService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":11,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":26,"character":5}}]],"parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","module":"@farris/devkit","name":"FrameContext","line":26,"character":38}]}],"getData":[{"__symbolic":"method"}],"saveUserSettings":[{"__symbolic":"method"}],"getUserSettings":[{"__symbolic":"method"}],"ifEnableExtendLoadMethod":[{"__symbolic":"method"}],"getHelpData":[{"__symbolic":"method"}],"extendGetHelpData":[{"__symbolic":"method"}],"convert2TreeDataWithPathCode":[{"__symbolic":"method"}]}},"BefLookupDefaultService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":14,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]},{"__symbolic":"reference","name":"FrameworkSessionService"}]}],"createSession":[{"__symbolic":"method"}],"getData":[{"__symbolic":"method"}]}},"BefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"ɵa"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":30,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":68,"character":32}]}],"getEntities":[{"__symbolic":"method"}],"filter":[{"__symbolic":"method"}],"queryChild":[{"__symbolic":"method"}],"updateEntityById":[{"__symbolic":"method"}],"editEntityById":[{"__symbolic":"method"}],"createEntity":[{"__symbolic":"method"}],"appendEntity":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"insertByPath":[{"__symbolic":"method"}],"appendEntityByPath":[{"__symbolic":"method"}],"removeEntityById":[{"__symbolic":"method"}],"removeEntityAndSaveById":[{"__symbolic":"method"}],"removeEntityByPath":[{"__symbolic":"method"}],"batchRemove":[{"__symbolic":"method"}],"batchRemoveByPath":[{"__symbolic":"method"}],"saveEntityById":[{"__symbolic":"method"}],"saveEntities":[{"__symbolic":"method"}],"cancelEntityChanges":[{"__symbolic":"method"}],"batchAppendByPath":[{"__symbolic":"method"}],"batchAppend":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"getInjector":[{"__symbolic":"method"}],"clearAllVariableChanges":[{"__symbolic":"method"}]}},"FrameworkSessionService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":13,"character":15}}]],"parameters":[{"__symbolic":"reference","module":"@ecp-caf/caf-common","name":"SessionService","line":13,"character":50}]}],"getUserSessionId":[{"__symbolic":"method"}],"getCurrentSessionId":[{"__symbolic":"method"}],"getRuntimeSessionId":[{"__symbolic":"method"}],"parse":[{"__symbolic":"method"}]}},"NG_VARIABLE":"@farris/bef NG_VARIABLE","NgVariable":{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@farris/devkit","name":"makePropDecorator","line":49,"character":2},"arguments":["@farris/bef NG_VARIABLE",{"__symbolic":"error","message":"Lambda not supported","line":49,"character":33,"module":"./lib/decorators"}]},"NgVariableDecorator":{"__symbolic":"interface"},"BefRepositoryUtil":{"__symbolic":"class","members":{}},"BefDataPathUtil":{"__symbolic":"class","members":{},"statics":{"trimTrailingS":{"__symbolic":"function","parameters":["str"],"value":{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"substr"},"arguments":[0,{"__symbolic":"binop","operator":"-","left":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"str"},"member":"length"},"right":1}]}}}},"UriService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":5,"character":17},"arguments":[{"__symbolic":"reference","name":"BE_SERVER_URI_TOKEN"}]}]],"parameters":[{"__symbolic":"reference","name":"string"}]}],"extendUri":[{"__symbolic":"method"}]}},"Uri":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"string"},{"__symbolic":"error","message":"Expression form not supported","line":1,"character":52,"module":"./lib/uri"}]}],"toString":[{"__symbolic":"method"}]}},"DefaultComboHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"DefaultDynamiControlGroupHttpService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"Repository","module":"@farris/devkit","arguments":[{"__symbolic":"reference","name":"any"}]}]}],"getData":[{"__symbolic":"method"}]}},"BefEntityManager":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"EntityManager","line":20,"character":49},"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"EntityCollection","module":"@farris/devkit","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":36,"character":49,"context":{"typeName":"T"},"module":"./lib/bef_entity_manager"}]}]}],"buildAllEntityChangeDetails":[{"__symbolic":"method"}],"buildEntityChangeDetailById":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"DynamicBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":23,"character":24},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"string"},{"__symbolic":"reference","name":"string"}]}]}},"PresetBefRepository":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","name":"BefRepository"},"members":{"batchAppend":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":11,"character":24},{"__symbolic":"reference","name":"any"}]}]}},"ɵa":{"__symbolic":"class","arity":1,"extends":{"__symbolic":"reference","module":"@farris/devkit","name":"Repository","line":26,"character":65},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":25,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"getList":[{"__symbolic":"method"}],"getById":[{"__symbolic":"method"}],"updateById":[{"__symbolic":"method"}],"create":[{"__symbolic":"method"}],"append":[{"__symbolic":"method"}],"appendByPath":[{"__symbolic":"method"}],"removeById":[{"__symbolic":"method"}],"removeByIds":[{"__symbolic":"method"}],"removeByPath":[{"__symbolic":"method"}],"updateChangesById":[{"__symbolic":"method"}],"updateChangesByPath":[{"__symbolic":"method"}],"updateAllChanges":[{"__symbolic":"method"}],"applyChanges":[{"__symbolic":"method"}],"updateDataAndVariableChanges":[{"__symbolic":"method"}],"applyChangesById":[{"__symbolic":"method"}],"cancelChanges":[{"__symbolic":"method"}],"clearAllEntityChanges":[{"__symbolic":"method"}],"getDataChangeDetails":[{"__symbolic":"method"}],"handleDataChangeDetails":[{"__symbolic":"method"}],"getVariableChangeDetail":[{"__symbolic":"method"}],"handleVariableChangeDetail":[{"__symbolic":"method"}],"isEmptyRequestInfo":[{"__symbolic":"method"}]}}},"origins":{"VERSION":"./public-api","ChangeDetailType":"./lib/types","ChangeDetailInfo":"./lib/types","ChangeDetail":"./lib/types","RequestInfo":"./lib/types","Pagination":"./lib/types","QueryResult":"./lib/types","ResponseInfo":"./lib/types","IProxyExtend":"./lib/types","BodyWithRequestInfo":"./lib/types","RequestOption":"./lib/types","RetrieveParam":"./lib/types","BE_SERVER_URI_TOKEN":"./lib/tokens","BE_SESSION_HANDLING_STRATEGY_TOKEN":"./lib/tokens","BefChangeBuilder":"./lib/bef_change_builder","BefChangeHandler":"./lib/bef_change_handler","BefSessionService":"./lib/session/bef_session_service","BefRestService":"./lib/bef_rest_service","BefProxy":"./lib/bef_proxy","BefLookupRestService":"./lib/bef_lookup.service","BefLookupDefaultService":"./lib/bef_lookup_default.service","BefRepository":"./lib/bef_repository","FrameworkSessionService":"./lib/framework_session_service","NG_VARIABLE":"./lib/decorators","NgVariable":"./lib/decorators","NgVariableDecorator":"./lib/decorators","BefRepositoryUtil":"./lib/bef_repository_util","BefDataPathUtil":"./lib/bef_data_path_util","UriService":"./lib/uri_service","Uri":"./lib/uri","DefaultComboHttpService":"./lib/bef_combo.service","DefaultDynamiControlGroupHttpService":"./lib/bef_dynamic_control_group_default.service","BefEntityManager":"./lib/bef_entity_manager","DynamicBefRepository":"./lib/dynamic_bef_repository","PresetBefRepository":"./lib/preset_bef_repository","ɵa":"./lib/deprecated/deprecated_bef_repository"},"importAs":"@farris/bef"}

@@ -55,10 +55,8 @@ import { Injector } from '@angular/core';

* 获取单个实体
* @param id id
* @param enableChildrenPagination en
*/
getById(id: string): Observable<T>;
getEntityById(id: string): Observable<T>;
/**
* 通过id获取实体数据及带分页的子表数据
* @param id 主表id
*/
getPagedById(id: string): Observable<any>;
/**
* ['id:xxx', 'chil1s', 'id:xxx', 'grand1s']

@@ -76,5 +74,4 @@ * 分页查询从表/从从表数据

* 构造子表分页信息
* @param paginationInfo 分页信息
*/
private buildChildPagination;
private buildChildrenPagination;
/**

@@ -86,4 +83,4 @@ * 更新分页配置信息

/**
* 构造最终分页信息
* @param paginationInfo 分页信息
* 构造retrieve分页信息
* @description 该请求不需要携带parentIds参数,只有切换从从表时才需要使用添加parentIds参数
*/

@@ -102,2 +99,7 @@ private buildRetrieveParam;

/**
* 根据id更新实体
* @param id 实体id
*/
updateEntityById(id: string): Observable<any>;
/**
* 重新加载实体数据

@@ -104,0 +106,0 @@ * @param id 要重载的实体id

import { Observable } from 'rxjs';
import { HttpClient } from '@angular/common/http';
import { IProxyExtend, RequestInfo, ResponseInfo, ChangeDetail } from './types';
import { IProxyExtend, RequestInfo, ResponseInfo, ChangeDetail, RetrieveParam } from './types';
import { UriService } from './uri_service';

@@ -52,5 +52,3 @@ /**

/**
* 分页查询各从表数据
* @param id 主表id
* @param options 选项
* @deprecated 方法已经废弃,请勿使用
*/

@@ -66,3 +64,3 @@ serviceRetrieve(id: string, retrieveParam: any, requestInfo: RequestInfo): Observable<any>;

*/
extendRetrieve(id: string, requestInfo: RequestInfo): Observable<ResponseInfo>;
extendRetrieve(id: string, requestInfo: RequestInfo, retrieveParam?: RetrieveParam): Observable<ResponseInfo>;
/**

@@ -69,0 +67,0 @@ * 检索数据

@@ -97,14 +97,2 @@ import { Injector } from '@angular/core';

/**
* 通过id获取实体数据及带分页的子表数据
* @param id 主表上的实体id
* @description
* 实体仓库中对应的实体及其子表数据会自动更新,返回id对应的主表实体 \
* 使用示例:
* ```typescript
* const id = this.bindingData.list.currentId as string;
* const update$ = this.repository.getPagedById(id);
* ```
*/
getPagedById(id: string): Observable<T>;
/**
* 分页查询从表/从从表数据

@@ -145,10 +133,2 @@ * @param paths 通用路径

/**
* 获取主键为id的实体
* @param id 主表实体主键
* @description
* 获取主表上对应主键的实体,调用该方法成功后实体仓库中仅包含这一个实体 \
* 如果仅仅想要将对应id的实体同步为服务器上的值,请调用 {@link updateEntityById} 方法
*/
getEntityById(id: string): Observable<T>;
/**
* 更新实体数据

@@ -155,0 +135,0 @@ * @param id 主表实体主键

@@ -7,3 +7,3 @@ import { HttpClient } from '@angular/common/http';

import { BefSessionService } from './session/index';
import { ChangeDetail, RequestInfo, ResponseInfo } from './types';
import { ChangeDetail, RequestInfo, ResponseInfo, RetrieveParam } from './types';
import { BefProxy } from './bef_proxy';

@@ -78,3 +78,3 @@ /**

*/
extendRetrieve(id: string, requestInfo: RequestInfo): Observable<ResponseInfo>;
extendRetrieve(id: string, requestInfo: RequestInfo, retrieveParam?: RetrieveParam): Observable<ResponseInfo>;
/**

@@ -81,0 +81,0 @@ * 已废弃,请使用repository.proxy对应方法代替

@@ -51,2 +51,3 @@ import { Observable } from 'rxjs';

* 获取单个实体
* @param id 主实体id
*/

@@ -53,0 +54,0 @@ getById(id: string): Observable<T>;

@@ -115,1 +115,17 @@ import { Observable } from 'rxjs';

}
/**
* 子表分页参数
*/
export interface RetrieveParam {
filters: {
[nodeCode: string]: {
pagination: {
pageIndex: number;
pageSize: number;
};
};
};
parentIds?: {
[nodeCode: string]: string;
};
}
{
"name": "@farris/bef",
"version": "0.0.12-20220224135644-dev",
"version": "0.0.12-20220228112818-dev",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^7.2.0",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc