@kaspernj/api-maker 1.0.451 → 1.0.453
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api.js +1 -1
- package/build/api.js.map +1 -0
- package/build/attribute-not-loaded-error.js +1 -1
- package/build/attribute-not-loaded-error.js.map +1 -0
- package/build/base-component.js +1 -1
- package/build/base-component.js.map +1 -0
- package/build/base-error.js +1 -1
- package/build/base-error.js.map +1 -0
- package/build/base-model/attribute.js +1 -1
- package/build/base-model/attribute.js.map +1 -0
- package/build/base-model/column.js +1 -1
- package/build/base-model/column.js.map +1 -0
- package/build/base-model/reflection.js +1 -1
- package/build/base-model/reflection.js.map +1 -0
- package/build/base-model/scope.js +1 -1
- package/build/base-model/scope.js.map +1 -0
- package/build/base-model.js +1 -1
- package/build/base-model.js.map +1 -0
- package/build/bootstrap/attribute-row/index.js +1 -1
- package/build/bootstrap/attribute-row/index.js.map +1 -0
- package/build/bootstrap/attribute-rows.js +1 -1
- package/build/bootstrap/attribute-rows.js.map +1 -0
- package/build/bootstrap/card.js +1 -1
- package/build/bootstrap/card.js.map +1 -0
- package/build/bootstrap/checkbox.js +1 -1
- package/build/bootstrap/checkbox.js.map +1 -0
- package/build/bootstrap/checkboxes.js +1 -1
- package/build/bootstrap/checkboxes.js.map +1 -0
- package/build/bootstrap/index.js +1 -1
- package/build/bootstrap/index.js.map +1 -0
- package/build/bootstrap/input.js +1 -1
- package/build/bootstrap/input.js.map +1 -0
- package/build/bootstrap/invalid-feedback.js +1 -1
- package/build/bootstrap/invalid-feedback.js.map +1 -0
- package/build/bootstrap/paginate.js +1 -1
- package/build/bootstrap/paginate.js.map +1 -0
- package/build/bootstrap/radio-buttons.js +1 -1
- package/build/bootstrap/radio-buttons.js.map +1 -0
- package/build/bootstrap/select.js +1 -1
- package/build/bootstrap/select.js.map +1 -0
- package/build/bootstrap/sort-link.js +1 -1
- package/build/bootstrap/sort-link.js.map +1 -0
- package/build/cable-connection-pool.js +1 -1
- package/build/cable-connection-pool.js.map +1 -0
- package/build/cable-subscription-pool.js +1 -1
- package/build/cable-subscription-pool.js.map +1 -0
- package/build/cable-subscription.js +1 -1
- package/build/cable-subscription.js.map +1 -0
- package/build/cache-key-generator.js +1 -1
- package/build/cache-key-generator.js.map +1 -0
- package/build/can-can.js +1 -1
- package/build/can-can.js.map +1 -0
- package/build/channels-consumer.js +1 -1
- package/build/channels-consumer.js.map +1 -0
- package/build/collection-loader.js +1 -1
- package/build/collection-loader.js.map +1 -0
- package/build/collection.js +1 -1
- package/build/collection.js.map +1 -0
- package/build/command-submit-data.js +1 -1
- package/build/command-submit-data.js.map +1 -0
- package/build/commands-pool.js +1 -1
- package/build/commands-pool.js.map +1 -0
- package/build/compose.js +1 -1
- package/build/compose.js.map +1 -0
- package/build/config.js +1 -1
- package/build/config.js.map +1 -0
- package/build/custom-error.js +1 -1
- package/build/custom-error.js.map +1 -0
- package/build/data-set-to-attributes.js +1 -1
- package/build/data-set-to-attributes.js.map +1 -0
- package/build/deserializer.js +1 -1
- package/build/deserializer.js.map +1 -0
- package/build/destroy-error.js +1 -1
- package/build/destroy-error.js.map +1 -0
- package/build/devise.js +1 -1
- package/build/devise.js.map +1 -0
- package/build/draggable-sort/controller.js +1 -1
- package/build/draggable-sort/controller.js.map +1 -0
- package/build/draggable-sort/index.js +1 -1
- package/build/draggable-sort/index.js.map +1 -0
- package/build/draggable-sort/item.js +1 -1
- package/build/draggable-sort/item.js.map +1 -0
- package/build/error-logger.js +1 -1
- package/build/error-logger.js.map +1 -0
- package/build/error-messages.js +1 -1
- package/build/error-messages.js.map +1 -0
- package/build/event-connection.js +1 -1
- package/build/event-connection.js.map +1 -0
- package/build/event-model-class.js +1 -1
- package/build/event-model-class.js.map +1 -0
- package/build/events.js +1 -1
- package/build/events.js.map +1 -0
- package/build/flash-message.js +1 -1
- package/build/flash-message.js.map +1 -0
- package/build/form.js +1 -1
- package/build/form.js.map +1 -0
- package/build/index.js +1 -1
- package/build/index.js.map +1 -0
- package/build/inputs/attachment.js +1 -1
- package/build/inputs/attachment.js.map +1 -0
- package/build/inputs/auto-submit.js +1 -1
- package/build/inputs/auto-submit.js.map +1 -0
- package/build/inputs/checkbox.js +1 -1
- package/build/inputs/checkbox.js.map +1 -0
- package/build/inputs/checkboxes.js +1 -1
- package/build/inputs/checkboxes.js.map +1 -0
- package/build/inputs/id-for-component.js +1 -1
- package/build/inputs/id-for-component.js.map +1 -0
- package/build/inputs/input-wrapper.js +1 -1
- package/build/inputs/input-wrapper.js.map +1 -0
- package/build/inputs/input.js +1 -1
- package/build/inputs/input.js.map +1 -0
- package/build/inputs/money.js +1 -1
- package/build/inputs/money.js.map +1 -0
- package/build/inputs/name-for-component.js +1 -1
- package/build/inputs/name-for-component.js.map +1 -0
- package/build/inputs/select.js +1 -1
- package/build/inputs/select.js.map +1 -0
- package/build/instance-of-class-name.js +1 -1
- package/build/instance-of-class-name.js.map +1 -0
- package/build/key-value-store.js +1 -1
- package/build/key-value-store.js.map +1 -0
- package/build/link.js +1 -1
- package/build/link.js.map +1 -0
- package/build/logger.js +1 -1
- package/build/logger.js.map +1 -0
- package/build/modal.js +1 -1
- package/build/modal.js.map +1 -0
- package/build/model-class-require.js +1 -1
- package/build/model-class-require.js.map +1 -0
- package/build/model-events.js +1 -1
- package/build/model-events.js.map +1 -0
- package/build/model-name.js +1 -1
- package/build/model-name.js.map +1 -0
- package/build/model-prop-type.js +1 -1
- package/build/model-prop-type.js.map +1 -0
- package/build/model-recipes-loader.js +1 -1
- package/build/model-recipes-loader.js.map +1 -0
- package/build/model-recipes-model-loader.js +1 -1
- package/build/model-recipes-model-loader.js.map +1 -0
- package/build/models-response-reader.js +1 -1
- package/build/models-response-reader.js.map +1 -0
- package/build/models.js +1 -1
- package/build/models.js.map +1 -0
- package/build/money-formatter.js +1 -1
- package/build/money-formatter.js.map +1 -0
- package/build/not-loaded-error.js +1 -1
- package/build/not-loaded-error.js.map +1 -0
- package/build/params.js +1 -1
- package/build/params.js.map +1 -0
- package/build/preloaded.js +1 -1
- package/build/preloaded.js.map +1 -0
- package/build/resize-observer.js +1 -1
- package/build/resize-observer.js.map +1 -0
- package/build/result.js +1 -1
- package/build/result.js.map +1 -0
- package/build/router/route.js +1 -1
- package/build/router/route.js.map +1 -0
- package/build/router/switch.js +1 -1
- package/build/router/switch.js.map +1 -0
- package/build/router.js +1 -1
- package/build/router.js.map +1 -0
- package/build/routes-native.js +1 -1
- package/build/routes-native.js.map +1 -0
- package/build/routes.js +1 -1
- package/build/routes.js.map +1 -0
- package/build/run-last.js +1 -1
- package/build/run-last.js.map +1 -0
- package/build/serializer.js +1 -1
- package/build/serializer.js.map +1 -0
- package/build/services.js +1 -1
- package/build/services.js.map +1 -0
- package/build/session-status-updater.js +1 -1
- package/build/session-status-updater.js.map +1 -0
- package/build/source-maps-loader.js +19 -8
- package/build/source-maps-loader.js.map +1 -0
- package/build/super-admin/config-reader.js +1 -1
- package/build/super-admin/config-reader.js.map +1 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +1 -1
- package/build/super-admin/edit-page/edit-attribute-checkbox.js.map +1 -0
- package/build/super-admin/edit-page/edit-attribute-content.js +1 -1
- package/build/super-admin/edit-page/edit-attribute-content.js.map +1 -0
- package/build/super-admin/edit-page/edit-attribute-input.js +1 -1
- package/build/super-admin/edit-page/edit-attribute-input.js.map +1 -0
- package/build/super-admin/edit-page/edit-attribute.js +1 -1
- package/build/super-admin/edit-page/edit-attribute.js.map +1 -0
- package/build/super-admin/edit-page.js +1 -1
- package/build/super-admin/edit-page.js.map +1 -0
- package/build/super-admin/has-edit-config.js +1 -1
- package/build/super-admin/has-edit-config.js.map +1 -0
- package/build/super-admin/index-page.js +1 -1
- package/build/super-admin/index-page.js.map +1 -0
- package/build/super-admin/index.js +1 -1
- package/build/super-admin/index.js.map +1 -0
- package/build/super-admin/layout/header/index.js +1 -1
- package/build/super-admin/layout/header/index.js.map +1 -0
- package/build/super-admin/layout/index.js +1 -1
- package/build/super-admin/layout/index.js.map +1 -0
- package/build/super-admin/layout/menu/index.js +1 -1
- package/build/super-admin/layout/menu/index.js.map +1 -0
- package/build/super-admin/layout/menu/menu-content.js +1 -1
- package/build/super-admin/layout/menu/menu-content.js.map +1 -0
- package/build/super-admin/layout/menu/menu-item.js +1 -1
- package/build/super-admin/layout/menu/menu-item.js.map +1 -0
- package/build/super-admin/layout/no-access.js +1 -1
- package/build/super-admin/layout/no-access.js.map +1 -0
- package/build/super-admin/model-class-table.js +1 -1
- package/build/super-admin/model-class-table.js.map +1 -0
- package/build/super-admin/models.js +1 -1
- package/build/super-admin/models.js.map +1 -0
- package/build/super-admin/show-nav.js +1 -1
- package/build/super-admin/show-nav.js.map +1 -0
- package/build/super-admin/show-page/belongs-to-attribute-row.js +1 -1
- package/build/super-admin/show-page/belongs-to-attribute-row.js.map +1 -0
- package/build/super-admin/show-page/index.js +1 -1
- package/build/super-admin/show-page/index.js.map +1 -0
- package/build/super-admin/show-reflection-actions.js +1 -1
- package/build/super-admin/show-reflection-actions.js.map +1 -0
- package/build/super-admin/show-reflection-link.js +1 -1
- package/build/super-admin/show-reflection-link.js.map +1 -0
- package/build/super-admin/show-reflection-page.js +1 -1
- package/build/super-admin/show-reflection-page.js.map +1 -0
- package/build/table/column-content.js +1 -1
- package/build/table/column-content.js.map +1 -0
- package/build/table/column-identifier.js +1 -1
- package/build/table/column-identifier.js.map +1 -0
- package/build/table/column-visible.js +1 -1
- package/build/table/column-visible.js.map +1 -0
- package/build/table/components/column.js +1 -1
- package/build/table/components/column.js.map +1 -0
- package/build/table/components/flat-list.js +1 -1
- package/build/table/components/flat-list.js.map +1 -0
- package/build/table/components/header.js +1 -1
- package/build/table/components/header.js.map +1 -0
- package/build/table/components/row.js +1 -1
- package/build/table/components/row.js.map +1 -0
- package/build/table/filters/attribute-element.js +1 -1
- package/build/table/filters/attribute-element.js.map +1 -0
- package/build/table/filters/filter-form.js +1 -1
- package/build/table/filters/filter-form.js.map +1 -0
- package/build/table/filters/filter.js +1 -1
- package/build/table/filters/filter.js.map +1 -0
- package/build/table/filters/index.js +1 -1
- package/build/table/filters/index.js.map +1 -0
- package/build/table/filters/load-search-modal.js +1 -1
- package/build/table/filters/load-search-modal.js.map +1 -0
- package/build/table/filters/reflection-element.js +1 -1
- package/build/table/filters/reflection-element.js.map +1 -0
- package/build/table/filters/save-search-modal.js +1 -1
- package/build/table/filters/save-search-modal.js.map +1 -0
- package/build/table/filters/scope-element.js +1 -1
- package/build/table/filters/scope-element.js.map +1 -0
- package/build/table/header-column-content.js +1 -1
- package/build/table/header-column-content.js.map +1 -0
- package/build/table/header-column.js +1 -1
- package/build/table/header-column.js.map +1 -0
- package/build/table/header-select.js +1 -1
- package/build/table/header-select.js.map +1 -0
- package/build/table/model-callback-args.js +1 -1
- package/build/table/model-callback-args.js.map +1 -0
- package/build/table/model-column.js +1 -1
- package/build/table/model-column.js.map +1 -0
- package/build/table/model-row.js +1 -1
- package/build/table/model-row.js.map +1 -0
- package/build/table/select-calculator.js +1 -1
- package/build/table/select-calculator.js.map +1 -0
- package/build/table/settings/column-row.js +1 -1
- package/build/table/settings/column-row.js.map +1 -0
- package/build/table/settings/download-action.js +1 -1
- package/build/table/settings/download-action.js.map +1 -0
- package/build/table/settings/index.js +1 -1
- package/build/table/settings/index.js.map +1 -0
- package/build/table/table-settings.js +1 -1
- package/build/table/table-settings.js.map +1 -0
- package/build/table/table.js +1 -1
- package/build/table/table.js.map +1 -0
- package/build/table/use-sorting.js +1 -1
- package/build/table/use-sorting.js.map +1 -0
- package/build/table/widths.js +1 -1
- package/build/table/widths.js.map +1 -0
- package/build/table/worker-plugins-check-all-checkbox.js +1 -1
- package/build/table/worker-plugins-check-all-checkbox.js.map +1 -0
- package/build/table/worker-plugins-checkbox.js +1 -1
- package/build/table/worker-plugins-checkbox.js.map +1 -0
- package/build/translated-attributes.js +1 -1
- package/build/translated-attributes.js.map +1 -0
- package/build/translated-collections.js +1 -1
- package/build/translated-collections.js.map +1 -0
- package/build/updated-attribute.js +1 -1
- package/build/updated-attribute.js.map +1 -0
- package/build/url-encode.js +1 -1
- package/build/url-encode.js.map +1 -0
- package/build/use-breakpoint.js +1 -1
- package/build/use-breakpoint.js.map +1 -0
- package/build/use-can-can.js +1 -1
- package/build/use-can-can.js.map +1 -0
- package/build/use-collection.js +1 -1
- package/build/use-collection.js.map +1 -0
- package/build/use-created-event.js +1 -1
- package/build/use-created-event.js.map +1 -0
- package/build/use-current-user.js +1 -1
- package/build/use-current-user.js.map +1 -0
- package/build/use-destroyed-event.js +1 -1
- package/build/use-destroyed-event.js.map +1 -0
- package/build/use-event-emitter.js +1 -1
- package/build/use-event-emitter.js.map +1 -0
- package/build/use-event-listener.js +1 -1
- package/build/use-event-listener.js.map +1 -0
- package/build/use-input.js +1 -1
- package/build/use-input.js.map +1 -0
- package/build/use-model-event.js +1 -1
- package/build/use-model-event.js.map +1 -0
- package/build/use-model.js +1 -1
- package/build/use-model.js.map +1 -0
- package/build/use-resize-observer.js +1 -1
- package/build/use-resize-observer.js.map +1 -0
- package/build/use-router.js +1 -1
- package/build/use-router.js.map +1 -0
- package/build/use-screen-layout.js +1 -1
- package/build/use-screen-layout.js.map +1 -0
- package/build/use-updated-event.js +1 -1
- package/build/use-updated-event.js.map +1 -0
- package/build/use-validation-errors.js +1 -1
- package/build/use-validation-errors.js.map +1 -0
- package/build/utils/card.js +1 -1
- package/build/utils/card.js.map +1 -0
- package/build/utils/checkbox.js +1 -1
- package/build/utils/checkbox.js.map +1 -0
- package/build/utils/default-style.js +1 -1
- package/build/utils/default-style.js.map +1 -0
- package/build/utils/modal.js +1 -1
- package/build/utils/modal.js.map +1 -0
- package/build/utils/text.js +1 -1
- package/build/utils/text.js.map +1 -0
- package/build/validation-error.js +1 -1
- package/build/validation-error.js.map +1 -0
- package/build/validation-errors.js +1 -1
- package/build/validation-errors.js.map +1 -0
- package/build/with-collection.js +1 -1
- package/build/with-collection.js.map +1 -0
- package/build/with-current-user.js +1 -1
- package/build/with-current-user.js.map +1 -0
- package/build/with-model.js +1 -1
- package/build/with-model.js.map +1 -0
- package/build/with-router.js +1 -1
- package/build/with-router.js.map +1 -0
- package/link.sh +8 -0
- package/package.json +2 -2
- package/src/source-maps-loader.js +19 -7
package/build/api.js
CHANGED
|
@@ -117,4 +117,4 @@ export default class Api {
|
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
-
//# sourceMappingURL=
|
|
120
|
+
//# sourceMappingURL=api.js.map
|
package/build/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","names":["config","CustomError","FormDataObjectizer","Logger","qs","SessionStatusUpdater","urlEncode","logger","name","Api","get","path","pathParams","requestLocal","method","delete","patch","data","post","request","headers","requestPath","getHost","pathParamsString","stringify","arrayFormat","encoder","xhr","XMLHttpRequest","open","withCredentials","headerName","setRequestHeader","response","executeXhr","Promise","resolve","reject","onload","_parseResponse","status","customError","FormData","peakflowParameters","toObject","send","args","token","_token","debug","JSON","rawData","put","current","getCsrfToken","responseType","getResponseHeader","startsWith","parse","responseText"],"sources":["../src/api.js"],"sourcesContent":["import config from \"./config\"\nimport CustomError from \"./custom-error\"\nimport FormDataObjectizer from \"form-data-objectizer\"\nimport Logger from \"./logger\"\nimport qs from \"qs\"\nimport SessionStatusUpdater from \"./session-status-updater\"\nimport urlEncode from \"./url-encode\"\n\nconst logger = new Logger({name: \"ApiMaker / Api\"})\n\n// logger.setDebug(true)\n\nexport default class Api {\n static get = async (path, pathParams = null) => await Api.requestLocal({path, pathParams, method: \"GET\"})\n static delete = async (path, pathParams = null) => await Api.requestLocal({path, pathParams, method: \"DELETE\"})\n static patch = async (path, data = {}) => await Api.requestLocal({path, data, method: \"PATCH\"})\n static post = async (path, data = {}) => await Api.requestLocal({path, data, method: \"POST\"})\n\n static async request({data, headers, method, path, pathParams}) {\n let requestPath = \"\"\n if (config.getHost()) requestPath += config.getHost()\n requestPath += path\n\n if (pathParams) {\n const pathParamsString = qs.stringify(pathParams, {arrayFormat: \"brackets\", encoder: urlEncode})\n requestPath += `?${pathParamsString}`\n }\n\n const xhr = new XMLHttpRequest()\n\n xhr.open(method, requestPath, true)\n xhr.withCredentials = true\n\n if (headers) {\n for (const headerName in headers) {\n xhr.setRequestHeader(headerName, headers[headerName])\n }\n }\n\n const response = await Api.executeXhr(xhr, data)\n\n return response\n }\n\n static executeXhr(xhr, data) {\n return new Promise((resolve, reject) => {\n xhr.onload = () => {\n const response = this._parseResponse(xhr)\n\n if (xhr.status == 200) {\n resolve(response)\n } else {\n const customError = new CustomError(`Request failed with code: ${xhr.status}`, {response, xhr})\n\n if (data instanceof FormData) {\n customError.peakflowParameters = FormDataObjectizer.toObject(data)\n } else {\n customError.peakflowParameters = data\n }\n\n reject(customError)\n }\n }\n\n xhr.send(data)\n })\n }\n\n static async requestLocal(args) {\n if (!args.headers) {\n args.headers = {}\n }\n\n const token = await this._token()\n\n logger.debug(() => `Got token: ${token}`)\n\n if (token) {\n args.headers[\"X-CSRF-Token\"] = token\n }\n\n if (args.data) {\n args.headers[\"Content-Type\"] = \"application/json\"\n args.data = JSON.stringify(args.data)\n }\n\n if (args.rawData) {\n args.data = args.rawData\n }\n\n return await this.request(args)\n }\n\n static async put(path, data = {}) {\n return await this.requestLocal({path, data, method: \"PUT\"})\n }\n\n static _token = async () => await SessionStatusUpdater.current().getCsrfToken()\n\n static _parseResponse(xhr) {\n const responseType = xhr.getResponseHeader(\"content-type\")\n\n if (responseType && responseType.startsWith(\"application/json\")) {\n return JSON.parse(xhr.responseText)\n } else {\n return xhr.responseText\n }\n }\n}\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,UAAU;AAC7B,OAAOC,WAAW,MAAM,gBAAgB;AACxC,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,EAAE,MAAM,IAAI;AACnB,OAAOC,oBAAoB,MAAM,0BAA0B;AAC3D,OAAOC,SAAS,MAAM,cAAc;AAEpC,MAAMC,MAAM,GAAG,IAAIJ,MAAM,CAAC;EAACK,IAAI,EAAE;AAAgB,CAAC,CAAC;;AAEnD;;AAEA,eAAe,MAAMC,GAAG,CAAC;EACvB,OAAOC,GAAG,GAAG,MAAAA,CAAOC,IAAI,EAAEC,UAAU,GAAG,IAAI,KAAM,MAAMH,GAAG,CAACI,YAAY,CAAC;IAACF,IAAI;IAAEC,UAAU;IAAEE,MAAM,EAAE;EAAK,CAAC,CAAC;EAC1G,OAAOC,MAAM,GAAG,MAAAA,CAAOJ,IAAI,EAAEC,UAAU,GAAG,IAAI,KAAK,MAAMH,GAAG,CAACI,YAAY,CAAC;IAACF,IAAI;IAAEC,UAAU;IAAEE,MAAM,EAAE;EAAQ,CAAC,CAAC;EAC/G,OAAOE,KAAK,GAAG,MAAAA,CAAOL,IAAI,EAAEM,IAAI,GAAG,CAAC,CAAC,KAAK,MAAMR,GAAG,CAACI,YAAY,CAAC;IAACF,IAAI;IAAEM,IAAI;IAAEH,MAAM,EAAE;EAAO,CAAC,CAAC;EAC/F,OAAOI,IAAI,GAAG,MAAAA,CAAOP,IAAI,EAAEM,IAAI,GAAG,CAAC,CAAC,KAAK,MAAMR,GAAG,CAACI,YAAY,CAAC;IAACF,IAAI;IAAEM,IAAI;IAAEH,MAAM,EAAE;EAAM,CAAC,CAAC;EAE7F,aAAaK,OAAOA,CAAC;IAACF,IAAI;IAAEG,OAAO;IAAEN,MAAM;IAAEH,IAAI;IAAEC;EAAU,CAAC,EAAE;IAC9D,IAAIS,WAAW,GAAG,EAAE;IACpB,IAAIrB,MAAM,CAACsB,OAAO,CAAC,CAAC,EAAED,WAAW,IAAIrB,MAAM,CAACsB,OAAO,CAAC,CAAC;IACrDD,WAAW,IAAIV,IAAI;IAEnB,IAAIC,UAAU,EAAE;MACd,MAAMW,gBAAgB,GAAGnB,EAAE,CAACoB,SAAS,CAACZ,UAAU,EAAE;QAACa,WAAW,EAAE,UAAU;QAAEC,OAAO,EAAEpB;MAAS,CAAC,CAAC;MAChGe,WAAW,IAAI,IAAIE,gBAAgB,EAAE;IACvC;IAEA,MAAMI,GAAG,GAAG,IAAIC,cAAc,CAAC,CAAC;IAEhCD,GAAG,CAACE,IAAI,CAACf,MAAM,EAAEO,WAAW,EAAE,IAAI,CAAC;IACnCM,GAAG,CAACG,eAAe,GAAG,IAAI;IAE1B,IAAIV,OAAO,EAAE;MACX,KAAK,MAAMW,UAAU,IAAIX,OAAO,EAAE;QAChCO,GAAG,CAACK,gBAAgB,CAACD,UAAU,EAAEX,OAAO,CAACW,UAAU,CAAC,CAAC;MACvD;IACF;IAEA,MAAME,QAAQ,GAAG,MAAMxB,GAAG,CAACyB,UAAU,CAACP,GAAG,EAAEV,IAAI,CAAC;IAEhD,OAAOgB,QAAQ;EACjB;EAEA,OAAOC,UAAUA,CAACP,GAAG,EAAEV,IAAI,EAAE;IAC3B,OAAO,IAAIkB,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;MACtCV,GAAG,CAACW,MAAM,GAAG,MAAM;QACjB,MAAML,QAAQ,GAAG,IAAI,CAACM,cAAc,CAACZ,GAAG,CAAC;QAEzC,IAAIA,GAAG,CAACa,MAAM,IAAI,GAAG,EAAE;UACrBJ,OAAO,CAACH,QAAQ,CAAC;QACnB,CAAC,MAAM;UACL,MAAMQ,WAAW,GAAG,IAAIxC,WAAW,CAAC,6BAA6B0B,GAAG,CAACa,MAAM,EAAE,EAAE;YAACP,QAAQ;YAAEN;UAAG,CAAC,CAAC;UAE/F,IAAIV,IAAI,YAAYyB,QAAQ,EAAE;YAC5BD,WAAW,CAACE,kBAAkB,GAAGzC,kBAAkB,CAAC0C,QAAQ,CAAC3B,IAAI,CAAC;UACpE,CAAC,MAAM;YACLwB,WAAW,CAACE,kBAAkB,GAAG1B,IAAI;UACvC;UAEAoB,MAAM,CAACI,WAAW,CAAC;QACrB;MACF,CAAC;MAEDd,GAAG,CAACkB,IAAI,CAAC5B,IAAI,CAAC;IAChB,CAAC,CAAC;EACJ;EAEA,aAAaJ,YAAYA,CAACiC,IAAI,EAAE;IAC9B,IAAI,CAACA,IAAI,CAAC1B,OAAO,EAAE;MACjB0B,IAAI,CAAC1B,OAAO,GAAG,CAAC,CAAC;IACnB;IAEA,MAAM2B,KAAK,GAAG,MAAM,IAAI,CAACC,MAAM,CAAC,CAAC;IAEjCzC,MAAM,CAAC0C,KAAK,CAAC,MAAM,cAAcF,KAAK,EAAE,CAAC;IAEzC,IAAIA,KAAK,EAAE;MACTD,IAAI,CAAC1B,OAAO,CAAC,cAAc,CAAC,GAAG2B,KAAK;IACtC;IAEA,IAAID,IAAI,CAAC7B,IAAI,EAAE;MACb6B,IAAI,CAAC1B,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB;MACjD0B,IAAI,CAAC7B,IAAI,GAAGiC,IAAI,CAAC1B,SAAS,CAACsB,IAAI,CAAC7B,IAAI,CAAC;IACvC;IAEA,IAAI6B,IAAI,CAACK,OAAO,EAAE;MAChBL,IAAI,CAAC7B,IAAI,GAAG6B,IAAI,CAACK,OAAO;IAC1B;IAEA,OAAO,MAAM,IAAI,CAAChC,OAAO,CAAC2B,IAAI,CAAC;EACjC;EAEA,aAAaM,GAAGA,CAACzC,IAAI,EAAEM,IAAI,GAAG,CAAC,CAAC,EAAE;IAChC,OAAO,MAAM,IAAI,CAACJ,YAAY,CAAC;MAACF,IAAI;MAAEM,IAAI;MAAEH,MAAM,EAAE;IAAK,CAAC,CAAC;EAC7D;EAEA,OAAOkC,MAAM,GAAG,MAAAA,CAAA,KAAY,MAAM3C,oBAAoB,CAACgD,OAAO,CAAC,CAAC,CAACC,YAAY,CAAC,CAAC;EAE/E,OAAOf,cAAcA,CAACZ,GAAG,EAAE;IACzB,MAAM4B,YAAY,GAAG5B,GAAG,CAAC6B,iBAAiB,CAAC,cAAc,CAAC;IAE1D,IAAID,YAAY,IAAIA,YAAY,CAACE,UAAU,CAAC,kBAAkB,CAAC,EAAE;MAC/D,OAAOP,IAAI,CAACQ,KAAK,CAAC/B,GAAG,CAACgC,YAAY,CAAC;IACrC,CAAC,MAAM;MACL,OAAOhC,GAAG,CAACgC,YAAY;IACzB;EACF;AACF","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export default class AttributeNotLoadedError extends Error {}
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=attribute-not-loaded-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute-not-loaded-error.js","names":["AttributeNotLoadedError","Error"],"sources":["../src/attribute-not-loaded-error.js"],"sourcesContent":["export default class AttributeNotLoadedError extends Error {}\n"],"mappings":"AAAA,eAAe,MAAMA,uBAAuB,SAASC,KAAK,CAAC","ignoreList":[]}
|
package/build/base-component.js
CHANGED
|
@@ -2,4 +2,4 @@ import { ShapeComponent } from "set-state-compare/src/shape-component";
|
|
|
2
2
|
export default class BaseComponent extends ShapeComponent {
|
|
3
3
|
// Nothing yet.
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=
|
|
5
|
+
//# sourceMappingURL=base-component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-component.js","names":["ShapeComponent","BaseComponent"],"sources":["../src/base-component.jsx"],"sourcesContent":["import {ShapeComponent} from \"set-state-compare/src/shape-component\"\n\nexport default class BaseComponent extends ShapeComponent {\n // Nothing yet.\n}\n"],"mappings":"AAAA,SAAQA,cAAc,QAAO,uCAAuC;AAEpE,eAAe,MAAMC,aAAa,SAASD,cAAc,CAAC;EACxD;AAAA","ignoreList":[]}
|
package/build/base-error.js
CHANGED
|
@@ -30,4 +30,4 @@ export default class BaseError extends Error {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
-
//# sourceMappingURL=
|
|
33
|
+
//# sourceMappingURL=base-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-error.js","names":["dig","digg","errorMessages","BaseError","Error","apiMakerType","constructor","message","args","messageToUse","addResponseErrorsToErrorMessage","response","join","captureStackTrace","errorTypes","map","error"],"sources":["../src/base-error.js"],"sourcesContent":["import {dig, digg} from \"diggerize\"\nimport errorMessages from \"./error-messages\"\n\nexport default class BaseError extends Error {\n static apiMakerType = \"BaseError\"\n\n constructor (message, args = {}) {\n let messageToUse = message\n\n if (\"addResponseErrorsToErrorMessage\" in args && !args.addResponseErrorsToErrorMessage) {\n messageToUse = message\n } else {\n if (typeof args.response == \"object\" && dig(args, \"response\", \"errors\")) {\n if (message) {\n messageToUse = `${messageToUse}: ${errorMessages(args).join(\". \")}`\n } else {\n messageToUse = errorMessages(args).join(\". \")\n }\n }\n }\n\n super(messageToUse)\n this.args = args\n\n // Maintains proper stack trace for where our error was thrown (only available on V8)\n if (Error.captureStackTrace) Error.captureStackTrace(this, BaseError)\n }\n\n errorMessages () {\n return errorMessages(this.args)\n }\n\n errorTypes () {\n if (typeof this.args.response == \"object\") {\n return digg(this, \"args\", \"response\", \"errors\").map((error) => digg(error, \"type\"))\n }\n }\n}\n"],"mappings":"AAAA,SAAQA,GAAG,EAAEC,IAAI,QAAO,WAAW;AACnC,OAAOC,aAAa,MAAM,kBAAkB;AAE5C,eAAe,MAAMC,SAAS,SAASC,KAAK,CAAC;EAC3C,OAAOC,YAAY,GAAG,WAAW;EAEjCC,WAAWA,CAAEC,OAAO,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IAC/B,IAAIC,YAAY,GAAGF,OAAO;IAE1B,IAAI,iCAAiC,IAAIC,IAAI,IAAI,CAACA,IAAI,CAACE,+BAA+B,EAAE;MACtFD,YAAY,GAAGF,OAAO;IACxB,CAAC,MAAM;MACL,IAAI,OAAOC,IAAI,CAACG,QAAQ,IAAI,QAAQ,IAAIX,GAAG,CAACQ,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvE,IAAID,OAAO,EAAE;UACXE,YAAY,GAAG,GAAGA,YAAY,KAAKP,aAAa,CAACM,IAAI,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC,EAAE;QACrE,CAAC,MAAM;UACLH,YAAY,GAAGP,aAAa,CAACM,IAAI,CAAC,CAACI,IAAI,CAAC,IAAI,CAAC;QAC/C;MACF;IACF;IAEA,KAAK,CAACH,YAAY,CAAC;IACnB,IAAI,CAACD,IAAI,GAAGA,IAAI;;IAEhB;IACA,IAAIJ,KAAK,CAACS,iBAAiB,EAAET,KAAK,CAACS,iBAAiB,CAAC,IAAI,EAAEV,SAAS,CAAC;EACvE;EAEAD,aAAaA,CAAA,EAAI;IACf,OAAOA,aAAa,CAAC,IAAI,CAACM,IAAI,CAAC;EACjC;EAEAM,UAAUA,CAAA,EAAI;IACZ,IAAI,OAAO,IAAI,CAACN,IAAI,CAACG,QAAQ,IAAI,QAAQ,EAAE;MACzC,OAAOV,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAACc,GAAG,CAAEC,KAAK,IAAKf,IAAI,CAACe,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF;EACF;AACF","ignoreList":[]}
|
|
@@ -22,4 +22,4 @@ export default class ApiMakerBaseModelAttribute {
|
|
|
22
22
|
isTranslated = () => digg(this, "attributeData", "translated");
|
|
23
23
|
name = () => digg(this, "attributeData", "name");
|
|
24
24
|
}
|
|
25
|
-
//# sourceMappingURL=
|
|
25
|
+
//# sourceMappingURL=attribute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribute.js","names":["Column","digg","ApiMakerBaseModelAttribute","constructor","attributeData","getColumn","column","columnData","isColumn","Boolean","isSelectedByDefault","isTranslated","name"],"sources":["../../src/base-model/attribute.js"],"sourcesContent":["import Column from \"./column\"\nimport {digg} from \"diggerize\"\n\nexport default class ApiMakerBaseModelAttribute {\n constructor(attributeData) {\n this.attributeData = attributeData\n }\n\n getColumn() {\n if (!this.column) {\n const columnData = digg(this, \"attributeData\", \"column\")\n\n if (columnData) {\n this.column = new Column(columnData)\n }\n }\n\n return this.column\n }\n\n isColumn = () => Boolean(digg(this, \"attributeData\", \"column\"))\n\n isSelectedByDefault() {\n const isSelectedByDefault = digg(this, \"attributeData\", \"selected_by_default\")\n\n if (isSelectedByDefault || isSelectedByDefault === null) return true\n\n return false\n }\n\n isTranslated = () => digg(this, \"attributeData\", \"translated\")\n name = () => digg(this, \"attributeData\", \"name\")\n}\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,UAAU;AAC7B,SAAQC,IAAI,QAAO,WAAW;AAE9B,eAAe,MAAMC,0BAA0B,CAAC;EAC9CC,WAAWA,CAACC,aAAa,EAAE;IACzB,IAAI,CAACA,aAAa,GAAGA,aAAa;EACpC;EAEAC,SAASA,CAAA,EAAG;IACV,IAAI,CAAC,IAAI,CAACC,MAAM,EAAE;MAChB,MAAMC,UAAU,GAAGN,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC;MAExD,IAAIM,UAAU,EAAE;QACd,IAAI,CAACD,MAAM,GAAG,IAAIN,MAAM,CAACO,UAAU,CAAC;MACtC;IACF;IAEA,OAAO,IAAI,CAACD,MAAM;EACpB;EAEAE,QAAQ,GAAGA,CAAA,KAAMC,OAAO,CAACR,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;EAE/DS,mBAAmBA,CAAA,EAAG;IACpB,MAAMA,mBAAmB,GAAGT,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,qBAAqB,CAAC;IAE9E,IAAIS,mBAAmB,IAAIA,mBAAmB,KAAK,IAAI,EAAE,OAAO,IAAI;IAEpE,OAAO,KAAK;EACd;EAEAC,YAAY,GAAGA,CAAA,KAAMV,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC;EAC9DW,IAAI,GAAGA,CAAA,KAAMX,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,CAAC;AAClD","ignoreList":[]}
|
|
@@ -8,4 +8,4 @@ export default class ApiMakerBaseModelColumn {
|
|
|
8
8
|
}
|
|
9
9
|
getType = () => digg(this, "columnData", "type");
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=column.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column.js","names":["digg","ApiMakerBaseModelColumn","constructor","columnData","Error","getType"],"sources":["../../src/base-model/column.js"],"sourcesContent":["import {digg} from \"diggerize\"\n\nexport default class ApiMakerBaseModelColumn {\n constructor(columnData) {\n if (!columnData) {\n throw new Error(\"No column data was given\")\n }\n\n this.columnData = columnData\n }\n\n getType = () => digg(this, \"columnData\", \"type\")\n}\n"],"mappings":"AAAA,SAAQA,IAAI,QAAO,WAAW;AAE9B,eAAe,MAAMC,uBAAuB,CAAC;EAC3CC,WAAWA,CAACC,UAAU,EAAE;IACtB,IAAI,CAACA,UAAU,EAAE;MACf,MAAM,IAAIC,KAAK,CAAC,0BAA0B,CAAC;IAC7C;IAEA,IAAI,CAACD,UAAU,GAAGA,UAAU;EAC9B;EAEAE,OAAO,GAAGA,CAAA,KAAML,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC;AAClD","ignoreList":[]}
|
|
@@ -11,4 +11,4 @@ export default class ApiMakerBaseModelReflection {
|
|
|
11
11
|
name = () => inflection.camelize(digg(this, "reflectionData", "name"), true);
|
|
12
12
|
through = () => digg(this, "reflectionData", "through");
|
|
13
13
|
}
|
|
14
|
-
//# sourceMappingURL=
|
|
14
|
+
//# sourceMappingURL=reflection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reflection.js","names":["digg","inflection","modelClassRequire","ApiMakerBaseModelReflection","constructor","reflectionData","foreignKey","macro","modelClass","singularize","camelize","name","through"],"sources":["../../src/base-model/reflection.js"],"sourcesContent":["import {digg} from \"diggerize\"\nimport * as inflection from \"inflection\"\nimport modelClassRequire from \"../model-class-require\"\n\nexport default class ApiMakerBaseModelReflection {\n constructor(reflectionData) {\n this.reflectionData = reflectionData\n }\n\n foreignKey = () => digg(this, \"reflectionData\", \"foreignKey\")\n macro = () => digg(this, \"reflectionData\", \"macro\")\n modelClass = () => modelClassRequire(inflection.singularize(inflection.camelize(digg(this, \"reflectionData\", \"resource_name\"))))\n name = () => inflection.camelize(digg(this, \"reflectionData\", \"name\"), true)\n through = () => digg(this, \"reflectionData\", \"through\")\n}\n"],"mappings":"AAAA,SAAQA,IAAI,QAAO,WAAW;AAC9B,OAAO,KAAKC,UAAU,MAAM,YAAY;AACxC,OAAOC,iBAAiB,MAAM,wBAAwB;AAEtD,eAAe,MAAMC,2BAA2B,CAAC;EAC/CC,WAAWA,CAACC,cAAc,EAAE;IAC1B,IAAI,CAACA,cAAc,GAAGA,cAAc;EACtC;EAEAC,UAAU,GAAGA,CAAA,KAAMN,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,YAAY,CAAC;EAC7DO,KAAK,GAAGA,CAAA,KAAMP,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC;EACnDQ,UAAU,GAAGA,CAAA,KAAMN,iBAAiB,CAACD,UAAU,CAACQ,WAAW,CAACR,UAAU,CAACS,QAAQ,CAACV,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;EAChIW,IAAI,GAAGA,CAAA,KAAMV,UAAU,CAACS,QAAQ,CAACV,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;EAC5EY,OAAO,GAAGA,CAAA,KAAMZ,IAAI,CAAC,IAAI,EAAE,gBAAgB,EAAE,SAAS,CAAC;AACzD","ignoreList":[]}
|
|
@@ -8,4 +8,4 @@ export default class ApiMakerBaseModelScope {
|
|
|
8
8
|
return inflection.camelize(digg(this, "scopeData", "name"), true);
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
-
//# sourceMappingURL=
|
|
11
|
+
//# sourceMappingURL=scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope.js","names":["digg","inflection","ApiMakerBaseModelScope","constructor","scopeData","name","camelize"],"sources":["../../src/base-model/scope.js"],"sourcesContent":["import {digg} from \"diggerize\"\nimport * as inflection from \"inflection\"\n\nexport default class ApiMakerBaseModelScope {\n constructor(scopeData) {\n this.scopeData = scopeData\n }\n\n name() {\n return inflection.camelize(digg(this, \"scopeData\", \"name\"), true)\n }\n}\n"],"mappings":"AAAA,SAAQA,IAAI,QAAO,WAAW;AAC9B,OAAO,KAAKC,UAAU,MAAM,YAAY;AAExC,eAAe,MAAMC,sBAAsB,CAAC;EAC1CC,WAAWA,CAACC,SAAS,EAAE;IACrB,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC5B;EAEAC,IAAIA,CAAA,EAAG;IACL,OAAOJ,UAAU,CAACK,QAAQ,CAACN,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC;EACnE;AACF","ignoreList":[]}
|
package/build/base-model.js
CHANGED
|
@@ -825,4 +825,4 @@ export default class BaseModel {
|
|
|
825
825
|
}
|
|
826
826
|
primaryKey = () => this.readAttributeUnderscore(this.constructor.primaryKey());
|
|
827
827
|
}
|
|
828
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBdHRyaWJ1dGUiLCJBdHRyaWJ1dGVOb3RMb2FkZWRFcnJvciIsIkNhY2hlS2V5R2VuZXJhdG9yIiwiQ29sbGVjdGlvbiIsIkNvbW1hbmRzUG9vbCIsIkNvbmZpZyIsIkN1c3RvbUVycm9yIiwiZGlnZyIsIkZvcm1EYXRhT2JqZWN0aXplciIsImluZmxlY3Rpb24iLCJNb2RlbE5hbWUiLCJOb3RMb2FkZWRFcnJvciIsIm9iamVjdFRvRm9ybURhdGEiLCJSZWZsZWN0aW9uIiwiU2NvcGUiLCJTZXJ2aWNlcyIsIlZhbGlkYXRpb25FcnJvciIsIlZhbGlkYXRpb25FcnJvcnMiLCJvYmplY3RUb1VuZGVyc2NvcmUiLCJvYmplY3QiLCJuZXdPYmplY3QiLCJrZXkiLCJ1bmRlcnNjb3JlS2V5IiwidW5kZXJzY29yZSIsIkJhc2VNb2RlbCIsImFwaU1ha2VyVHlwZSIsImF0dHJpYnV0ZXMiLCJtb2RlbENsYXNzRGF0YSIsInJlc3VsdCIsImF0dHJpYnV0ZUtleSIsImF0dHJpYnV0ZURhdGEiLCJhdHRyaWJ1dGUiLCJwdXNoIiwiaGFzQXR0cmlidXRlIiwiYXR0cmlidXRlTmFtZSIsImxvd2VyQ2FzZUF0dHJpYnV0ZU5hbWUiLCJFcnJvciIsIm5ld0N1c3RvbUV2ZW50IiwidmFsaWRhdGlvbkVycm9ycyIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwic2VuZFZhbGlkYXRpb25FcnJvcnNFdmVudCIsIm9wdGlvbnMiLCJmb3JtIiwiZXZlbnQiLCJkaXNwYXRjaEV2ZW50IiwiZmluZCIsImlkIiwicXVlcnkiLCJwcmltYXJ5S2V5IiwibW9kZWwiLCJyYW5zYWNrIiwiZmlyc3QiLCJmaW5kT3JDcmVhdGVCeSIsImZpbmRPckNyZWF0ZUJ5QXJncyIsImFyZ3MiLCJjdXJyZW50Iiwic2VuZFJlcXVlc3QiLCJhZGRpdGlvbmFsX2RhdGEiLCJhZGRpdGlvbmFsRGF0YSIsImZpbmRfb3JfY3JlYXRlX2J5X2FyZ3MiLCJyZXNvdXJjZV9uYW1lIiwibW9kZWxOYW1lIiwibW9kZWxDbGFzcyIsInNlbGVjdCIsInJhbnNhY2thYmxlQXNzb2NpYXRpb25zIiwicmVsYXRpb25zaGlwcyIsInJlZmxlY3Rpb25zIiwicmVsYXRpb25zaGlwRGF0YSIsInJhbnNhY2thYmxlQXR0cmlidXRlcyIsInJhbnNhY2thYmxlU2NvcGVzIiwic2NvcGVEYXRhIiwic2NvcGUiLCJyZWZsZWN0aW9uIiwibmFtZSIsImZvdW5kUmVmbGVjdGlvbiIsIm1hcCIsImpvaW4iLCJfdG9rZW4iLCJjc3JmVG9rZW5FbGVtZW50IiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwiY29uc3RydWN0b3IiLCJjaGFuZ2VzIiwibmV3UmVjb3JkIiwiaXNOZXdSZWNvcmQiLCJyZWxhdGlvbnNoaXBzQ2FjaGUiLCJkYXRhIiwiYSIsIl9yZWFkTW9kZWxEYXRhRnJvbUFyZ3MiLCJhYmlsaXRpZXMiLCJiIiwibW9kZWxEYXRhIiwiYXNzaWduQXR0cmlidXRlcyIsIm5ld0F0dHJpYnV0ZXMiLCJuZXdWYWx1ZSIsImF0dHJpYnV0ZVVuZGVyc2NvcmUiLCJhcHBseUNoYW5nZSIsImRlbGV0ZUNoYW5nZSIsImlzQXR0cmlidXRlTG9hZGVkIiwib2xkVmFsdWUiLCJyZWFkQXR0cmlidXRlIiwib3JpZ2luYWxWYWx1ZSIsImNhbiIsImdpdmVuQWJpbGl0eU5hbWUiLCJhYmlsaXR5TmFtZSIsImNsb25lIiwiY2FjaGVLZXkiLCJpc1BlcnNpc3RlZCIsImtleVBhcnRzIiwicGFyYW1LZXkiLCJ1cGRhdGVkQXQiLCJnZXRUaW1lIiwidW5pcXVlS2V5IiwibG9jYWxDYWNoZUtleSIsImNhY2hlS2V5R2VuZXJhdG9yIiwibG9jYWwiLCJmdWxsQ2FjaGVLZXkiLCJhbGwiLCJjcmVhdGUiLCJnZXRBdHRyaWJ1dGVzIiwiZGF0YVRvVXNlIiwicmVzcG9uc2UiLCJhZGRDb21tYW5kIiwic2F2ZSIsImNvbW1hbmQiLCJjb2xsZWN0aW9uTmFtZSIsInR5cGUiLCJlcnJvciIsInBhcnNlVmFsaWRhdGlvbkVycm9ycyIsIl9yZWZyZXNoTW9kZWxGcm9tUmVzcG9uc2UiLCJjcmVhdGVSYXciLCJyYXdEYXRhIiwib2JqZWN0RGF0YSIsIl9vYmplY3REYXRhRnJvbUdpdmVuUmF3RGF0YSIsIl9yZWZyZXNoTW9kZWxEYXRhRnJvbVJlc3BvbnNlIiwiZGVzdHJveSIsInF1ZXJ5X3BhcmFtcyIsImNvbGxlY3Rpb24iLCJwYXJhbXMiLCJzdWNjZXNzIiwiaGFuZGxlUmVzcG9uc2VFcnJvciIsImVuc3VyZUFiaWxpdGllcyIsImxpc3RPZkFiaWxpdGllcyIsImFiaWxpdGllc1RvTG9hZCIsImFiaWxpdHlJbkxpc3QiLCJsZW5ndGgiLCJwcmltYXJ5S2V5TmFtZSIsInJhbnNhY2tQYXJhbXMiLCJhYmlsaXRpZXNQYXJhbXMiLCJhbm90aGVyTW9kZWwiLCJuZXdBYmlsaXRpZXMiLCJuZXdBYmlsaXR5IiwiT2JqZWN0IiwiYXNzaWduIiwiaWRlbnRpZmllcktleSIsIl9pZGVudGlmaWVyS2V5IiwiaXNBc3NvY2lhdGlvbkxvYWRlZCIsImFzc29jaWF0aW9uTmFtZSIsImlzQXNzb2NpYXRpb25Mb2FkZWRVbmRlcnNjb3JlIiwiYXNzb2NpYXRpb25OYW1lVW5kZXJzY29yZSIsImlzQXNzb2NpYXRpb25QcmVzZW50IiwidmFsaWRhdGlvbl9lcnJvcnMiLCJ0aHJvd1ZhbGlkYXRpb25FcnJvciIsImh1bWFuQXR0cmlidXRlTmFtZSIsImtleU5hbWUiLCJpMThuIiwiZ2V0STE4biIsInQiLCJzbmFrZUNhc2UiLCJkZWZhdWx0VmFsdWUiLCJodW1hbml6ZSIsImlzQXR0cmlidXRlQ2hhbmdlZCIsImF0dHJpYnV0ZU5hbWVVbmRlcnNjb3JlIiwiYXR0cmlidXRlTmFtZXMiLCJjaGFuZ2VkTWV0aG9kIiwiY2FtZWxpemUiLCJpc0NoYW5nZWQiLCJrZXlzIiwidW5kZWZpbmVkIiwic3RyaW5nIiwic2F2ZWRDaGFuZ2VUb0F0dHJpYnV0ZSIsInByZXZpb3VzTW9kZWxEYXRhIiwiY2hhbmdlZE1ldGhvZE5hbWUiLCJzZXROZXdNb2RlbCIsInNldE5ld01vZGVsRGF0YSIsInJlbGF0aW9uc2hpcE5hbWUiLCJyZWxhdGlvbnNoaXBDYWNoZU5hbWUiLCJKU09OIiwic3RyaW5naWZ5IiwiX2lzRGF0ZUNoYW5nZWQiLCJEYXRlIiwicGFyc2UiLCJfaXNJbnRlZ2VyQ2hhbmdlZCIsInBhcnNlSW50IiwiX2lzU3RyaW5nQ2hhbmdlZCIsIm9sZENvbnZlcnRlZFZhbHVlIiwibmV3Q29udmVydGVkVmFsdWUiLCJyZWxvYWQiLCJwcmVsb2FkIiwicXVlcnlBcmdzIiwic2VsZWN0X2NvbHVtbnMiLCJzZWxlY3RDb2x1bW5zIiwidXBkYXRlIiwic2F2ZVJhdyIsInVwZGF0ZVJhdyIsIm5ld01vZGVsIiwiQXJyYXkiLCJpc0FycmF5IiwiRm9ybURhdGEiLCJub2RlTmFtZSIsImZvcm1EYXRhIiwiZm9ybURhdGFGcm9tT2JqZWN0IiwidG9PYmplY3QiLCJzaW1wbGVfbW9kZWxfZXJyb3JzIiwic2ltcGxlTW9kZWxFcnJvcnMiLCJpc1ZhbGlkIiwiaXNWYWxpZE9uU2VydmVyIiwidmFsaWQiLCJlcnJvcnMiLCJwcmVsb2FkUmVsYXRpb25zaGlwIiwibWFya0ZvckRlc3RydWN0aW9uIiwiX21hcmtlZEZvckRlc3RydWN0aW9uIiwibWFya2VkRm9yRGVzdHJ1Y3Rpb24iLCJ1bmlxdWVLZXlWYWx1ZSIsIm1pbiIsIm1heCIsInJhbmRvbUJldHdlZW4iLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJfY2FsbENvbGxlY3Rpb25Db21tYW5kIiwiY29tbWFuZEFyZ3MiLCJmb3JtT3JEYXRhT2JqZWN0IiwiX2NhbGxNZW1iZXJDb21tYW5kIiwiX3Bvc3REYXRhRnJvbUFyZ3MiLCJwb3N0RGF0YSIsInNlcmlhbGl6ZSIsInJlYWRBdHRyaWJ1dGVVbmRlcnNjb3JlIiwiX2lzUHJlc2VudCIsInZhbHVlIiwibWF0Y2giLCJfbG9hZEJlbG9uZ3NUb1JlZmxlY3Rpb24iLCJyZWZsZWN0aW9uTmFtZSIsIl9yZWFkQmVsb25nc1RvUmVmbGVjdGlvbiIsImxvYWRlZFJlbGF0aW9uc2hpcHMiLCJtb2RlbENsYXNzTmFtZSIsIl9sb2FkSGFzTWFueVJlZmxlY3Rpb24iLCJtb2RlbHMiLCJ0b0FycmF5IiwiX2xvYWRIYXNPbmVSZWZsZWN0aW9uIiwiX3JlYWRIYXNPbmVSZWZsZWN0aW9uIiwicHJlbG9hZGVkUmVsYXRpb25zaGlwcyIsInIiLCJfcmVhZFByZWxvYWRlZFJlbGF0aW9uc2hpcHMiLCJwcmVsb2FkZWQiLCJyZWxhdGlvbnNoaXBDbGFzc0RhdGEiLCJyZWxhdGlvbnNoaXAiLCJyZWxhdGlvbnNoaXBzTGlzdCIsInJlbGF0aW9uc2hpcFR5cGUiLCJyZWxhdGlvbnNoaXBJZCIsImdldE1vZGVsIl0sInNvdXJjZXMiOlsiLi4vc3JjL2Jhc2UtbW9kZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEF0dHJpYnV0ZSBmcm9tIFwiLi9iYXNlLW1vZGVsL2F0dHJpYnV0ZVwiXG5pbXBvcnQgQXR0cmlidXRlTm90TG9hZGVkRXJyb3IgZnJvbSBcIi4vYXR0cmlidXRlLW5vdC1sb2FkZWQtZXJyb3JcIlxuaW1wb3J0IENhY2hlS2V5R2VuZXJhdG9yIGZyb20gXCIuL2NhY2hlLWtleS1nZW5lcmF0b3JcIlxuaW1wb3J0IENvbGxlY3Rpb24gZnJvbSBcIi4vY29sbGVjdGlvblwiXG5pbXBvcnQgQ29tbWFuZHNQb29sIGZyb20gXCIuL2NvbW1hbmRzLXBvb2xcIlxuaW1wb3J0IENvbmZpZyBmcm9tIFwiLi9jb25maWdcIlxuaW1wb3J0IEN1c3RvbUVycm9yIGZyb20gXCIuL2N1c3RvbS1lcnJvclwiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IEZvcm1EYXRhT2JqZWN0aXplciBmcm9tIFwiZm9ybS1kYXRhLW9iamVjdGl6ZXJcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgTW9kZWxOYW1lIGZyb20gXCIuL21vZGVsLW5hbWVcIlxuaW1wb3J0IE5vdExvYWRlZEVycm9yIGZyb20gXCIuL25vdC1sb2FkZWQtZXJyb3JcIlxuaW1wb3J0IG9iamVjdFRvRm9ybURhdGEgZnJvbSBcIm9iamVjdC10by1mb3JtZGF0YVwiXG5pbXBvcnQgUmVmbGVjdGlvbiBmcm9tIFwiLi9iYXNlLW1vZGVsL3JlZmxlY3Rpb25cIlxuaW1wb3J0IFNjb3BlIGZyb20gXCIuL2Jhc2UtbW9kZWwvc2NvcGVcIlxuaW1wb3J0IFNlcnZpY2VzIGZyb20gXCIuL3NlcnZpY2VzXCJcbmltcG9ydCBWYWxpZGF0aW9uRXJyb3IgZnJvbSBcIi4vdmFsaWRhdGlvbi1lcnJvclwiXG5pbXBvcnQge1ZhbGlkYXRpb25FcnJvcnN9IGZyb20gXCIuL3ZhbGlkYXRpb24tZXJyb3JzXCJcblxuY29uc3Qgb2JqZWN0VG9VbmRlcnNjb3JlID0gKG9iamVjdCkgPT4ge1xuICBjb25zdCBuZXdPYmplY3QgPSB7fVxuXG4gIGZvciAoY29uc3Qga2V5IGluIG9iamVjdCkge1xuICAgIGNvbnN0IHVuZGVyc2NvcmVLZXkgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoa2V5KVxuXG4gICAgbmV3T2JqZWN0W3VuZGVyc2NvcmVLZXldID0gb2JqZWN0W2tleV1cbiAgfVxuXG4gIHJldHVybiBuZXdPYmplY3Rcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZU1vZGVsIHtcbiAgc3RhdGljIGFwaU1ha2VyVHlwZSA9IFwiQmFzZU1vZGVsXCJcblxuICBzdGF0aWMgYXR0cmlidXRlcygpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGlnZyh0aGlzLm1vZGVsQ2xhc3NEYXRhKCksIFwiYXR0cmlidXRlc1wiKVxuICAgIGNvbnN0IHJlc3VsdCA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZUtleSBpbiBhdHRyaWJ1dGVzKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVEYXRhID0gYXR0cmlidXRlc1thdHRyaWJ1dGVLZXldXG4gICAgICBjb25zdCBhdHRyaWJ1dGUgPSBuZXcgQXR0cmlidXRlKGF0dHJpYnV0ZURhdGEpXG5cbiAgICAgIHJlc3VsdC5wdXNoKGF0dHJpYnV0ZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBzdGF0aWMgaGFzQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gZGlnZyh0aGlzLm1vZGVsQ2xhc3NEYXRhKCksIFwiYXR0cmlidXRlc1wiKVxuICAgIGNvbnN0IGxvd2VyQ2FzZUF0dHJpYnV0ZU5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZSlcblxuICAgIGlmIChsb3dlckNhc2VBdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHN0YXRpYyBtb2RlbENsYXNzRGF0YSgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJtb2RlbENsYXNzRGF0YSBzaG91bGQgYmUgb3ZlcnJpZGVuIGJ5IGNoaWxkXCIpXG4gIH1cblxuICBzdGF0aWMgbmV3Q3VzdG9tRXZlbnQgPSAodmFsaWRhdGlvbkVycm9ycykgPT4ge1xuICAgIHJldHVybiBuZXcgQ3VzdG9tRXZlbnQoXCJ2YWxpZGF0aW9uLWVycm9yc1wiLCB7ZGV0YWlsOiB2YWxpZGF0aW9uRXJyb3JzfSlcbiAgfVxuXG4gIHN0YXRpYyBzZW5kVmFsaWRhdGlvbkVycm9yc0V2ZW50ID0gKHZhbGlkYXRpb25FcnJvcnMsIG9wdGlvbnMpID0+IHtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmZvcm0pIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0gQmFzZU1vZGVsLm5ld0N1c3RvbUV2ZW50KHZhbGlkYXRpb25FcnJvcnMpXG4gICAgICBvcHRpb25zLmZvcm0uZGlzcGF0Y2hFdmVudChldmVudClcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgZmluZChpZCkge1xuICAgIGNvbnN0IHF1ZXJ5ID0ge31cblxuICAgIHF1ZXJ5W2Ake3RoaXMucHJpbWFyeUtleSgpfV9lcWBdID0gaWRcblxuICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgdGhpcy5yYW5zYWNrKHF1ZXJ5KS5maXJzdCgpXG5cbiAgICBpZiAobW9kZWwpIHtcbiAgICAgIHJldHVybiBtb2RlbFxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgQ3VzdG9tRXJyb3IoXCJSZWNvcmQgbm90IGZvdW5kXCIpXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIGZpbmRPckNyZWF0ZUJ5KGZpbmRPckNyZWF0ZUJ5QXJncywgYXJncyA9IHt9KSB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiTW9kZWxzOjpGaW5kT3JDcmVhdGVCeVwiLCB7XG4gICAgICBhZGRpdGlvbmFsX2RhdGE6IGFyZ3MuYWRkaXRpb25hbERhdGEsXG4gICAgICBmaW5kX29yX2NyZWF0ZV9ieV9hcmdzOiBmaW5kT3JDcmVhdGVCeUFyZ3MsXG4gICAgICByZXNvdXJjZV9uYW1lOiBkaWdnKHRoaXMubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpXG4gICAgfSlcbiAgICBjb25zdCBtb2RlbCA9IGRpZ2cocmVzdWx0LCBcIm1vZGVsXCIpXG5cbiAgICByZXR1cm4gbW9kZWxcbiAgfVxuXG4gIHN0YXRpYyBtb2RlbE5hbWUoKSB7XG4gICAgcmV0dXJuIG5ldyBNb2RlbE5hbWUoe21vZGVsQ2xhc3NEYXRhOiB0aGlzLm1vZGVsQ2xhc3NEYXRhKCl9KVxuICB9XG5cbiAgc3RhdGljIHByaW1hcnlLZXkoKSB7XG4gICAgcmV0dXJuIGRpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcInByaW1hcnlLZXlcIilcbiAgfVxuXG4gIHN0YXRpYyByYW5zYWNrKHF1ZXJ5ID0ge30pIHtcbiAgICByZXR1cm4gbmV3IENvbGxlY3Rpb24oe21vZGVsQ2xhc3M6IHRoaXN9LCB7cmFuc2FjazogcXVlcnl9KVxuICB9XG5cbiAgc3RhdGljIHNlbGVjdChzZWxlY3QpIHtcbiAgICByZXR1cm4gdGhpcy5yYW5zYWNrKCkuc2VsZWN0KHNlbGVjdClcbiAgfVxuXG4gIHN0YXRpYyByYW5zYWNrYWJsZUFzc29jaWF0aW9ucygpIHtcbiAgICBjb25zdCByZWxhdGlvbnNoaXBzID0gZGlnZyh0aGlzLm1vZGVsQ2xhc3NEYXRhKCksIFwicmFuc2Fja2FibGVfYXNzb2NpYXRpb25zXCIpXG4gICAgY29uc3QgcmVmbGVjdGlvbnMgPSBbXVxuXG4gICAgZm9yIChjb25zdCByZWxhdGlvbnNoaXBEYXRhIG9mIHJlbGF0aW9uc2hpcHMpIHtcbiAgICAgIHJlZmxlY3Rpb25zLnB1c2gobmV3IFJlZmxlY3Rpb24ocmVsYXRpb25zaGlwRGF0YSkpXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZmxlY3Rpb25zXG4gIH1cblxuICBzdGF0aWMgcmFuc2Fja2FibGVBdHRyaWJ1dGVzKCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBkaWdnKHRoaXMubW9kZWxDbGFzc0RhdGEoKSwgXCJyYW5zYWNrYWJsZV9hdHRyaWJ1dGVzXCIpXG4gICAgY29uc3QgcmVzdWx0ID0gW11cblxuICAgIGZvciAoY29uc3QgYXR0cmlidXRlRGF0YSBvZiBhdHRyaWJ1dGVzKSB7XG4gICAgICByZXN1bHQucHVzaChuZXcgQXR0cmlidXRlKGF0dHJpYnV0ZURhdGEpKVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIHN0YXRpYyByYW5zYWNrYWJsZVNjb3BlcygpIHtcbiAgICBjb25zdCByYW5zYWNrYWJsZVNjb3BlcyA9IGRpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcInJhbnNhY2thYmxlX3Njb3Blc1wiKVxuICAgIGNvbnN0IHJlc3VsdCA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHNjb3BlRGF0YSBvZiByYW5zYWNrYWJsZVNjb3Blcykge1xuICAgICAgY29uc3Qgc2NvcGUgPSBuZXcgU2NvcGUoc2NvcGVEYXRhKVxuXG4gICAgICByZXN1bHQucHVzaChzY29wZSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBzdGF0aWMgcmVmbGVjdGlvbnMoKSB7XG4gICAgY29uc3QgcmVsYXRpb25zaGlwcyA9IGRpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcInJlbGF0aW9uc2hpcHNcIilcbiAgICBjb25zdCByZWZsZWN0aW9ucyA9IFtdXG5cbiAgICBmb3IgKGNvbnN0IHJlbGF0aW9uc2hpcERhdGEgb2YgcmVsYXRpb25zaGlwcykge1xuICAgICAgY29uc3QgcmVmbGVjdGlvbiA9IG5ldyBSZWZsZWN0aW9uKHJlbGF0aW9uc2hpcERhdGEpXG5cbiAgICAgIHJlZmxlY3Rpb25zLnB1c2gocmVmbGVjdGlvbilcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmbGVjdGlvbnNcbiAgfVxuXG4gIHN0YXRpYyByZWZsZWN0aW9uKG5hbWUpIHtcbiAgICBjb25zdCBmb3VuZFJlZmxlY3Rpb24gPSB0aGlzLnJlZmxlY3Rpb25zKCkuZmluZCgocmVmbGVjdGlvbikgPT4gcmVmbGVjdGlvbi5uYW1lKCkgPT0gbmFtZSlcblxuICAgIGlmICghZm91bmRSZWZsZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggcmVmbGVjdGlvbjogJHtuYW1lfSBpbiAke3RoaXMucmVmbGVjdGlvbnMoKS5tYXAoKHJlZmxlY3Rpb24pID0+IHJlZmxlY3Rpb24ubmFtZSgpKS5qb2luKFwiLCBcIil9YClcbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmRSZWZsZWN0aW9uXG4gIH1cblxuICBzdGF0aWMgX3Rva2VuKCkge1xuICAgIGNvbnN0IGNzcmZUb2tlbkVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwibWV0YVtuYW1lPSdjc3JmLXRva2VuJ11cIilcblxuICAgIGlmIChjc3JmVG9rZW5FbGVtZW50KSB7XG4gICAgICByZXR1cm4gY3NyZlRva2VuRWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpXG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoYXJncyA9IHt9KSB7XG4gICAgdGhpcy5jaGFuZ2VzID0ge31cbiAgICB0aGlzLm5ld1JlY29yZCA9IGFyZ3MuaXNOZXdSZWNvcmRcbiAgICB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZSA9IHt9XG4gICAgdGhpcy5yZWxhdGlvbnNoaXBzID0ge31cblxuICAgIGlmIChhcmdzICYmIGFyZ3MuZGF0YSAmJiBhcmdzLmRhdGEuYSkge1xuICAgICAgdGhpcy5fcmVhZE1vZGVsRGF0YUZyb21BcmdzKGFyZ3MpXG4gICAgfSBlbHNlIGlmIChhcmdzLmEpIHtcbiAgICAgIHRoaXMuYWJpbGl0aWVzID0gYXJncy5iIHx8IHt9XG4gICAgICB0aGlzLm1vZGVsRGF0YSA9IG9iamVjdFRvVW5kZXJzY29yZShhcmdzLmEpXG4gICAgfSBlbHNlIGlmIChhcmdzKSB7XG4gICAgICB0aGlzLmFiaWxpdGllcyA9IHt9XG4gICAgICB0aGlzLm1vZGVsRGF0YSA9IG9iamVjdFRvVW5kZXJzY29yZShhcmdzKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFiaWxpdGllcyA9IHt9XG4gICAgICB0aGlzLm1vZGVsRGF0YSA9IHt9XG4gICAgfVxuICB9XG5cbiAgYXNzaWduQXR0cmlidXRlcyhuZXdBdHRyaWJ1dGVzKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gbmV3QXR0cmlidXRlcykge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBuZXdBdHRyaWJ1dGVzW2tleV1cbiAgICAgIGNvbnN0IGF0dHJpYnV0ZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoa2V5KVxuXG4gICAgICBsZXQgYXBwbHlDaGFuZ2UgPSB0cnVlXG4gICAgICBsZXQgZGVsZXRlQ2hhbmdlID0gZmFsc2VcblxuICAgICAgaWYgKHRoaXMuaXNBdHRyaWJ1dGVMb2FkZWQoa2V5KSkge1xuICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMucmVhZEF0dHJpYnV0ZShrZXkpXG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSB0aGlzLm1vZGVsRGF0YVthdHRyaWJ1dGVVbmRlcnNjb3JlXVxuXG4gICAgICAgIGlmIChuZXdWYWx1ZSA9PSBvbGRWYWx1ZSkge1xuICAgICAgICAgIGFwcGx5Q2hhbmdlID0gZmFsc2VcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWYWx1ZSA9PSBvcmlnaW5hbFZhbHVlKSB7XG4gICAgICAgICAgYXBwbHlDaGFuZ2UgPSBmYWxzZVxuICAgICAgICAgIGRlbGV0ZUNoYW5nZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYXBwbHlDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5jaGFuZ2VzW2F0dHJpYnV0ZVVuZGVyc2NvcmVdID0gbmV3VmFsdWVcbiAgICAgIH0gZWxzZSBpZiAoZGVsZXRlQ2hhbmdlKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmNoYW5nZXNbYXR0cmlidXRlVW5kZXJzY29yZV1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhdHRyaWJ1dGVzKCkge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vZGVsRGF0YSkge1xuICAgICAgcmVzdWx0W2tleV0gPSB0aGlzLm1vZGVsRGF0YVtrZXldXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5jaGFuZ2VzKSB7XG4gICAgICByZXN1bHRba2V5XSA9IHRoaXMuY2hhbmdlc1trZXldXG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgY2FuKGdpdmVuQWJpbGl0eU5hbWUpIHtcbiAgICBjb25zdCBhYmlsaXR5TmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShnaXZlbkFiaWxpdHlOYW1lKVxuXG4gICAgaWYgKCEoYWJpbGl0eU5hbWUgaW4gdGhpcy5hYmlsaXRpZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFiaWxpdHkgJHthYmlsaXR5TmFtZX0gaGFzbid0IGJlZW4gbG9hZGVkIGZvciAke2RpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIil9YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hYmlsaXRpZXNbYWJpbGl0eU5hbWVdXG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKClcblxuICAgIGNsb25lLmFiaWxpdGllcyA9IHsuLi50aGlzLmFiaWxpdGllc31cbiAgICBjbG9uZS5tb2RlbERhdGEgPSB7Li4udGhpcy5tb2RlbERhdGF9XG4gICAgY2xvbmUucmVsYXRpb25zaGlwcyA9IHsuLi50aGlzLnJlbGF0aW9uc2hpcHN9XG4gICAgY2xvbmUucmVsYXRpb25zaGlwc0NhY2hlID0gey4uLnRoaXMucmVsYXRpb25zaGlwc0NhY2hlfVxuXG4gICAgcmV0dXJuIGNsb25lXG4gIH1cblxuICBjYWNoZUtleSgpIHtcbiAgICBpZiAodGhpcy5pc1BlcnNpc3RlZCgpKSB7XG4gICAgICBjb25zdCBrZXlQYXJ0cyA9IFtcbiAgICAgICAgdGhpcy5tb2RlbENsYXNzRGF0YSgpLnBhcmFtS2V5LFxuICAgICAgICB0aGlzLnByaW1hcnlLZXkoKVxuICAgICAgXVxuXG4gICAgICBpZiAoXCJ1cGRhdGVkX2F0XCIgaW4gdGhpcy5tb2RlbERhdGEpIHtcbiAgICAgICAgY29uc3QgdXBkYXRlZEF0ID0gdGhpcy51cGRhdGVkQXQoKVxuXG4gICAgICAgIGlmICh0eXBlb2YgdXBkYXRlZEF0ICE9IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVwZGF0ZWRBdCB3YXNuJ3QgYW4gb2JqZWN0OiAke3R5cGVvZiB1cGRhdGVkQXR9YClcbiAgICAgICAgfSBlbHNlIGlmICghKFwiZ2V0VGltZVwiIGluIHVwZGF0ZWRBdCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVwZGF0ZWRBdCBkaWRuJ3Qgc3VwcG9ydCBnZXRUaW1lIHdpdGggY2xhc3M6ICR7dXBkYXRlZEF0LmNvbnN0cnVjdG9yICYmIHVwZGF0ZWRBdC5jb25zdHJ1Y3Rvci5uYW1lfWApXG4gICAgICAgIH1cblxuICAgICAgICBrZXlQYXJ0cy5wdXNoKGB1cGRhdGVkQXQtJHt0aGlzLnVwZGF0ZWRBdCgpLmdldFRpbWUoKX1gKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ga2V5UGFydHMuam9pbihcIi1cIilcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMudW5pcXVlS2V5KClcbiAgICB9XG4gIH1cblxuICBsb2NhbENhY2hlS2V5KCkge1xuICAgIGNvbnN0IGNhY2hlS2V5R2VuZXJhdG9yID0gbmV3IENhY2hlS2V5R2VuZXJhdG9yKHRoaXMpXG5cbiAgICByZXR1cm4gY2FjaGVLZXlHZW5lcmF0b3IubG9jYWwoKVxuICB9XG5cbiAgZnVsbENhY2hlS2V5KCkge1xuICAgIGNvbnN0IGNhY2hlS2V5R2VuZXJhdG9yID0gbmV3IENhY2hlS2V5R2VuZXJhdG9yKHRoaXMpXG5cbiAgICByZXR1cm4gY2FjaGVLZXlHZW5lcmF0b3IuY2FjaGVLZXkoKVxuICB9XG5cbiAgc3RhdGljIGFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5yYW5zYWNrKClcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZShhdHRyaWJ1dGVzLCBvcHRpb25zKSB7XG4gICAgaWYgKGF0dHJpYnV0ZXMpIHRoaXMuYXNzaWduQXR0cmlidXRlcyhhdHRyaWJ1dGVzKVxuICAgIGNvbnN0IHBhcmFtS2V5ID0gdGhpcy5tb2RlbENsYXNzRGF0YSgpLnBhcmFtS2V5XG4gICAgY29uc3QgbW9kZWxEYXRhID0gdGhpcy5nZXRBdHRyaWJ1dGVzKClcbiAgICBjb25zdCBkYXRhVG9Vc2UgPSB7fVxuICAgIGRhdGFUb1VzZVtwYXJhbUtleV0gPSBtb2RlbERhdGFcbiAgICBsZXQgcmVzcG9uc2VcblxuICAgIHRyeSB7XG4gICAgICByZXNwb25zZSA9IGF3YWl0IENvbW1hbmRzUG9vbC5hZGRDb21tYW5kKFxuICAgICAgICB7XG4gICAgICAgICAgYXJnczoge1xuICAgICAgICAgICAgc2F2ZTogZGF0YVRvVXNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21tYW5kOiBgJHt0aGlzLm1vZGVsQ2xhc3NEYXRhKCkuY29sbGVjdGlvbk5hbWV9LWNyZWF0ZWAsXG4gICAgICAgICAgY29sbGVjdGlvbk5hbWU6IHRoaXMubW9kZWxDbGFzc0RhdGEoKS5jb2xsZWN0aW9uTmFtZSxcbiAgICAgICAgICBwcmltYXJ5S2V5OiB0aGlzLnByaW1hcnlLZXkoKSxcbiAgICAgICAgICB0eXBlOiBcImNyZWF0ZVwiXG4gICAgICAgIH0sXG4gICAgICAgIHt9XG4gICAgICApXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIEJhc2VNb2RlbC5wYXJzZVZhbGlkYXRpb25FcnJvcnMoe2Vycm9yLCBtb2RlbDogdGhpcywgb3B0aW9uc30pXG4gICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5tb2RlbCkge1xuICAgICAgdGhpcy5fcmVmcmVzaE1vZGVsRnJvbVJlc3BvbnNlKHJlc3BvbnNlKVxuICAgICAgdGhpcy5jaGFuZ2VzID0ge31cbiAgICB9XG5cbiAgICByZXR1cm4ge21vZGVsOiB0aGlzLCByZXNwb25zZX1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVJhdyhyYXdEYXRhLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBvYmplY3REYXRhID0gQmFzZU1vZGVsLl9vYmplY3REYXRhRnJvbUdpdmVuUmF3RGF0YShyYXdEYXRhLCBvcHRpb25zKVxuXG4gICAgbGV0IHJlc3BvbnNlXG5cbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChcbiAgICAgICAge1xuICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgIHNhdmU6IG9iamVjdERhdGFcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbW1hbmQ6IGAke3RoaXMubW9kZWxDbGFzc0RhdGEoKS5jb2xsZWN0aW9uTmFtZX0tY3JlYXRlYCxcbiAgICAgICAgICBjb2xsZWN0aW9uTmFtZTogdGhpcy5tb2RlbENsYXNzRGF0YSgpLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgICAgIHByaW1hcnlLZXk6IHRoaXMucHJpbWFyeUtleSgpLFxuICAgICAgICAgIHR5cGU6IFwiY3JlYXRlXCJcbiAgICAgICAgfSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgQmFzZU1vZGVsLnBhcnNlVmFsaWRhdGlvbkVycm9ycyh7ZXJyb3IsIG1vZGVsOiB0aGlzLCBvcHRpb25zfSlcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLm1vZGVsKSB7XG4gICAgICB0aGlzLl9yZWZyZXNoTW9kZWxEYXRhRnJvbVJlc3BvbnNlKHJlc3BvbnNlKVxuICAgICAgdGhpcy5jaGFuZ2VzID0ge31cbiAgICB9XG5cbiAgICByZXR1cm4ge21vZGVsOiB0aGlzLCByZXNwb25zZX1cbiAgfVxuXG4gIGFzeW5jIGRlc3Ryb3koKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChcbiAgICAgIHtcbiAgICAgICAgYXJnczoge3F1ZXJ5X3BhcmFtczogdGhpcy5jb2xsZWN0aW9uICYmIHRoaXMuY29sbGVjdGlvbi5wYXJhbXMoKX0sXG4gICAgICAgIGNvbW1hbmQ6IGAke3RoaXMubW9kZWxDbGFzc0RhdGEoKS5jb2xsZWN0aW9uTmFtZX0tZGVzdHJveWAsXG4gICAgICAgIGNvbGxlY3Rpb25OYW1lOiB0aGlzLm1vZGVsQ2xhc3NEYXRhKCkuY29sbGVjdGlvbk5hbWUsXG4gICAgICAgIHByaW1hcnlLZXk6IHRoaXMucHJpbWFyeUtleSgpLFxuICAgICAgICB0eXBlOiBcImRlc3Ryb3lcIlxuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKVxuXG4gICAgaWYgKHJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICAgIGlmIChyZXNwb25zZS5tb2RlbCkge1xuICAgICAgICB0aGlzLl9yZWZyZXNoTW9kZWxEYXRhRnJvbVJlc3BvbnNlKHJlc3BvbnNlKVxuICAgICAgICB0aGlzLmNoYW5nZXMgPSB7fVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge21vZGVsOiB0aGlzLCByZXNwb25zZX1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYW5kbGVSZXNwb25zZUVycm9yKHJlc3BvbnNlKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGVuc3VyZUFiaWxpdGllcyhsaXN0T2ZBYmlsaXRpZXMpIHtcbiAgICAvLyBQb3B1bGF0ZSBhbiBhcnJheSB3aXRoIGEgbGlzdCBvZiBhYmlsaXRpZXMgY3VycmVudGx5IG5vdCBsb2FkZWRcbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSBbXVxuXG4gICAgZm9yIChjb25zdCBhYmlsaXR5SW5MaXN0IG9mIGxpc3RPZkFiaWxpdGllcykge1xuICAgICAgaWYgKCEoYWJpbGl0eUluTGlzdCBpbiB0aGlzLmFiaWxpdGllcykpIHtcbiAgICAgICAgYWJpbGl0aWVzVG9Mb2FkLnB1c2goYWJpbGl0eUluTGlzdClcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMb2FkIHRoZSBtaXNzaW5nIGFiaWxpdGllcyBpZiBhbnlcbiAgICBpZiAoYWJpbGl0aWVzVG9Mb2FkLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHByaW1hcnlLZXlOYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5wcmltYXJ5S2V5KClcbiAgICAgIGNvbnN0IHJhbnNhY2tQYXJhbXMgPSB7fVxuICAgICAgcmFuc2Fja1BhcmFtc1tgJHtwcmltYXJ5S2V5TmFtZX1fZXFgXSA9IHRoaXMucHJpbWFyeUtleSgpXG5cbiAgICAgIGNvbnN0IGFiaWxpdGllc1BhcmFtcyA9IHt9XG4gICAgICBhYmlsaXRpZXNQYXJhbXNbZGlnZyh0aGlzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKV0gPSBhYmlsaXRpZXNUb0xvYWRcblxuICAgICAgY29uc3QgYW5vdGhlck1vZGVsID0gYXdhaXQgdGhpcy5jb25zdHJ1Y3RvclxuICAgICAgICAucmFuc2FjayhyYW5zYWNrUGFyYW1zKVxuICAgICAgICAuYWJpbGl0aWVzKGFiaWxpdGllc1BhcmFtcylcbiAgICAgICAgLmZpcnN0KClcblxuICAgICAgaWYgKCFhbm90aGVyTW9kZWwpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgbG9vayB1cCB0aGUgc2FtZSBtb2RlbCAke3RoaXMucHJpbWFyeUtleSgpfSB3aXRoIGFiaWxpdGllczogJHthYmlsaXRpZXNUb0xvYWQuam9pbihcIiwgXCIpfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0FiaWxpdGllcyA9IGFub3RoZXJNb2RlbC5hYmlsaXRpZXNcbiAgICAgIGZvciAoY29uc3QgbmV3QWJpbGl0eSBpbiBuZXdBYmlsaXRpZXMpIHtcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNbbmV3QWJpbGl0eV0gPSBuZXdBYmlsaXRpZXNbbmV3QWJpbGl0eV1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRBdHRyaWJ1dGVzID0gKCkgPT4gT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsRGF0YSwgdGhpcy5jaGFuZ2VzKVxuXG4gIGhhbmRsZVJlc3BvbnNlRXJyb3IocmVzcG9uc2UpIHtcbiAgICBCYXNlTW9kZWwucGFyc2VWYWxpZGF0aW9uRXJyb3JzKHttb2RlbDogdGhpcywgcmVzcG9uc2V9KVxuICAgIHRocm93IG5ldyBuZXcgQ3VzdG9tRXJyb3IoXCJSZXNwb25zZSB3YXNuJ3Qgc3VjY2Vzc2Z1bFwiLCB7bW9kZWw6IHRoaXMsIHJlc3BvbnNlfSlcbiAgfVxuXG4gIGlkZW50aWZpZXJLZXkoKSB7XG4gICAgaWYgKCF0aGlzLl9pZGVudGlmaWVyS2V5KSB0aGlzLl9pZGVudGlmaWVyS2V5ID0gdGhpcy5pc1BlcnNpc3RlZCgpID8gdGhpcy5wcmltYXJ5S2V5KCkgOiB0aGlzLnVuaXF1ZUtleSgpXG5cbiAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcktleVxuICB9XG5cbiAgaXNBc3NvY2lhdGlvbkxvYWRlZCA9IChhc3NvY2lhdGlvbk5hbWUpID0+IHRoaXMuaXNBc3NvY2lhdGlvbkxvYWRlZFVuZGVyc2NvcmUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGFzc29jaWF0aW9uTmFtZSkpXG4gIGlzQXNzb2NpYXRpb25Mb2FkZWRVbmRlcnNjb3JlIChhc3NvY2lhdGlvbk5hbWVVbmRlcnNjb3JlKSB7XG4gICAgaWYgKGFzc29jaWF0aW9uTmFtZVVuZGVyc2NvcmUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGUpIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBpc0Fzc29jaWF0aW9uUHJlc2VudChhc3NvY2lhdGlvbk5hbWUpIHtcbiAgICBpZiAodGhpcy5pc0Fzc29jaWF0aW9uTG9hZGVkKGFzc29jaWF0aW9uTmFtZSkpIHJldHVybiB0cnVlXG4gICAgaWYgKGFzc29jaWF0aW9uTmFtZSBpbiB0aGlzLnJlbGF0aW9uc2hpcHMpIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBzdGF0aWMgcGFyc2VWYWxpZGF0aW9uRXJyb3JzKHtlcnJvciwgbW9kZWwsIG9wdGlvbnN9KSB7XG4gICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBWYWxpZGF0aW9uRXJyb3IpKSByZXR1cm5cbiAgICBpZiAoIWVycm9yLmFyZ3MucmVzcG9uc2UudmFsaWRhdGlvbl9lcnJvcnMpIHJldHVyblxuXG4gICAgY29uc3QgdmFsaWRhdGlvbkVycm9ycyA9IG5ldyBWYWxpZGF0aW9uRXJyb3JzKHtcbiAgICAgIG1vZGVsLFxuICAgICAgdmFsaWRhdGlvbkVycm9yczogZGlnZyhlcnJvciwgXCJhcmdzXCIsIFwicmVzcG9uc2VcIiwgXCJ2YWxpZGF0aW9uX2Vycm9yc1wiKVxuICAgIH0pXG5cbiAgICBCYXNlTW9kZWwuc2VuZFZhbGlkYXRpb25FcnJvcnNFdmVudCh2YWxpZGF0aW9uRXJyb3JzLCBvcHRpb25zKVxuXG4gICAgaWYgKCFvcHRpb25zIHx8IG9wdGlvbnMudGhyb3dWYWxpZGF0aW9uRXJyb3IgIT0gZmFsc2UpIHtcbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGh1bWFuQXR0cmlidXRlTmFtZShhdHRyaWJ1dGVOYW1lKSB7XG4gICAgY29uc3Qga2V5TmFtZSA9IGRpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcImkxOG5LZXlcIilcbiAgICBjb25zdCBpMThuID0gQ29uZmlnLmdldEkxOG4oKVxuXG4gICAgaWYgKGkxOG4pIHJldHVybiBpMThuLnQoYGFjdGl2ZXJlY29yZC5hdHRyaWJ1dGVzLiR7a2V5TmFtZX0uJHtCYXNlTW9kZWwuc25ha2VDYXNlKGF0dHJpYnV0ZU5hbWUpfWAsIHtkZWZhdWx0VmFsdWU6IGF0dHJpYnV0ZU5hbWV9KVxuXG4gICAgcmV0dXJuIGluZmxlY3Rpb24uaHVtYW5pemUoYXR0cmlidXRlTmFtZSlcbiAgfVxuXG4gIGlzQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVOYW1lKSB7XG4gICAgY29uc3QgYXR0cmlidXRlTmFtZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZSlcbiAgICBjb25zdCBhdHRyaWJ1dGVEYXRhID0gdGhpcy5tb2RlbENsYXNzRGF0YSgpLmF0dHJpYnV0ZXMuZmluZCgoYXR0cmlidXRlKSA9PiBkaWdnKGF0dHJpYnV0ZSwgXCJuYW1lXCIpID09IGF0dHJpYnV0ZU5hbWVVbmRlcnNjb3JlKVxuXG4gICAgaWYgKCFhdHRyaWJ1dGVEYXRhKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lcyA9IHRoaXMubW9kZWxDbGFzc0RhdGEoKS5hdHRyaWJ1dGVzLm1hcCgoYXR0cmlidXRlKSA9PiBkaWdnKGF0dHJpYnV0ZSwgXCJuYW1lXCIpKVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZTogXCIke2F0dHJpYnV0ZU5hbWV9XCIgaW46ICR7YXR0cmlidXRlTmFtZXMuam9pbihcIiwgXCIpfWApXG4gICAgfVxuXG4gICAgaWYgKCEoYXR0cmlidXRlTmFtZVVuZGVyc2NvcmUgaW4gdGhpcy5jaGFuZ2VzKSlcbiAgICAgIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLm1vZGVsRGF0YVthdHRyaWJ1dGVOYW1lVW5kZXJzY29yZV1cbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY2hhbmdlc1thdHRyaWJ1dGVOYW1lVW5kZXJzY29yZV1cbiAgICBjb25zdCBjaGFuZ2VkTWV0aG9kID0gdGhpc1tgX2lzJHtpbmZsZWN0aW9uLmNhbWVsaXplKGF0dHJpYnV0ZURhdGEudHlwZSwgdHJ1ZSl9Q2hhbmdlZGBdXG5cbiAgICBpZiAoIWNoYW5nZWRNZXRob2QpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERvbid0IGtub3cgaG93IHRvIGhhbmRsZSB0eXBlOiAke2F0dHJpYnV0ZURhdGEudHlwZX1gKVxuXG4gICAgcmV0dXJuIGNoYW5nZWRNZXRob2Qob2xkVmFsdWUsIG5ld1ZhbHVlKVxuICB9XG5cbiAgaXNDaGFuZ2VkKCkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLmNoYW5nZXMpXG5cbiAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cblxuICBpc05ld1JlY29yZCgpIHtcbiAgICBpZiAodGhpcy5uZXdSZWNvcmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMubmV3UmVjb3JkXG4gICAgfSBlbHNlIGlmIChcImlkXCIgaW4gdGhpcy5tb2RlbERhdGEgJiYgdGhpcy5tb2RlbERhdGEuaWQpIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlzUGVyc2lzdGVkID0gKCkgPT4gIXRoaXMuaXNOZXdSZWNvcmQoKVxuXG4gIHN0YXRpYyBzbmFrZUNhc2UgPSAoc3RyaW5nKSA9PiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoc3RyaW5nKVxuXG4gIHNhdmVkQ2hhbmdlVG9BdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkge1xuICAgIGlmICghdGhpcy5wcmV2aW91c01vZGVsRGF0YSlcbiAgICAgIHJldHVybiBmYWxzZVxuXG4gICAgY29uc3QgYXR0cmlidXRlTmFtZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZSlcbiAgICBjb25zdCBhdHRyaWJ1dGVEYXRhID0gdGhpcy5tb2RlbENsYXNzRGF0YSgpLmF0dHJpYnV0ZXMuZmluZCgoYXR0cmlidXRlKSA9PiBhdHRyaWJ1dGUubmFtZSA9PSBhdHRyaWJ1dGVOYW1lVW5kZXJzY29yZSlcblxuICAgIGlmICghYXR0cmlidXRlRGF0YSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlTmFtZXMgPSB0aGlzLm1vZGVsQ2xhc3NEYXRhKCkuYXR0cmlidXRlcy5tYXAoKGF0dHJpYnV0ZSkgPT4gYXR0cmlidXRlLm5hbWUpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGZpbmQgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZTogXCIke2F0dHJpYnV0ZU5hbWV9XCIgaW46ICR7YXR0cmlidXRlTmFtZXMuam9pbihcIiwgXCIpfWApXG4gICAgfVxuXG4gICAgaWYgKCEoYXR0cmlidXRlTmFtZVVuZGVyc2NvcmUgaW4gdGhpcy5wcmV2aW91c01vZGVsRGF0YSkpXG4gICAgICByZXR1cm4gdHJ1ZVxuXG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnByZXZpb3VzTW9kZWxEYXRhW2F0dHJpYnV0ZU5hbWVVbmRlcnNjb3JlXVxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5tb2RlbERhdGFbYXR0cmlidXRlTmFtZVVuZGVyc2NvcmVdXG4gICAgY29uc3QgY2hhbmdlZE1ldGhvZE5hbWUgPSBgX2lzJHtpbmZsZWN0aW9uLmNhbWVsaXplKGF0dHJpYnV0ZURhdGEudHlwZSl9Q2hhbmdlZGBcbiAgICBjb25zdCBjaGFuZ2VkTWV0aG9kID0gdGhpc1tjaGFuZ2VkTWV0aG9kTmFtZV1cblxuICAgIGlmICghY2hhbmdlZE1ldGhvZClcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIHR5cGU6ICR7YXR0cmlidXRlRGF0YS50eXBlfWApXG5cbiAgICByZXR1cm4gY2hhbmdlZE1ldGhvZChvbGRWYWx1ZSwgbmV3VmFsdWUpXG4gIH1cblxuICBzZXROZXdNb2RlbChtb2RlbCkge1xuICAgIHRoaXMuc2V0TmV3TW9kZWxEYXRhKG1vZGVsKVxuXG4gICAgZm9yKGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgaW4gbW9kZWwucmVsYXRpb25zaGlwcykge1xuICAgICAgdGhpcy5yZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcE5hbWVdID0gbW9kZWwucmVsYXRpb25zaGlwc1tyZWxhdGlvbnNoaXBOYW1lXVxuICAgIH1cblxuICAgIGZvcihjb25zdCByZWxhdGlvbnNoaXBDYWNoZU5hbWUgaW4gbW9kZWwucmVsYXRpb25zaGlwc0NhY2hlKSB7XG4gICAgICB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWxhdGlvbnNoaXBDYWNoZU5hbWVdID0gbW9kZWwucmVsYXRpb25zaGlwc0NhY2hlW25hbWVdXG4gICAgfVxuICB9XG5cbiAgc2V0TmV3TW9kZWxEYXRhKG1vZGVsKSB7XG4gICAgaWYgKCEoXCJtb2RlbERhdGFcIiBpbiBtb2RlbCkpIHRocm93IG5ldyBFcnJvcihgTm8gbW9kZWxEYXRhIGluIG1vZGVsOiAke0pTT04uc3RyaW5naWZ5KG1vZGVsKX1gKVxuXG4gICAgdGhpcy5wcmV2aW91c01vZGVsRGF0YSA9IE9iamVjdC5hc3NpZ24oe30sIGRpZ2codGhpcywgXCJtb2RlbERhdGFcIikpXG5cbiAgICBmb3IoY29uc3QgYXR0cmlidXRlTmFtZSBpbiBtb2RlbC5tb2RlbERhdGEpIHtcbiAgICAgIHRoaXMubW9kZWxEYXRhW2F0dHJpYnV0ZU5hbWVdID0gbW9kZWwubW9kZWxEYXRhW2F0dHJpYnV0ZU5hbWVdXG4gICAgfVxuICB9XG5cbiAgX2lzRGF0ZUNoYW5nZWQob2xkVmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgaWYgKERhdGUucGFyc2Uob2xkVmFsdWUpICE9IERhdGUucGFyc2UobmV3VmFsdWUpKVxuICAgICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIF9pc0ludGVnZXJDaGFuZ2VkKG9sZFZhbHVlLCBuZXdWYWx1ZSkge1xuICAgIGlmIChwYXJzZUludChvbGRWYWx1ZSwgMTApICE9IHBhcnNlSW50KG5ld1ZhbHVlLCAxMCkpXG4gICAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgX2lzU3RyaW5nQ2hhbmdlZCAob2xkVmFsdWUsIG5ld1ZhbHVlKSB7XG4gICAgY29uc3Qgb2xkQ29udmVydGVkVmFsdWUgPSBgJHtvbGRWYWx1ZX1gXG4gICAgY29uc3QgbmV3Q29udmVydGVkVmFsdWUgPSBgJHtuZXdWYWx1ZX1gXG5cbiAgICBpZiAob2xkQ29udmVydGVkVmFsdWUgIT0gbmV3Q29udmVydGVkVmFsdWUpXG4gICAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbW9kZWxDbGFzc0RhdGEgPSAoKSA9PiB0aGlzLmNvbnN0cnVjdG9yLm1vZGVsQ2xhc3NEYXRhKClcblxuICBhc3luYyByZWxvYWQoKSB7XG4gICAgY29uc3QgcGFyYW1zID0gdGhpcy5jb2xsZWN0aW9uICYmIHRoaXMuY29sbGVjdGlvbi5wYXJhbXMoKVxuICAgIGNvbnN0IHJhbnNhY2tQYXJhbXMgPSB7fVxuICAgIHJhbnNhY2tQYXJhbXNbYCR7dGhpcy5jb25zdHJ1Y3Rvci5wcmltYXJ5S2V5KCl9X2VxYF0gPSB0aGlzLnByaW1hcnlLZXkoKVxuXG4gICAgbGV0IHF1ZXJ5ID0gdGhpcy5jb25zdHJ1Y3Rvci5yYW5zYWNrKHJhbnNhY2tQYXJhbXMpXG5cbiAgICBpZiAocGFyYW1zKSB7XG4gICAgICBpZiAocGFyYW1zLnByZWxvYWQpIHtcbiAgICAgICAgcXVlcnkucXVlcnlBcmdzLnByZWxvYWQgPSBwYXJhbXMucHJlbG9hZFxuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zLnNlbGVjdCkge1xuICAgICAgICBxdWVyeS5xdWVyeUFyZ3Muc2VsZWN0ID0gcGFyYW1zLnNlbGVjdFxuICAgICAgfVxuXG4gICAgICBpZiAocGFyYW1zLnNlbGVjdF9jb2x1bW5zKSB7XG4gICAgICAgIHF1ZXJ5LnF1ZXJ5QXJncy5zZWxlY3RDb2x1bW5zID0gcGFyYW1zLnNlbGVjdF9jb2x1bW5zXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWwgPSBhd2FpdCBxdWVyeS5maXJzdCgpXG4gICAgdGhpcy5zZXROZXdNb2RlbChtb2RlbClcbiAgICB0aGlzLmNoYW5nZXMgPSB7fVxuICB9XG5cbiAgc2F2ZSgpIHtcbiAgICBpZiAodGhpcy5pc05ld1JlY29yZCgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5jcmVhdGUoKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy51cGRhdGUoKVxuICAgIH1cbiAgfVxuXG4gIHNhdmVSYXcocmF3RGF0YSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHRoaXMuaXNOZXdSZWNvcmQoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmF3KHJhd0RhdGEsIG9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZVJhdyhyYXdEYXRhLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZShuZXdBdHRyaWJ1dGVzLCBvcHRpb25zKSB7XG4gICAgaWYgKG5ld0F0dHJpYnV0ZXMpIHtcbiAgICAgIHRoaXMuYXNzaWduQXR0cmlidXRlcyhuZXdBdHRyaWJ1dGVzKVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmNoYW5nZXMpLmxlbmd0aCA9PSAwKSB7XG4gICAgICByZXR1cm4ge21vZGVsOiB0aGlzfVxuICAgIH1cblxuICAgIGNvbnN0IHBhcmFtS2V5ID0gdGhpcy5tb2RlbENsYXNzRGF0YSgpLnBhcmFtS2V5XG4gICAgY29uc3QgbW9kZWxEYXRhID0gdGhpcy5jaGFuZ2VzXG4gICAgY29uc3QgZGF0YVRvVXNlID0ge31cbiAgICBkYXRhVG9Vc2VbcGFyYW1LZXldID0gbW9kZWxEYXRhXG4gICAgbGV0IHJlc3BvbnNlXG5cbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChcbiAgICAgICAge1xuICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgIHF1ZXJ5X3BhcmFtczogdGhpcy5jb2xsZWN0aW9uICYmIHRoaXMuY29sbGVjdGlvbi5wYXJhbXMoKSxcbiAgICAgICAgICAgIHNhdmU6IGRhdGFUb1VzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tbWFuZDogYCR7dGhpcy5tb2RlbENsYXNzRGF0YSgpLmNvbGxlY3Rpb25OYW1lfS11cGRhdGVgLFxuICAgICAgICAgIGNvbGxlY3Rpb25OYW1lOiB0aGlzLm1vZGVsQ2xhc3NEYXRhKCkuY29sbGVjdGlvbk5hbWUsXG4gICAgICAgICAgcHJpbWFyeUtleTogdGhpcy5wcmltYXJ5S2V5KCksXG4gICAgICAgICAgdHlwZTogXCJ1cGRhdGVcIlxuICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBCYXNlTW9kZWwucGFyc2VWYWxpZGF0aW9uRXJyb3JzKHtlcnJvciwgbW9kZWw6IHRoaXMsIG9wdGlvbnN9KVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xuICAgICAgaWYgKHJlc3BvbnNlLm1vZGVsKSB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hNb2RlbEZyb21SZXNwb25zZShyZXNwb25zZSlcbiAgICAgICAgdGhpcy5jaGFuZ2VzID0ge31cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtyZXNwb25zZSwgbW9kZWw6IHRoaXN9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGFuZGxlUmVzcG9uc2VFcnJvcihyZXNwb25zZSlcbiAgICB9XG4gIH1cblxuICBfcmVmcmVzaE1vZGVsRnJvbVJlc3BvbnNlKHJlc3BvbnNlKSB7XG4gICAgbGV0IG5ld01vZGVsID0gZGlnZyhyZXNwb25zZSwgXCJtb2RlbFwiKVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV3TW9kZWwpKSBuZXdNb2RlbCA9IG5ld01vZGVsWzBdXG5cbiAgICB0aGlzLnNldE5ld01vZGVsKG5ld01vZGVsKVxuICB9XG5cbiAgX3JlZnJlc2hNb2RlbERhdGFGcm9tUmVzcG9uc2UocmVzcG9uc2UpIHtcbiAgICBsZXQgbmV3TW9kZWwgPSBkaWdnKHJlc3BvbnNlLCBcIm1vZGVsXCIpXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXdNb2RlbCkpIG5ld01vZGVsID0gbmV3TW9kZWxbMF1cblxuICAgIHRoaXMuc2V0TmV3TW9kZWxEYXRhKG5ld01vZGVsKVxuICB9XG5cbiAgc3RhdGljIF9vYmplY3REYXRhRnJvbUdpdmVuUmF3RGF0YShyYXdEYXRhLCBvcHRpb25zKSB7XG4gICAgaWYgKHJhd0RhdGEgaW5zdGFuY2VvZiBGb3JtRGF0YSB8fCByYXdEYXRhLm5vZGVOYW1lID09IFwiRk9STVwiKSB7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IEZvcm1EYXRhT2JqZWN0aXplci5mb3JtRGF0YUZyb21PYmplY3QocmF3RGF0YSwgb3B0aW9ucylcblxuICAgICAgcmV0dXJuIEZvcm1EYXRhT2JqZWN0aXplci50b09iamVjdChmb3JtRGF0YSlcbiAgICB9XG5cbiAgICByZXR1cm4gcmF3RGF0YVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlUmF3KHJhd0RhdGEsIG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IG9iamVjdERhdGEgPSBCYXNlTW9kZWwuX29iamVjdERhdGFGcm9tR2l2ZW5SYXdEYXRhKHJhd0RhdGEsIG9wdGlvbnMpXG4gICAgbGV0IHJlc3BvbnNlXG5cbiAgICB0cnkge1xuICAgICAgcmVzcG9uc2UgPSBhd2FpdCBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChcbiAgICAgICAge1xuICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgIHF1ZXJ5X3BhcmFtczogdGhpcy5jb2xsZWN0aW9uICYmIHRoaXMuY29sbGVjdGlvbi5wYXJhbXMoKSxcbiAgICAgICAgICAgIHNhdmU6IG9iamVjdERhdGEsXG4gICAgICAgICAgICBzaW1wbGVfbW9kZWxfZXJyb3JzOiBvcHRpb25zPy5zaW1wbGVNb2RlbEVycm9yc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tbWFuZDogYCR7dGhpcy5tb2RlbENsYXNzRGF0YSgpLmNvbGxlY3Rpb25OYW1lfS11cGRhdGVgLFxuICAgICAgICAgIGNvbGxlY3Rpb25OYW1lOiB0aGlzLm1vZGVsQ2xhc3NEYXRhKCkuY29sbGVjdGlvbk5hbWUsXG4gICAgICAgICAgcHJpbWFyeUtleTogdGhpcy5wcmltYXJ5S2V5KCksXG4gICAgICAgICAgdHlwZTogXCJ1cGRhdGVcIlxuICAgICAgICB9LFxuICAgICAgICB7fVxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBCYXNlTW9kZWwucGFyc2VWYWxpZGF0aW9uRXJyb3JzKHtlcnJvciwgbW9kZWw6IHRoaXMsIG9wdGlvbnN9KVxuICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG5cbiAgICBpZiAocmVzcG9uc2UubW9kZWwpIHtcbiAgICAgIHRoaXMuX3JlZnJlc2hNb2RlbEZyb21SZXNwb25zZShyZXNwb25zZSlcbiAgICAgIHRoaXMuY2hhbmdlcyA9IHt9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtyZXNwb25zZSwgbW9kZWw6IHRoaXN9XG4gIH1cblxuICBpc1ZhbGlkKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBpbXBsZW1lbnRlZCB5ZXRcIilcbiAgfVxuXG4gIGFzeW5jIGlzVmFsaWRPblNlcnZlcigpIHtcbiAgICBjb25zdCBtb2RlbERhdGEgPSB0aGlzLmdldEF0dHJpYnV0ZXMoKVxuICAgIGNvbnN0IHBhcmFtS2V5ID0gdGhpcy5tb2RlbENsYXNzRGF0YSgpLnBhcmFtS2V5XG4gICAgY29uc3QgZGF0YVRvVXNlID0ge31cbiAgICBkYXRhVG9Vc2VbcGFyYW1LZXldID0gbW9kZWxEYXRhXG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1hbmRzUG9vbC5hZGRDb21tYW5kKFxuICAgICAge1xuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgc2F2ZTogZGF0YVRvVXNlXG4gICAgICAgIH0sXG4gICAgICAgIGNvbW1hbmQ6IGAke3RoaXMubW9kZWxDbGFzc0RhdGEoKS5jb2xsZWN0aW9uTmFtZX0tdmFsaWRgLFxuICAgICAgICBjb2xsZWN0aW9uTmFtZTogdGhpcy5tb2RlbENsYXNzRGF0YSgpLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgICBwcmltYXJ5S2V5OiB0aGlzLnByaW1hcnlLZXkoKSxcbiAgICAgICAgdHlwZTogXCJ2YWxpZFwiXG4gICAgICB9LFxuICAgICAge31cbiAgICApXG5cbiAgICByZXR1cm4ge3ZhbGlkOiByZXNwb25zZS52YWxpZCwgZXJyb3JzOiByZXNwb25zZS5lcnJvcnN9XG4gIH1cblxuICBtb2RlbENsYXNzID0gKCkgPT4gdGhpcy5jb25zdHJ1Y3RvclxuXG4gIHByZWxvYWRSZWxhdGlvbnNoaXAocmVsYXRpb25zaGlwTmFtZSwgbW9kZWwpIHtcbiAgICB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZVtCYXNlTW9kZWwuc25ha2VDYXNlKHJlbGF0aW9uc2hpcE5hbWUpXSA9IG1vZGVsXG4gICAgdGhpcy5yZWxhdGlvbnNoaXBzW0Jhc2VNb2RlbC5zbmFrZUNhc2UocmVsYXRpb25zaGlwTmFtZSldID0gbW9kZWxcbiAgfVxuXG4gIG1hcmtGb3JEZXN0cnVjdGlvbigpIHtcbiAgICB0aGlzLl9tYXJrZWRGb3JEZXN0cnVjdGlvbiA9IHRydWVcbiAgfVxuXG4gIG1hcmtlZEZvckRlc3RydWN0aW9uID0gKCkgPT4gdGhpcy5fbWFya2VkRm9yRGVzdHJ1Y3Rpb25cblxuICB1bmlxdWVLZXkoKSB7XG4gICAgaWYgKCF0aGlzLnVuaXF1ZUtleVZhbHVlKSB7XG4gICAgICBjb25zdCBtaW4gPSA1MDAwMDAwMDAwMDAwMDAwXG4gICAgICBjb25zdCBtYXggPSA5MDA3MTk5MjU0NzQwOTkxXG4gICAgICBjb25zdCByYW5kb21CZXR3ZWVuID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpICsgbWluKVxuICAgICAgdGhpcy51bmlxdWVLZXlWYWx1ZSA9IHJhbmRvbUJldHdlZW5cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy51bmlxdWVLZXlWYWx1ZVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIF9jYWxsQ29sbGVjdGlvbkNvbW1hbmQoYXJncywgY29tbWFuZEFyZ3MpIHtcbiAgICBjb25zdCBmb3JtT3JEYXRhT2JqZWN0ID0gYXJncy5hcmdzXG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IENvbW1hbmRzUG9vbC5hZGRDb21tYW5kKGFyZ3MsIGNvbW1hbmRBcmdzKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsZXQgZm9ybVxuXG4gICAgICBpZiAoY29tbWFuZEFyZ3MuZm9ybSkge1xuICAgICAgICBmb3JtID0gY29tbWFuZEFyZ3MuZm9ybVxuICAgICAgfSBlbHNlIGlmIChmb3JtT3JEYXRhT2JqZWN0Py5ub2RlTmFtZSA9PSBcIkZPUk1cIikge1xuICAgICAgICBmb3JtID0gZm9ybU9yRGF0YU9iamVjdFxuICAgICAgfVxuXG4gICAgICBpZiAoZm9ybSkgQmFzZU1vZGVsLnBhcnNlVmFsaWRhdGlvbkVycm9ycyh7ZXJyb3IsIG9wdGlvbnM6IHtmb3JtfX0pXG5cbiAgICAgIHRocm93IGVycm9yXG4gICAgfVxuICB9XG5cbiAgX2NhbGxNZW1iZXJDb21tYW5kID0gKGFyZ3MsIGNvbW1hbmRBcmdzKSA9PiBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChhcmdzLCBjb21tYW5kQXJncylcblxuICBzdGF0aWMgX3Bvc3REYXRhRnJvbUFyZ3MoYXJncykge1xuICAgIGxldCBwb3N0RGF0YVxuXG4gICAgaWYgKGFyZ3MpIHtcbiAgICAgIGlmIChhcmdzIGluc3RhbmNlb2YgRm9ybURhdGEpIHtcbiAgICAgICAgcG9zdERhdGEgPSBhcmdzXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3N0RGF0YSA9IG9iamVjdFRvRm9ybURhdGEuc2VyaWFsaXplKGFyZ3MsIHt9LCBudWxsLCBcImFyZ3NcIilcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zdERhdGEgPSBuZXcgRm9ybURhdGEoKVxuICAgIH1cblxuICAgIHJldHVybiBwb3N0RGF0YVxuICB9XG5cbiAgcmVhZEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKSB7XG4gICAgY29uc3QgYXR0cmlidXRlTmFtZVVuZGVyc2NvcmUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZSlcblxuICAgIHJldHVybiB0aGlzLnJlYWRBdHRyaWJ1dGVVbmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWVVbmRlcnNjb3JlKVxuICB9XG5cbiAgcmVhZEF0dHJpYnV0ZVVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZSkge1xuICAgIGlmIChhdHRyaWJ1dGVOYW1lIGluIHRoaXMuY2hhbmdlcykge1xuICAgICAgcmV0dXJuIHRoaXMuY2hhbmdlc1thdHRyaWJ1dGVOYW1lXVxuICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSBpbiB0aGlzLm1vZGVsRGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMubW9kZWxEYXRhW2F0dHJpYnV0ZU5hbWVdXG4gICAgfSBlbHNlIGlmICh0aGlzLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIC8vIFJldHVybiBudWxsIGlmIHRoaXMgaXMgYSBuZXcgcmVjb3JkIGFuZCB0aGUgYXR0cmlidXRlIG5hbWUgaXMgYSByZWNvZ25pemVkIGF0dHJpYnV0ZVxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IGRpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcImF0dHJpYnV0ZXNcIilcblxuICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1BlcnNpc3RlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgQXR0cmlidXRlTm90TG9hZGVkRXJyb3IoYE5vIHN1Y2ggYXR0cmlidXRlOiAke2RpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIil9IyR7YXR0cmlidXRlTmFtZX06ICR7SlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbERhdGEpfWApXG4gICAgfVxuICB9XG5cbiAgaXNBdHRyaWJ1dGVMb2FkZWQoYXR0cmlidXRlTmFtZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVVbmRlcnNjb3JlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWUpXG5cbiAgICBpZiAoYXR0cmlidXRlTmFtZVVuZGVyc2NvcmUgaW4gdGhpcy5jaGFuZ2VzKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChhdHRyaWJ1dGVOYW1lVW5kZXJzY29yZSBpbiB0aGlzLm1vZGVsRGF0YSkgcmV0dXJuIHRydWVcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIF9pc1ByZXNlbnQodmFsdWUpIHtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcInN0cmluZ1wiICYmIHZhbHVlLm1hdGNoKC9eXFxzKiQvKSkge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGFzeW5jIF9sb2FkQmVsb25nc1RvUmVmbGVjdGlvbihhcmdzLCBxdWVyeUFyZ3MgPSB7fSkge1xuICAgIGlmIChhcmdzLnJlZmxlY3Rpb25OYW1lIGluIHRoaXMucmVsYXRpb25zaGlwcykge1xuICAgICAgcmV0dXJuIHRoaXMucmVsYXRpb25zaGlwc1thcmdzLnJlZmxlY3Rpb25OYW1lXVxuICAgIH0gZWxzZSBpZiAoYXJncy5yZWZsZWN0aW9uTmFtZSBpbiB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVsYXRpb25zaGlwc0NhY2hlW2FyZ3MucmVmbGVjdGlvbk5hbWVdXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbGxlY3Rpb24gPSBuZXcgQ29sbGVjdGlvbihhcmdzLCBxdWVyeUFyZ3MpXG4gICAgICBjb25zdCBtb2RlbCA9IGF3YWl0IGNvbGxlY3Rpb24uZmlyc3QoKVxuICAgICAgdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGVbYXJncy5yZWZsZWN0aW9uTmFtZV0gPSBtb2RlbFxuICAgICAgcmV0dXJuIG1vZGVsXG4gICAgfVxuICB9XG5cbiAgX3JlYWRCZWxvbmdzVG9SZWZsZWN0aW9uKHtyZWZsZWN0aW9uTmFtZX0pIHtcbiAgICBpZiAocmVmbGVjdGlvbk5hbWUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXVxuICAgIH0gZWxzZSBpZiAocmVmbGVjdGlvbk5hbWUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWZsZWN0aW9uTmFtZV1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc05ld1JlY29yZCgpKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgbG9hZGVkUmVsYXRpb25zaGlwcyA9IE9iamVjdC5rZXlzKHRoaXMucmVsYXRpb25zaGlwc0NhY2hlKVxuICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gZGlnZyh0aGlzLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgdGhyb3cgbmV3IE5vdExvYWRlZEVycm9yKGAke21vZGVsQ2xhc3NOYW1lfSMke3JlZmxlY3Rpb25OYW1lfSBoYXNuJ3QgYmVlbiBsb2FkZWQgeWV0LiBPbmx5IHRoZXNlIHdlcmUgbG9hZGVkOiAke2xvYWRlZFJlbGF0aW9uc2hpcHMuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICBhc3luYyBfbG9hZEhhc01hbnlSZWZsZWN0aW9uKGFyZ3MsIHF1ZXJ5QXJncyA9IHt9KSB7XG4gICAgaWYgKGFyZ3MucmVmbGVjdGlvbk5hbWUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzW2FyZ3MucmVmbGVjdGlvbk5hbWVdXG4gICAgfSBlbHNlIGlmIChhcmdzLnJlZmxlY3Rpb25OYW1lIGluIHRoaXMucmVsYXRpb25zaGlwc0NhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGVbYXJncy5yZWZsZWN0aW9uTmFtZV1cbiAgICB9XG5cbiAgICBjb25zdCBjb2xsZWN0aW9uID0gbmV3IENvbGxlY3Rpb24oYXJncywgcXVlcnlBcmdzKVxuICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IGNvbGxlY3Rpb24udG9BcnJheSgpXG5cbiAgICB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZVthcmdzLnJlZmxlY3Rpb25OYW1lXSA9IG1vZGVsc1xuXG4gICAgcmV0dXJuIG1vZGVsc1xuICB9XG5cbiAgYXN5bmMgX2xvYWRIYXNPbmVSZWZsZWN0aW9uKGFyZ3MsIHF1ZXJ5QXJncyA9IHt9KSB7XG4gICAgaWYgKGFyZ3MucmVmbGVjdGlvbk5hbWUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzW2FyZ3MucmVmbGVjdGlvbk5hbWVdXG4gICAgfSBlbHNlIGlmIChhcmdzLnJlZmxlY3Rpb25OYW1lIGluIHRoaXMucmVsYXRpb25zaGlwc0NhY2hlKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGVbYXJncy5yZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG5ldyBDb2xsZWN0aW9uKGFyZ3MsIHF1ZXJ5QXJncylcbiAgICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgY29sbGVjdGlvbi5maXJzdCgpXG5cbiAgICAgIHRoaXMucmVsYXRpb25zaGlwc0NhY2hlW2FyZ3MucmVmbGVjdGlvbk5hbWVdID0gbW9kZWxcblxuICAgICAgcmV0dXJuIG1vZGVsXG4gICAgfVxuICB9XG5cbiAgX3JlYWRIYXNPbmVSZWZsZWN0aW9uKHtyZWZsZWN0aW9uTmFtZX0pIHtcbiAgICBpZiAocmVmbGVjdGlvbk5hbWUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxhdGlvbnNoaXBzW3JlZmxlY3Rpb25OYW1lXVxuICAgIH0gZWxzZSBpZiAocmVmbGVjdGlvbk5hbWUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWZsZWN0aW9uTmFtZV1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc05ld1JlY29yZCgpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IGxvYWRlZFJlbGF0aW9uc2hpcHMgPSBPYmplY3Qua2V5cyh0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZSlcbiAgICBjb25zdCBtb2RlbENsYXNzTmFtZSA9IGRpZ2codGhpcy5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcblxuICAgIHRocm93IG5ldyBOb3RMb2FkZWRFcnJvcihgJHttb2RlbENsYXNzTmFtZX0jJHtyZWZsZWN0aW9uTmFtZX0gaGFzbid0IGJlZW4gbG9hZGVkIHlldC4gT25seSB0aGVzZSB3ZXJlIGxvYWRlZDogJHtsb2FkZWRSZWxhdGlvbnNoaXBzLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgX3JlYWRNb2RlbERhdGFGcm9tQXJncyhhcmdzKSB7XG4gICAgdGhpcy5hYmlsaXRpZXMgPSBhcmdzLmRhdGEuYiB8fCB7fVxuICAgIHRoaXMuY29sbGVjdGlvbiA9IGFyZ3MuY29sbGVjdGlvblxuICAgIHRoaXMubW9kZWxEYXRhID0gb2JqZWN0VG9VbmRlcnNjb3JlKGFyZ3MuZGF0YS5hKVxuICAgIHRoaXMucHJlbG9hZGVkUmVsYXRpb25zaGlwcyA9IGFyZ3MuZGF0YS5yXG4gIH1cblxuICBfcmVhZFByZWxvYWRlZFJlbGF0aW9uc2hpcHMocHJlbG9hZGVkKSB7XG4gICAgaWYgKCF0aGlzLnByZWxvYWRlZFJlbGF0aW9uc2hpcHMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0aW9uc2hpcHMgPSBkaWdnKHRoaXMubW9kZWxDbGFzc0RhdGEoKSwgXCJyZWxhdGlvbnNoaXBzXCIpXG5cbiAgICBmb3IgKGNvbnN0IHJlbGF0aW9uc2hpcE5hbWUgaW4gdGhpcy5wcmVsb2FkZWRSZWxhdGlvbnNoaXBzKSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBEYXRhID0gdGhpcy5wcmVsb2FkZWRSZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcE5hbWVdXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBDbGFzc0RhdGEgPSByZWxhdGlvbnNoaXBzLmZpbmQoKHJlbGF0aW9uc2hpcCkgPT4gZGlnZyhyZWxhdGlvbnNoaXAsIFwibmFtZVwiKSA9PSByZWxhdGlvbnNoaXBOYW1lKVxuXG4gICAgICBpZiAoIXJlbGF0aW9uc2hpcENsYXNzRGF0YSkge1xuICAgICAgICBjb25zdCBtb2RlbE5hbWUgPSBkaWdnKHRoaXMubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpXG4gICAgICAgIGNvbnN0IHJlbGF0aW9uc2hpcHNMaXN0ID0gcmVsYXRpb25zaGlwcy5tYXAoKHJlbGF0aW9uc2hpcCkgPT4gcmVsYXRpb25zaGlwLm5hbWUpLmpvaW4oXCIsIFwiKVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgdGhlIHJlbGF0aW9uICR7cmVsYXRpb25zaGlwTmFtZX0gb24gdGhlICR7bW9kZWxOYW1lfSBtb2RlbDogJHtyZWxhdGlvbnNoaXBzTGlzdH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBUeXBlID0gZGlnZyhyZWxhdGlvbnNoaXBDbGFzc0RhdGEsIFwiY29sbGVjdGlvbk5hbWVcIilcblxuICAgICAgaWYgKHJlbGF0aW9uc2hpcE5hbWUgaW4gdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlbGF0aW9uc2hpcE5hbWV9IGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkYClcbiAgICAgIH1cblxuICAgICAgaWYgKCFyZWxhdGlvbnNoaXBDbGFzc0RhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyByZWxhdGlvbnNoaXAgb24gJHtkaWdnKHRoaXMubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpfSBieSB0aGF0IG5hbWU6ICR7cmVsYXRpb25zaGlwTmFtZX1gKVxuICAgICAgfVxuXG4gICAgICBpZiAoIXJlbGF0aW9uc2hpcERhdGEpIHtcbiAgICAgICAgdGhpcy5yZWxhdGlvbnNoaXBzQ2FjaGVbcmVsYXRpb25zaGlwTmFtZV0gPSBudWxsXG4gICAgICAgIHRoaXMucmVsYXRpb25zaGlwc1tyZWxhdGlvbnNoaXBOYW1lXSA9IG51bGxcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShyZWxhdGlvbnNoaXBEYXRhKSkge1xuICAgICAgICB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWxhdGlvbnNoaXBOYW1lXSA9IFtdXG4gICAgICAgIHRoaXMucmVsYXRpb25zaGlwc1tyZWxhdGlvbnNoaXBOYW1lXSA9IFtdXG5cbiAgICAgICAgZm9yIChjb25zdCByZWxhdGlvbnNoaXBJZCBvZiByZWxhdGlvbnNoaXBEYXRhKSB7XG4gICAgICAgICAgY29uc3QgbW9kZWwgPSBwcmVsb2FkZWQuZ2V0TW9kZWwocmVsYXRpb25zaGlwVHlwZSwgcmVsYXRpb25zaGlwSWQpXG5cbiAgICAgICAgICB0aGlzLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWxhdGlvbnNoaXBOYW1lXS5wdXNoKG1vZGVsKVxuICAgICAgICAgIHRoaXMucmVsYXRpb25zaGlwc1tyZWxhdGlvbnNoaXBOYW1lXS5wdXNoKG1vZGVsKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtb2RlbCA9IHByZWxvYWRlZC5nZXRNb2RlbChyZWxhdGlvbnNoaXBUeXBlLCByZWxhdGlvbnNoaXBEYXRhKVxuXG4gICAgICAgIHRoaXMucmVsYXRpb25zaGlwc0NhY2hlW3JlbGF0aW9uc2hpcE5hbWVdID0gbW9kZWxcbiAgICAgICAgdGhpcy5yZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcE5hbWVdID0gbW9kZWxcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcmltYXJ5S2V5ID0gKCkgPT4gdGhpcy5yZWFkQXR0cmlidXRlVW5kZXJzY29yZSh0aGlzLmNvbnN0cnVjdG9yLnByaW1hcnlLZXkoKSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsU0FBUyxNQUFNLHdCQUF3QjtBQUM5QyxPQUFPQyx1QkFBdUIsTUFBTSw4QkFBOEI7QUFDbEUsT0FBT0MsaUJBQWlCLE1BQU0sdUJBQXVCO0FBQ3JELE9BQU9DLFVBQVUsTUFBTSxjQUFjO0FBQ3JDLE9BQU9DLFlBQVksTUFBTSxpQkFBaUI7QUFDMUMsT0FBT0MsTUFBTSxNQUFNLFVBQVU7QUFDN0IsT0FBT0MsV0FBVyxNQUFNLGdCQUFnQjtBQUN4QyxTQUFRQyxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPQyxrQkFBa0IsTUFBTSxzQkFBc0I7QUFDckQsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxTQUFTLE1BQU0sY0FBYztBQUNwQyxPQUFPQyxjQUFjLE1BQU0sb0JBQW9CO0FBQy9DLE9BQU9DLGdCQUFnQixNQUFNLG9CQUFvQjtBQUNqRCxPQUFPQyxVQUFVLE1BQU0seUJBQXlCO0FBQ2hELE9BQU9DLEtBQUssTUFBTSxvQkFBb0I7QUFDdEMsT0FBT0MsUUFBUSxNQUFNLFlBQVk7QUFDakMsT0FBT0MsZUFBZSxNQUFNLG9CQUFvQjtBQUNoRCxTQUFRQyxnQkFBZ0IsUUFBTyxxQkFBcUI7QUFFcEQsTUFBTUMsa0JBQWtCLEdBQUlDLE1BQU0sSUFBSztFQUNyQyxNQUFNQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0VBRXBCLEtBQUssTUFBTUMsR0FB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
|
|
828
|
+
//# sourceMappingURL=base-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-model.js","names":["Attribute","AttributeNotLoadedError","CacheKeyGenerator","Collection","CommandsPool","Config","CustomError","digg","FormDataObjectizer","inflection","ModelName","NotLoadedError","objectToFormData","Reflection","Scope","Services","ValidationError","ValidationErrors","objectToUnderscore","object","newObject","key","underscoreKey","underscore","BaseModel","apiMakerType","attributes","modelClassData","result","attributeKey","attributeData","attribute","push","hasAttribute","attributeName","lowerCaseAttributeName","Error","newCustomEvent","validationErrors","CustomEvent","detail","sendValidationErrorsEvent","options","form","event","dispatchEvent","find","id","query","primaryKey","model","ransack","first","findOrCreateBy","findOrCreateByArgs","args","current","sendRequest","additional_data","additionalData","find_or_create_by_args","resource_name","modelName","modelClass","select","ransackableAssociations","relationships","reflections","relationshipData","ransackableAttributes","ransackableScopes","scopeData","scope","reflection","name","foundReflection","map","join","_token","csrfTokenElement","document","querySelector","getAttribute","constructor","changes","newRecord","isNewRecord","relationshipsCache","data","a","_readModelDataFromArgs","abilities","b","modelData","assignAttributes","newAttributes","newValue","attributeUnderscore","applyChange","deleteChange","isAttributeLoaded","oldValue","readAttribute","originalValue","can","givenAbilityName","abilityName","clone","cacheKey","isPersisted","keyParts","paramKey","updatedAt","getTime","uniqueKey","localCacheKey","cacheKeyGenerator","local","fullCacheKey","all","create","getAttributes","dataToUse","response","addCommand","save","command","collectionName","type","error","parseValidationErrors","_refreshModelFromResponse","createRaw","rawData","objectData","_objectDataFromGivenRawData","_refreshModelDataFromResponse","destroy","query_params","collection","params","success","handleResponseError","ensureAbilities","listOfAbilities","abilitiesToLoad","abilityInList","length","primaryKeyName","ransackParams","abilitiesParams","anotherModel","newAbilities","newAbility","Object","assign","identifierKey","_identifierKey","isAssociationLoaded","associationName","isAssociationLoadedUnderscore","associationNameUnderscore","isAssociationPresent","validation_errors","throwValidationError","humanAttributeName","keyName","i18n","getI18n","t","snakeCase","defaultValue","humanize","isAttributeChanged","attributeNameUnderscore","attributeNames","changedMethod","camelize","isChanged","keys","undefined","string","savedChangeToAttribute","previousModelData","changedMethodName","setNewModel","setNewModelData","relationshipName","relationshipCacheName","JSON","stringify","_isDateChanged","Date","parse","_isIntegerChanged","parseInt","_isStringChanged","oldConvertedValue","newConvertedValue","reload","preload","queryArgs","select_columns","selectColumns","update","saveRaw","updateRaw","newModel","Array","isArray","FormData","nodeName","formData","formDataFromObject","toObject","simple_model_errors","simpleModelErrors","isValid","isValidOnServer","valid","errors","preloadRelationship","markForDestruction","_markedForDestruction","markedForDestruction","uniqueKeyValue","min","max","randomBetween","Math","floor","random","_callCollectionCommand","commandArgs","formOrDataObject","_callMemberCommand","_postDataFromArgs","postData","serialize","readAttributeUnderscore","_isPresent","value","match","_loadBelongsToReflection","reflectionName","_readBelongsToReflection","loadedRelationships","modelClassName","_loadHasManyReflection","models","toArray","_loadHasOneReflection","_readHasOneReflection","preloadedRelationships","r","_readPreloadedRelationships","preloaded","relationshipClassData","relationship","relationshipsList","relationshipType","relationshipId","getModel"],"sources":["../src/base-model.js"],"sourcesContent":["import Attribute from \"./base-model/attribute\"\nimport AttributeNotLoadedError from \"./attribute-not-loaded-error\"\nimport CacheKeyGenerator from \"./cache-key-generator\"\nimport Collection from \"./collection\"\nimport CommandsPool from \"./commands-pool\"\nimport Config from \"./config\"\nimport CustomError from \"./custom-error\"\nimport {digg} from \"diggerize\"\nimport FormDataObjectizer from \"form-data-objectizer\"\nimport * as inflection from \"inflection\"\nimport ModelName from \"./model-name\"\nimport NotLoadedError from \"./not-loaded-error\"\nimport objectToFormData from \"object-to-formdata\"\nimport Reflection from \"./base-model/reflection\"\nimport Scope from \"./base-model/scope\"\nimport Services from \"./services\"\nimport ValidationError from \"./validation-error\"\nimport {ValidationErrors} from \"./validation-errors\"\n\nconst objectToUnderscore = (object) => {\n const newObject = {}\n\n for (const key in object) {\n const underscoreKey = inflection.underscore(key)\n\n newObject[underscoreKey] = object[key]\n }\n\n return newObject\n}\n\nexport default class BaseModel {\n static apiMakerType = \"BaseModel\"\n\n static attributes() {\n const attributes = digg(this.modelClassData(), \"attributes\")\n const result = []\n\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey]\n const attribute = new Attribute(attributeData)\n\n result.push(attribute)\n }\n\n return result\n }\n\n static hasAttribute(attributeName) {\n const attributes = digg(this.modelClassData(), \"attributes\")\n const lowerCaseAttributeName = inflection.underscore(attributeName)\n\n if (lowerCaseAttributeName in attributes) return true\n\n return false\n }\n\n static modelClassData() {\n throw new Error(\"modelClassData should be overriden by child\")\n }\n\n static newCustomEvent = (validationErrors) => {\n return new CustomEvent(\"validation-errors\", {detail: validationErrors})\n }\n\n static sendValidationErrorsEvent = (validationErrors, options) => {\n if (options && options.form) {\n const event = BaseModel.newCustomEvent(validationErrors)\n options.form.dispatchEvent(event)\n }\n }\n\n static async find(id) {\n const query = {}\n\n query[`${this.primaryKey()}_eq`] = id\n\n const model = await this.ransack(query).first()\n\n if (model) {\n return model\n } else {\n throw new CustomError(\"Record not found\")\n }\n }\n\n static async findOrCreateBy(findOrCreateByArgs, args = {}) {\n const result = await Services.current().sendRequest(\"Models::FindOrCreateBy\", {\n additional_data: args.additionalData,\n find_or_create_by_args: findOrCreateByArgs,\n resource_name: digg(this.modelClassData(), \"name\")\n })\n const model = digg(result, \"model\")\n\n return model\n }\n\n static modelName() {\n return new ModelName({modelClassData: this.modelClassData()})\n }\n\n static primaryKey() {\n return digg(this.modelClassData(), \"primaryKey\")\n }\n\n static ransack(query = {}) {\n return new Collection({modelClass: this}, {ransack: query})\n }\n\n static select(select) {\n return this.ransack().select(select)\n }\n\n static ransackableAssociations() {\n const relationships = digg(this.modelClassData(), \"ransackable_associations\")\n const reflections = []\n\n for (const relationshipData of relationships) {\n reflections.push(new Reflection(relationshipData))\n }\n\n return reflections\n }\n\n static ransackableAttributes() {\n const attributes = digg(this.modelClassData(), \"ransackable_attributes\")\n const result = []\n\n for (const attributeData of attributes) {\n result.push(new Attribute(attributeData))\n }\n\n return result\n }\n\n static ransackableScopes() {\n const ransackableScopes = digg(this.modelClassData(), \"ransackable_scopes\")\n const result = []\n\n for (const scopeData of ransackableScopes) {\n const scope = new Scope(scopeData)\n\n result.push(scope)\n }\n\n return result\n }\n\n static reflections() {\n const relationships = digg(this.modelClassData(), \"relationships\")\n const reflections = []\n\n for (const relationshipData of relationships) {\n const reflection = new Reflection(relationshipData)\n\n reflections.push(reflection)\n }\n\n return reflections\n }\n\n static reflection(name) {\n const foundReflection = this.reflections().find((reflection) => reflection.name() == name)\n\n if (!foundReflection) {\n throw new Error(`No such reflection: ${name} in ${this.reflections().map((reflection) => reflection.name()).join(\", \")}`)\n }\n\n return foundReflection\n }\n\n static _token() {\n const csrfTokenElement = document.querySelector(\"meta[name='csrf-token']\")\n\n if (csrfTokenElement) {\n return csrfTokenElement.getAttribute(\"content\")\n }\n }\n\n constructor(args = {}) {\n this.changes = {}\n this.newRecord = args.isNewRecord\n this.relationshipsCache = {}\n this.relationships = {}\n\n if (args && args.data && args.data.a) {\n this._readModelDataFromArgs(args)\n } else if (args.a) {\n this.abilities = args.b || {}\n this.modelData = objectToUnderscore(args.a)\n } else if (args) {\n this.abilities = {}\n this.modelData = objectToUnderscore(args)\n } else {\n this.abilities = {}\n this.modelData = {}\n }\n }\n\n assignAttributes(newAttributes) {\n for (const key in newAttributes) {\n const newValue = newAttributes[key]\n const attributeUnderscore = inflection.underscore(key)\n\n let applyChange = true\n let deleteChange = false\n\n if (this.isAttributeLoaded(key)) {\n const oldValue = this.readAttribute(key)\n const originalValue = this.modelData[attributeUnderscore]\n\n if (newValue == oldValue) {\n applyChange = false\n } else if (newValue == originalValue) {\n applyChange = false\n deleteChange = true\n }\n }\n\n if (applyChange) {\n this.changes[attributeUnderscore] = newValue\n } else if (deleteChange) {\n delete this.changes[attributeUnderscore]\n }\n }\n }\n\n attributes() {\n const result = {}\n\n for (const key in this.modelData) {\n result[key] = this.modelData[key]\n }\n\n for (const key in this.changes) {\n result[key] = this.changes[key]\n }\n\n return result\n }\n\n can(givenAbilityName) {\n const abilityName = inflection.underscore(givenAbilityName)\n\n if (!(abilityName in this.abilities)) {\n throw new Error(`Ability ${abilityName} hasn't been loaded for ${digg(this.modelClassData(), \"name\")}`)\n }\n\n return this.abilities[abilityName]\n }\n\n clone() {\n const clone = new this.constructor()\n\n clone.abilities = {...this.abilities}\n clone.modelData = {...this.modelData}\n clone.relationships = {...this.relationships}\n clone.relationshipsCache = {...this.relationshipsCache}\n\n return clone\n }\n\n cacheKey() {\n if (this.isPersisted()) {\n const keyParts = [\n this.modelClassData().paramKey,\n this.primaryKey()\n ]\n\n if (\"updated_at\" in this.modelData) {\n const updatedAt = this.updatedAt()\n\n if (typeof updatedAt != \"object\") {\n throw new Error(`updatedAt wasn't an object: ${typeof updatedAt}`)\n } else if (!(\"getTime\" in updatedAt)) {\n throw new Error(`updatedAt didn't support getTime with class: ${updatedAt.constructor && updatedAt.constructor.name}`)\n }\n\n keyParts.push(`updatedAt-${this.updatedAt().getTime()}`)\n }\n\n return keyParts.join(\"-\")\n } else {\n return this.uniqueKey()\n }\n }\n\n localCacheKey() {\n const cacheKeyGenerator = new CacheKeyGenerator(this)\n\n return cacheKeyGenerator.local()\n }\n\n fullCacheKey() {\n const cacheKeyGenerator = new CacheKeyGenerator(this)\n\n return cacheKeyGenerator.cacheKey()\n }\n\n static all() {\n return this.ransack()\n }\n\n async create(attributes, options) {\n if (attributes) this.assignAttributes(attributes)\n const paramKey = this.modelClassData().paramKey\n const modelData = this.getAttributes()\n const dataToUse = {}\n dataToUse[paramKey] = modelData\n let response\n\n try {\n response = await CommandsPool.addCommand(\n {\n args: {\n save: dataToUse\n },\n command: `${this.modelClassData().collectionName}-create`,\n collectionName: this.modelClassData().collectionName,\n primaryKey: this.primaryKey(),\n type: \"create\"\n },\n {}\n )\n } catch (error) {\n BaseModel.parseValidationErrors({error, model: this, options})\n throw error\n }\n\n if (response.model) {\n this._refreshModelFromResponse(response)\n this.changes = {}\n }\n\n return {model: this, response}\n }\n\n async createRaw(rawData, options = {}) {\n const objectData = BaseModel._objectDataFromGivenRawData(rawData, options)\n\n let response\n\n try {\n response = await CommandsPool.addCommand(\n {\n args: {\n save: objectData\n },\n command: `${this.modelClassData().collectionName}-create`,\n collectionName: this.modelClassData().collectionName,\n primaryKey: this.primaryKey(),\n type: \"create\"\n },\n {}\n )\n } catch (error) {\n BaseModel.parseValidationErrors({error, model: this, options})\n throw error\n }\n\n if (response.model) {\n this._refreshModelDataFromResponse(response)\n this.changes = {}\n }\n\n return {model: this, response}\n }\n\n async destroy() {\n const response = await CommandsPool.addCommand(\n {\n args: {query_params: this.collection && this.collection.params()},\n command: `${this.modelClassData().collectionName}-destroy`,\n collectionName: this.modelClassData().collectionName,\n primaryKey: this.primaryKey(),\n type: \"destroy\"\n },\n {}\n )\n\n if (response.success) {\n if (response.model) {\n this._refreshModelDataFromResponse(response)\n this.changes = {}\n }\n\n return {model: this, response}\n } else {\n this.handleResponseError(response)\n }\n }\n\n async ensureAbilities(listOfAbilities) {\n // Populate an array with a list of abilities currently not loaded\n const abilitiesToLoad = []\n\n for (const abilityInList of listOfAbilities) {\n if (!(abilityInList in this.abilities)) {\n abilitiesToLoad.push(abilityInList)\n }\n }\n\n // Load the missing abilities if any\n if (abilitiesToLoad.length > 0) {\n const primaryKeyName = this.constructor.primaryKey()\n const ransackParams = {}\n ransackParams[`${primaryKeyName}_eq`] = this.primaryKey()\n\n const abilitiesParams = {}\n abilitiesParams[digg(this.modelClassData(), \"name\")] = abilitiesToLoad\n\n const anotherModel = await this.constructor\n .ransack(ransackParams)\n .abilities(abilitiesParams)\n .first()\n\n if (!anotherModel) {\n throw new Error(`Could not look up the same model ${this.primaryKey()} with abilities: ${abilitiesToLoad.join(\", \")}`)\n }\n\n const newAbilities = anotherModel.abilities\n for (const newAbility in newAbilities) {\n this.abilities[newAbility] = newAbilities[newAbility]\n }\n }\n }\n\n getAttributes = () => Object.assign(this.modelData, this.changes)\n\n handleResponseError(response) {\n BaseModel.parseValidationErrors({model: this, response})\n throw new new CustomError(\"Response wasn't successful\", {model: this, response})\n }\n\n identifierKey() {\n if (!this._identifierKey) this._identifierKey = this.isPersisted() ? this.primaryKey() : this.uniqueKey()\n\n return this._identifierKey\n }\n\n isAssociationLoaded = (associationName) => this.isAssociationLoadedUnderscore(inflection.underscore(associationName))\n isAssociationLoadedUnderscore (associationNameUnderscore) {\n if (associationNameUnderscore in this.relationshipsCache) return true\n return false\n }\n\n isAssociationPresent(associationName) {\n if (this.isAssociationLoaded(associationName)) return true\n if (associationName in this.relationships) return true\n return false\n }\n\n static parseValidationErrors({error, model, options}) {\n if (!(error instanceof ValidationError)) return\n if (!error.args.response.validation_errors) return\n\n const validationErrors = new ValidationErrors({\n model,\n validationErrors: digg(error, \"args\", \"response\", \"validation_errors\")\n })\n\n BaseModel.sendValidationErrorsEvent(validationErrors, options)\n\n if (!options || options.throwValidationError != false) {\n throw error\n }\n }\n\n static humanAttributeName(attributeName) {\n const keyName = digg(this.modelClassData(), \"i18nKey\")\n const i18n = Config.getI18n()\n\n if (i18n) return i18n.t(`activerecord.attributes.${keyName}.${BaseModel.snakeCase(attributeName)}`, {defaultValue: attributeName})\n\n return inflection.humanize(attributeName)\n }\n\n isAttributeChanged(attributeName) {\n const attributeNameUnderscore = inflection.underscore(attributeName)\n const attributeData = this.modelClassData().attributes.find((attribute) => digg(attribute, \"name\") == attributeNameUnderscore)\n\n if (!attributeData) {\n const attributeNames = this.modelClassData().attributes.map((attribute) => digg(attribute, \"name\"))\n\n throw new Error(`Couldn't find an attribute by that name: \"${attributeName}\" in: ${attributeNames.join(\", \")}`)\n }\n\n if (!(attributeNameUnderscore in this.changes))\n return false\n\n const oldValue = this.modelData[attributeNameUnderscore]\n const newValue = this.changes[attributeNameUnderscore]\n const changedMethod = this[`_is${inflection.camelize(attributeData.type, true)}Changed`]\n\n if (!changedMethod)\n throw new Error(`Don't know how to handle type: ${attributeData.type}`)\n\n return changedMethod(oldValue, newValue)\n }\n\n isChanged() {\n const keys = Object.keys(this.changes)\n\n if (keys.length > 0) {\n return true\n } else {\n return false\n }\n }\n\n isNewRecord() {\n if (this.newRecord !== undefined) {\n return this.newRecord\n } else if (\"id\" in this.modelData && this.modelData.id) {\n return false\n } else {\n return true\n }\n }\n\n isPersisted = () => !this.isNewRecord()\n\n static snakeCase = (string) => inflection.underscore(string)\n\n savedChangeToAttribute(attributeName) {\n if (!this.previousModelData)\n return false\n\n const attributeNameUnderscore = inflection.underscore(attributeName)\n const attributeData = this.modelClassData().attributes.find((attribute) => attribute.name == attributeNameUnderscore)\n\n if (!attributeData) {\n const attributeNames = this.modelClassData().attributes.map((attribute) => attribute.name)\n throw new Error(`Couldn't find an attribute by that name: \"${attributeName}\" in: ${attributeNames.join(\", \")}`)\n }\n\n if (!(attributeNameUnderscore in this.previousModelData))\n return true\n\n const oldValue = this.previousModelData[attributeNameUnderscore]\n const newValue = this.modelData[attributeNameUnderscore]\n const changedMethodName = `_is${inflection.camelize(attributeData.type)}Changed`\n const changedMethod = this[changedMethodName]\n\n if (!changedMethod)\n throw new Error(`Don't know how to handle type: ${attributeData.type}`)\n\n return changedMethod(oldValue, newValue)\n }\n\n setNewModel(model) {\n this.setNewModelData(model)\n\n for(const relationshipName in model.relationships) {\n this.relationships[relationshipName] = model.relationships[relationshipName]\n }\n\n for(const relationshipCacheName in model.relationshipsCache) {\n this.relationshipsCache[relationshipCacheName] = model.relationshipsCache[name]\n }\n }\n\n setNewModelData(model) {\n if (!(\"modelData\" in model)) throw new Error(`No modelData in model: ${JSON.stringify(model)}`)\n\n this.previousModelData = Object.assign({}, digg(this, \"modelData\"))\n\n for(const attributeName in model.modelData) {\n this.modelData[attributeName] = model.modelData[attributeName]\n }\n }\n\n _isDateChanged(oldValue, newValue) {\n if (Date.parse(oldValue) != Date.parse(newValue))\n return true\n }\n\n _isIntegerChanged(oldValue, newValue) {\n if (parseInt(oldValue, 10) != parseInt(newValue, 10))\n return true\n }\n\n _isStringChanged (oldValue, newValue) {\n const oldConvertedValue = `${oldValue}`\n const newConvertedValue = `${newValue}`\n\n if (oldConvertedValue != newConvertedValue)\n return true\n }\n\n modelClassData = () => this.constructor.modelClassData()\n\n async reload() {\n const params = this.collection && this.collection.params()\n const ransackParams = {}\n ransackParams[`${this.constructor.primaryKey()}_eq`] = this.primaryKey()\n\n let query = this.constructor.ransack(ransackParams)\n\n if (params) {\n if (params.preload) {\n query.queryArgs.preload = params.preload\n }\n\n if (params.select) {\n query.queryArgs.select = params.select\n }\n\n if (params.select_columns) {\n query.queryArgs.selectColumns = params.select_columns\n }\n }\n\n const model = await query.first()\n this.setNewModel(model)\n this.changes = {}\n }\n\n save() {\n if (this.isNewRecord()) {\n return this.create()\n } else {\n return this.update()\n }\n }\n\n saveRaw(rawData, options = {}) {\n if (this.isNewRecord()) {\n return this.createRaw(rawData, options)\n } else {\n return this.updateRaw(rawData, options)\n }\n }\n\n async update(newAttributes, options) {\n if (newAttributes) {\n this.assignAttributes(newAttributes)\n }\n\n if (Object.keys(this.changes).length == 0) {\n return {model: this}\n }\n\n const paramKey = this.modelClassData().paramKey\n const modelData = this.changes\n const dataToUse = {}\n dataToUse[paramKey] = modelData\n let response\n\n try {\n response = await CommandsPool.addCommand(\n {\n args: {\n query_params: this.collection && this.collection.params(),\n save: dataToUse\n },\n command: `${this.modelClassData().collectionName}-update`,\n collectionName: this.modelClassData().collectionName,\n primaryKey: this.primaryKey(),\n type: \"update\"\n },\n {}\n )\n } catch (error) {\n BaseModel.parseValidationErrors({error, model: this, options})\n throw error\n }\n\n if (response.success) {\n if (response.model) {\n this._refreshModelFromResponse(response)\n this.changes = {}\n }\n\n return {response, model: this}\n } else {\n this.handleResponseError(response)\n }\n }\n\n _refreshModelFromResponse(response) {\n let newModel = digg(response, \"model\")\n\n if (Array.isArray(newModel)) newModel = newModel[0]\n\n this.setNewModel(newModel)\n }\n\n _refreshModelDataFromResponse(response) {\n let newModel = digg(response, \"model\")\n\n if (Array.isArray(newModel)) newModel = newModel[0]\n\n this.setNewModelData(newModel)\n }\n\n static _objectDataFromGivenRawData(rawData, options) {\n if (rawData instanceof FormData || rawData.nodeName == \"FORM\") {\n const formData = FormDataObjectizer.formDataFromObject(rawData, options)\n\n return FormDataObjectizer.toObject(formData)\n }\n\n return rawData\n }\n\n async updateRaw(rawData, options = {}) {\n const objectData = BaseModel._objectDataFromGivenRawData(rawData, options)\n let response\n\n try {\n response = await CommandsPool.addCommand(\n {\n args: {\n query_params: this.collection && this.collection.params(),\n save: objectData,\n simple_model_errors: options?.simpleModelErrors\n },\n command: `${this.modelClassData().collectionName}-update`,\n collectionName: this.modelClassData().collectionName,\n primaryKey: this.primaryKey(),\n type: \"update\"\n },\n {}\n )\n } catch (error) {\n BaseModel.parseValidationErrors({error, model: this, options})\n throw error\n }\n\n if (response.model) {\n this._refreshModelFromResponse(response)\n this.changes = {}\n }\n\n return {response, model: this}\n }\n\n isValid() {\n throw new Error(\"Not implemented yet\")\n }\n\n async isValidOnServer() {\n const modelData = this.getAttributes()\n const paramKey = this.modelClassData().paramKey\n const dataToUse = {}\n dataToUse[paramKey] = modelData\n\n const response = await CommandsPool.addCommand(\n {\n args: {\n save: dataToUse\n },\n command: `${this.modelClassData().collectionName}-valid`,\n collectionName: this.modelClassData().collectionName,\n primaryKey: this.primaryKey(),\n type: \"valid\"\n },\n {}\n )\n\n return {valid: response.valid, errors: response.errors}\n }\n\n modelClass = () => this.constructor\n\n preloadRelationship(relationshipName, model) {\n this.relationshipsCache[BaseModel.snakeCase(relationshipName)] = model\n this.relationships[BaseModel.snakeCase(relationshipName)] = model\n }\n\n markForDestruction() {\n this._markedForDestruction = true\n }\n\n markedForDestruction = () => this._markedForDestruction\n\n uniqueKey() {\n if (!this.uniqueKeyValue) {\n const min = 5000000000000000\n const max = 9007199254740991\n const randomBetween = Math.floor(Math.random() * (max - min + 1) + min)\n this.uniqueKeyValue = randomBetween\n }\n\n return this.uniqueKeyValue\n }\n\n static async _callCollectionCommand(args, commandArgs) {\n const formOrDataObject = args.args\n\n try {\n return await CommandsPool.addCommand(args, commandArgs)\n } catch (error) {\n let form\n\n if (commandArgs.form) {\n form = commandArgs.form\n } else if (formOrDataObject?.nodeName == \"FORM\") {\n form = formOrDataObject\n }\n\n if (form) BaseModel.parseValidationErrors({error, options: {form}})\n\n throw error\n }\n }\n\n _callMemberCommand = (args, commandArgs) => CommandsPool.addCommand(args, commandArgs)\n\n static _postDataFromArgs(args) {\n let postData\n\n if (args) {\n if (args instanceof FormData) {\n postData = args\n } else {\n postData = objectToFormData.serialize(args, {}, null, \"args\")\n }\n } else {\n postData = new FormData()\n }\n\n return postData\n }\n\n readAttribute(attributeName) {\n const attributeNameUnderscore = inflection.underscore(attributeName)\n\n return this.readAttributeUnderscore(attributeNameUnderscore)\n }\n\n readAttributeUnderscore(attributeName) {\n if (attributeName in this.changes) {\n return this.changes[attributeName]\n } else if (attributeName in this.modelData) {\n return this.modelData[attributeName]\n } else if (this.isNewRecord()) {\n // Return null if this is a new record and the attribute name is a recognized attribute\n const attributes = digg(this.modelClassData(), \"attributes\")\n\n if (attributeName in attributes) return null\n }\n\n if (this.isPersisted()) {\n throw new AttributeNotLoadedError(`No such attribute: ${digg(this.modelClassData(), \"name\")}#${attributeName}: ${JSON.stringify(this.modelData)}`)\n }\n }\n\n isAttributeLoaded(attributeName) {\n const attributeNameUnderscore = inflection.underscore(attributeName)\n\n if (attributeNameUnderscore in this.changes) return true\n if (attributeNameUnderscore in this.modelData) return true\n return false\n }\n\n _isPresent(value) {\n if (!value) {\n return false\n } else if (typeof value == \"string\" && value.match(/^\\s*$/)) {\n return false\n }\n\n return true\n }\n\n async _loadBelongsToReflection(args, queryArgs = {}) {\n if (args.reflectionName in this.relationships) {\n return this.relationships[args.reflectionName]\n } else if (args.reflectionName in this.relationshipsCache) {\n return this.relationshipsCache[args.reflectionName]\n } else {\n const collection = new Collection(args, queryArgs)\n const model = await collection.first()\n this.relationshipsCache[args.reflectionName] = model\n return model\n }\n }\n\n _readBelongsToReflection({reflectionName}) {\n if (reflectionName in this.relationships) {\n return this.relationships[reflectionName]\n } else if (reflectionName in this.relationshipsCache) {\n return this.relationshipsCache[reflectionName]\n }\n\n if (this.isNewRecord()) return null\n\n const loadedRelationships = Object.keys(this.relationshipsCache)\n const modelClassName = digg(this.modelClassData(), \"name\")\n\n throw new NotLoadedError(`${modelClassName}#${reflectionName} hasn't been loaded yet. Only these were loaded: ${loadedRelationships.join(\", \")}`)\n }\n\n async _loadHasManyReflection(args, queryArgs = {}) {\n if (args.reflectionName in this.relationships) {\n return this.relationships[args.reflectionName]\n } else if (args.reflectionName in this.relationshipsCache) {\n return this.relationshipsCache[args.reflectionName]\n }\n\n const collection = new Collection(args, queryArgs)\n const models = await collection.toArray()\n\n this.relationshipsCache[args.reflectionName] = models\n\n return models\n }\n\n async _loadHasOneReflection(args, queryArgs = {}) {\n if (args.reflectionName in this.relationships) {\n return this.relationships[args.reflectionName]\n } else if (args.reflectionName in this.relationshipsCache) {\n return this.relationshipsCache[args.reflectionName]\n } else {\n const collection = new Collection(args, queryArgs)\n const model = await collection.first()\n\n this.relationshipsCache[args.reflectionName] = model\n\n return model\n }\n }\n\n _readHasOneReflection({reflectionName}) {\n if (reflectionName in this.relationships) {\n return this.relationships[reflectionName]\n } else if (reflectionName in this.relationshipsCache) {\n return this.relationshipsCache[reflectionName]\n }\n\n if (this.isNewRecord()) {\n return null\n }\n\n const loadedRelationships = Object.keys(this.relationshipsCache)\n const modelClassName = digg(this.modelClassData(), \"name\")\n\n throw new NotLoadedError(`${modelClassName}#${reflectionName} hasn't been loaded yet. Only these were loaded: ${loadedRelationships.join(\", \")}`)\n }\n\n _readModelDataFromArgs(args) {\n this.abilities = args.data.b || {}\n this.collection = args.collection\n this.modelData = objectToUnderscore(args.data.a)\n this.preloadedRelationships = args.data.r\n }\n\n _readPreloadedRelationships(preloaded) {\n if (!this.preloadedRelationships) {\n return\n }\n\n const relationships = digg(this.modelClassData(), \"relationships\")\n\n for (const relationshipName in this.preloadedRelationships) {\n const relationshipData = this.preloadedRelationships[relationshipName]\n const relationshipClassData = relationships.find((relationship) => digg(relationship, \"name\") == relationshipName)\n\n if (!relationshipClassData) {\n const modelName = digg(this.modelClassData(), \"name\")\n const relationshipsList = relationships.map((relationship) => relationship.name).join(\", \")\n\n throw new Error(`Could not find the relation ${relationshipName} on the ${modelName} model: ${relationshipsList}`)\n }\n\n const relationshipType = digg(relationshipClassData, \"collectionName\")\n\n if (relationshipName in this.relationshipsCache) {\n throw new Error(`${relationshipName} has already been loaded`)\n }\n\n if (!relationshipClassData) {\n throw new Error(`No relationship on ${digg(this.modelClassData(), \"name\")} by that name: ${relationshipName}`)\n }\n\n if (!relationshipData) {\n this.relationshipsCache[relationshipName] = null\n this.relationships[relationshipName] = null\n } else if (Array.isArray(relationshipData)) {\n this.relationshipsCache[relationshipName] = []\n this.relationships[relationshipName] = []\n\n for (const relationshipId of relationshipData) {\n const model = preloaded.getModel(relationshipType, relationshipId)\n\n this.relationshipsCache[relationshipName].push(model)\n this.relationships[relationshipName].push(model)\n }\n } else {\n const model = preloaded.getModel(relationshipType, relationshipData)\n\n this.relationshipsCache[relationshipName] = model\n this.relationships[relationshipName] = model\n }\n }\n }\n\n primaryKey = () => this.readAttributeUnderscore(this.constructor.primaryKey())\n}\n"],"mappings":"AAAA,OAAOA,SAAS,MAAM,wBAAwB;AAC9C,OAAOC,uBAAuB,MAAM,8BAA8B;AAClE,OAAOC,iBAAiB,MAAM,uBAAuB;AACrD,OAAOC,UAAU,MAAM,cAAc;AACrC,OAAOC,YAAY,MAAM,iBAAiB;AAC1C,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,WAAW,MAAM,gBAAgB;AACxC,SAAQC,IAAI,QAAO,WAAW;AAC9B,OAAOC,kBAAkB,MAAM,sBAAsB;AACrD,OAAO,KAAKC,UAAU,MAAM,YAAY;AACxC,OAAOC,SAAS,MAAM,cAAc;AACpC,OAAOC,cAAc,MAAM,oBAAoB;AAC/C,OAAOC,gBAAgB,MAAM,oBAAoB;AACjD,OAAOC,UAAU,MAAM,yBAAyB;AAChD,OAAOC,KAAK,MAAM,oBAAoB;AACtC,OAAOC,QAAQ,MAAM,YAAY;AACjC,OAAOC,eAAe,MAAM,oBAAoB;AAChD,SAAQC,gBAAgB,QAAO,qBAAqB;AAEpD,MAAMC,kBAAkB,GAAIC,MAAM,IAAK;EACrC,MAAMC,SAAS,GAAG,CAAC,CAAC;EAEpB,KAAK,MAAMC,GAAG,IAAIF,MAAM,EAAE;IACxB,MAAMG,aAAa,GAAGb,UAAU,CAACc,UAAU,CAACF,GAAG,CAAC;IAEhDD,SAAS,CAACE,aAAa,CAAC,GAAGH,MAAM,CAACE,GAAG,CAAC;EACxC;EAEA,OAAOD,SAAS;AAClB,CAAC;AAED,eAAe,MAAMI,SAAS,CAAC;EAC7B,OAAOC,YAAY,GAAG,WAAW;EAEjC,OAAOC,UAAUA,CAAA,EAAG;IAClB,MAAMA,UAAU,GAAGnB,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC;IAC5D,MAAMC,MAAM,GAAG,EAAE;IAEjB,KAAK,MAAMC,YAAY,IAAIH,UAAU,EAAE;MACrC,MAAMI,aAAa,GAAGJ,UAAU,CAACG,YAAY,CAAC;MAC9C,MAAME,SAAS,GAAG,IAAI/B,SAAS,CAAC8B,aAAa,CAAC;MAE9CF,MAAM,CAACI,IAAI,CAACD,SAAS,CAAC;IACxB;IAEA,OAAOH,MAAM;EACf;EAEA,OAAOK,YAAYA,CAACC,aAAa,EAAE;IACjC,MAAMR,UAAU,GAAGnB,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC;IAC5D,MAAMQ,sBAAsB,GAAG1B,UAAU,CAACc,UAAU,CAACW,aAAa,CAAC;IAEnE,IAAIC,sBAAsB,IAAIT,UAAU,EAAE,OAAO,IAAI;IAErD,OAAO,KAAK;EACd;EAEA,OAAOC,cAAcA,CAAA,EAAG;IACtB,MAAM,IAAIS,KAAK,CAAC,6CAA6C,CAAC;EAChE;EAEA,OAAOC,cAAc,GAAIC,gBAAgB,IAAK;IAC5C,OAAO,IAAIC,WAAW,CAAC,mBAAmB,EAAE;MAACC,MAAM,EAAEF;IAAgB,CAAC,CAAC;EACzE,CAAC;EAED,OAAOG,yBAAyB,GAAGA,CAACH,gBAAgB,EAAEI,OAAO,KAAK;IAChE,IAAIA,OAAO,IAAIA,OAAO,CAACC,IAAI,EAAE;MAC3B,MAAMC,KAAK,GAAGpB,SAAS,CAACa,cAAc,CAACC,gBAAgB,CAAC;MACxDI,OAAO,CAACC,IAAI,CAACE,aAAa,CAACD,KAAK,CAAC;IACnC;EACF,CAAC;EAED,aAAaE,IAAIA,CAACC,EAAE,EAAE;IACpB,MAAMC,KAAK,GAAG,CAAC,CAAC;IAEhBA,KAAK,CAAC,GAAG,IAAI,CAACC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAGF,EAAE;IAErC,MAAMG,KAAK,GAAG,MAAM,IAAI,CAACC,OAAO,CAACH,KAAK,CAAC,CAACI,KAAK,CAAC,CAAC;IAE/C,IAAIF,KAAK,EAAE;MACT,OAAOA,KAAK;IACd,CAAC,MAAM;MACL,MAAM,IAAI5C,WAAW,CAAC,kBAAkB,CAAC;IAC3C;EACF;EAEA,aAAa+C,cAAcA,CAACC,kBAAkB,EAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;IACzD,MAAM3B,MAAM,GAAG,MAAMb,QAAQ,CAACyC,OAAO,CAAC,CAAC,CAACC,WAAW,CAAC,wBAAwB,EAAE;MAC5EC,eAAe,EAAEH,IAAI,CAACI,cAAc;MACpCC,sBAAsB,EAAEN,kBAAkB;MAC1CO,aAAa,EAAEtD,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM;IACnD,CAAC,CAAC;IACF,MAAMuB,KAAK,GAAG3C,IAAI,CAACqB,MAAM,EAAE,OAAO,CAAC;IAEnC,OAAOsB,KAAK;EACd;EAEA,OAAOY,SAASA,CAAA,EAAG;IACjB,OAAO,IAAIpD,SAAS,CAAC;MAACiB,cAAc,EAAE,IAAI,CAACA,cAAc,CAAC;IAAC,CAAC,CAAC;EAC/D;EAEA,OAAOsB,UAAUA,CAAA,EAAG;IAClB,OAAO1C,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC;EAClD;EAEA,OAAOwB,OAAOA,CAACH,KAAK,GAAG,CAAC,CAAC,EAAE;IACzB,OAAO,IAAI7C,UAAU,CAAC;MAAC4D,UAAU,EAAE;IAAI,CAAC,EAAE;MAACZ,OAAO,EAAEH;IAAK,CAAC,CAAC;EAC7D;EAEA,OAAOgB,MAAMA,CAACA,MAAM,EAAE;IACpB,OAAO,IAAI,CAACb,OAAO,CAAC,CAAC,CAACa,MAAM,CAACA,MAAM,CAAC;EACtC;EAEA,OAAOC,uBAAuBA,CAAA,EAAG;IAC/B,MAAMC,aAAa,GAAG3D,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,0BAA0B,CAAC;IAC7E,MAAMwC,WAAW,GAAG,EAAE;IAEtB,KAAK,MAAMC,gBAAgB,IAAIF,aAAa,EAAE;MAC5CC,WAAW,CAACnC,IAAI,CAAC,IAAInB,UAAU,CAACuD,gBAAgB,CAAC,CAAC;IACpD;IAEA,OAAOD,WAAW;EACpB;EAEA,OAAOE,qBAAqBA,CAAA,EAAG;IAC7B,MAAM3C,UAAU,GAAGnB,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,wBAAwB,CAAC;IACxE,MAAMC,MAAM,GAAG,EAAE;IAEjB,KAAK,MAAME,aAAa,IAAIJ,UAAU,EAAE;MACtCE,MAAM,CAACI,IAAI,CAAC,IAAIhC,SAAS,CAAC8B,aAAa,CAAC,CAAC;IAC3C;IAEA,OAAOF,MAAM;EACf;EAEA,OAAO0C,iBAAiBA,CAAA,EAAG;IACzB,MAAMA,iBAAiB,GAAG/D,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,oBAAoB,CAAC;IAC3E,MAAMC,MAAM,GAAG,EAAE;IAEjB,KAAK,MAAM2C,SAAS,IAAID,iBAAiB,EAAE;MACzC,MAAME,KAAK,GAAG,IAAI1D,KAAK,CAACyD,SAAS,CAAC;MAElC3C,MAAM,CAACI,IAAI,CAACwC,KAAK,CAAC;IACpB;IAEA,OAAO5C,MAAM;EACf;EAEA,OAAOuC,WAAWA,CAAA,EAAG;IACnB,MAAMD,aAAa,GAAG3D,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC;IAClE,MAAMwC,WAAW,GAAG,EAAE;IAEtB,KAAK,MAAMC,gBAAgB,IAAIF,aAAa,EAAE;MAC5C,MAAMO,UAAU,GAAG,IAAI5D,UAAU,CAACuD,gBAAgB,CAAC;MAEnDD,WAAW,CAACnC,IAAI,CAACyC,UAAU,CAAC;IAC9B;IAEA,OAAON,WAAW;EACpB;EAEA,OAAOM,UAAUA,CAACC,IAAI,EAAE;IACtB,MAAMC,eAAe,GAAG,IAAI,CAACR,WAAW,CAAC,CAAC,CAACrB,IAAI,CAAE2B,UAAU,IAAKA,UAAU,CAACC,IAAI,CAAC,CAAC,IAAIA,IAAI,CAAC;IAE1F,IAAI,CAACC,eAAe,EAAE;MACpB,MAAM,IAAIvC,KAAK,CAAC,uBAAuBsC,IAAI,OAAO,IAAI,CAACP,WAAW,CAAC,CAAC,CAACS,GAAG,CAAEH,UAAU,IAAKA,UAAU,CAACC,IAAI,CAAC,CAAC,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC3H;IAEA,OAAOF,eAAe;EACxB;EAEA,OAAOG,MAAMA,CAAA,EAAG;IACd,MAAMC,gBAAgB,GAAGC,QAAQ,CAACC,aAAa,CAAC,yBAAyB,CAAC;IAE1E,IAAIF,gBAAgB,EAAE;MACpB,OAAOA,gBAAgB,CAACG,YAAY,CAAC,SAAS,CAAC;IACjD;EACF;EAEAC,WAAWA,CAAC5B,IAAI,GAAG,CAAC,CAAC,EAAE;IACrB,IAAI,CAAC6B,OAAO,GAAG,CAAC,CAAC;IACjB,IAAI,CAACC,SAAS,GAAG9B,IAAI,CAAC+B,WAAW;IACjC,IAAI,CAACC,kBAAkB,GAAG,CAAC,CAAC;IAC5B,IAAI,CAACrB,aAAa,GAAG,CAAC,CAAC;IAEvB,IAAIX,IAAI,IAAIA,IAAI,CAACiC,IAAI,IAAIjC,IAAI,CAACiC,IAAI,CAACC,CAAC,EAAE;MACpC,IAAI,CAACC,sBAAsB,CAACnC,IAAI,CAAC;IACnC,CAAC,MAAM,IAAIA,IAAI,CAACkC,CAAC,EAAE;MACjB,IAAI,CAACE,SAAS,GAAGpC,IAAI,CAACqC,CAAC,IAAI,CAAC,CAAC;MAC7B,IAAI,CAACC,SAAS,GAAG3E,kBAAkB,CAACqC,IAAI,CAACkC,CAAC,CAAC;IAC7C,CAAC,MAAM,IAAIlC,IAAI,EAAE;MACf,IAAI,CAACoC,SAAS,GAAG,CAAC,CAAC;MACnB,IAAI,CAACE,SAAS,GAAG3E,kBAAkB,CAACqC,IAAI,CAAC;IAC3C,CAAC,MAAM;MACL,IAAI,CAACoC,SAAS,GAAG,CAAC,CAAC;MACnB,IAAI,CAACE,SAAS,GAAG,CAAC,CAAC;IACrB;EACF;EAEAC,gBAAgBA,CAACC,aAAa,EAAE;IAC9B,KAAK,MAAM1E,GAAG,IAAI0E,aAAa,EAAE;MAC/B,MAAMC,QAAQ,GAAGD,aAAa,CAAC1E,GAAG,CAAC;MACnC,MAAM4E,mBAAmB,GAAGxF,UAAU,CAACc,UAAU,CAACF,GAAG,CAAC;MAEtD,IAAI6E,WAAW,GAAG,IAAI;MACtB,IAAIC,YAAY,GAAG,KAAK;MAExB,IAAI,IAAI,CAACC,iBAAiB,CAAC/E,GAAG,CAAC,EAAE;QAC/B,MAAMgF,QAAQ,GAAG,IAAI,CAACC,aAAa,CAACjF,GAAG,CAAC;QACxC,MAAMkF,aAAa,GAAG,IAAI,CAACV,SAAS,CAACI,mBAAmB,CAAC;QAEzD,IAAID,QAAQ,IAAIK,QAAQ,EAAE;UACxBH,WAAW,GAAG,KAAK;QACrB,CAAC,MAAM,IAAIF,QAAQ,IAAIO,aAAa,EAAE;UACpCL,WAAW,GAAG,KAAK;UACnBC,YAAY,GAAG,IAAI;QACrB;MACF;MAEA,IAAID,WAAW,EAAE;QACf,IAAI,CAACd,OAAO,CAACa,mBAAmB,CAAC,GAAGD,QAAQ;MAC9C,CAAC,MAAM,IAAIG,YAAY,EAAE;QACvB,OAAO,IAAI,CAACf,OAAO,CAACa,mBAAmB,CAAC;MAC1C;IACF;EACF;EAEAvE,UAAUA,CAAA,EAAG;IACX,MAAME,MAAM,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAMP,GAAG,IAAI,IAAI,CAACwE,SAAS,EAAE;MAChCjE,MAAM,CAACP,GAAG,CAAC,GAAG,IAAI,CAACwE,SAAS,CAACxE,GAAG,CAAC;IACnC;IAEA,KAAK,MAAMA,GAAG,IAAI,IAAI,CAAC+D,OAAO,EAAE;MAC9BxD,MAAM,CAACP,GAAG,CAAC,GAAG,IAAI,CAAC+D,OAAO,CAAC/D,GAAG,CAAC;IACjC;IAEA,OAAOO,MAAM;EACf;EAEA4E,GAAGA,CAACC,gBAAgB,EAAE;IACpB,MAAMC,WAAW,GAAGjG,UAAU,CAACc,UAAU,CAACkF,gBAAgB,CAAC;IAE3D,IAAI,EAAEC,WAAW,IAAI,IAAI,CAACf,SAAS,CAAC,EAAE;MACpC,MAAM,IAAIvD,KAAK,CAAC,WAAWsE,WAAW,2BAA2BnG,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzG;IAEA,OAAO,IAAI,CAACgE,SAAS,CAACe,WAAW,CAAC;EACpC;EAEAC,KAAKA,CAAA,EAAG;IACN,MAAMA,KAAK,GAAG,IAAI,IAAI,CAACxB,WAAW,CAAC,CAAC;IAEpCwB,KAAK,CAAChB,SAAS,GAAG;MAAC,GAAG,IAAI,CAACA;IAAS,CAAC;IACrCgB,KAAK,CAACd,SAAS,GAAG;MAAC,GAAG,IAAI,CAACA;IAAS,CAAC;IACrCc,KAAK,CAACzC,aAAa,GAAG;MAAC,GAAG,IAAI,CAACA;IAAa,CAAC;IAC7CyC,KAAK,CAACpB,kBAAkB,GAAG;MAAC,GAAG,IAAI,CAACA;IAAkB,CAAC;IAEvD,OAAOoB,KAAK;EACd;EAEAC,QAAQA,CAAA,EAAG;IACT,IAAI,IAAI,CAACC,WAAW,CAAC,CAAC,EAAE;MACtB,MAAMC,QAAQ,GAAG,CACf,IAAI,CAACnF,cAAc,CAAC,CAAC,CAACoF,QAAQ,EAC9B,IAAI,CAAC9D,UAAU,CAAC,CAAC,CAClB;MAED,IAAI,YAAY,IAAI,IAAI,CAAC4C,SAAS,EAAE;QAClC,MAAMmB,SAAS,GAAG,IAAI,CAACA,SAAS,CAAC,CAAC;QAElC,IAAI,OAAOA,SAAS,IAAI,QAAQ,EAAE;UAChC,MAAM,IAAI5E,KAAK,CAAC,+BAA+B,OAAO4E,SAAS,EAAE,CAAC;QACpE,CAAC,MAAM,IAAI,EAAE,SAAS,IAAIA,SAAS,CAAC,EAAE;UACpC,MAAM,IAAI5E,KAAK,CAAC,gDAAgD4E,SAAS,CAAC7B,WAAW,IAAI6B,SAAS,CAAC7B,WAAW,CAACT,IAAI,EAAE,CAAC;QACxH;QAEAoC,QAAQ,CAAC9E,IAAI,CAAC,aAAa,IAAI,CAACgF,SAAS,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,EAAE,CAAC;MAC1D;MAEA,OAAOH,QAAQ,CAACjC,IAAI,CAAC,GAAG,CAAC;IAC3B,CAAC,MAAM;MACL,OAAO,IAAI,CAACqC,SAAS,CAAC,CAAC;IACzB;EACF;EAEAC,aAAaA,CAAA,EAAG;IACd,MAAMC,iBAAiB,GAAG,IAAIlH,iBAAiB,CAAC,IAAI,CAAC;IAErD,OAAOkH,iBAAiB,CAACC,KAAK,CAAC,CAAC;EAClC;EAEAC,YAAYA,CAAA,EAAG;IACb,MAAMF,iBAAiB,GAAG,IAAIlH,iBAAiB,CAAC,IAAI,CAAC;IAErD,OAAOkH,iBAAiB,CAACR,QAAQ,CAAC,CAAC;EACrC;EAEA,OAAOW,GAAGA,CAAA,EAAG;IACX,OAAO,IAAI,CAACpE,OAAO,CAAC,CAAC;EACvB;EAEA,MAAMqE,MAAMA,CAAC9F,UAAU,EAAEgB,OAAO,EAAE;IAChC,IAAIhB,UAAU,EAAE,IAAI,CAACoE,gBAAgB,CAACpE,UAAU,CAAC;IACjD,MAAMqF,QAAQ,GAAG,IAAI,CAACpF,cAAc,CAAC,CAAC,CAACoF,QAAQ;IAC/C,MAAMlB,SAAS,GAAG,IAAI,CAAC4B,aAAa,CAAC,CAAC;IACtC,MAAMC,SAAS,GAAG,CAAC,CAAC;IACpBA,SAAS,CAACX,QAAQ,CAAC,GAAGlB,SAAS;IAC/B,IAAI8B,QAAQ;IAEZ,IAAI;MACFA,QAAQ,GAAG,MAAMvH,YAAY,CAACwH,UAAU,CACtC;QACErE,IAAI,EAAE;UACJsE,IAAI,EAAEH;QACR,CAAC;QACDI,OAAO,EAAE,GAAG,IAAI,CAACnG,cAAc,CAAC,CAAC,CAACoG,cAAc,SAAS;QACzDA,cAAc,EAAE,IAAI,CAACpG,cAAc,CAAC,CAAC,CAACoG,cAAc;QACpD9E,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,CAAC;QAC7B+E,IAAI,EAAE;MACR,CAAC,EACD,CAAC,CACH,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdzG,SAAS,CAAC0G,qBAAqB,CAAC;QAACD,KAAK;QAAE/E,KAAK,EAAE,IAAI;QAAER;MAAO,CAAC,CAAC;MAC9D,MAAMuF,KAAK;IACb;IAEA,IAAIN,QAAQ,CAACzE,KAAK,EAAE;MAClB,IAAI,CAACiF,yBAAyB,CAACR,QAAQ,CAAC;MACxC,IAAI,CAACvC,OAAO,GAAG,CAAC,CAAC;IACnB;IAEA,OAAO;MAAClC,KAAK,EAAE,IAAI;MAAEyE;IAAQ,CAAC;EAChC;EAEA,MAAMS,SAASA,CAACC,OAAO,EAAE3F,OAAO,GAAG,CAAC,CAAC,EAAE;IACrC,MAAM4F,UAAU,GAAG9G,SAAS,CAAC+G,2BAA2B,CAACF,OAAO,EAAE3F,OAAO,CAAC;IAE1E,IAAIiF,QAAQ;IAEZ,IAAI;MACFA,QAAQ,GAAG,MAAMvH,YAAY,CAACwH,UAAU,CACtC;QACErE,IAAI,EAAE;UACJsE,IAAI,EAAES;QACR,CAAC;QACDR,OAAO,EAAE,GAAG,IAAI,CAACnG,cAAc,CAAC,CAAC,CAACoG,cAAc,SAAS;QACzDA,cAAc,EAAE,IAAI,CAACpG,cAAc,CAAC,CAAC,CAACoG,cAAc;QACpD9E,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,CAAC;QAC7B+E,IAAI,EAAE;MACR,CAAC,EACD,CAAC,CACH,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdzG,SAAS,CAAC0G,qBAAqB,CAAC;QAACD,KAAK;QAAE/E,KAAK,EAAE,IAAI;QAAER;MAAO,CAAC,CAAC;MAC9D,MAAMuF,KAAK;IACb;IAEA,IAAIN,QAAQ,CAACzE,KAAK,EAAE;MAClB,IAAI,CAACsF,6BAA6B,CAACb,QAAQ,CAAC;MAC5C,IAAI,CAACvC,OAAO,GAAG,CAAC,CAAC;IACnB;IAEA,OAAO;MAAClC,KAAK,EAAE,IAAI;MAAEyE;IAAQ,CAAC;EAChC;EAEA,MAAMc,OAAOA,CAAA,EAAG;IACd,MAAMd,QAAQ,GAAG,MAAMvH,YAAY,CAACwH,UAAU,CAC5C;MACErE,IAAI,EAAE;QAACmF,YAAY,EAAE,IAAI,CAACC,UAAU,IAAI,IAAI,CAACA,UAAU,CAACC,MAAM,CAAC;MAAC,CAAC;MACjEd,OAAO,EAAE,GAAG,IAAI,CAACnG,cAAc,CAAC,CAAC,CAACoG,cAAc,UAAU;MAC1DA,cAAc,EAAE,IAAI,CAACpG,cAAc,CAAC,CAAC,CAACoG,cAAc;MACpD9E,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,CAAC;MAC7B+E,IAAI,EAAE;IACR,CAAC,EACD,CAAC,CACH,CAAC;IAED,IAAIL,QAAQ,CAACkB,OAAO,EAAE;MACpB,IAAIlB,QAAQ,CAACzE,KAAK,EAAE;QAClB,IAAI,CAACsF,6BAA6B,CAACb,QAAQ,CAAC;QAC5C,IAAI,CAACvC,OAAO,GAAG,CAAC,CAAC;MACnB;MAEA,OAAO;QAAClC,KAAK,EAAE,IAAI;QAAEyE;MAAQ,CAAC;IAChC,CAAC,MAAM;MACL,IAAI,CAACmB,mBAAmB,CAACnB,QAAQ,CAAC;IACpC;EACF;EAEA,MAAMoB,eAAeA,CAACC,eAAe,EAAE;IACrC;IACA,MAAMC,eAAe,GAAG,EAAE;IAE1B,KAAK,MAAMC,aAAa,IAAIF,eAAe,EAAE;MAC3C,IAAI,EAAEE,aAAa,IAAI,IAAI,CAACvD,SAAS,CAAC,EAAE;QACtCsD,eAAe,CAACjH,IAAI,CAACkH,aAAa,CAAC;MACrC;IACF;;IAEA;IACA,IAAID,eAAe,CAACE,MAAM,GAAG,CAAC,EAAE;MAC9B,MAAMC,cAAc,GAAG,IAAI,CAACjE,WAAW,CAAClC,UAAU,CAAC,CAAC;MACpD,MAAMoG,aAAa,GAAG,CAAC,CAAC;MACxBA,aAAa,CAAC,GAAGD,cAAc,KAAK,CAAC,GAAG,IAAI,CAACnG,UAAU,CAAC,CAAC;MAEzD,MAAMqG,eAAe,GAAG,CAAC,CAAC;MAC1BA,eAAe,CAAC/I,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAGsH,eAAe;MAEtE,MAAMM,YAAY,GAAG,MAAM,IAAI,CAACpE,WAAW,CACxChC,OAAO,CAACkG,aAAa,CAAC,CACtB1D,SAAS,CAAC2D,eAAe,CAAC,CAC1BlG,KAAK,CAAC,CAAC;MAEV,IAAI,CAACmG,YAAY,EAAE;QACjB,MAAM,IAAInH,KAAK,CAAC,oCAAoC,IAAI,CAACa,UAAU,CAAC,CAAC,oBAAoBgG,eAAe,CAACpE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;MACxH;MAEA,MAAM2E,YAAY,GAAGD,YAAY,CAAC5D,SAAS;MAC3C,KAAK,MAAM8D,UAAU,IAAID,YAAY,EAAE;QACrC,IAAI,CAAC7D,SAAS,CAAC8D,UAAU,CAAC,GAAGD,YAAY,CAACC,UAAU,CAAC;MACvD;IACF;EACF;EAEAhC,aAAa,GAAGA,CAAA,KAAMiC,MAAM,CAACC,MAAM,CAAC,IAAI,CAAC9D,SAAS,EAAE,IAAI,CAACT,OAAO,CAAC;EAEjE0D,mBAAmBA,CAACnB,QAAQ,EAAE;IAC5BnG,SAAS,CAAC0G,qBAAqB,CAAC;MAAChF,KAAK,EAAE,IAAI;MAAEyE;IAAQ,CAAC,CAAC;IACxD,MAAM,IAAI,IAAIrH,WAAW,CAAC,4BAA4B,EAAE;MAAC4C,KAAK,EAAE,IAAI;MAAEyE;IAAQ,CAAC,CAAC,CAAD,CAAC;EAClF;EAEAiC,aAAaA,CAAA,EAAG;IACd,IAAI,CAAC,IAAI,CAACC,cAAc,EAAE,IAAI,CAACA,cAAc,GAAG,IAAI,CAAChD,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC5D,UAAU,CAAC,CAAC,GAAG,IAAI,CAACiE,SAAS,CAAC,CAAC;IAEzG,OAAO,IAAI,CAAC2C,cAAc;EAC5B;EAEAC,mBAAmB,GAAIC,eAAe,IAAK,IAAI,CAACC,6BAA6B,CAACvJ,UAAU,CAACc,UAAU,CAACwI,eAAe,CAAC,CAAC;EACrHC,6BAA6BA,CAAEC,yBAAyB,EAAE;IACxD,IAAIA,yBAAyB,IAAI,IAAI,CAAC1E,kBAAkB,EAAE,OAAO,IAAI;IACrE,OAAO,KAAK;EACd;EAEA2E,oBAAoBA,CAACH,eAAe,EAAE;IACpC,IAAI,IAAI,CAACD,mBAAmB,CAACC,eAAe,CAAC,EAAE,OAAO,IAAI;IAC1D,IAAIA,eAAe,IAAI,IAAI,CAAC7F,aAAa,EAAE,OAAO,IAAI;IACtD,OAAO,KAAK;EACd;EAEA,OAAOgE,qBAAqBA,CAAC;IAACD,KAAK;IAAE/E,KAAK;IAAER;EAAO,CAAC,EAAE;IACpD,IAAI,EAAEuF,KAAK,YAAYjH,eAAe,CAAC,EAAE;IACzC,IAAI,CAACiH,KAAK,CAAC1E,IAAI,CAACoE,QAAQ,CAACwC,iBAAiB,EAAE;IAE5C,MAAM7H,gBAAgB,GAAG,IAAIrB,gBAAgB,CAAC;MAC5CiC,KAAK;MACLZ,gBAAgB,EAAE/B,IAAI,CAAC0H,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB;IACvE,CAAC,CAAC;IAEFzG,SAAS,CAACiB,yBAAyB,CAACH,gBAAgB,EAAEI,OAAO,CAAC;IAE9D,IAAI,CAACA,OAAO,IAAIA,OAAO,CAAC0H,oBAAoB,IAAI,KAAK,EAAE;MACrD,MAAMnC,KAAK;IACb;EACF;EAEA,OAAOoC,kBAAkBA,CAACnI,aAAa,EAAE;IACvC,MAAMoI,OAAO,GAAG/J,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,SAAS,CAAC;IACtD,MAAM4I,IAAI,GAAGlK,MAAM,CAACmK,OAAO,CAAC,CAAC;IAE7B,IAAID,IAAI,EAAE,OAAOA,IAAI,CAACE,CAAC,CAAC,2BAA2BH,OAAO,IAAI9I,SAAS,CAACkJ,SAAS,CAACxI,aAAa,CAAC,EAAE,EAAE;MAACyI,YAAY,EAAEzI;IAAa,CAAC,CAAC;IAElI,OAAOzB,UAAU,CAACmK,QAAQ,CAAC1I,aAAa,CAAC;EAC3C;EAEA2I,kBAAkBA,CAAC3I,aAAa,EAAE;IAChC,MAAM4I,uBAAuB,GAAGrK,UAAU,CAACc,UAAU,CAACW,aAAa,CAAC;IACpE,MAAMJ,aAAa,GAAG,IAAI,CAACH,cAAc,CAAC,CAAC,CAACD,UAAU,CAACoB,IAAI,CAAEf,SAAS,IAAKxB,IAAI,CAACwB,SAAS,EAAE,MAAM,CAAC,IAAI+I,uBAAuB,CAAC;IAE9H,IAAI,CAAChJ,aAAa,EAAE;MAClB,MAAMiJ,cAAc,GAAG,IAAI,CAACpJ,cAAc,CAAC,CAAC,CAACD,UAAU,CAACkD,GAAG,CAAE7C,SAAS,IAAKxB,IAAI,CAACwB,SAAS,EAAE,MAAM,CAAC,CAAC;MAEnG,MAAM,IAAIK,KAAK,CAAC,6CAA6CF,aAAa,SAAS6I,cAAc,CAAClG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACjH;IAEA,IAAI,EAAEiG,uBAAuB,IAAI,IAAI,CAAC1F,OAAO,CAAC,EAC5C,OAAO,KAAK;IAEd,MAAMiB,QAAQ,GAAG,IAAI,CAACR,SAAS,CAACiF,uBAAuB,CAAC;IACxD,MAAM9E,QAAQ,GAAG,IAAI,CAACZ,OAAO,CAAC0F,uBAAuB,CAAC;IACtD,MAAME,aAAa,GAAG,IAAI,CAAC,MAAMvK,UAAU,CAACwK,QAAQ,CAACnJ,aAAa,CAACkG,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;IAExF,IAAI,CAACgD,aAAa,EAChB,MAAM,IAAI5I,KAAK,CAAC,kCAAkCN,aAAa,CAACkG,IAAI,EAAE,CAAC;IAEzE,OAAOgD,aAAa,CAAC3E,QAAQ,EAAEL,QAAQ,CAAC;EAC1C;EAEAkF,SAASA,CAAA,EAAG;IACV,MAAMC,IAAI,GAAGzB,MAAM,CAACyB,IAAI,CAAC,IAAI,CAAC/F,OAAO,CAAC;IAEtC,IAAI+F,IAAI,CAAChC,MAAM,GAAG,CAAC,EAAE;MACnB,OAAO,IAAI;IACb,CAAC,MAAM;MACL,OAAO,KAAK;IACd;EACF;EAEA7D,WAAWA,CAAA,EAAG;IACZ,IAAI,IAAI,CAACD,SAAS,KAAK+F,SAAS,EAAE;MAChC,OAAO,IAAI,CAAC/F,SAAS;IACvB,CAAC,MAAM,IAAI,IAAI,IAAI,IAAI,CAACQ,SAAS,IAAI,IAAI,CAACA,SAAS,CAAC9C,EAAE,EAAE;MACtD,OAAO,KAAK;IACd,CAAC,MAAM;MACL,OAAO,IAAI;IACb;EACF;EAEA8D,WAAW,GAAGA,CAAA,KAAM,CAAC,IAAI,CAACvB,WAAW,CAAC,CAAC;EAEvC,OAAOoF,SAAS,GAAIW,MAAM,IAAK5K,UAAU,CAACc,UAAU,CAAC8J,MAAM,CAAC;EAE5DC,sBAAsBA,CAACpJ,aAAa,EAAE;IACpC,IAAI,CAAC,IAAI,CAACqJ,iBAAiB,EACzB,OAAO,KAAK;IAEd,MAAMT,uBAAuB,GAAGrK,UAAU,CAACc,UAAU,CAACW,aAAa,CAAC;IACpE,MAAMJ,aAAa,GAAG,IAAI,CAACH,cAAc,CAAC,CAAC,CAACD,UAAU,CAACoB,IAAI,CAAEf,SAAS,IAAKA,SAAS,CAAC2C,IAAI,IAAIoG,uBAAuB,CAAC;IAErH,IAAI,CAAChJ,aAAa,EAAE;MAClB,MAAMiJ,cAAc,GAAG,IAAI,CAACpJ,cAAc,CAAC,CAAC,CAACD,UAAU,CAACkD,GAAG,CAAE7C,SAAS,IAAKA,SAAS,CAAC2C,IAAI,CAAC;MAC1F,MAAM,IAAItC,KAAK,CAAC,6CAA6CF,aAAa,SAAS6I,cAAc,CAAClG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACjH;IAEA,IAAI,EAAEiG,uBAAuB,IAAI,IAAI,CAACS,iBAAiB,CAAC,EACtD,OAAO,IAAI;IAEb,MAAMlF,QAAQ,GAAG,IAAI,CAACkF,iBAAiB,CAACT,uBAAuB,CAAC;IAChE,MAAM9E,QAAQ,GAAG,IAAI,CAACH,SAAS,CAACiF,uBAAuB,CAAC;IACxD,MAAMU,iBAAiB,GAAG,MAAM/K,UAAU,CAACwK,QAAQ,CAACnJ,aAAa,CAACkG,IAAI,CAAC,SAAS;IAChF,MAAMgD,aAAa,GAAG,IAAI,CAACQ,iBAAiB,CAAC;IAE7C,IAAI,CAACR,aAAa,EAChB,MAAM,IAAI5I,KAAK,CAAC,kCAAkCN,aAAa,CAACkG,IAAI,EAAE,CAAC;IAEzE,OAAOgD,aAAa,CAAC3E,QAAQ,EAAEL,QAAQ,CAAC;EAC1C;EAEAyF,WAAWA,CAACvI,KAAK,EAAE;IACjB,IAAI,CAACwI,eAAe,CAACxI,KAAK,CAAC;IAE3B,KAAI,MAAMyI,gBAAgB,IAAIzI,KAAK,CAACgB,aAAa,EAAE;MACjD,IAAI,CAACA,aAAa,CAACyH,gBAAgB,CAAC,GAAGzI,KAAK,CAACgB,aAAa,CAACyH,gBAAgB,CAAC;IAC9E;IAEA,KAAI,MAAMC,qBAAqB,IAAI1I,KAAK,CAACqC,kBAAkB,EAAE;MAC3D,IAAI,CAACA,kBAAkB,CAACqG,qBAAqB,CAAC,GAAG1I,KAAK,CAACqC,kBAAkB,CAACb,IAAI,CAAC;IACjF;EACF;EAEAgH,eAAeA,CAACxI,KAAK,EAAE;IACrB,IAAI,EAAE,WAAW,IAAIA,KAAK,CAAC,EAAE,MAAM,IAAId,KAAK,CAAC,0BAA0ByJ,IAAI,CAACC,SAAS,CAAC5I,KAAK,CAAC,EAAE,CAAC;IAE/F,IAAI,CAACqI,iBAAiB,GAAG7B,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,EAAEpJ,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAEnE,KAAI,MAAM2B,aAAa,IAAIgB,KAAK,CAAC2C,SAAS,EAAE;MAC1C,IAAI,CAACA,SAAS,CAAC3D,aAAa,CAAC,GAAGgB,KAAK,CAAC2C,SAAS,CAAC3D,aAAa,CAAC;IAChE;EACF;EAEA6J,cAAcA,CAAC1F,QAAQ,EAAEL,QAAQ,EAAE;IACjC,IAAIgG,IAAI,CAACC,KAAK,CAAC5F,QAAQ,CAAC,IAAI2F,IAAI,CAACC,KAAK,CAACjG,QAAQ,CAAC,EAC9C,OAAO,IAAI;EACf;EAEAkG,iBAAiBA,CAAC7F,QAAQ,EAAEL,QAAQ,EAAE;IACpC,IAAImG,QAAQ,CAAC9F,QAAQ,EAAE,EAAE,CAAC,IAAI8F,QAAQ,CAACnG,QAAQ,EAAE,EAAE,CAAC,EAClD,OAAO,IAAI;EACf;EAEAoG,gBAAgBA,CAAE/F,QAAQ,EAAEL,QAAQ,EAAE;IACpC,MAAMqG,iBAAiB,GAAG,GAAGhG,QAAQ,EAAE;IACvC,MAAMiG,iBAAiB,GAAG,GAAGtG,QAAQ,EAAE;IAEvC,IAAIqG,iBAAiB,IAAIC,iBAAiB,EACxC,OAAO,IAAI;EACf;EAEA3K,cAAc,GAAGA,CAAA,KAAM,IAAI,CAACwD,WAAW,CAACxD,cAAc,CAAC,CAAC;EAExD,MAAM4K,MAAMA,CAAA,EAAG;IACb,MAAM3D,MAAM,GAAG,IAAI,CAACD,UAAU,IAAI,IAAI,CAACA,UAAU,CAACC,MAAM,CAAC,CAAC;IAC1D,MAAMS,aAAa,GAAG,CAAC,CAAC;IACxBA,aAAa,CAAC,GAAG,IAAI,CAAClE,WAAW,CAAClC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAACA,UAAU,CAAC,CAAC;IAExE,IAAID,KAAK,GAAG,IAAI,CAACmC,WAAW,CAAChC,OAAO,CAACkG,aAAa,CAAC;IAEnD,IAAIT,MAAM,EAAE;MACV,IAAIA,MAAM,CAAC4D,OAAO,EAAE;QAClBxJ,KAAK,CAACyJ,SAAS,CAACD,OAAO,GAAG5D,MAAM,CAAC4D,OAAO;MAC1C;MAEA,IAAI5D,MAAM,CAAC5E,MAAM,EAAE;QACjBhB,KAAK,CAACyJ,SAAS,CAACzI,MAAM,GAAG4E,MAAM,CAAC5E,MAAM;MACxC;MAEA,IAAI4E,MAAM,CAAC8D,cAAc,EAAE;QACzB1J,KAAK,CAACyJ,SAAS,CAACE,aAAa,GAAG/D,MAAM,CAAC8D,cAAc;MACvD;IACF;IAEA,MAAMxJ,KAAK,GAAG,MAAMF,KAAK,CAACI,KAAK,CAAC,CAAC;IACjC,IAAI,CAACqI,WAAW,CAACvI,KAAK,CAAC;IACvB,IAAI,CAACkC,OAAO,GAAG,CAAC,CAAC;EACnB;EAEAyC,IAAIA,CAAA,EAAG;IACL,IAAI,IAAI,CAACvC,WAAW,CAAC,CAAC,EAAE;MACtB,OAAO,IAAI,CAACkC,MAAM,CAAC,CAAC;IACtB,CAAC,MAAM;MACL,OAAO,IAAI,CAACoF,MAAM,CAAC,CAAC;IACtB;EACF;EAEAC,OAAOA,CAACxE,OAAO,EAAE3F,OAAO,GAAG,CAAC,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC4C,WAAW,CAAC,CAAC,EAAE;MACtB,OAAO,IAAI,CAAC8C,SAAS,CAACC,OAAO,EAAE3F,OAAO,CAAC;IACzC,CAAC,MAAM;MACL,OAAO,IAAI,CAACoK,SAAS,CAACzE,OAAO,EAAE3F,OAAO,CAAC;IACzC;EACF;EAEA,MAAMkK,MAAMA,CAAC7G,aAAa,EAAErD,OAAO,EAAE;IACnC,IAAIqD,aAAa,EAAE;MACjB,IAAI,CAACD,gBAAgB,CAACC,aAAa,CAAC;IACtC;IAEA,IAAI2D,MAAM,CAACyB,IAAI,CAAC,IAAI,CAAC/F,OAAO,CAAC,CAAC+D,MAAM,IAAI,CAAC,EAAE;MACzC,OAAO;QAACjG,KAAK,EAAE;MAAI,CAAC;IACtB;IAEA,MAAM6D,QAAQ,GAAG,IAAI,CAACpF,cAAc,CAAC,CAAC,CAACoF,QAAQ;IAC/C,MAAMlB,SAAS,GAAG,IAAI,CAACT,OAAO;IAC9B,MAAMsC,SAAS,GAAG,CAAC,CAAC;IACpBA,SAAS,CAACX,QAAQ,CAAC,GAAGlB,SAAS;IAC/B,IAAI8B,QAAQ;IAEZ,IAAI;MACFA,QAAQ,GAAG,MAAMvH,YAAY,CAACwH,UAAU,CACtC;QACErE,IAAI,EAAE;UACJmF,YAAY,EAAE,IAAI,CAACC,UAAU,IAAI,IAAI,CAACA,UAAU,CAACC,MAAM,CAAC,CAAC;UACzDf,IAAI,EAAEH;QACR,CAAC;QACDI,OAAO,EAAE,GAAG,IAAI,CAACnG,cAAc,CAAC,CAAC,CAACoG,cAAc,SAAS;QACzDA,cAAc,EAAE,IAAI,CAACpG,cAAc,CAAC,CAAC,CAACoG,cAAc;QACpD9E,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,CAAC;QAC7B+E,IAAI,EAAE;MACR,CAAC,EACD,CAAC,CACH,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdzG,SAAS,CAAC0G,qBAAqB,CAAC;QAACD,KAAK;QAAE/E,KAAK,EAAE,IAAI;QAAER;MAAO,CAAC,CAAC;MAC9D,MAAMuF,KAAK;IACb;IAEA,IAAIN,QAAQ,CAACkB,OAAO,EAAE;MACpB,IAAIlB,QAAQ,CAACzE,KAAK,EAAE;QAClB,IAAI,CAACiF,yBAAyB,CAACR,QAAQ,CAAC;QACxC,IAAI,CAACvC,OAAO,GAAG,CAAC,CAAC;MACnB;MAEA,OAAO;QAACuC,QAAQ;QAAEzE,KAAK,EAAE;MAAI,CAAC;IAChC,CAAC,MAAM;MACL,IAAI,CAAC4F,mBAAmB,CAACnB,QAAQ,CAAC;IACpC;EACF;EAEAQ,yBAAyBA,CAACR,QAAQ,EAAE;IAClC,IAAIoF,QAAQ,GAAGxM,IAAI,CAACoH,QAAQ,EAAE,OAAO,CAAC;IAEtC,IAAIqF,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAEA,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC;IAEnD,IAAI,CAACtB,WAAW,CAACsB,QAAQ,CAAC;EAC5B;EAEAvE,6BAA6BA,CAACb,QAAQ,EAAE;IACtC,IAAIoF,QAAQ,GAAGxM,IAAI,CAACoH,QAAQ,EAAE,OAAO,CAAC;IAEtC,IAAIqF,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAEA,QAAQ,GAAGA,QAAQ,CAAC,CAAC,CAAC;IAEnD,IAAI,CAACrB,eAAe,CAACqB,QAAQ,CAAC;EAChC;EAEA,OAAOxE,2BAA2BA,CAACF,OAAO,EAAE3F,OAAO,EAAE;IACnD,IAAI2F,OAAO,YAAY6E,QAAQ,IAAI7E,OAAO,CAAC8E,QAAQ,IAAI,MAAM,EAAE;MAC7D,MAAMC,QAAQ,GAAG5M,kBAAkB,CAAC6M,kBAAkB,CAAChF,OAAO,EAAE3F,OAAO,CAAC;MAExE,OAAOlC,kBAAkB,CAAC8M,QAAQ,CAACF,QAAQ,CAAC;IAC9C;IAEA,OAAO/E,OAAO;EAChB;EAEA,MAAMyE,SAASA,CAACzE,OAAO,EAAE3F,OAAO,GAAG,CAAC,CAAC,EAAE;IACrC,MAAM4F,UAAU,GAAG9G,SAAS,CAAC+G,2BAA2B,CAACF,OAAO,EAAE3F,OAAO,CAAC;IAC1E,IAAIiF,QAAQ;IAEZ,IAAI;MACFA,QAAQ,GAAG,MAAMvH,YAAY,CAACwH,UAAU,CACtC;QACErE,IAAI,EAAE;UACJmF,YAAY,EAAE,IAAI,CAACC,UAAU,IAAI,IAAI,CAACA,UAAU,CAACC,MAAM,CAAC,CAAC;UACzDf,IAAI,EAAES,UAAU;UAChBiF,mBAAmB,EAAE7K,OAAO,EAAE8K;QAChC,CAAC;QACD1F,OAAO,EAAE,GAAG,IAAI,CAACnG,cAAc,CAAC,CAAC,CAACoG,cAAc,SAAS;QACzDA,cAAc,EAAE,IAAI,CAACpG,cAAc,CAAC,CAAC,CAACoG,cAAc;QACpD9E,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,CAAC;QAC7B+E,IAAI,EAAE;MACR,CAAC,EACD,CAAC,CACH,CAAC;IACH,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdzG,SAAS,CAAC0G,qBAAqB,CAAC;QAACD,KAAK;QAAE/E,KAAK,EAAE,IAAI;QAAER;MAAO,CAAC,CAAC;MAC9D,MAAMuF,KAAK;IACb;IAEA,IAAIN,QAAQ,CAACzE,KAAK,EAAE;MAClB,IAAI,CAACiF,yBAAyB,CAACR,QAAQ,CAAC;MACxC,IAAI,CAACvC,OAAO,GAAG,CAAC,CAAC;IACnB;IAEA,OAAO;MAACuC,QAAQ;MAAEzE,KAAK,EAAE;IAAI,CAAC;EAChC;EAEAuK,OAAOA,CAAA,EAAG;IACR,MAAM,IAAIrL,KAAK,CAAC,qBAAqB,CAAC;EACxC;EAEA,MAAMsL,eAAeA,CAAA,EAAG;IACtB,MAAM7H,SAAS,GAAG,IAAI,CAAC4B,aAAa,CAAC,CAAC;IACtC,MAAMV,QAAQ,GAAG,IAAI,CAACpF,cAAc,CAAC,CAAC,CAACoF,QAAQ;IAC/C,MAAMW,SAAS,GAAG,CAAC,CAAC;IACpBA,SAAS,CAACX,QAAQ,CAAC,GAAGlB,SAAS;IAE/B,MAAM8B,QAAQ,GAAG,MAAMvH,YAAY,CAACwH,UAAU,CAC5C;MACErE,IAAI,EAAE;QACJsE,IAAI,EAAEH;MACR,CAAC;MACDI,OAAO,EAAE,GAAG,IAAI,CAACnG,cAAc,CAAC,CAAC,CAACoG,cAAc,QAAQ;MACxDA,cAAc,EAAE,IAAI,CAACpG,cAAc,CAAC,CAAC,CAACoG,cAAc;MACpD9E,UAAU,EAAE,IAAI,CAACA,UAAU,CAAC,CAAC;MAC7B+E,IAAI,EAAE;IACR,CAAC,EACD,CAAC,CACH,CAAC;IAED,OAAO;MAAC2F,KAAK,EAAEhG,QAAQ,CAACgG,KAAK;MAAEC,MAAM,EAAEjG,QAAQ,CAACiG;IAAM,CAAC;EACzD;EAEA7J,UAAU,GAAGA,CAAA,KAAM,IAAI,CAACoB,WAAW;EAEnC0I,mBAAmBA,CAAClC,gBAAgB,EAAEzI,KAAK,EAAE;IAC3C,IAAI,CAACqC,kBAAkB,CAAC/D,SAAS,CAACkJ,SAAS,CAACiB,gBAAgB,CAAC,CAAC,GAAGzI,KAAK;IACtE,IAAI,CAACgB,aAAa,CAAC1C,SAAS,CAACkJ,SAAS,CAACiB,gBAAgB,CAAC,CAAC,GAAGzI,KAAK;EACnE;EAEA4K,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACC,qBAAqB,GAAG,IAAI;EACnC;EAEAC,oBAAoB,GAAGA,CAAA,KAAM,IAAI,CAACD,qBAAqB;EAEvD7G,SAASA,CAAA,EAAG;IACV,IAAI,CAAC,IAAI,CAAC+G,cAAc,EAAE;MACxB,MAAMC,GAAG,GAAG,gBAAgB;MAC5B,MAAMC,GAAG,GAAG,gBAAgB;MAC5B,MAAMC,aAAa,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,IAAIJ,GAAG,GAAGD,GAAG,GAAG,CAAC,CAAC,GAAGA,GAAG,CAAC;MACvE,IAAI,CAACD,cAAc,GAAGG,aAAa;IACrC;IAEA,OAAO,IAAI,CAACH,cAAc;EAC5B;EAEA,aAAaO,sBAAsBA,CAACjL,IAAI,EAAEkL,WAAW,EAAE;IACrD,MAAMC,gBAAgB,GAAGnL,IAAI,CAACA,IAAI;IAElC,IAAI;MACF,OAAO,MAAMnD,YAAY,CAACwH,UAAU,CAACrE,IAAI,EAAEkL,WAAW,CAAC;IACzD,CAAC,CAAC,OAAOxG,KAAK,EAAE;MACd,IAAItF,IAAI;MAER,IAAI8L,WAAW,CAAC9L,IAAI,EAAE;QACpBA,IAAI,GAAG8L,WAAW,CAAC9L,IAAI;MACzB,CAAC,MAAM,IAAI+L,gBAAgB,EAAEvB,QAAQ,IAAI,MAAM,EAAE;QAC/CxK,IAAI,GAAG+L,gBAAgB;MACzB;MAEA,IAAI/L,IAAI,EAAEnB,SAAS,CAAC0G,qBAAqB,CAAC;QAACD,KAAK;QAAEvF,OAAO,EAAE;UAACC;QAAI;MAAC,CAAC,CAAC;MAEnE,MAAMsF,KAAK;IACb;EACF;EAEA0G,kBAAkB,GAAGA,CAACpL,IAAI,EAAEkL,WAAW,KAAKrO,YAAY,CAACwH,UAAU,CAACrE,IAAI,EAAEkL,WAAW,CAAC;EAEtF,OAAOG,iBAAiBA,CAACrL,IAAI,EAAE;IAC7B,IAAIsL,QAAQ;IAEZ,IAAItL,IAAI,EAAE;MACR,IAAIA,IAAI,YAAY2J,QAAQ,EAAE;QAC5B2B,QAAQ,GAAGtL,IAAI;MACjB,CAAC,MAAM;QACLsL,QAAQ,GAAGjO,gBAAgB,CAACkO,SAAS,CAACvL,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;MAC/D;IACF,CAAC,MAAM;MACLsL,QAAQ,GAAG,IAAI3B,QAAQ,CAAC,CAAC;IAC3B;IAEA,OAAO2B,QAAQ;EACjB;EAEAvI,aAAaA,CAACpE,aAAa,EAAE;IAC3B,MAAM4I,uBAAuB,GAAGrK,UAAU,CAACc,UAAU,CAACW,aAAa,CAAC;IAEpE,OAAO,IAAI,CAAC6M,uBAAuB,CAACjE,uBAAuB,CAAC;EAC9D;EAEAiE,uBAAuBA,CAAC7M,aAAa,EAAE;IACrC,IAAIA,aAAa,IAAI,IAAI,CAACkD,OAAO,EAAE;MACjC,OAAO,IAAI,CAACA,OAAO,CAAClD,aAAa,CAAC;IACpC,CAAC,MAAM,IAAIA,aAAa,IAAI,IAAI,CAAC2D,SAAS,EAAE;MAC1C,OAAO,IAAI,CAACA,SAAS,CAAC3D,aAAa,CAAC;IACtC,CAAC,MAAM,IAAI,IAAI,CAACoD,WAAW,CAAC,CAAC,EAAE;MAC7B;MACA,MAAM5D,UAAU,GAAGnB,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC;MAE5D,IAAIO,aAAa,IAAIR,UAAU,EAAE,OAAO,IAAI;IAC9C;IAEA,IAAI,IAAI,CAACmF,WAAW,CAAC,CAAC,EAAE;MACtB,MAAM,IAAI5G,uBAAuB,CAAC,sBAAsBM,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,IAAIO,aAAa,KAAK2J,IAAI,CAACC,SAAS,CAAC,IAAI,CAACjG,SAAS,CAAC,EAAE,CAAC;IACpJ;EACF;EAEAO,iBAAiBA,CAAClE,aAAa,EAAE;IAC/B,MAAM4I,uBAAuB,GAAGrK,UAAU,CAACc,UAAU,CAACW,aAAa,CAAC;IAEpE,IAAI4I,uBAAuB,IAAI,IAAI,CAAC1F,OAAO,EAAE,OAAO,IAAI;IACxD,IAAI0F,uBAAuB,IAAI,IAAI,CAACjF,SAAS,EAAE,OAAO,IAAI;IAC1D,OAAO,KAAK;EACd;EAEAmJ,UAAUA,CAACC,KAAK,EAAE;IAChB,IAAI,CAACA,KAAK,EAAE;MACV,OAAO,KAAK;IACd,CAAC,MAAM,IAAI,OAAOA,KAAK,IAAI,QAAQ,IAAIA,KAAK,CAACC,KAAK,CAAC,OAAO,CAAC,EAAE;MAC3D,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb;EAEA,MAAMC,wBAAwBA,CAAC5L,IAAI,EAAEkJ,SAAS,GAAG,CAAC,CAAC,EAAE;IACnD,IAAIlJ,IAAI,CAAC6L,cAAc,IAAI,IAAI,CAAClL,aAAa,EAAE;MAC7C,OAAO,IAAI,CAACA,aAAa,CAACX,IAAI,CAAC6L,cAAc,CAAC;IAChD,CAAC,MAAM,IAAI7L,IAAI,CAAC6L,cAAc,IAAI,IAAI,CAAC7J,kBAAkB,EAAE;MACzD,OAAO,IAAI,CAACA,kBAAkB,CAAChC,IAAI,CAAC6L,cAAc,CAAC;IACrD,CAAC,MAAM;MACL,MAAMzG,UAAU,GAAG,IAAIxI,UAAU,CAACoD,IAAI,EAAEkJ,SAAS,CAAC;MAClD,MAAMvJ,KAAK,GAAG,MAAMyF,UAAU,CAACvF,KAAK,CAAC,CAAC;MACtC,IAAI,CAACmC,kBAAkB,CAAChC,IAAI,CAAC6L,cAAc,CAAC,GAAGlM,KAAK;MACpD,OAAOA,KAAK;IACd;EACF;EAEAmM,wBAAwBA,CAAC;IAACD;EAAc,CAAC,EAAE;IACzC,IAAIA,cAAc,IAAI,IAAI,CAAClL,aAAa,EAAE;MACxC,OAAO,IAAI,CAACA,aAAa,CAACkL,cAAc,CAAC;IAC3C,CAAC,MAAM,IAAIA,cAAc,IAAI,IAAI,CAAC7J,kBAAkB,EAAE;MACpD,OAAO,IAAI,CAACA,kBAAkB,CAAC6J,cAAc,CAAC;IAChD;IAEA,IAAI,IAAI,CAAC9J,WAAW,CAAC,CAAC,EAAE,OAAO,IAAI;IAEnC,MAAMgK,mBAAmB,GAAG5F,MAAM,CAACyB,IAAI,CAAC,IAAI,CAAC5F,kBAAkB,CAAC;IAChE,MAAMgK,cAAc,GAAGhP,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC;IAE1D,MAAM,IAAIhB,cAAc,CAAC,GAAG4O,cAAc,IAAIH,cAAc,oDAAoDE,mBAAmB,CAACzK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;EACnJ;EAEA,MAAM2K,sBAAsBA,CAACjM,IAAI,EAAEkJ,SAAS,GAAG,CAAC,CAAC,EAAE;IACjD,IAAIlJ,IAAI,CAAC6L,cAAc,IAAI,IAAI,CAAClL,aAAa,EAAE;MAC7C,OAAO,IAAI,CAACA,aAAa,CAACX,IAAI,CAAC6L,cAAc,CAAC;IAChD,CAAC,MAAM,IAAI7L,IAAI,CAAC6L,cAAc,IAAI,IAAI,CAAC7J,kBAAkB,EAAE;MACzD,OAAO,IAAI,CAACA,kBAAkB,CAAChC,IAAI,CAAC6L,cAAc,CAAC;IACrD;IAEA,MAAMzG,UAAU,GAAG,IAAIxI,UAAU,CAACoD,IAAI,EAAEkJ,SAAS,CAAC;IAClD,MAAMgD,MAAM,GAAG,MAAM9G,UAAU,CAAC+G,OAAO,CAAC,CAAC;IAEzC,IAAI,CAACnK,kBAAkB,CAAChC,IAAI,CAAC6L,cAAc,CAAC,GAAGK,MAAM;IAErD,OAAOA,MAAM;EACf;EAEA,MAAME,qBAAqBA,CAACpM,IAAI,EAAEkJ,SAAS,GAAG,CAAC,CAAC,EAAE;IAChD,IAAIlJ,IAAI,CAAC6L,cAAc,IAAI,IAAI,CAAClL,aAAa,EAAE;MAC7C,OAAO,IAAI,CAACA,aAAa,CAACX,IAAI,CAAC6L,cAAc,CAAC;IAChD,CAAC,MAAM,IAAI7L,IAAI,CAAC6L,cAAc,IAAI,IAAI,CAAC7J,kBAAkB,EAAE;MACzD,OAAO,IAAI,CAACA,kBAAkB,CAAChC,IAAI,CAAC6L,cAAc,CAAC;IACrD,CAAC,MAAM;MACL,MAAMzG,UAAU,GAAG,IAAIxI,UAAU,CAACoD,IAAI,EAAEkJ,SAAS,CAAC;MAClD,MAAMvJ,KAAK,GAAG,MAAMyF,UAAU,CAACvF,KAAK,CAAC,CAAC;MAEtC,IAAI,CAACmC,kBAAkB,CAAChC,IAAI,CAAC6L,cAAc,CAAC,GAAGlM,KAAK;MAEpD,OAAOA,KAAK;IACd;EACF;EAEA0M,qBAAqBA,CAAC;IAACR;EAAc,CAAC,EAAE;IACtC,IAAIA,cAAc,IAAI,IAAI,CAAClL,aAAa,EAAE;MACxC,OAAO,IAAI,CAACA,aAAa,CAACkL,cAAc,CAAC;IAC3C,CAAC,MAAM,IAAIA,cAAc,IAAI,IAAI,CAAC7J,kBAAkB,EAAE;MACpD,OAAO,IAAI,CAACA,kBAAkB,CAAC6J,cAAc,CAAC;IAChD;IAEA,IAAI,IAAI,CAAC9J,WAAW,CAAC,CAAC,EAAE;MACtB,OAAO,IAAI;IACb;IAEA,MAAMgK,mBAAmB,GAAG5F,MAAM,CAACyB,IAAI,CAAC,IAAI,CAAC5F,kBAAkB,CAAC;IAChE,MAAMgK,cAAc,GAAGhP,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC;IAE1D,MAAM,IAAIhB,cAAc,CAAC,GAAG4O,cAAc,IAAIH,cAAc,oDAAoDE,mBAAmB,CAACzK,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;EACnJ;EAEAa,sBAAsBA,CAACnC,IAAI,EAAE;IAC3B,IAAI,CAACoC,SAAS,GAAGpC,IAAI,CAACiC,IAAI,CAACI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC+C,UAAU,GAAGpF,IAAI,CAACoF,UAAU;IACjC,IAAI,CAAC9C,SAAS,GAAG3E,kBAAkB,CAACqC,IAAI,CAACiC,IAAI,CAACC,CAAC,CAAC;IAChD,IAAI,CAACoK,sBAAsB,GAAGtM,IAAI,CAACiC,IAAI,CAACsK,CAAC;EAC3C;EAEAC,2BAA2BA,CAACC,SAAS,EAAE;IACrC,IAAI,CAAC,IAAI,CAACH,sBAAsB,EAAE;MAChC;IACF;IAEA,MAAM3L,aAAa,GAAG3D,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC;IAElE,KAAK,MAAMgK,gBAAgB,IAAI,IAAI,CAACkE,sBAAsB,EAAE;MAC1D,MAAMzL,gBAAgB,GAAG,IAAI,CAACyL,sBAAsB,CAAClE,gBAAgB,CAAC;MACtE,MAAMsE,qBAAqB,GAAG/L,aAAa,CAACpB,IAAI,CAAEoN,YAAY,IAAK3P,IAAI,CAAC2P,YAAY,EAAE,MAAM,CAAC,IAAIvE,gBAAgB,CAAC;MAElH,IAAI,CAACsE,qBAAqB,EAAE;QAC1B,MAAMnM,SAAS,GAAGvD,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC;QACrD,MAAMwO,iBAAiB,GAAGjM,aAAa,CAACU,GAAG,CAAEsL,YAAY,IAAKA,YAAY,CAACxL,IAAI,CAAC,CAACG,IAAI,CAAC,IAAI,CAAC;QAE3F,MAAM,IAAIzC,KAAK,CAAC,+BAA+BuJ,gBAAgB,WAAW7H,SAAS,WAAWqM,iBAAiB,EAAE,CAAC;MACpH;MAEA,MAAMC,gBAAgB,GAAG7P,IAAI,CAAC0P,qBAAqB,EAAE,gBAAgB,CAAC;MAEtE,IAAItE,gBAAgB,IAAI,IAAI,CAACpG,kBAAkB,EAAE;QAC/C,MAAM,IAAInD,KAAK,CAAC,GAAGuJ,gBAAgB,0BAA0B,CAAC;MAChE;MAEA,IAAI,CAACsE,qBAAqB,EAAE;QAC1B,MAAM,IAAI7N,KAAK,CAAC,sBAAsB7B,IAAI,CAAC,IAAI,CAACoB,cAAc,CAAC,CAAC,EAAE,MAAM,CAAC,kBAAkBgK,gBAAgB,EAAE,CAAC;MAChH;MAEA,IAAI,CAACvH,gBAAgB,EAAE;QACrB,IAAI,CAACmB,kBAAkB,CAACoG,gBAAgB,CAAC,GAAG,IAAI;QAChD,IAAI,CAACzH,aAAa,CAACyH,gBAAgB,CAAC,GAAG,IAAI;MAC7C,CAAC,MAAM,IAAIqB,KAAK,CAACC,OAAO,CAAC7I,gBAAgB,CAAC,EAAE;QAC1C,IAAI,CAACmB,kBAAkB,CAACoG,gBAAgB,CAAC,GAAG,EAAE;QAC9C,IAAI,CAACzH,aAAa,CAACyH,gBAAgB,CAAC,GAAG,EAAE;QAEzC,KAAK,MAAM0E,cAAc,IAAIjM,gBAAgB,EAAE;UAC7C,MAAMlB,KAAK,GAAG8M,SAAS,CAACM,QAAQ,CAACF,gBAAgB,EAAEC,cAAc,CAAC;UAElE,IAAI,CAAC9K,kBAAkB,CAACoG,gBAAgB,CAAC,CAAC3J,IAAI,CAACkB,KAAK,CAAC;UACrD,IAAI,CAACgB,aAAa,CAACyH,gBAAgB,CAAC,CAAC3J,IAAI,CAACkB,KAAK,CAAC;QAClD;MACF,CAAC,MAAM;QACL,MAAMA,KAAK,GAAG8M,SAAS,CAACM,QAAQ,CAACF,gBAAgB,EAAEhM,gBAAgB,CAAC;QAEpE,IAAI,CAACmB,kBAAkB,CAACoG,gBAAgB,CAAC,GAAGzI,KAAK;QACjD,IAAI,CAACgB,aAAa,CAACyH,gBAAgB,CAAC,GAAGzI,KAAK;MAC9C;IACF;EACF;EAEAD,UAAU,GAAGA,CAAA,KAAM,IAAI,CAAC8L,uBAAuB,CAAC,IAAI,CAAC5J,WAAW,CAAClC,UAAU,CAAC,CAAC,CAAC;AAChF","ignoreList":[]}
|
|
@@ -102,4 +102,4 @@ export default memo(shapeComponent(class ApiMakerBootstrapAttributeRow extends S
|
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
}));
|
|
105
|
-
//# sourceMappingURL=
|
|
105
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useMemo","classNames","digg","inflection","memo","MoneyFormatter","PropTypes","shapeComponent","ShapeComponent","strftime","useI18n","ApiMakerBootstrapAttributeRow","defaultProps","checkIfAttributeLoaded","propTypes","attribute","string","bool","isRequired","children","node","identifier","label","oneOfType","model","object","value","setup","t","namespace","props","constructor","attributes","find","name","underscore","render","className","restProps","createElement","_extends","humanAttributeName","Error","modelClassData","isAttributeLoaded","valueContent","columnType","getColumn","getType","I18n","l","Date","defaultValue","isMoney","format"],"sources":["../../../src/bootstrap/attribute-row/index.jsx"],"sourcesContent":["import React, {useMemo} from \"react\"\nimport classNames from \"classnames\"\nimport {digg} from \"diggerize\"\nimport * as inflection from \"inflection\"\nimport memo from \"set-state-compare/src/memo\"\nimport MoneyFormatter from \"../../money-formatter\"\nimport PropTypes from \"prop-types\"\nimport {shapeComponent, ShapeComponent} from \"set-state-compare/src/shape-component\"\nimport strftime from \"strftime\"\nimport useI18n from \"i18n-on-steroids/src/use-i18n\"\n\nexport default memo(shapeComponent(class ApiMakerBootstrapAttributeRow extends ShapeComponent {\n static defaultProps = {\n checkIfAttributeLoaded: false\n }\n\n static propTypes = {\n attribute: PropTypes.string,\n checkIfAttributeLoaded: PropTypes.bool.isRequired,\n children: PropTypes.node,\n identifier: PropTypes.string,\n label: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),\n model: PropTypes.object,\n value: PropTypes.node\n }\n\n setup() {\n const {t} = useI18n({namespace: \"js.api_maker.attribute_row\"})\n\n this.t = t\n this.attribute = useMemo(\n () => {\n if (this.props.attribute) {\n return this.props.model?.constructor?.attributes()?.find((attribute) => attribute.name() == inflection.underscore(this.props.attribute))\n }\n },\n [this.props.attribute, this.props.model]\n )\n }\n\n render () {\n const {attribute, checkIfAttributeLoaded, children, className, identifier, label, model, value, ...restProps} = this.props\n\n return (\n <div\n className={classNames(className, \"component-api-maker-attribute-row\")}\n data-attribute={attribute}\n data-identifier={identifier}\n {...restProps}\n >\n <div className=\"attribute-row-label\">\n {this.label()}\n </div>\n <div className=\"attribute-row-value\">\n {this.value()}\n </div>\n </div>\n )\n }\n\n label() {\n const {attribute, label, model} = this.props\n\n if (\"label\" in this.props) return label\n if (attribute && model) return model.constructor.humanAttributeName(attribute)\n\n throw new Error(\"Couldn't figure out label\")\n }\n\n value() {\n const {attribute, checkIfAttributeLoaded, children, model} = this.props\n\n if (children) return children\n\n if (attribute && !(attribute in model))\n throw new Error(`Attribute not found: ${digg(model.modelClassData(), \"name\")}#${attribute}`)\n\n if (attribute && checkIfAttributeLoaded && !model.isAttributeLoaded(attribute))\n return null\n\n if (attribute && model) {\n const value = model[attribute]()\n\n return this.valueContent(value)\n }\n }\n\n valueContent(value) {\n const columnType = this.attribute?.getColumn()?.getType()\n\n if (columnType == \"date\") {\n return I18n.l(\"date.formats.default\", value)\n } else if (value instanceof Date) {\n return strftime(\"%Y-%m-%d %H:%M\", value)\n } else if (typeof value === \"boolean\") {\n if (value) return this.t(\"js.shared.yes\", {defaultValue: \"Yes\"})\n\n return this.t(\"js.shared.no\", {defaultValue: \"No\"})\n } else if (MoneyFormatter.isMoney(value)) {\n return MoneyFormatter.format(value)\n } else {\n return value\n }\n }\n}))\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -29,4 +29,4 @@ export default memo(shapeComponent(class ApiMakerBootstrapAttributeRows extends
|
|
|
29
29
|
}));
|
|
30
30
|
}
|
|
31
31
|
}));
|
|
32
|
-
//# sourceMappingURL=
|
|
32
|
+
//# sourceMappingURL=attribute-rows.js.map
|