@coolon/angular-ui-powerups 0.0.111 → 0.0.113
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/bundles/coolon-angular-ui-powerups.umd.js +3 -3
- package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js +1 -1
- package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
- package/esm2015/lib/place/route/parameter-decorators.js +3 -3
- package/esm2015/lib/place/route/parameter-decorators.js.map +1 -1
- package/esm5/lib/place/route/parameter-decorators.js +3 -3
- package/esm5/lib/place/route/parameter-decorators.js.map +1 -1
- package/fesm2015/coolon-angular-ui-powerups.js +3 -3
- package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
- package/fesm5/coolon-angular-ui-powerups.js +3 -3
- package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coolon-angular-ui-powerups.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@coolon/angular-ui-powerups/lib/directives/command.directive.ts","ng://@coolon/angular-ui-powerups/lib/components/disposable-component.ts","ng://@coolon/angular-ui-powerups/lib/directives/focus-binding.directive.ts","ng://@coolon/angular-ui-powerups/lib/directives/directives.module.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/abstract-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/number-input/number-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/password-input/password-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/select-input/select-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/string-input/string-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/noop/noop.component.ts","ng://@coolon/angular-ui-powerups/lib/components/components.module.ts","ng://@coolon/angular-ui-powerups/lib/interaction/activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/abstract-activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/alert-dialog/alert-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction-context-base.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-container/activity-container.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/modal-interaction-context.factory.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/interaction.service.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction.module.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-definition.class.ts","ng://@coolon/angular-ui-powerups/lib/place/place-definition.ts","ng://@coolon/angular-ui-powerups/lib/place/place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/visit.ts","ng://@coolon/angular-ui-powerups/lib/place/place-config.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/place-component-deactivation-handler.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/navigation-state.ts","ng://@coolon/angular-ui-powerups/lib/place/place-history.ts","ng://@coolon/angular-ui-powerups/lib/place/url-snapshot.ts","ng://@coolon/angular-ui-powerups/lib/place/place-router.ts","ng://@coolon/angular-ui-powerups/lib/place/components/place-outlet/route-animations.ts","ng://@coolon/angular-ui-powerups/lib/place/components/place-outlet/place-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/abstract-place-navigation.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/busy-overlay/busy-overlay.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/empty-state/empty-state.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/list-place-nav/list-place-nav.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.module.ts","ng://@coolon/angular-ui-powerups/lib/angular-ui-powerups.module.ts","ng://@coolon/angular-ui-powerups/lib/animations/slide-animations.ts","ng://@coolon/angular-ui-powerups/lib/components/types/dimension.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/point.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/bounds.class.ts","ng://@coolon/angular-ui-powerups/lib/components/resize-aware.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/alert.ts","ng://@coolon/angular-ui-powerups/lib/interaction/confirm.ts","ng://@coolon/angular-ui-powerups/lib/interaction/result.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.ts","ng://@coolon/angular-ui-powerups/lib/place/nav-item.ts","ng://@coolon/angular-ui-powerups/lib/place/place.decorator.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/consolidated-param-map.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/noop-auth-guard.service.ts","ng://@coolon/angular-ui-powerups/lib/place/route/visit-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/place.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/formatter.ts","ng://@coolon/angular-ui-powerups/lib/place/route/json-types.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-decorators.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-snapshot.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { assert, Command, DelegatingValueModel, Dsl, GarbageCollector, lang, UnaryCommand } from '@coolon/pectin';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinCommand]'\n})\nexport class CommandDirective<P = any> extends GarbageCollector implements OnInit, OnDestroy, AfterViewInit {\n\n private _command: Command<any> | UnaryCommand<P>;\n private _commandEnabled = new DelegatingValueModel<boolean>().withDefault(false);\n\n @Input()\n set pectinCommand(command: Command<any> | UnaryCommand<P>) {\n this._command = command;\n this._commandEnabled.setDelegate(command ? command.enabled : null);\n }\n get pectinCommand():Command<any> | UnaryCommand<P> {\n return this._command;\n }\n\n private _commandParameter: P;\n private _commandParameterProvided = false;\n\n @Input()\n set commandParameter(value: P) {\n this._commandParameterProvided = true;\n this._commandParameter = value;\n }\n\n get commandParameter(): P {\n return this._commandParameter;\n }\n\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n assert.notNil(this.pectinCommand);\n if (this.pectinCommand instanceof UnaryCommand) {\n if (!this._commandParameterProvided) {\n lang.illegalState('UnaryCommands required the command parameter to be specified.');\n }\n } else {\n if (this._commandParameterProvided) {\n lang.illegalState('command parameters are only supported by UnaryCommands');\n }\n }\n }\n\n ngAfterViewInit(): void {\n // for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now\n // we need to do this.\n const { chain } = Dsl.disposeWith(this);\n chain(this._commandEnabled).subscribe(enabled => {\n if (enabled) {\n this.elementRef.nativeElement.removeAttribute('disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.setAttribute('href', 'javascript:void');\n }\n } else {\n this.elementRef.nativeElement.setAttribute('disabled', 'disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.removeAttribute('href');\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n\n @HostListener('click', ['$event'])\n notifyClick($event: Event) {\n $event.preventDefault();\n $event.stopPropagation();\n if (this.pectinCommand.enabled.value) {\n if (this.pectinCommand instanceof UnaryCommand) {\n this.pectinCommand.withContext({ event: $event }).execute(this.commandParameter);\n } else {\n this.pectinCommand.withContext({ event: $event }).execute();\n }\n } else {\n console.warn('disabled command clicked, ignoring.');\n }\n }\n}\n","import { OnDestroy } from '@angular/core';\nimport { GarbageCollector } from '@coolon/pectin';\n\nexport class DisposableComponent extends GarbageCollector implements OnDestroy {\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, NgZone, OnInit } from '@angular/core';\nimport { Dsl, HasFocusTracking, Logger } from '@coolon/pectin';\nimport { DisposableComponent } from '../components/disposable-component';\n\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinFocusBinding]'\n})\nexport class FocusBindingDirective extends DisposableComponent implements OnInit, AfterViewInit {\n\n private readonly document: Document;\n\n @Input() pectinFocusBinding: HasFocusTracking;\n @Input() focusBindingTarget: HTMLElement;\n\n @HostListener('focusin')\n onFocusIn() {\n if (this.hasBinding()) {\n this.pectinFocusBinding.focusContext.notifyFocusIn();\n }\n }\n\n @HostListener('focusout')\n onFocusOut() {\n if (this.hasBinding()) {\n this.pectinFocusBinding.focusContext.notifyFocusOut();\n }\n }\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(DOCUMENT) document: any) {\n super();\n // @see https://stackoverflow.com/questions/49513359/could-not-resolve-type-document-in-angular5/53715642#53715642\n this.document = document as Document;\n }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n // TODO: Make this also track the current enabled/disabled state.\n if (this.hasBinding()) {\n const { chain } = Dsl.disposeWith(this);\n chain(this.pectinFocusBinding.focusContext.focused).subscribe((focused) => {\n if (focused && !this.alreadyHasFocus()) {\n this.tryAndFocus();\n }\n });\n } else {\n Logger.get(this).warn('pectinFocusBinding was nil');\n }\n }\n\n private hasBinding() {\n return !!this.pectinFocusBinding && !!this.pectinFocusBinding.focusContext;\n }\n\n// Hook method for debugging via tracing.\n alreadyHasFocus() {\n return this.isFocused(this.focusTarget);\n }\n\n // Hook method for debugging via tracing.\n isFocused(element: Element): boolean {\n return this.document.activeElement === element;\n }\n\n tryAndFocus(retries: number = 5) {\n if (this.modelShouldStillHaveFocus() && this.canFocus()) {\n if (!this.alreadyHasFocus()) {\n this.focusTarget.focus();\n }\n // if we didn't get the focus we try again later.\n if (!this.alreadyHasFocus()) {\n Logger.get(this).log(`focus failed, trying ${retries} more times`);\n if (retries > 0) {\n // try again on the next paint\n // TODO: is there an angular way of doing this without calling a window function.\n requestAnimationFrame(() => {\n this.tryAndFocus(retries - 1);\n });\n } else {\n Logger.get(this).warn(`Tried to focus but gave up as the component wasn't enabled or visible.`);\n }\n }\n }\n }\n\n get focusTarget(): HTMLElement {\n return this.focusBindingTarget || this.el.nativeElement;\n }\n\n // Hook method for debugging via tracing.\n modelShouldStillHaveFocus() {\n return this.hasBinding() && this.pectinFocusBinding.focusContext.focused.value;\n }\n\n // Hook method for debugging via tracing.\n canFocus(): boolean {\n const dimension = this.focusTarget.getBoundingClientRect();\n const hasSize = dimension.height >= 0 && dimension.height >= 0;\n // tslint:disable-next-line:no-string-literal\n return hasSize && !this.focusTarget['disabled'];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CommandDirective } from './command.directive';\nimport { FocusBindingDirective } from './focus-binding.directive';\n\n@NgModule({\n declarations: [\n CommandDirective,\n FocusBindingDirective\n ],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule\n ],\n exports: [\n CommandDirective,\n FocusBindingDirective\n ]\n\n})\nexport class DirectivesModule {\n}\n","/* tslint:disable:no-input-rename */\nimport { EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material';\nimport { Command, DelegatingFormValueModel, ListModel, UseDelegate, ValueModel } from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\nexport abstract class AbstractInputComponent<T> extends DisposableComponent implements OnInit {\n\n readonly valueModel = new DelegatingFormValueModel<T>();\n\n @Input('valueModel') @UseDelegate()\n set userValueModel(model: ValueModel<T>) {\n this.valueModel.setDelegate(model);\n }\n\n @Input() label: string;\n @Input() floatLabel: 'auto' | 'always' | 'never';\n @Input() hint: string;\n @Input() placeholder: string;\n\n @Input('command.focus') focusCommand: Command<any>;\n @Input('command.blur') blurCommand: Command<any>;\n @Input('command.enter') enterCommand: Command<any>;\n @Input('command.escape') escapeCommand: Command<any>;\n @Input('command.click') clickCommand: Command<any>;\n\n // TODO: fix this.\n // tslint:disable-next-line:no-output-native\n @Output() focus = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() blur = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() enterKey = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() escapeKey = new EventEmitter();\n\n readonly errorStateMatcher: ErrorStateMatcher;\n\n @HostListener('click')\n notifyClick() {\n this.safelyInvoke(this.clickCommand);\n }\n\n @HostListener('focusin')\n notifyFocusIn() {\n this.safelyInvoke(this.focusCommand);\n this.focus.emit();\n }\n\n @HostListener('focusout')\n notifyFocusOut() {\n this.safelyInvoke(this.blurCommand);\n this.blur.emit();\n }\n\n\n notifyEnterKey() {\n this.safelyInvoke(this.enterCommand);\n this.enterKey.emit();\n }\n\n notifyEscapeKey() {\n this.safelyInvoke(this.escapeCommand);\n this.escapeKey.emit();\n }\n\n protected safelyInvoke(command: Command<any>) {\n if (command && command.enabled.value) {\n command.execute();\n }\n }\n\n constructor() {\n super();\n const self = this;\n this.errorStateMatcher = {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return self.hasErrors();\n }\n };\n }\n\n ngOnInit(): void {\n }\n\n isEnabled(): boolean {\n return this.enabled.value;\n }\n\n get enabled(): ValueModel<boolean> {\n return this.valueModel.enabled;\n }\n\n hasErrors(): boolean {\n return !this.errorList.query().isEmpty();\n }\n\n get errorList(): ListModel<string> {\n return this.valueModel.errorList;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList.value[0] : null;\n }\n\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n\n@Component({\n selector: 'aup-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss']\n})\nexport class NumberInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'aup-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss']\n})\nexport class PasswordInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ListModel, StoreInListModel, UseDelegate } from '@coolon/pectin';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'aup-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss']\n})\nexport class SelectInputComponent<T = any> extends AbstractInputComponent<T> implements OnInit {\n\n @Input() @UseDelegate()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n optionLabelFormat: (option: T) => any = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'aup-string-input',\n templateUrl: './string-input.component.html',\n styleUrls: ['./string-input.component.scss']\n})\nexport class StringInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'aup-noop',\n templateUrl: './noop.component.html',\n styleUrls: ['./noop.component.scss']\n})\nexport class NoopComponent {\n constructor() {\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { NumberInputComponent } from './forms/number-input/number-input.component';\nimport { PasswordInputComponent } from './forms/password-input/password-input.component';\nimport { SelectInputComponent } from './forms/select-input/select-input.component';\nimport { StringInputComponent } from './forms/string-input/string-input.component';\nimport { NoopComponent } from './noop/noop.component';\n\n@NgModule({\n declarations: [\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n NoopComponent\n ],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule,\n DirectivesModule\n ],\n exports: [\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n NoopComponent\n ]\n\n})\nexport class ComponentsModule {\n}\n","import { InjectionToken } from '@angular/core';\nimport { DelegatingValueModel, GarbageCollector, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\n\nexport const ACTIVITY_DATA = new InjectionToken<any>('InteractionActivityData');\n\nexport abstract class Activity<D, R, E = any> extends GarbageCollector {\n\n private readonly _busyModel = new DelegatingValueModel<boolean>().withDefault(false);\n private _activityContext: Activity.Callbacks<R, E>;\n\n initialise(activityContext: Activity.Callbacks<R, E>): void {\n assert.isNil(this._activityContext);\n this._activityContext = activityContext;\n }\n\n done(result?: R): void {\n return this._activityContext.onDone(result);\n }\n\n cancel(error?: E): void {\n this._activityContext.onCancel(error);\n }\n\n // @Trace()\n onActivityReady() {\n }\n\n\n get busy(): ValueModel<boolean> {\n return this._busyModel.readonly;\n }\n\n busyWhile(busyModel: ValueModel<boolean>) {\n this._busyModel.setDelegate(busyModel);\n }\n\n isBusy() {\n return this._busyModel.value;\n }\n\n}\n\nexport namespace Activity {\n\n export interface Callbacks<R, E> {\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n }\n}\n","import { DelegatingValueModel, EventListenerList, Trace, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { Activity } from './activity';\nimport { ActivityOutletContext } from './components/activity-outlet/activity-outlet-context';\nimport { InteractionContext } from './interaction-context';\n\n/**\n * Deprecated. You can now extend the Activity class directly.\n */\nexport abstract class AbstractActivity<D, R, E = any> extends Activity<D, R, E> {\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\n\n@Component({\n selector: 'aup-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss']\n})\nexport class AlertDialogComponent extends AbstractActivity<Alert, void> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly alert: Alert) {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { assert, Constructable, Dsl, GarbageCollector, ListModel, Trace, ValueModel } from '@coolon/pectin';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { Confirm } from './confirm';\n\nexport abstract class InteractionContext extends GarbageCollector {\n\n abstract readonly active: ValueModel<boolean>;\n abstract readonly activityList: ListModel<Activity<any, any, any>>;\n abstract readonly activeActivity: ValueModel<Activity<any, any, any>>;\n\n /**\n * Returns true if an activity is currently running.\n */\n isActive(): boolean {\n return this.active.value;\n }\n\n dispose(): void {\n // TODO: think about auto cancelling any outstanding activity on dispose.\n // See NavigationState.Navigating for a use-case.\n assert.isFalsey(this.isActive());\n super.dispose();\n }\n\n /**\n * Cancels the current activity and returns true the context is no longer active, false if\n * there is still another activity running.\n */\n async cancelActiveActivity(): Promise<boolean> {\n const { when } = Dsl.disposeWith(this);\n const activity = await this.getActiveActivity();\n return new Promise(resolve => {\n when.valueOf(this.activeActivity)\n .changes(nextActivity => {\n resolve(!nextActivity);\n }, { once: true });\n activity.cancel();\n });\n }\n\n /**\n * Returns the activity that is currently active.\n * This model is only updated in the next tick after the view has been updated.\n */\n abstract async getActiveActivity(): Promise<Activity<any, any>>;\n\n abstract startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;\n\n abstract alert(alert: Alert): Promise<void>;\n\n abstract confirm(confirm: Confirm): Promise<boolean>;\n\n abstract async confirmOrReject(confirm: Confirm): Promise<void>;\n\n /**\n * Presents the confirmation to the user and runs the activity only if the user confirms.\n * @param confirm:Confirm the confirmation to display.\n * @param activityType the activity to run if confirmed.\n * @param data the activity data.\n */\n abstract confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;\n\n // @Trace()\n // async abort(): Promise<void> {\n // assert.isTruthy(this.isActive());\n // let count = 1;\n // await this.cancelActiveActivity();\n // console.log(`aborted -> ${count++}`);\n // while (this.isActive()) {\n // await this.cancelActiveActivity();\n // console.log(`aborted -> ${count++}`);\n // }\n // }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert, Constructable } from '@coolon/pectin';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\n\n@Component({\n selector: 'aup-confirmation-dialog',\n templateUrl: './confirm-then-dialog.component.html',\n styleUrls: ['./confirm-then-dialog.component.scss']\n})\nexport class ConfirmThenDialogComponent<D,R,E> extends AbstractActivity<ConfirmThenDialogComponent.Data<D,R,E>, R, E> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly config: ConfirmThenDialogComponent.Data<D,R,E>, readonly interactionContext:InteractionContext) {\n super();\n assert.notNil(config);\n }\n\n ngOnInit() {\n }\n\n get confirm():Confirm {\n return this.config.confirm;\n }\n\n isDestructive(): boolean {\n return this.confirm.destructive && this.confirm.destructive();\n }\n\n onConfirm() {\n this.interactionContext.startActivity(this.config.activityType, this.config.data)\n .then((result) => this.done(result))\n .catch(error => this.cancel(error));\n }\n}\n\nexport namespace ConfirmThenDialogComponent {\n export interface Data<D, R, E> {\n confirm:Confirm,\n activityType:Constructable<Activity<D, R, E>>,\n data: D\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert } from '@coolon/pectin';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Confirm } from '../../confirm';\n\n@Component({\n selector: 'aup-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss']\n})\nexport class ConfirmationDialogComponent extends AbstractActivity<Confirm, void> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {\n super();\n assert.notNil(confirm);\n }\n\n ngOnInit() {\n }\n\n isDestructive(): boolean {\n return this.confirm.destructive && this.confirm.destructive();\n }\n}\n","import {\n Constructable,\n Deferred,\n DelegatingListModel, Disposable,\n Dsl,\n EventListenerList,\n GarbageCollector,\n ListModel, ValueModel, ValueModelChain\n} from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from './confirm';\nimport { InteractionContext } from './interaction-context';\n\nexport abstract class InteractionContextBase extends InteractionContext {\n\n /**\n * Returns the current list of activities that are in progress.\n * This model is only updated in the next tick after the view has been updated.\n */\n private readonly _activityListDelegate = new DelegatingListModel<Activity<any, any>>();\n\n private deferredGetCurrentActivity: Deferred<Activity<any, any, any>>;\n private _currentActivity: ValueModelChain<Activity<any, any, any>>;\n\n protected constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this._currentActivity = chain(this.activityList).last();\n when.valueOf(this._currentActivity).becomesTruthy((activity) => {\n if (this.deferredGetCurrentActivity) {\n this.deferredGetCurrentActivity.resolve(activity);\n this.deferredGetCurrentActivity = null;\n }\n });\n }\n\n protected setActivityList(activityList: ListModel<Activity<any, any>>) {\n this._activityListDelegate.setDelegate(activityList);\n }\n\n get activityList(): ListModel<Activity<any, any, any>> {\n return this._activityListDelegate.readonly;\n }\n\n get activeActivity():ValueModel<Activity<any, any,any>> {\n return this._currentActivity;\n }\n\n /**\n * Returns the activity that is currently active.\n * This model is only updated in the next tick after the view has been updated.\n */\n async getActiveActivity(): Promise<Activity<any, any>> {\n if (!this.isActive()) {\n return Promise.reject('no activity in progress');\n } else {\n if (this.deferredGetCurrentActivity) {\n // we're already waiting then just return the same promise\n return this.deferredGetCurrentActivity.promise;\n } else {\n if (!this._currentActivity.value) {\n // we'be been asked before we've got any activities, create a deferred promise\n // that we resolve when the list populates.\n this.deferredGetCurrentActivity = Deferred.defer();\n return this.deferredGetCurrentActivity.promise;\n } else {\n return this._currentActivity.value;\n }\n }\n }\n }\n protected abstract _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D, disableClose?:boolean): Promise<R>;\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this._startActivity(activityType, data);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n // Important: we have to implement confirmOrReject as the main entry point\n // as the canDeactivation guards need to be able to cancel an interaction\n // without caring about returning a value.\n return this.confirmOrReject(confirm).then(() => true).catch(() => false);\n }\n\n alert(alert: Alert): Promise<void> {\n // TODO: Test disableClose === false\n return this._startActivity(AlertDialogComponent, alert, false);\n }\n\n confirmOrReject(confirm: Confirm): Promise<void> {\n return this._startActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this._startActivity<ConfirmThenDialogComponent.Data<D, R, E>, R, E>(ConfirmThenDialogComponent, {\n confirm,\n activityType: activityType,\n data: data\n }, true);\n }\n\n}\n\n","import {\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Injector,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from './activity-outlet-context';\nimport { assert } from '@coolon/pectin';\n\n/**\n * ActivityOutletComponent creates and displays an activity and delegates the interaction context functionality to an\n * external service.\n *\n * It might be nice to have wrapper component that allows more declarative use, i.e.\n * <activity-view [activityClass]=\"...\", [activityData]=\"...\" (done)=\"..\" (cancel)=\"...\"></activity-view>\n */\n@Component({\n selector: 'aup-activity-outlet',\n template: '',\n styleUrls: ['./activity-outlet.component.scss']\n})\nexport class ActivityOutletComponent<D, R, E> implements OnInit {\n\n @Input()\n interactionContext: InteractionContext;\n private _activityContext: ActivityOutletContext<D, R, E>;\n\n @Input()\n set activityContext(activityContext: ActivityOutletContext<D, R, E>) {\n assert.isNil(this._activityContext);\n this._activityContext = activityContext;\n this.loadActivity(activityContext);\n };\n get activityContext():ActivityOutletContext<D,R,E> {\n return this._activityContext;\n }\n\n\n private activityComponentRef: ComponentRef<Activity<D, R, E>>;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n }\n\n ngOnInit() {\n }\n\n loadActivity(activityContext: ActivityOutletContext<D, R, E>) {\n const injector = Injector.create({\n providers: [\n {\n provide: InteractionContext,\n useValue: this.interactionContext\n },\n { provide: ACTIVITY_DATA, useValue: activityContext.activityData }\n ],\n parent: this.injector\n });\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityContext.activityClass);\n this.viewContainerRef.clear();\n this.activityComponentRef = this.viewContainerRef.createComponent(componentFactory, 0, injector);\n this.activityComponentRef.instance.initialise(activityContext);\n if (this.activityContext.componentReady) {\n this.activityContext.componentReady(this.component);\n }\n }\n\n get component(): Activity<D, R, E> {\n return this.activityComponentRef.instance;\n }\n\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { MatTabGroup } from '@angular/material';\nimport {\n assert,\n Constructable,\n Dsl,\n MutableListModel,\n MutableStream,\n MutableValueModel,\n ValueModel\n} from '@coolon/pectin';\n\nimport { Activity } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\nimport { InteractionContextBase } from '../../interaction-context-base';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\nimport { ActivityOutletComponent } from '../activity-outlet/activity-outlet.component';\n\n/**\n * Note: this class is mutable and is stored in a list model. This is normally a big no no but\n * we're manually deriving other models from the list after view state changes. I.e. we not\n * using pectin chains on any of the mutable fields.\n */\nclass TabContext<D, R, E> implements ActivityOutletContext<D, R, E> {\n\n private _complete = false;\n private _component: Activity<D, R, E>;\n\n constructor(readonly activityData: D,\n readonly activityClass: Constructable<Activity<D, R, E>>,\n readonly interactionContext: InteractionContext,\n readonly activityCallbacks: Activity.Callbacks<R, E>) {\n }\n\n isComponentRealised(): boolean {\n return !!this._component;\n }\n\n isComplete() {\n return this._complete;\n }\n\n componentReady(component: Activity<D, R, E>) {\n assert.isNil(this._component);\n this._component = component;\n }\n\n get component(): Activity<D, R, E> {\n return this._component;\n }\n\n // @Trace()\n onDone(result: R): void {\n this._complete = true;\n this.activityCallbacks.onDone(result);\n }\n\n // @Trace()\n onCancel(error: E): void {\n this._complete = true;\n this.activityCallbacks.onCancel(error);\n }\n\n dispose() {\n this.component.dispose();\n }\n\n}\n\n\n@Component({\n selector: 'aup-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent<D, R, E> extends InteractionContextBase implements OnInit, AfterViewInit {\n\n private readonly throttledNestedActivityFinishEvents = new MutableStream<any>();\n\n private readonly _initialActivityOutletContext = new MutableValueModel<ActivityOutletContext<D, R, E>>();\n\n @Input()\n set initialActivityOutletContext(initialContext: ActivityOutletContext<D, R, E>) {\n assert.isNil(this._initialActivityOutletContext.value);\n // we clean up at the start as we leave the initial activity in place after it finishes\n // so that the activity remains visible during the inplace-interaction-context animations.\n this.activityTabs.value = [];\n this._activityList.value = [];\n const self = this;\n if (initialContext) {\n this._initialActivityOutletContext.value = initialContext;\n this.activityTabs.push(new TabContext(initialContext.activityData, initialContext.activityClass, this, {\n onDone: (result: R) => {\n self.finishInitialActivity();\n initialContext.onDone(result);\n },\n onCancel: (error: E) => {\n self.finishInitialActivity();\n initialContext.onCancel(error);\n }\n }));\n }\n }\n\n get initialActivityOutletContext() {\n return this._initialActivityOutletContext.value;\n }\n\n // tslint:disable-next-line:no-output-rename\n @Output('initialActivityOutletContext')\n initialActivityOutletContextEvent = new EventEmitter<ActivityOutletContext<D, R, E>>();\n\n @Input()\n dynamicHeight = false;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n @ViewChildren(ActivityOutletComponent)\n outlets: QueryList<ActivityOutletComponent<any, any, any>>;\n\n readonly activityTabs = new MutableListModel<TabContext<any, any, any>>();\n\n readonly active:ValueModel<boolean>;\n\n private readonly _activityList = new MutableListModel<Activity<any, any>>();\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n chain(this.throttledNestedActivityFinishEvents).throttle(50).subscribe(() => this.onNestedActivityFinished());\n this.setActivityList(this._activityList.readonly);\n this.active = chain(this._initialActivityOutletContext).isNotNil();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { chain, observe } = Dsl.disposeWith(this);\n observe.valuesFrom(this.outlets.changes).subscribe(() => setTimeout(() => this.updateActivityList()));\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.onAnimationFinished());\n this.updateActivityList();\n }\n\n _startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n this.cleanupStaleNestedActivities();\n const self = this;\n return new Promise<R1>((resolve, reject) => {\n const context = new TabContext(data, activityType, self, {\n onDone: function(result: R1) {\n resolve(result);\n self.throttledNestedActivityFinishEvents.publish({});\n },\n onCancel: function(error: E1) {\n reject(error);\n self.throttledNestedActivityFinishEvents.publish({});\n }\n });\n self.activityTabs.push(context);\n self.tabs.selectedIndex = this.activityTabs.length;\n });\n }\n\n private finishInitialActivity() {\n this.updateActivityList();\n this._initialActivityOutletContext.value = null;\n this.initialActivityOutletContextEvent.emit(null);\n }\n\n // @Trace()\n private onNestedActivityFinished() {\n this.synchroniseSelectedTabIndex();\n this.updateActivityList();\n }\n\n // @Trace()\n private cleanupStaleNestedActivities() {\n if (this.tabs.selectedIndex < this.activityTabs.length - 1) {\n const tabs = this.activityTabs.value;\n const remainingActivities = tabs.slice(0, 1 + this.tabs.selectedIndex);\n const finishedActivityTabs = tabs.slice(1 + this.tabs.selectedIndex);\n finishedActivityTabs.forEach(a => a.dispose());\n this.activityTabs.runInTransaction(draft => {\n\n draft.value = remainingActivities;\n });\n }\n }\n\n /**\n * Synchronises the selected tab index. Returns true if there was no change to the selected index.\n */\n // @Trace()\n private synchroniseSelectedTabIndex(): boolean {\n const previousIndex = this.tabs.selectedIndex;\n const newIndex = this.activityTabs.query().findIndex(t => t.isComplete()) - 1;\n this.tabs.selectedIndex = newIndex;\n return previousIndex === newIndex;\n }\n\n // @Trace()\n private onAnimationFinished() {\n this.getSelectedOutlet().component.onActivityReady();\n this.cleanupStaleNestedActivities();\n this.updateActivityList();\n }\n\n private updateActivityList() {\n this._activityList.value = this.activityTabs.value.filter(t => !t.isComplete() && t.isComponentRealised()).map(t => t.component);\n }\n\n private getSelectedOutlet() {\n return this.outlets.toArray()[this.tabs.selectedIndex];\n }\n}\n","import { InteractionContext } from '../interaction-context';\n\nexport abstract class ModalInteractionContextFactory {\n\n abstract createInteractionContext(): InteractionContext;\n}\n","import { Injectable } from '@angular/core';\nimport {\n BooleanValueModelChain,\n Disposable,\n Dsl,\n GarbageCollector,\n lang,\n ListModelChain,\n MutableListModel,\n MutableValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { InteractionContext } from '../interaction-context';\n\nimport { ModalInteractionContextFactory } from './modal-interaction-context.factory';\n\nlet inplaceMonitorCount = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService {\n\n private readonly garbage = new GarbageCollector();\n readonly active: BooleanValueModelChain;\n private readonly exclusiveContext = new MutableValueModel<InteractionContext>();\n\n private readonly _activeModalInteractionContextModel = new MutableValueModel<InteractionService.Monitor>();\n private readonly _activeInlineInteractionContextModel = new MutableValueModel<InteractionService.Monitor>();\n private readonly _activeInteractionContext: ValueModelChain<InteractionContext>;\n\n readonly activeInteractionContextIds: ListModelChain<string>;\n readonly modelInteractionActive: BooleanValueModelChain;\n readonly inlineInteractionActive: BooleanValueModelChain;\n\n constructor(readonly modelInteractionContextFactory: ModalInteractionContextFactory) {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this.garbage);\n\n this._activeInteractionContext = chain(this._activeModalInteractionContextModel)\n .otherwise(this._activeInlineInteractionContextModel)\n .pluck('interactionContext');\n\n this.active = chain(this._activeInteractionContext).isNotNil();\n this.modelInteractionActive = chain(this._activeModalInteractionContextModel).isNotNil();\n this.inlineInteractionActive = chain(this._activeInlineInteractionContextModel).isNotNil();\n\n // TODO: chain.concat(listOrValueModels) would be nice.\n this.activeInteractionContextIds = chain(new MutableListModel<InteractionService.Monitor>())\n .append(this._activeInlineInteractionContextModel)\n .append(this._activeModalInteractionContextModel)\n .rejectNil()\n .pluck('id');\n\n }\n\n isActive(): boolean {\n return this.active.value;\n }\n\n isModalActive(): boolean {\n return this.modelInteractionActive.value;\n }\n\n /**\n * @deprecated use #createModalInteractionContextDisposedWith instead.\n * @param disposable\n */\n createModalInteractionContextFor(disposable: Disposable.Collector): InteractionContext {\n return this.createModalInteractionContextDisposedWith(disposable);\n }\n\n /**\n * Creates a new model interaction context that will be disposed along with the component.\n * @param disposable\n */\n createModalInteractionContextDisposedWith(disposable: Disposable.Collector): InteractionContext {\n const context = this.modelInteractionContextFactory.createInteractionContext();\n disposable.registerDisposable(new InteractionService.Monitor('modal', context, this._activeModalInteractionContextModel, this.exclusiveContext));\n return context;\n }\n\n _registerInplaceInteractionContext(interactionContext: InteractionContext) {\n interactionContext.registerDisposable(new InteractionService.Monitor(`ip${++inplaceMonitorCount}`, interactionContext, this._activeInlineInteractionContextModel, this.exclusiveContext));\n }\n\n // @Trace()\n getActiveContext(): InteractionContext {\n assert.isTruthy(this.isActive());\n return this._activeInteractionContext.value;\n }\n\n /**\n * Creates an interaction context that will prevent any other contexts from starting an\n * activity until it is disposed. This is intended for use by the router for passing\n * to PlaceComponent.canDeactivate(interactionContext). This ensures components don't\n * try and interact in a way that we can't track and synchronise with the browser back\n * button.\n */\n _createExclusiveModalInteractionContext(): InteractionContext {\n this.exclusiveContext.value = this.modelInteractionContextFactory.createInteractionContext();\n const self = this;\n this.exclusiveContext.value.registerDisposable({\n dispose(): void {\n self.exclusiveContext.value = null;\n }\n });\n return this.exclusiveContext.value;\n }\n}\n\nexport namespace InteractionService {\n\n export interface Callback {\n onStarted(monitor: Monitor);\n\n onFinished(monitor: Monitor);\n }\n\n export class Monitor extends GarbageCollector {\n constructor(readonly id: string,\n readonly interactionContext: InteractionContext,\n readonly currentActiveMonitor: MutableValueModel<Monitor>,\n readonly exclusiveContext: ValueModel<InteractionContext>) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n when.valueOf(interactionContext.active).becomesTruthy(() => this.onStarted());\n when.valueOf(interactionContext.active).becomesFalsey(() => this.onFinished());\n interactionContext.registerDisposable(this);\n }\n\n protected onStarted() {\n this.assertCanStart();\n this.currentActiveMonitor.value = this;\n }\n\n private assertCanStart() {\n assert.isFalsey(this.currentActiveMonitor.value);\n if (this.exclusiveContext.value && this.interactionContext !== this.exclusiveContext.value) {\n lang.illegalState('Interaction started while exclusive lock active. This is usually because you using a different context during place.canDeactivate(interactionContext)');\n }\n }\n\n protected onFinished() {\n this.assertCurrentlyActive();\n this.currentActiveMonitor.value = null;\n }\n\n private assertCurrentlyActive() {\n assert.isTruthy(this.currentActiveMonitor.value === this);\n }\n }\n}\n","import { AfterViewInit, Component, ViewChild } from '@angular/core';\nimport { Constructable, DelegatingValueModel, Dsl, MutableValueModel, TransactionObserver } from '@coolon/pectin';\nimport { Activity } from '../../activity';\nimport { InteractionContextBase } from '../../interaction-context-base';\nimport { InteractionService } from '../../services/interaction.service';\nimport { ActivityContainerComponent } from '../activity-container/activity-container.component';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\n\n@Component({\n selector: 'aup-inplace-interaction-context',\n templateUrl: './inplace-interaction-context.component.html',\n styleUrls: ['./inplace-interaction-context.component.scss']\n})\nexport class InplaceInteractionContextComponent<D, R, E> extends InteractionContextBase implements AfterViewInit {\n\n @ViewChild('activityContainer', { static: true })\n interactionContext: ActivityContainerComponent<any, any, any>;\n\n initialActivityContext: ActivityOutletContext<D, R, E>;\n\n private _active = new MutableValueModel<boolean>(false);\n\n constructor(readonly interactionService: InteractionService) {\n super();\n this.interactionService._registerInplaceInteractionContext(this);\n }\n\n ngAfterViewInit(): void {\n this.setActivityList(this.interactionContext.activityList);\n }\n\n get active() {\n return this._active.readonly;\n }\n\n protected _startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n this._active.value = true;\n const self = this;\n return new Promise<R1>((resolve, reject) => {\n this.interactionContext.initialActivityOutletContext = {\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n self._active.value = false;\n resolve(result);\n },\n onCancel(error) {\n self._active.value = false;\n reject(error);\n }\n };\n });\n }\n\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule, MatDialogModule, MatTabsModule } from '@angular/material';\nimport { MAT_TABS_CONFIG } from '@angular/material/tabs';\nimport { RouterModule } from '@angular/router';\nimport { PlaceModule } from '../place/place.module';\nimport { ActivityContainerComponent } from './components/activity-container/activity-container.component';\nimport { ActivityOutletComponent } from './components/activity-outlet/activity-outlet.component';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { InplaceInteractionContextComponent } from './components/inplace-interaction-context/inplace-interaction-context.component';\nimport { InteractionService } from './services/interaction.service';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatTabsModule,\n PortalModule,\n RouterModule\n ],\n declarations: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n ConfirmThenDialogComponent,\n AlertDialogComponent,\n ActivityOutletComponent,\n InplaceInteractionContextComponent\n ],\n exports: [\n ActivityContainerComponent,\n ActivityOutletComponent,\n InplaceInteractionContextComponent\n ],\n entryComponents: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n ConfirmThenDialogComponent,\n AlertDialogComponent\n ],\n providers: [\n InteractionService,\n // {\n // provide: MAT_TABS_CONFIG, useValue: { animationDuration: \"2s\" }\n // }\n ]\n})\nexport class InteractionModule {\n}\n","import { Injector } from '@angular/core';\nimport { Trace } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport _ from 'lodash';\nimport { PlaceHistory } from '../place-history';\nimport { Visit } from '../visit';\nimport { Formatter } from './formatter';\n\nexport abstract class ParameterDefinition<T, E = T> {\n\n abstract readonly isRouteId: boolean;\n abstract readonly isArray: boolean;\n\n readonly remember: boolean;\n readonly defaultValue: T;\n private options: Opts<ParameterDefinition.Options<T>>;\n\n constructor(readonly propertyName: string, options: ParameterDefinition.Options<T>, readonly urlFormat?: Formatter<E>) {\n this.options = Opts.get(options);\n this.remember = this.options.getOptional('remember', false);\n this.defaultValue = this.options.getOptional('defaultValue', null);\n }\n\n get name() {\n return this.options.getOptional('as', this.propertyName);\n }\n\n // @Trace()\n get isRouteParameter(): boolean {\n return !!this.urlFormat;\n }\n\n abstract isEmptyValue(value: T): boolean;\n\n abstract hasChanged(a: any, b: any): boolean;\n\n protected getOptionValue<K extends keyof ParameterDefinition.Options<T>>(key: K): ParameterDefinition.Options<T>[K] {\n return this.options.getOptional(key, null);\n }\n\n // @Trace()\n async sanitise(value:T, visit: Visit, placeHistory: PlaceHistory, injector: Injector) {\n if (this.isMissingFrom(visit)) {\n const previousVisit = _.first(placeHistory.getHistory(visit.placeDefinition));\n if (this.remember && previousVisit) {\n value = previousVisit.getParameter(this.name);\n }\n return this.isEmptyValue(value) ? this.defaultValue : value;\n } else {\n // todo: add custom sanitiser\n return value;\n }\n }\n\n private isMissingFrom(visit: Visit) {\n return !visit.hasParameter(this.name);\n }\n}\n\nexport namespace ParameterDefinition {\n\n export interface Options<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser.Options<T>;\n }\n\n export class RouteId<T> extends ParameterDefinition<T> {\n readonly isRouteId = true;\n readonly isArray = false;\n\n isEmptyValue(value: T): boolean {\n return _.isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n }\n\n export class ValueParameter<T> extends ParameterDefinition<T> {\n readonly isRouteId = false;\n readonly isArray = false;\n\n isEmptyValue(value: T): boolean {\n return _.isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n }\n\n export class ArrayParameter<T> extends ParameterDefinition<T[], T> {\n readonly isRouteId = false;\n readonly isArray = true;\n\n constructor(parameterName: string, options: Options<T[]>, urlFormat: Formatter<T>) {\n super(parameterName, options, urlFormat);\n }\n\n isEmptyValue(value: T[]): boolean {\n return _.isNil(value) || value.length < 1;\n }\n\n hasChanged(a: T[], b: T[]): boolean {\n return !_.isEqual(a, b);\n }\n\n }\n}\n","import { ParamMap } from '@angular/router';\nimport { assert, Constructable, Trace } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport _ from 'lodash';\nimport { PlaceComponent } from './place-component';\nimport { ParameterDefinition } from './route/parameter-definition.class';\nimport { Visit } from './visit';\n\nexport class PlaceDefinition {\n\n constructor(readonly component: Constructable<PlaceComponent>,\n readonly path: string,\n readonly authenticate: boolean,\n readonly data: { [key: string]: any },\n readonly routeParameters: ParameterDefinition<any>[],\n readonly children: PlaceDefinition[]) {\n }\n\n hasRouteId() {\n return !!this.getRouteIdParameterDef();\n }\n\n @Memoize()\n getRouteIdParameterDef(): ParameterDefinition<any> {\n return this.routeParameters.find(p => p.isRouteId);\n }\n\n @Memoize()\n getRouteParameterDefs(includeRouteId = false): ParameterDefinition<any>[] {\n return this.getVisitParameterDefs({ includeRouteId, includeRouteParameters: true });\n }\n\n @Memoize()\n getVisitParameterDefs(include?: PlaceDefinition.ParameterOptions): ParameterDefinition<any>[] {\n const opts = Opts.get(include);\n // includes\n const includeRouteId = !include || opts.getOptional('includeRouteId', false);\n const includeRouteParameters = !include || opts.getOptional('includeRouteParameters', false);\n const includeNonRouteParameters = !include || opts.getOptional('includeNonRouteParameters', false);\n return this.routeParameters.filter(p => {\n return (includeRouteId && p.isRouteId)\n || (includeRouteParameters && p.isRouteParameter && !p.isRouteId) // route id is included in the line above\n || (includeNonRouteParameters && !p.isRouteParameter);\n });\n }\n\n getPlaceData<T>(key: string, defaultValue?: T): T {\n return this.data ?\n _.isNil(this.data[key]) ? defaultValue : this.data[key] :\n defaultValue;\n }\n\n searchPlaceData<T>(keys: string[], defaultValue?: T): T {\n if (this.data) {\n const found = keys.find(key => !_.isNil(this.data[key]));\n return found ? this.data[found] : defaultValue;\n } else {\n return defaultValue;\n }\n }\n\n getRouteIdFrom(visit: Visit) {\n const routeIdParameterDef = this.getRouteIdParameterDef();\n return routeIdParameterDef ? visit.getParameter(routeIdParameterDef.name) : null;\n }\n\n getFormattedRouteId(visit: Visit): any {\n // Note: RouteIds are always present in the url and are just empty strings when not defined. This is\n // mandated by the fact that redirects from <path> to <path>/:id always include the id parameter as\n // an empty string.\n return visit.hasRouteId() ? this.getRouteIdParameterDef().urlFormat.format(visit.getRouteId()) : \"\";\n }\n\n getFormattedRouteParameters(visit: Visit, includeRouteId = false): { [p: string]: string } {\n const result: { [p: string]: string } = {};\n this.getVisitParameterDefs({\n includeRouteId, includeRouteParameters: true\n }).forEach(def => {\n const value = visit.getParameter(def.name);\n if (!def.isEmptyValue(value)) {\n if (def.isArray) {\n assert.isArray(value);\n result[def.name] = value.map(v => def.urlFormat.format(v));\n } else {\n assert.isFalsey(Array.isArray(value));\n result[def.name] = def.urlFormat.format(value);\n }\n }\n });\n return result;\n }\n\n getNonRouteParameters(visit: Visit): { [p: string]: string } {\n const result: { [p: string]: string } = {};\n this.getVisitParameterDefs({ includeNonRouteParameters: true }).forEach(def => {\n const value = visit.getParameter(def.name);\n if (!def.isEmptyValue(value)) {\n result[def.name] = value;\n }\n });\n return result;\n }\n\n // @Trace()\n parseRouteParams(params: ParamMap): { [p: string]: any } {\n const result: { [p: string]: any } = {};\n this.getVisitParameterDefs({\n includeRouteId: true,\n includeRouteParameters: true,\n includeNonRouteParameters: false\n }).forEach(def => {\n // params will return null for non existent names\n if (params.has(def.name)) {\n if (def.isArray) {\n const values = params.getAll(def.name);\n result[def.name] = values.map(v => def.urlFormat.parse(v));\n } else {\n const value = params.get(def.name);\n if (def.isRouteId) { // TODO: Move this to parameter def so it's a strategy pattern\n // because our id routes redirect if the id isn't present we always have a id\n // parameter in our params. This will bugger our remember and defaultvalue sanitisation\n // as it'll see that the id is present (event thought its a blank string).\n if (!_.isEmpty(value)) {\n result[def.name] = def.urlFormat.parse(value);\n }\n } else {\n result[def.name] = def.urlFormat.parse(value);\n }\n }\n }\n });\n return result;\n }\n\n}\n\nexport namespace PlaceDefinition {\n export interface ParameterOptions {\n includeRouteId?: boolean;\n includeRouteParameters?: boolean;\n includeNonRouteParameters?: boolean;\n }\n}\n","import { assert, Binding, Constructable, IMutableHasValue, lang, ValueModel } from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport 'reflect-metadata';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { InteractionContext } from '../interaction/interaction-context';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition.class';\nimport { Visit } from './visit';\n\n// RAKE: making this Symbol(...) broke things.\nexport const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';\n// this one seems ok.\nexport const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');\n\nexport class PlaceComponent extends DisposableComponent {\n\n private visit: ValueModel<Visit>;\n // private _inDeactivationGuard = new MutableValueModel<boolean>(false);\n\n interactionContext?: InteractionContext;\n\n canDeactivate?(interactionContext: InteractionContext): boolean | Promise<boolean>;\n\n constructor() {\n super();\n }\n\n public initialiseBindings(visit: ValueModel<Visit>) {\n assert.isNil(this.visit);\n this.visit = visit;\n this.placeDefinition.getVisitParameterDefs().forEach(parameterDef => {\n this.installBinding(parameterDef);\n });\n }\n\n private installBinding<T, S>(parameterDef: ParameterDefinition<T, S>) {\n const model = this[parameterDef.propertyName] as IMutableHasValue<S>;\n // this.txo.observe(parameterDef.propertyName, model);\n this.registerDisposable(new Binding(this.visit, model, {\n toRight(visit: Visit): S {\n const value = visit.getParameter(parameterDef.name);\n // console.log('push to component', {name:parameterDef.name, value, visit});\n return value;\n },\n toLeft(value: S, currentVisit?: Visit): Visit {\n console.log('push to route', { name: parameterDef.name, value, currentVisit });\n return currentVisit.replace(parameterDef, value);\n }\n }));\n }\n\n @Memoize()\n get placeDefinition(): PlaceDefinition {\n return PlaceComponent.getDefinition(this.constructor as any as Constructable<PlaceComponent>);\n }\n\n get childPlaces(): Constructable<PlaceComponent>[] {\n return this.placeDefinition.children.map(d => d.component);\n }\n\n onPlaceReady() {\n }\n\n}\n\nexport namespace PlaceComponent {\n\n export function isPlaceComponentConstructor(target: any): target is Constructable<PlaceComponent> {\n return lang.constructorChain(target as Constructable<any>).includes(PlaceComponent);\n }\n\n export function getRouteParameters(klass: Constructable<PlaceComponent>): ParameterDefinition<any>[] {\n return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY);\n }\n\n export function getDefinition(klass: Constructable<PlaceComponent>): PlaceDefinition {\n return Reflect.getMetadata(DEFINITION_META_DATA_KEY, klass);\n }\n\n export function injectDefinition(klass: Constructable<PlaceComponent>, definition: PlaceDefinition) {\n Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);\n }\n\n}\n","import { UrlSegment } from '@angular/router';\nimport * as _ from 'lodash';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition.class';\n\ninterface Params {\n [p: string]: any\n}\n\n\nexport class Visit {\n\n constructor(readonly placeDefinition: PlaceDefinition, private readonly visitParameters: Params = {}) {\n }\n\n // @Trace()\n getRouteId(): any {\n return this.placeDefinition.getRouteIdFrom(this);\n }\n\n // @Trace()\n hasRouteId(): boolean {\n return !_.isNil(this.getRouteId());\n }\n\n /**\n * Returns the value of the place parameter with the specified name. The parameter\n * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the\n * same as the the ValueModel property name.\n * @param parameterName the field name of the property model or the `as` option if specified.\n */\n getParameter(parameterName: string): any {\n return this.visitParameters[parameterName];\n }\n\n // @Trace()\n hasParameter(parameterName: string) {\n return Object.keys(this.visitParameters).includes(parameterName);\n }\n\n replace<S>(parameter: ParameterDefinition<any, S>, value: S): Visit {\n return new Visit(this.placeDefinition, { ...this.visitParameters, [parameter.name]: value });\n }\n\n mergeRouteParameters<S>(routeParams: { [p: string]: any }): Visit {\n // todo: whitelist parameters.\n const routeParameterKeys = Object.keys(routeParams);\n const params = {};\n this.placeDefinition.getVisitParameterDefs().forEach(def => {\n if (def.isRouteId || def.isRouteParameter) {\n if (routeParameterKeys.includes(def.name)) {\n params[def.name] = routeParams[def.name];\n }\n } else {\n // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the\n // defaults and remember sanitisation process.\n const value = this.getParameter(def.name);\n if (this.hasParameter(def.name)) {\n params[def.name] = value;\n }\n }\n });\n return new Visit(this.placeDefinition, params);\n }\n\n hasRoutingChangedFrom(other: Visit): boolean {\n const samePlace = other.placeDefinition === this.placeDefinition;\n const sameRouteParameters = _.isEqual(\n this.placeDefinition.getFormattedRouteParameters(this, true),\n this.placeDefinition.getFormattedRouteParameters(other, true)\n );\n return !samePlace || !sameRouteParameters;\n }\n\n hasChangedFrom(other: Visit) {\n const sameNonRouteParameters = _.isEqual(\n this.placeDefinition.getNonRouteParameters(this),\n this.placeDefinition.getNonRouteParameters(other)\n );\n return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);\n }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const AUP_PLACE_CONFIG = new InjectionToken<PlaceConfig>('AUP_PLACE_CONFIG');\n\nexport interface PlaceConfig {\n animationDuration: string;\n}\n","import { Trace } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { PlaceComponent } from '../place-component';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { NavigationState } from './navigation-state';\n\nexport class PlaceComponentDeactivationHandler {\n\n private canDeactivatePromise: Promise<boolean | UrlSnapshot>;\n\n constructor(readonly component: PlaceComponent, readonly navigationState: NavigationState, readonly isPrimaryComponent: boolean) {\n }\n\n get interactionService() {\n return this.navigationState.interactionService;\n }\n\n get placeRouter() {\n return this.navigationState.placeRouter;\n }\n\n async canDeactivate(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // We'll get called multiple times if there's any parameter sanitisation so\n // we always return true if we accepted promise from a previous cycle of the current\n // navigation session.\n if (!this.canDeactivatePromise) {\n // console.log(`creating deactivate promise for -> ${this.component.constructor.name}`);\n this.canDeactivatePromise = this.canDeactivateComponent(currentUrl, nextState);\n }\n return this.canDeactivatePromise;\n }\n\n\n // @Trace()\n protected async canDeactivateComponent(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<UrlSnapshot | boolean> {\n // console.log(this.navigationState.toString());\n // Automatically cancel any active activities if the navigation session was triggered by the back button.\n // If we handled more than just the pop state then it leads to the UI ignoring clicks and just cancelling things which is deeply disconcerting.\n if (this.navigationState.isPopState) {\n if (this.isPrimaryComponent && this.interactionService.isModalActive()) {\n const routeIds = this.placeRouter.getActiveInteractionIdsFromUrl(nextState.url);\n const currentIds = this.interactionService.activeInteractionContextIds.value;\n\n if (!_.isEqual(currentIds, routeIds)) {\n await this.interactionService.getActiveContext().cancelActiveActivity();\n return currentUrl.updateInteractionIds(this.interactionService.activeInteractionContextIds.value);\n }\n } else {\n // check if the component has an in place interaction\n if (this.component.interactionContext && this.component.interactionContext.isActive()) {\n await this.component.interactionContext.cancelActiveActivity();\n return currentUrl\n .updateInteractionIds(this.interactionService.activeInteractionContextIds.value)\n }\n }\n }\n\n\n // Ok, so now we're really leaving, so we ask the component if we should.;\n if (this.isNotJustAChangeInRouteId(nextState)) {\n\n if (this.component.canDeactivate) {\n // No interaction in progress, so ask the component .\n // This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and\n // the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.\n return this.component.canDeactivate(this.navigationState.interactionContext);\n }\n\n // The component has an active interaction but no deactivation hook. Rather than guessing what to do\n // we'll just cancel the navigation and print a warning.\n if (this.component.interactionContext && this.component.interactionContext.isActive()) {\n console.warn('Route changed while component has active interaction, cancelling navigation');\n return false;\n }\n\n }\n return true;\n }\n\n protected isNotJustAChangeInRouteId(nextState: UrlSnapshot) {\n // Because places with a route-id cover two route segments we get asked to deactivate\n // if the route id is added or removed. So if our path is still present the url\n // then we shouldn't deactivate the place.\n return !nextState.includesPathOf(this.component.placeDefinition);\n }\n}\n","import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, RouterEvent } from '@angular/router';\nimport { Dsl, GarbageCollector, lang, Logger, Trace } from '@coolon/pectin';\nimport { InteractionContext } from '../../interaction/interaction-context';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceRouter } from '../place-router';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { PlaceComponentDeactivationHandler } from './place-component-deactivation-handler';\n\nexport abstract class NavigationState extends GarbageCollector {\n\n private _visits = new Map<PlaceDefinition, Visit>();\n\n abstract readonly isTransitional: boolean;\n abstract readonly startingUrl: string;\n abstract readonly isPopState: boolean;\n\n constructor(protected readonly context: NavigationState.Context) {\n super();\n }\n\n get name(): string {\n return this.constructor.name;\n }\n\n get idle() {\n return !this.isTransitional;\n }\n\n get placeRouter(): PlaceRouter {\n return this.context.placeRouter;\n }\n\n get interactionService(): InteractionService {\n return this.context.interactionService;\n }\n\n get interactionContext(): InteractionContext {\n return null;\n }\n\n storeVisit(visit: Visit) {\n this._visits.set(visit.placeDefinition, visit);\n }\n\n getVisitFor(placeDef: PlaceDefinition) {\n return this._visits.get(placeDef);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n return this.illegalTransition('onPlaceNavigationStart');\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.illegalTransition(event);\n }\n\n onBackClickedDuringNavigationInteraction(newUrl: string): NavigationState {\n return this.illegalTransition('onBackClickedDuringNavigationInteraction');\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return this.illegalTransition('canDeactivatePlace');\n }\n\n getVisits(): Visit[] {\n return Array.from(this._visits.values());\n }\n\n protected illegalTransition<R>(message: string | RouterEvent): R {\n return lang.illegalState(`${message.toString()} not supported by ${this.toString()}`);\n }\n\n protected currentRouterUrl(): string {\n return this.placeRouter.getCurrentRouterUrl();\n }\n\n protected createTransitionStateFor(event: NavigationStart) {\n const popstate = event.navigationTrigger === 'popstate';\n return popstate ?\n this.interactionService.isActive() ?\n new NavigationState.InteractionPopStateTransition(this.context, this.currentRouterUrl()) :\n new NavigationState.PopStateTransition(this.context, this.currentRouterUrl())\n :\n this.interactionService.isActive() ?\n new NavigationState.InteractionTransition(this.context, this.currentRouterUrl()) :\n new NavigationState.NavigationTransition(this.context, this.currentRouterUrl());\n }\n\n protected createIdleState() {\n return this.interactionService.isActive() ?\n new NavigationState.IdleDuringInteraction(this.context, this.currentRouterUrl()) :\n new NavigationState.Idle(this.context);\n }\n\n resetBrowserLocation(url) {\n this.placeRouter.resetBrowserLocation(url);\n }\n\n toString(): string {\n return this.constructor.name;\n }\n}\n\nexport namespace NavigationState {\n\n export class Context {\n constructor(\n readonly placeRouter: PlaceRouter,\n readonly interactionService: InteractionService,\n readonly notifySuccess: (success: NavigationState) => void) {\n }\n }\n\n export class Idle extends NavigationState {\n readonly isTransitional = false;\n readonly startingUrl = null;\n readonly isPopState = false;\n\n constructor(context: Context) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n const navigationTransition = new NavigationTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n\n // calling angularLocation.go() to clear back state can trigger router cycles to the current url if we don't ignore them\n if (event.url === this.currentRouterUrl()) {\n Logger.get(this).info(`navigation started to same url -> ${event.url}`);\n return this;\n }\n\n if (this.placeRouter.hasActiveInteractionIds(event.url)) {\n Logger.get(this).info(`navigation started with interaction outlet -> ${event.url}`);\n return new InteractionTransition(this.context, event.url);\n } else {\n return this.createTransitionStateFor(event);\n }\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.createTransitionStateFor(event);\n }\n }\n\n export abstract class AbstractNavigationTransition extends NavigationState {\n readonly isTransitional = true;\n private componentDeactivationHandlers = new Map<PlaceComponent, PlaceComponentDeactivationHandler>();\n private _interactionContext: InteractionContext;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n this._interactionContext = this.interactionService._createExclusiveModalInteractionContext();\n this.onDispose(() => {\n // the interaction context can be detached during the back button cancellation state transition\n // as the transition is synchronous and activityCancellation isn't. Otherwise dispose will be\n // called before the context has been cancelled. It might be work having the interaction context\n // automatically cancel if the context is disposed so we don't have worry about detaching etc.\n if (this._interactionContext) {\n this._interactionContext.dispose(); // or do something like cancelAndDispose?\n }\n });\n }\n\n get interactionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n // active sessions can have many cancel start cycles due\n // to place guard redirects\n return this;\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n // navigation succeeded\n this.context.notifySuccess(this);\n return new Idle(this.context);\n }\n\n onBackClickedDuringNavigationInteraction(locationTriggerUrl: string): NavigationState {\n Logger.get(this).info(`back button pressed during navigation session interaction promise`);\n // detach the interaction from the session so it doesn't get disposed until the activity has completed.\n const navigationInteraction = this.detachInteractionContext();\n const { when } = Dsl.disposeWith(navigationInteraction);\n // TODO: I need to make the exclusive interaction context disallow nested activities or\n // that would mess things up entirely. Or, can I do a context.abortAll().then(..)\n navigationInteraction.cancelActiveActivity().then(() => {\n navigationInteraction.dispose();\n });\n return new CancelledDuringNavigationInteraction(this.context,\n this.startingUrl,\n this.isPopState,\n locationTriggerUrl);\n }\n\n // @Trace()\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // lookup the handler and create it if we've not seen it yet\n let handler = this.componentDeactivationHandlers.get(component);\n if (!handler) {\n const isPrimaryHandler = this.componentDeactivationHandlers.size === 0; // only primary handler cancels the app model interations\n handler = new PlaceComponentDeactivationHandler(component, this, isPrimaryHandler);\n this.componentDeactivationHandlers.set(component, handler);\n }\n return handler.canDeactivate(currentUrl, nextUrl);\n }\n\n private detachInteractionContext(): InteractionContext {\n const context = this._interactionContext;\n this._interactionContext = null;\n return context;\n }\n }\n\n export class NavigationTransition extends AbstractNavigationTransition {\n readonly isPopState = false;\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this;\n }\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new Idle(this.context);\n }\n\n toString(): string {\n return `${this.constructor.name}(startingUrl: ${this.startingUrl})`;\n }\n }\n\n export class PopStateTransition extends AbstractNavigationTransition {\n readonly isPopState = true;\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.startingUrl);\n return new Idle(this.context);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n if (this.currentRouterUrl() !== this.startingUrl) {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.startingUrl);\n }\n return new Idle(this.context);\n }\n\n }\n\n export class IdleDuringInteraction extends NavigationState {\n readonly isTransitional = false;\n readonly isPopState = false;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n const navigationTransition = new InteractionTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart): NavigationState {\n return new InteractionTransition(this.context, event.url);\n }\n\n // @Trace()\n onPopState(event: NavigationStart): NavigationState {\n return new InteractionPopStateTransition(this.context, event.url);\n }\n }\n\n export abstract class AbstractInteractionTransition extends AbstractNavigationTransition {\n readonly isTransitional = true;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context, startingUrl);\n }\n\n }\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n */\n export class InteractionTransition extends AbstractInteractionTransition {\n readonly isPopState = false;\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): NavigationState {\n if (this.context.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n // @Trace()\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new IdleDuringInteraction(this.context, this.startingUrl);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n }\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n */\n export class InteractionPopStateTransition extends AbstractInteractionTransition {\n readonly isPopState = true;\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): NavigationState {\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n }\n\n\n export class CancelledDuringNavigationInteraction extends NavigationState {\n\n readonly isPopState = false;\n private gotPopStateWithLeavingUrl = false;\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly startingEventWasAPopState: boolean,\n readonly locationChangeTriggerUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // Depending on the state of the router and what was done we get a different\n // sequence of events.\n // If the navigation change was triggered by clicking a link we'll get a cancel with the locationChangeTriggerUrl as the final event.\n // If the navigation change was triggered with a pop state then we'll get an onPopState with the locationChangeTriggerUrl but no cancel event with it.\n if (this.gotPopStateWithLeavingUrl && this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n }\n return this.gotPopStateWithLeavingUrl || this.locationChangeTriggerUrl === event.url ? this.createIdleState() : this.ignore(event);\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.ignore(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n this.gotPopStateWithLeavingUrl = this.gotPopStateWithLeavingUrl || event.url === this.locationChangeTriggerUrl;\n return this.ignore(event);\n }\n\n // @Trace()\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n\n ignore(event: RouterEvent, reason?: string): NavigationState {\n reason = reason ? ` -> ${reason}` : '';\n Logger.get(this).info(`ignoring router event${reason}: ${event.constructor.name} -> ${event.url}`);\n return this;\n }\n\n toString(): string {\n return `${this.constructor.name}(isIdl: ${this.idle}, startingUrl: ${this.startingUrl}, locationChangeTriggerUrl:${this.locationChangeTriggerUrl})`;\n }\n\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport _ from 'lodash';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceHistory {\n\n private _history = new Map<PlaceDefinition, Visit[]>();\n\n constructor() {\n }\n\n // @Trace()\n add(state: Visit) {\n const history = this.getHistory(state.placeDefinition);\n const previousState = _.first(history);\n if (!previousState || state.hasChangedFrom(previousState)) {\n history.unshift(state); // LIFO\n this.setHistory(state.placeDefinition, history.slice(0, 3)); // limit our history to 4 visits\n }\n }\n\n getHistory(placeDef: PlaceDefinition): Visit[] {\n let history = this._history.get(placeDef);\n if (!history) {\n history = [];\n this.setHistory(placeDef, history);\n }\n return history;\n }\n\n private setHistory(placeDef: PlaceDefinition, history: Visit[]) {\n this._history.set(placeDef, history);\n }\n\n// previousVisit(): Visit {\n // return _.last(this._history);\n // }\n //\n // withPreviousVisit<R>(callback:(previousVisit:Visit)=>R, defaultValue:R = null):R{\n // const visit = this.previousVisit();\n // return visit ? callback(visit) : defaultValue;\n // }\n //\n // previousVisitTo(place: Place): Visit {\n // return new VisitHistory.Query(this._history).to(place).last();\n // }\n}\n\nexport namespace VisitHistory {\n\n // export class Query {\n // private _history: Visit.State[];\n // private _places: Place[];\n // private _predicate: (visit: any) => boolean;\n // private _limit: number;\n //\n // constructor(history, limit = history.length) {\n // this._history = history;\n // this._places = [];\n // this._predicate = (visit => true);\n // this._limit = limit;\n // }\n //\n // to(...places:Place[]):this {\n // this._places = places;\n // return this;\n // }\n //\n // with(parameters: { [parameter: string]: any }): this {\n // this.matching(state => {\n // return Object.keys(parameters).reduce((acc, key) => {\n // const matchValue = parameters[key];\n // const visitValue = state.get(key);\n // const matched = matchValue === '*' ? !_.isNil(visitValue) : visitValue == matchValue;\n // // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);\n // return acc && matched;\n // }, true);\n // });\n // return this;\n // }\n //\n // last(): Visit.State {\n // return _.findLast(this._history, visit => this._matches(visit))\n // }\n //\n // // @trace\n // allThatMatch(): Visit.State[] {\n // return _.filter(this._history, visit => this._matches(visit)).slice(-this._limit);\n // }\n //\n // // @trace\n // mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {\n // const lastStateWithParam = _.findLast(this.allThatMatch(), state => !_.isNil(state.get(param)));\n // return _.isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);\n // }\n //\n // limit(limit: number): this {\n // this._limit = limit;\n // return this;\n // }\n //\n // matching(predicate: (visit: Visit.State) => boolean): this {\n // this._predicate = predicate;\n // return this;\n // }\n //\n // _matches(visit: Visit.State) {\n // return this._isPlaceMatch(visit) && this._predicate(visit);\n // }\n //\n // _isPlaceMatch(visit: Visit.State) {\n // return this._places.length < 1 || this._places.includes(visit.place)\n // }\n //\n // }\n\n}\n","import { NavigationExtras, UrlSegment, UrlSerializer, UrlTree } from '@angular/router';\nimport { assert, Trace } from '@coolon/pectin';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\nexport class UrlSnapshot {\n\n readonly urlTree: UrlTree;\n\n // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.\n constructor(readonly urlSerializer: UrlSerializer, readonly url: string) {\n this.urlTree = urlSerializer.parse(url);\n }\n\n public updateVisitSegments(visit: Visit): UrlSnapshot {\n const urlTree = this.urlSerializer.parse(this.url);\n // Ugly, but it works for now.\n const segments = [...this.getPrimarySegments(urlTree)];\n const visitSegments = this.getSegmentsFor(visit);\n const replaceAt = segments.findIndex(segment => segment.path === visitSegments[0].path);\n // do not use the return value, it's the items that were removed!\n segments.splice(replaceAt, visitSegments.length, ...visitSegments);\n urlTree.root.children.primary.segments = segments;\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n\n private getPrimarySegments(urlTree: UrlTree) {\n return this.urlTree.root.children.primary.segments;\n }\n\n /**\n * Converts the visit into segments. Please not that these segments are not e\n * @param visit\n */\n protected getSegmentsFor(visit: Visit): UrlSegment[] {\n return visit.placeDefinition.hasRouteId() ?\n [\n // NOTE:\n // It's important to attach the params to the root path and not the id. If we attach them\n // to an empty id then the angular router won't match the pattern.\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit)),\n new UrlSegment(visit.placeDefinition.getFormattedRouteId(visit), {})]\n :\n [\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit))\n ];\n }\n\n includesPathOf(placeDef: PlaceDefinition) {\n return this.getPrimarySegments(this.urlTree).find(s => s.path === placeDef.path);\n }\n\n getInteractionIds() {\n const queryParam = this.urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM];\n if (queryParam) {\n return UrlSnapshot.parseInteractionIds(queryParam);\n } else {\n return [];\n }\n }\n\n hasInteractionIds() {\n return this.getInteractionIds().length > 0;\n }\n\n // @Trace()\n updateInteractionIds(ids: string[]): UrlSnapshot {\n if (ids.length === 0) {\n return this.removeInteractionIds();\n } else {\n const urlTree = this.urlSerializer.parse(this.url);\n urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM] = UrlSnapshot.createPathIdFor(ids);\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n }\n\n // @Trace()\n removeInteractionIds(): UrlSnapshot {\n const urlTree = this.urlSerializer.parse(this.url);\n if (urlTree.queryParams && urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM]) {\n urlTree.queryParams = {};//[UrlSnapshot.INTERACTION_ROUTER_OUTLET]\n }\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n\n // withOptions(options: NavigationExtras) {\n // return new UrlSnapshot(this.urlSerializer, this.url, options);\n // }\n //\n // @Trace()\n // getNavigationExtras(): NavigationExtras {\n // return this.options;\n // }\n\n}\n\nexport namespace UrlSnapshot {\n\n export const INTERACTION_QUERY_PARAM = 'aup-interactions';\n export const INTERACTION_ID_SEPARATOR = '--';\n\n export function parseInteractionIds(path: string) {\n return path.split(INTERACTION_ID_SEPARATOR);\n }\n\n export function createPathIdFor(interactionIds: string[]) {\n return interactionIds.join(INTERACTION_ID_SEPARATOR);\n }\n\n export interface NavigationOptions {\n replaceUrl?: boolean;\n }\n}\n","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n UrlSerializer\n} from '@angular/router';\nimport {\n assert,\n Constructable,\n Dsl,\n GarbageCollector,\n HasOneIndexChain,\n lang,\n ListModel,\n Logger,\n MutableListModel,\n MutableStream,\n MutableValueModel,\n Trace,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport _ from 'lodash';\nimport { InteractionService } from '../interaction/services/interaction.service';\nimport { NavigationState } from './guards/navigation-state';\nimport { PlaceHistory } from './place-history';\nimport { UrlSnapshot } from './url-snapshot';\nimport { Visit } from './visit';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouter extends GarbageCollector {\n\n private readonly _navigationStateModel = new MutableValueModel<NavigationState>();\n private readonly _activeVisits = new MutableListModel<Visit>();\n\n readonly navigationInProgress: ValueModel<boolean>;\n readonly activeVisitIndex: HasOneIndexChain<'placeDefinition', Visit>;\n private _navigationSessionContext: NavigationState.Context;\n private _navigationStateTypeModel: ValueModelChain<Constructable<NavigationState>>;\n\n constructor(private readonly router: Router,\n private readonly urlSerializer: UrlSerializer,\n private readonly angularLocation: Location,\n private readonly placeHistory: PlaceHistory,\n private readonly interactionService: InteractionService) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.activeVisitIndex = chain(this._activeVisits).indexBy('placeDefinition');\n this.navigationInProgress = chain(this.navigationStateModel).pluck('isTransitional');\n this._navigationSessionContext = new NavigationState.Context(this, this.interactionService, session => {\n this.processNavigationSuccess(session);\n });\n this._navigationStateModel.value = new NavigationState.Idle(this._navigationSessionContext);\n this._navigationStateTypeModel = chain(this._navigationStateModel).map(state => state.constructor as Constructable<NavigationState>);\n\n // TODO: make setup the callbacks in during module initiation to make this testable.\n this.router.events.subscribe(event => {\n // Routing event sequence\n // ======================\n // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session\n // NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.\n // NavigationStart -> .... -> NavigationError --> navigation aborted, end session.\n // =======================\n if (event instanceof NavigationStart) {\n if (event.navigationTrigger === 'popstate') {\n this.runStateTransition(state => state.onPopState(event));\n } else {\n this.runStateTransition(state => state.onRouterStarted(event));\n }\n }\n if (event instanceof NavigationEnd) {\n console.log(event);\n this.runStateTransition(state => state.onRouterEnd(event));\n }\n if (event instanceof NavigationError) {\n console.log(event);\n this.runStateTransition(state => state.onRouterError(event));\n }\n if (event instanceof NavigationCancel) {\n console.log(event);\n this.runStateTransition(state => state.onRouterCancelled(event));\n }\n });\n\n // Push dialog state to the url so we can capture the back button.\n when.listOf(this.interactionService.activeInteractionContextIds).changes((ids, previous) => {\n this.syncInteractionIdsWithRouter(ids, previous);\n }, { unless: this.navigationInProgress }); // TODO: I think the exclusive interaction prevents interactions starting while it's active so we might not need this.\n\n const urlChanges = new MutableStream<{ url: string, state: NavigationState }>();\n\n // The angular router doesn't always fire router events when the back button is pushed while a navigation\n // session is in progress. Sometimes we only know about it from the url change.\n // IMPORTANT ORDER DEPENDENCY\n // This only works because we're notified of the change after the router has started reacting to it. This\n // we can can use our navigationState to determine things.\n angularLocation.onUrlChange(url => {\n const navigationState = this._navigationStateModel.value;\n console.log(`URLChange -> ${url}`, { state: navigationState });\n urlChanges.publish({ url, state: navigationState });\n\n // The url has changed while we're in a transitional state\n if (navigationState.isTransitional) {\n const navigationInteraction = this.navigationState.interactionContext;\n if (navigationInteraction && navigationInteraction.isActive()) {\n this.runStateTransition(state => state.onBackClickedDuringNavigationInteraction(url));\n }\n }\n });\n }\n\n private processNavigationSuccess(session: NavigationState) {\n // We need to update the visits before the session finishes. This allows the placeOutets to ignore visit\n // changes that occur while routerNavigationActive is true.\n assert.isTruthy(this.navigationInProgress.value);\n const visits = session.getVisits();\n visits.forEach(v => this.placeHistory.add(v));\n this._activeVisits.value = visits;\n }\n\n get navigationState(): NavigationState {\n return this._navigationStateModel.value;\n }\n\n get navigationStateModel(): ValueModel<NavigationState> {\n return this._navigationStateModel.readonly;\n }\n\n get activeVisits(): ListModel<Visit> {\n return this._activeVisits.readonly;\n }\n\n /**\n * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));\n * @param visit\n */\n async navigate(visit: Visit, options?: { relativeTo: ActivatedRoute }) {\n this.doNavigation(visit, async router => {\n const commands = [\n visit.placeDefinition.path,\n ...this.createRouteParameters(visit)\n ];\n await this.router.navigate(commands, {\n relativeTo: options ? options.relativeTo : null\n });\n });\n }\n\n // @Trace()\n async pushVisitChangesToRoute(activatedRoute: ActivatedRoute, previous: Visit, next: Visit) {\n // we have to push to history so our remember sanitisers don't pick up the previous value\n // when it's been cleared by the user.\n this.placeHistory.add(next);\n\n // FIXME: no route id -> route id duplicates route parameters\n if (next.hasRoutingChangedFrom(previous)) {\n return this.doNavigation(next, router => {\n const urlSnapshot = this.parseUrl(this.router.routerState.snapshot.url).updateVisitSegments(next);\n console.log('### Push Changes to route Redirect', { commands: urlSnapshot.url });\n return this.navigateByUrl(urlSnapshot);\n });\n }\n }\n\n async doNavigation(visit: Visit, runNavigationCommands: (router: Router) => any) {\n if (this.navigationInProgress.value) {\n lang.illegalState('Navigation already in progress');\n }\n this.runStateTransition(current => {\n const session = this.navigationState.onPlaceNavigationStart(visit, this.getCurrentRouterUrl());\n session.storeVisit(visit);\n return session;\n });\n try {\n await runNavigationCommands(this.router);\n } finally {\n // Router has finished (since there was no router change required) so we\n // need to end the navigation session.\n if (this.navigationState.isTransitional && !this.router.getCurrentNavigation()) {\n this.runStateTransition(session => session.onRouterEnd(new NavigationEnd(-1, '', '')));\n }\n }\n }\n\n // @Trace()\n protected runStateTransition(transition: (navigationSession: NavigationState) => NavigationState) {\n const previous = this._navigationStateModel.value;\n const next = transition(this.navigationState);\n this._navigationStateModel.value = next;\n if (next !== previous) {\n previous.dispose();\n Logger.get(this).info(`Router State Transition: ${previous.toString()} -> ${next.toString()}`);\n }\n }\n\n private createRouteParameters(visit: Visit) {\n const def = visit.placeDefinition;\n return visit.hasRouteId() ?\n [def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :\n [def.getFormattedRouteParameters(visit)];\n }\n\n extractChildPath(activatedRoute: ActivatedRouteSnapshot): any[] {\n return _.flatten(activatedRoute.children.map(child => child.url));\n }\n\n parseUrl(url: string): UrlSnapshot {\n return new UrlSnapshot(this.urlSerializer, url);\n }\n\n resetBrowserLocation(url: string) {\n this.angularLocation.go(url);\n }\n\n createUrlSnapshot(...visits: Visit[]): UrlSnapshot {\n const bits = [];\n visits.forEach(v => {\n bits.push(this.parseUrl(`${v.placeDefinition.path}`).updateVisitSegments(v).url);\n });\n return this.parseUrl(bits.join(''));\n }\n\n getCurrentRouterUrl(): string {\n return this.router.routerState ? this.router.routerState.snapshot.url : null;\n }\n\n getCurrentRouteSnapshot(): UrlSnapshot {\n return this.parseUrl(this.getCurrentRouterUrl());\n }\n\n getActiveInteractionIdsFromUrl(url: string): string[] {\n return this.parseUrl(url).getInteractionIds();\n }\n\n\n // @Trace()\n hasActiveInteractionIds(url: string) {\n return this.getActiveInteractionIdsFromUrl(url).length > 0;\n }\n\n // @Trace()\n navigateByUrl(urlSnapshot: UrlSnapshot, navigationExtras?: NavigationExtras): Promise<boolean> {\n return this.router.navigateByUrl(urlSnapshot.urlTree, navigationExtras);\n }\n\n // TODO: Should this be moved to the navigation states?\n syncInteractionIdsWithRouter(currentIds: string[], previous: string[]) {\n assert.isFalsey(this.navigationInProgress.value); // Updating interaction routes during an existing navigation breaks all the things.\n console.log({\n startingActivity: currentIds.length > previous.length,\n wasBackButton: this.navigationState.isPopState\n });\n\n if (_.isEqual(currentIds, previous)) {\n console.log('activity ids were the same, skipping');\n } else {\n // OMG, this is nuts.\n const addingActivity = currentIds.length > previous.length;\n const isFirstActivity = addingActivity && previous.length < 1;\n const removingLastActivity = currentIds.length < 1;\n if (addingActivity) {// we're starting a new activity, push the change to the history and update the url\n console.log('adding activity');\n this.navigateByUrl(this.getCurrentRouteSnapshot().updateInteractionIds(currentIds), {\n replaceUrl: !isFirstActivity // we don't let the history pile up\n });\n } else {\n const urlSnapshot = this.getCurrentRouteSnapshot().updateInteractionIds(currentIds);\n if (removingLastActivity) {\n this.navigateByUrl(urlSnapshot, {\n replaceUrl: true\n }).then(() => {\n // for some reason we need to pop the last history off the stack when leaving the\n // active activity state.\n this.angularLocation.back();\n });\n } else {\n this.navigateByUrl(urlSnapshot, {\n replaceUrl: true\n });\n }\n }\n }\n }\n}\n","import { animate, group, query, style, transition, trigger } from '@angular/animations';\n\n// Freezes the state of the components at the start of the animation.\nconst animationStartStyle = style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });\n\nconst left = [\n query(':enter, :leave', animationStartStyle, { optional: true }),\n group([\n query(':enter', [\n style({ transform: 'translateX(-100%)' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(0%)' }))\n ], {\n optional: true\n }),\n query(':leave', [\n style({ transform: 'translateX(0%)' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(100%)' }))\n ], {\n optional: true\n })\n ])\n];\n\nconst right = [\n query(':enter, :leave', animationStartStyle, { optional: true }),\n group([\n query(':enter', [\n style({ transform: 'translateX(100%)', minHeight: '1px' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(0%)' }))\n ], {\n optional: true\n }),\n query(':leave', [style({ transform: 'translateX(0%)' }), animate('{{duration}} ease-out', style({\n transform: 'translateX(-100%)',\n minHeight: '1px'\n }))], {\n optional: true\n })\n ])\n];\n\nexport function leftRightPlaceAnimation(duration: string) {\n return trigger('routeAnimations', [\n transition(':increment', right, { params: { duration: duration } }),\n transition(':decrement', left, { params: { duration: duration } })\n ]);\n}\n\nexport const LEFT_RIGHT_PLACE_ANIMATION = leftRightPlaceAnimation('0.3s');\n","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, SkipSelf, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\nimport {\n BooleanValueModelChain,\n Constructable,\n DelegatingValueModel,\n Dsl,\n Guard,\n ListModel,\n MutableValueModel,\n StoreInListModel,\n StoreInValueModel,\n UseDelegate,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { PlaceComponent } from '../../place-component';\nimport { AUP_PLACE_CONFIG, PlaceConfig } from '../../place-config';\nimport { PlaceDefinition } from '../../place-definition';\nimport { PlaceRouter } from '../../place-router';\n\nimport { Visit } from '../../visit';\nimport { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';\n\n// Quick hack to avoid circular references between this and PlaceComponents.\ninterface PlaceRef {\n readonly placeDefinition: PlaceDefinition\n\n initialiseBindings(param: ValueModel<Visit>): void;\n\n onPlaceReady(): void;\n}\n\n@Component({\n selector: 'aup-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss'],\n animations: [LEFT_RIGHT_PLACE_ANIMATION]\n})\nexport class PlaceOutletComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInValueModel('animateModel')\n animate: boolean;\n\n @Input() @UseDelegate({ defaultValue: true })\n animateModel: ValueModel<boolean>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrderModel') @UseDelegate()\n customPlaceAnimationOrderModel: ListModel<Constructable<PlaceComponent>>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrder') @StoreInListModel('customPlaceAnimationOrderModel')\n customPlaceAnimationOrder: Constructable<PlaceComponent>[];\n\n @Output()\n readonly placeChanged = new EventEmitter<PlaceComponent>();\n\n @ViewChild('routeOutlet', { static: true })\n routerOut: RouterOutlet;\n\n private readonly _activePlace = new MutableValueModel<PlaceComponent>();\n private readonly _activePlaceVisitModel = new DelegatingValueModel<Visit>();\n\n private readonly _inOutletActivation = new Guard();\n private readonly _inOutletDeactivation = new Guard();\n private readonly _inOutletUpdate: BooleanValueModelChain;\n private readonly _inRouteVisitUpdate = new Guard();\n private readonly _activatedRouteModel = new MutableValueModel<ActivatedRoute>();\n\n private readonly _placeDefinition = new MutableValueModel<PlaceDefinition>();\n private parentOutletModel: MutableValueModel<PlaceOutletComponent>;\n public readonly placeAnimationOrder: ValueModelChain<number>;\n\n private initialPlaceIndex: number = null;\n private routerVisit: ValueModelChain<Visit>;\n\n constructor(private readonly router: Router,\n private readonly placeRouter: PlaceRouter,\n @Optional() @Inject(AUP_PLACE_CONFIG) readonly placeConfig: PlaceConfig,\n @SkipSelf() @Optional() parentOutlet: PlaceOutletComponent) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.parentOutletModel = new MutableValueModel(parentOutlet);\n this._activePlaceVisitModel.setDelegate(new MutableValueModel<Visit>());\n this._inOutletUpdate = valueOf.any(this._inOutletDeactivation, this._inOutletActivation).areTruthy();\n\n const defaultPlaceAnimationOrder = chain(this.parentOutletModel)\n .pullValueModel(o => o.activePlaceModel)\n .pluck('placeDefinition')\n .pluckList('children')\n .pluck('component');\n\n const activatePlaceType = chain(this.activePlaceModel).map(p => p.constructor as Constructable<PlaceComponent>);\n this.placeAnimationOrder = chain(this.customPlaceAnimationOrderModel)\n .otherwise(defaultPlaceAnimationOrder)\n .reduce((placesInOrder) => {\n let placeIndex = 0;\n if (activatePlaceType.value) {\n placeIndex = placesInOrder.indexOf(activatePlaceType.value);\n if (_.isNil(this.initialPlaceIndex)) {\n this.initialPlaceIndex = placeIndex;\n }\n }\n return _.isNil(this.initialPlaceIndex) ? 0 : placeIndex - this.initialPlaceIndex;\n }, { dependsOn: activatePlaceType });\n\n // Push incoming changes into the component\n this.routerVisit = chain(this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);\n // Our router visit will change when our active is nullified during deactivation, which will push a null visit\n // the the deactivated component, which will nuke it's view before the animations have finished.\n // The visit will alway updated after the router session is finsised (when the new visits are registered) so\n // we can safely ignore it during outlet changes as these always happen before the router session ends.\n when.valueOf(this.routerVisit).changes(() => this.pushRouteChangesToVisit(), { unless: this._inOutletUpdate });\n\n // Handle component based changes\n when.valueOf(this._activePlaceVisitModel).changes((next, previous) => {\n this.pushVisitChangesToRoute(next, previous);\n }, {\n unless: this.placeRouter.navigationInProgress\n });\n\n chain(this._activePlace)\n .postponeWhile(placeRouter.navigationInProgress)\n .subscribe(place => this.placeChanged.emit(place));\n\n }\n\n ngOnInit() {\n }\n\n // @Trace()\n getAnimationOrder() {\n return this.placeAnimationOrder.value;\n }\n\n get animationDuration() {\n return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';\n }\n\n // @Trace()\n navigate(visit: Visit) {\n // console.log({ activatedRoute: this._activatedRouteModel.value });\n this.placeRouter.navigate(visit, {\n relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null\n });\n }\n\n get parentOutlet(): PlaceOutletComponent {\n return this.parentOutletModel.value;\n }\n\n // @Trace()\n pushRouteChangesToVisit() {\n const visit = this.routerVisit.value;\n // console.log({\n // visit,\n // place: visit ? visit.placeDefinition.component : null,\n // inOutletActivation: this._inOutletActivation.value,\n // inRoutingSession: this.placeRouter.navigationSessionActive.value\n // });\n if (visit) { // can be null while the place and index sync up\n this._inRouteVisitUpdate.whileTrue(() => {\n this._activePlaceVisitModel.value = visit;\n });\n }\n }\n\n pushVisitChangesToRoute(next: Visit, previous: Visit) {\n const activatedRoute = this._activatedRouteModel.value;\n this.placeRouter.pushVisitChangesToRoute(activatedRoute, previous, next);\n }\n\n get activePlaceModel(): ValueModel<PlaceComponent> {\n return this._activePlace.readonly;\n }\n\n get activatedRouteModel(): ValueModel<ActivatedRoute> {\n return this._activatedRouteModel.readonly;\n }\n\n // @Trace()\n onOutletActivated(routerOutlet: RouterOutlet, place: PlaceComponent) {\n this._inOutletActivation.whileTrue(() => {\n try {\n this._activePlace.value = place;\n this._activatedRouteModel.value = routerOutlet.activatedRoute;\n this._placeDefinition.value = place.placeDefinition;\n const visitModel = new MutableValueModel<Visit>();\n this._activePlaceVisitModel.setDelegate(visitModel);\n place.initialiseBindings(visitModel);\n } catch (error) {\n console.error(error);\n }\n });\n if (!this.animateModel.value) {\n // we're not animating so trigger any post animation callbacks now.\n this.animationDone();\n }\n }\n\n // @Trace()\n onOutletDeactivated() {\n this._inOutletDeactivation.whileTrue(() => {\n this._activePlace.value = null;\n this._activatedRouteModel.value = null;\n this._placeDefinition.value = null;\n this._activePlaceVisitModel.setDelegate(null);\n });\n }\n\n // @Trace()\n animationStarted() {\n // console.log({ activePlace: this._activePlace.value });\n }\n\n // @Trace()\n animationDone() {\n if (this._activePlace.value) {\n this._activePlace.value.onPlaceReady();\n }\n }\n\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Command,\n Constructable,\n Dsl,\n ListModel,\n ListModelChain,\n StoreInListModel, StoreInValueModel,\n UseDelegate,\n ValueModel, ValueModelChain\n} from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { DisposableComponent } from '../../components/disposable-component';\nimport { NavItem } from '../nav-item';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { Visit } from '../visit';\nimport { PlaceOutletComponent } from './place-outlet/place-outlet.component';\n\n@Component({\n template: ''\n})\nexport class AbstractPlaceNavigationComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInListModel('placesModel')\n places: Constructable<PlaceComponent>[];\n\n @Input() @UseDelegate()\n placesModel: ListModel<Constructable<PlaceComponent>>;\n\n\n @Input() @StoreInValueModel('placeOutletModel')\n placeOutlet: PlaceOutletComponent;\n\n @Input() @UseDelegate()\n placeOutletModel: ValueModel<PlaceOutletComponent>;\n\n readonly placeDefinitions: ListModelChain<PlaceDefinition>;\n\n readonly commandFactory: Command.Factory<PlaceDefinition, void>;\n readonly activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.placeDefinitions = chain(this.placesModel).map(c => PlaceComponent.getDefinition(c));\n this.commandFactory = Command.createFactory((placeDefinition:PlaceDefinition) => {\n this.placeOutlet.navigate(new Visit(placeDefinition))\n });\n this.activePlaceDefinition = chain(this.placeOutletModel).pullValueModel(o => o.activePlaceModel).pluck(\"placeDefinition\")\n }\n\n @Memoize()\n getNav(placeDef: PlaceDefinition): NavItem {\n const navItem = placeDef.getPlaceData('nav') as NavItem;\n return {\n title: () => navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']),\n tooltip: () => navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null),\n icon: () => navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null)\n };\n }\n\n isActive(place:PlaceDefinition) {\n return this.activePlaceDefinition.query().equals(place);\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { StoreInValueModel, UseDelegate, ValueModel } from '@coolon/pectin';\n\n@Component({\n selector: 'aup-busy-overlay',\n templateUrl: `./busy-overlay.component.html`,\n styleUrls: ['./busy-overlay.component.scss']\n})\nexport class BusyOverlayComponent implements OnInit {\n\n @Input() @UseDelegate()\n busyModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('busyModel')\n busy: boolean;\n\n constructor() {\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'aup-empty-state',\n template: `\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./empty-state.component.scss']\n})\nexport class EmptyStateComponent implements OnInit {\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-list-place-nav',\n templateUrl: './list-place-nav.component.html',\n styleUrls: ['./list-place-nav.component.scss']\n})\nexport class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {\n\n @HostBinding('class.expanded')\n public expanded = true;\n\n constructor() {\n super();\n }\n\n expandMenu() {\n this.expanded = true;\n }\n\n collapseMenu() {\n this.expanded = false;\n }\n\n toggleMenu() {\n this.expanded = !this.expanded;\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-tabbed-place-navigation',\n templateUrl: './tabbed-place-navigation.component.html',\n styleUrls: ['./tabbed-place-navigation.component.scss']\n})\nexport class TabbedPlaceNavigationComponent extends AbstractPlaceNavigationComponent {\n constructor() {\n super();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { AbstractPlaceNavigationComponent } from './components/abstract-place-navigation.component';\nimport { BusyOverlayComponent } from './components/busy-overlay/busy-overlay.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { ListPlaceNavComponent } from './components/list-place-nav/list-place-nav.component';\nimport { PlaceOutletComponent } from './components/place-outlet/place-outlet.component';\nimport { TabbedPlaceNavigationComponent } from './components/tabbed-place-navigation/tabbed-place-navigation.component';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n MatProgressSpinnerModule,\n RouterModule,\n MatTabsModule,\n MatListModule,\n MatTooltipModule,\n MatIconModule,\n DirectivesModule\n ],\n declarations: [\n EmptyStateComponent,\n BusyOverlayComponent,\n PlaceOutletComponent,\n TabbedPlaceNavigationComponent,\n ListPlaceNavComponent,\n AbstractPlaceNavigationComponent\n ],\n entryComponents: [BusyOverlayComponent],\n exports: [\n BusyOverlayComponent,\n PlaceOutletComponent,\n EmptyStateComponent,\n TabbedPlaceNavigationComponent,\n ListPlaceNavComponent,\n AbstractPlaceNavigationComponent\n ],\n providers: [\n // {provide: AUP_PLACE_CONFIG, useValue: {animationDuration: \"2000ms\"}}\n ]\n})\nexport class PlaceModule {\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ComponentsModule } from './components/components.module';\nimport { NoopComponent } from './components/noop/noop.component';\nimport { DirectivesModule } from './directives/directives.module';\nimport { InteractionModule } from './interaction/interaction.module';\nimport { PlaceModule } from './place/place.module';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule,\n DirectivesModule,\n ComponentsModule,\n PlaceModule,\n InteractionModule\n ],\n exports: [\n InteractionModule,\n PlaceModule,\n DirectivesModule,\n ComponentsModule,\n NoopComponent\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nconst slideDownOnEnterDef = style({\n opacity: 0,\n 'height': '0',\n paddingTop: '0',\n paddingBottom: '0'\n});\n\n// TODO: params aren't getting customised in the view. Need to figure out the correct approach.\nexport const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [\n transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),\n transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })\n]);\n\nconst slideLeftOnEnterDef = style({\n opacity: 0,\n 'width': '0',\n paddingLeft: '0',\n paddingRight: '0'\n});\n\nexport const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [\n transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),\n transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })\n]);\n","export class Dimension {\n constructor(readonly width: number, readonly height: number) {\n }\n}\n","export class Point {\n\n static from(data: { x: number, y: number }) {\n return new Point(data.x, data.y);\n }\n\n constructor(readonly x: number, readonly y: number) {\n }\n\n translate(x: number, y: number): Point {\n return new Point(this.x + x, this.y + y);\n }\n}\n","import { Dimension } from './dimension.class';\nimport { Point } from './point.class';\n\nexport class Bounds extends Dimension {\n\n constructor(readonly top: number, readonly left: number, readonly width: number, readonly height: number) {\n super(width, height);\n }\n\n relativePositionOf(point: { x: number, y: number } | MouseEvent) {\n if (point instanceof MouseEvent) {\n return new Point(point.clientX - this.left, point.clientY - this.top);\n } else {\n return new Point(point.x - this.left, point.y - this.top);\n }\n }\n}\n\nexport namespace Bounds {\n export function ofElement(element: HTMLElement): Bounds {\n const rect = element.getBoundingClientRect();\n return new Bounds(rect.top, rect.left, rect.width, rect.height);\n }\n}\n\n","import { AfterViewInit, ElementRef, NgZone } from '@angular/core';\nimport { ValueHolder, ValueModel } from '@coolon/pectin';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { DisposableComponent } from './disposable-component';\nimport { Bounds } from './types/bounds.class';\nimport { Point } from './types/point.class';\n\nexport class ResizeAwareComponent extends DisposableComponent implements AfterViewInit {\n\n private _boundsModel = new ValueHolder<Bounds>(new Bounds(0, 0, 0, 0));\n\n constructor(protected readonly elementRef: ElementRef, protected readonly ngZone: NgZone) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.updateBounds();\n const element = this.elementRef.nativeElement;\n const ro = new ResizeObserver((entries, observer) => {\n this.ngZone.run(() => this.updateBounds());\n });\n ro.observe(element);\n this.onDispose(() => ro.disconnect());\n }\n\n get boundsModel(): ValueModel<Bounds> {\n return this._boundsModel.readonly;\n }\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n // TODO: Make this handle body scroll\n public relativePositionOf(point: { x: number, y: number } | MouseEvent): Point {\n return this.bounds.relativePositionOf(point);\n }\n\n get bounds(): Bounds {\n return this._boundsModel.value;\n }\n\n private updateBounds() {\n this._boundsModel.value = Bounds.ofElement(this.nativeElement);\n }\n\n\n}\n\nexport namespace ResizeAwareComponent {\n\n}\n","export interface Alert {\n title?(): string;\n\n content(): string[];\n\n ok(): string;\n}\n","import { Alert } from './alert';\n\nexport interface Confirm extends Alert {\n destructive?: () => boolean;\n\n cancel(): string;\n}\n","export interface Result<R, E> {\n // catch(callback: (error: E) => void): Result<R,E>;\n}\n\nexport namespace Result {\n export interface Callback<R, E> {\n then: <T>(result: R) => T;\n catch: <T>(result: E) => T;\n }\n\n}\n\n// const r:Result<string, number> = null;\n\n// r.catch(e => {}).then();\n\n","import { Constructable } from '@coolon/pectin';\nimport { Activity } from '../../activity';\n\n\nexport interface ActivityOutletContext<D, R, E> extends Activity.Callbacks<R, E> {\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n componentReady?(component:Activity<D,R,E>);\n}\n","import { MatDialog, MatDialogRef } from '@angular/material';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { Constructable, lang, ListModel, MutableValueModel, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { Activity } from '../../activity';\nimport { ActivityContainerComponent } from '../../components/activity-container/activity-container.component';\nimport { InteractionContextBase } from '../../interaction-context-base';\n\nexport class DialogInteractionContext extends InteractionContextBase {\n\n private readonly _activeModel = new MutableValueModel<boolean>(false);\n\n constructor(private readonly dialogService: MatDialog, readonly config: MatDialogConfig<any>) {\n super();\n assert.notNil(dialogService);\n this.onDispose(() => {\n if (this.isActive()) {\n lang.illegalState('Dispose called while active.');\n }\n });\n }\n\n get active(): ValueModel<boolean> {\n return this._activeModel.readonly;\n }\n\n protected _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean = true) {\n if (this.isActive()) {\n lang.illegalState(`Activity already in progress: ${this.activityList.value.map(a => a.constructor.name).join(', ')}`);\n }\n this._activeModel.value = true;\n const config: MatDialogConfig = {\n ...this.config,\n ...{\n data,\n disableClose,\n panelClass: 'dialog-interaction-context'\n }\n };\n\n const self = this;\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent<D, R, E>>;\n return new Promise<R>((resolve, reject) => {\n const activityContainer = matDialogRef.componentInstance;\n self.safelyUpdateActivityListDelegate(activityContainer.activityList);\n\n activityContainer.initialActivityOutletContext = {\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n resolve(result);\n matDialogRef.close(true); // return true to let the after close listener know we've already handled it.\n },\n onCancel(error) {\n reject(error);\n matDialogRef.close(true); // return true to let the after close listener know we've already handled it.\n }\n };\n // we need to check if our onDone/onCancel methods above we called or if we were\n // closed by the user clicking the backdrop. If the later then we need to reject\n // our promise.\n matDialogRef.afterClosed().subscribe(promiseAlreadyFinished => {\n if (!promiseAlreadyFinished) {\n reject('auto-closed');\n }\n });\n matDialogRef.updateSize();\n matDialogRef.afterOpened().subscribe(promiseAlreadyFinished => {\n matDialogRef.updateSize();\n });\n }).finally(() => {\n self.safelyUpdateActivityListDelegate(null);\n this._activeModel.value = false;\n });\n }\n\n /**\n * Updates teh delegate on the next tick to avoid modifying state during the current change detection cycle.\n * @param delegate\n */\n safelyUpdateActivityListDelegate(delegate: ListModel<Activity<any, any>>) {\n setTimeout(() => this.setActivityList(delegate));\n }\n\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { MatDialog } from '@angular/material';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { BooleanValueModelChain } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { InteractionContext } from '../../interaction-context';\nimport { ModalInteractionContextFactory } from '../modal-interaction-context.factory';\nimport { DialogInteractionContext } from './dialog-interaction-context';\n\nexport const DIALOG_INTERACTION_SERVICE_DEFAULTS = new InjectionToken<MatDialogConfig<any>>('DIALOG_INTERACTION_SERVICE_DEFAULTS');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionContextFactory extends ModalInteractionContextFactory {\n\n readonly active: BooleanValueModelChain;\n\n constructor(private readonly dialogService: MatDialog,\n @Optional() @Inject(DIALOG_INTERACTION_SERVICE_DEFAULTS) readonly dialogServiceDefaults: MatDialogConfig<any>,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) readonly matDialogDefaultConfig: MatDialogConfig<any>\n ) {\n super();\n assert.notNil(dialogService);\n }\n\n createInteractionContext(): InteractionContext {\n const config: MatDialogConfig = {\n autoFocus: false,\n hasBackdrop: true,\n closeOnNavigation: false,\n ...this.matDialogDefaultConfig,\n ...this.dialogServiceDefaults\n };\n\n return new DialogInteractionContext(this.dialogService, config);\n }\n}\n","export interface NavItem {\n title(): string;\n\n icon?(): string;\n\n tooltip?(): string;\n}\n","import { Constructable, lang } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { PlaceComponent } from './place-component';\nimport { PlaceDefinition } from './place-definition';\n\nexport function Place(options: Place.Options) {\n return (target: Function) => {\n if (PlaceComponent.isPlaceComponentConstructor(target)) {\n PlaceComponent.injectDefinition(target, new PlaceDefinition(\n target,\n options.path,\n _.isNil(options.authenticate) ? true : options.authenticate,\n options.data,\n PlaceComponent.getRouteParameters(target),\n (options.children || []).map(c => PlaceComponent.getDefinition(c))\n ));\n\n } else {\n lang.illegalState(`${target} must extend PlaceComponent to use the @Place decorator`);\n }\n };\n}\n\nexport namespace Place {\n\n export interface Options {\n path: string,\n data?: { [key: string]: any }, // defaults to true\n authenticate?: boolean, // defaults to true\n children?: Constructable<PlaceComponent>[]\n defaultChild?: Constructable<PlaceComponent>\n }\n\n}\n\n","import { ParamMap, UrlSegment } from '@angular/router';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\n\n/**\n * This a work around for the fact that an activated route with multiple segments doesn't\n * include the segment params in the paramMap as well as each segment returns an empty\n * param map even when `parameter`s has content.\n */\nexport class ConsolidatedParameterMap implements ParamMap {\n\n private paramMaps: ParamMap[];\n\n constructor(paramMap: ParamMap, urlSegments: UrlSegment[]) {\n this.paramMaps = [paramMap].concat(\n (urlSegments || []).map(s => new ParamMapAdapter(s.parameters))\n ).filter(m => !!m); // the activated route param map can be null\n }\n\n get(name: string): string | null {\n const paramMap = this.paramMaps.find(m => m.has(name));\n return paramMap.get(name);\n }\n\n getAll(name: string): string[] {\n const paramMap = this.paramMaps.find(m => m.has(name));\n return paramMap.getAll(name);\n }\n\n has(name: string): boolean {\n return !!this.paramMaps.find(m => m.has(name));\n }\n\n @Memoize()\n get keys(): string[] {\n return this.paramMaps.reduce((result, params) => result.concat(params.keys), []);\n }\n}\n\nclass ParamMapAdapter implements ParamMap {\n constructor(private readonly params: { [p: string]: string }) {\n }\n\n get(name: string): string | null {\n return this.params[name];\n }\n\n getAll(name: string): string[] {\n const value = this.get(name);\n return Array.isArray(value) ? value : [value];\n }\n\n has(name: string): boolean {\n return this.keys.includes(name);\n }\n\n get keys(): string[] {\n return Object.keys(this.params);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoopAuthGuard implements CanActivate {\n\n constructor() {\n }\n\n async canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n return true;\n }\n}\n","import { Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { PlaceHistory } from '../place-history';\nimport { Visit } from '../visit';\n\nexport class VisitSanitiser {\n constructor(private activatedRoute: ActivatedRouteSnapshot, private router: Router, private placeHistory: PlaceHistory, private injector: Injector) {\n\n }\n\n // @Trace()\n async sanitise(visit: Visit): Promise<Visit> {\n const placeDef = visit.placeDefinition;\n if (placeDef.hasRouteId()) {\n const routeIdDef = placeDef.getRouteIdParameterDef();\n const routeId = visit.getRouteId();\n const sanitisedValue = await routeIdDef.sanitise(routeId, visit, this.placeHistory, this.injector);\n // console.log({routeId, sanitisedValue});\n // ###------- EARLY EXIT --------###\n if (routeIdDef.hasChanged(routeId, sanitisedValue)) {\n // if the route id has changed we redirect immediately as other\n // parameter sanitisers might use it.\n return visit.replace(routeIdDef, sanitisedValue);\n }\n }\n\n // if we didn't replace the routeId we continue the url present parameters.\n const parameterDefs = placeDef.getVisitParameterDefs({\n includeRouteParameters: true,\n includeNonRouteParameters: true\n });\n let sanitisedVisit: Visit = visit;\n for (let i = 0; i < parameterDefs.length; i++) {\n const def = parameterDefs[i];\n const value = visit.getParameter(def.name);\n const sanitisedValue = await def.sanitise(value, sanitisedVisit, this.placeHistory, this.injector);\n if (def.hasChanged(value, sanitisedValue)) {\n sanitisedVisit = sanitisedVisit.replace(def, sanitisedValue);\n }\n }\n\n return sanitisedVisit.hasChangedFrom(visit) ? sanitisedVisit : visit;\n }\n\n}\n","import { Injector } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanDeactivate,\n Router,\n RouterStateSnapshot,\n UrlSerializer,\n UrlTree\n} from '@angular/router';\nimport { lang, Trace } from '@coolon/pectin';\nimport { Observable } from 'rxjs';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceHistory } from '../place-history';\nimport { PlaceRouter } from '../place-router';\nimport { VisitSanitiser } from '../route/visit-sanitiser';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { ConsolidatedParameterMap } from './consolidated-param-map';\n\n\nexport abstract class PlaceGuard implements CanActivate, CanDeactivate<PlaceComponent> {\n\n\n constructor(private readonly router: Router,\n private urlSerializer: UrlSerializer,\n private readonly placeRouter: PlaceRouter,\n private readonly placeHistory: PlaceHistory,\n private readonly interactionService: InteractionService,\n private readonly injector: Injector) {\n }\n\n // @Trace()\n async canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n\n // TODO: this is ugly now that I'm return UrlSnapshots and not UrlTrees. It'd be better if the functions\n // weren't nested or if I implemented a handler chain.\n return this.authorisePlaceThen(activatedRoute, state, async (placeDefinition) => {\n\n const result = await this.cleanInteractionState(activatedRoute, state, async () => {\n // Parse our route params.\n const params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);\n const parsedParams = placeDefinition.parseRouteParams(params);\n\n const initialVisit = this.placeRouter.navigationState.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);\n const sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);\n const sanitisedVisit = await sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));\n\n // Save the visit with any updated parameters. We need to save it so we remember any non route parameters\n this.placeRouter.navigationState.storeVisit(sanitisedVisit);\n if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {\n // Regenerate the url\n const urlSnapshot = this.placeRouter.parseUrl(state.url).updateVisitSegments(sanitisedVisit);\n console.log('##### Place Guard Redirect', urlSnapshot);\n return urlSnapshot;\n } else {\n return true;\n }\n });\n return this.handleGuardResult(result);\n\n });\n }\n\n // @Trace()\n async canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Promise<boolean | UrlTree> {\n const currentUrl = this.placeRouter.parseUrl(currentState.url);\n const nextUrl = this.placeRouter.parseUrl(nextState.url);\n const result = await this.placeRouter.navigationState.canDeactivatePlace(component, currentUrl, nextUrl);\n return this.handleGuardResult(result);\n }\n\n private handleGuardResult(result) {\n if (result instanceof UrlSnapshot) {\n return result.urlTree;\n } else {\n return result;\n }\n }\n\n // @Trace()\n protected async authorisePlaceThen(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot, runPlaceGuards: (placeDefinition: PlaceDefinition) => Promise<boolean | UrlTree>) {\n if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {\n const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);\n const authoriseResult = placeDefinition.authenticate ? await this.isAuthorised(activatedRoute, state) : true;\n if (authoriseResult === true) {\n // we're authorised, now run the place guards.\n return runPlaceGuards(placeDefinition);\n } else {\n console.log('not authorised result', authoriseResult);\n return authoriseResult;\n }\n } else {\n return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);\n }\n }\n\n // @Trace()\n async isAuthorised(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n const authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);\n return (authorised instanceof Observable) ? authorised.toPromise() : authorised;\n }\n\n abstract getAuthGuard(injector: Injector): CanActivate;\n\n // @Trace()\n async cleanInteractionState(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, then: () => Promise<boolean | UrlSnapshot>): Promise<boolean | UrlSnapshot> {\n const url = this.placeRouter.parseUrl(state.url);\n if (!this.interactionService.isActive() && url.hasInteractionIds()) {\n // This happens if we reload the page or the url was pasted as the route should only be activated\n // after the interaction context has become active.\n return url.removeInteractionIds();\n } else {\n return then();\n }\n }\n\n}\n","import _ from 'lodash';\n\nexport interface Formatter<T> {\n format(value: T): string;\n\n parse(value: string): T;\n}\n\nexport namespace Formatter {\n\n class StringType implements Formatter<string> {\n format(value: string): string {\n return value;\n }\n\n parse(value: string): string {\n return value;\n }\n }\n\n class NumberType implements Formatter<number> {\n format(value: number): string {\n return _.isNumber(value) && !_.isNaN(value) ? `${value}` : null;\n }\n\n parse(value: string): number {\n const parsed = Number.parseFloat(value);\n return _.isNaN(parsed) ? null : parsed;\n }\n }\n\n class BooleanType implements Formatter<boolean> {\n format(value: boolean): string {\n return value ? 'true' : 'false';\n }\n\n parse(value: string): boolean {\n return value === 'true';\n }\n }\n\n export const STRING = new StringType();\n export const NUMBER = new NumberType();\n export const BOOLEAN = new BooleanType();\n}\n","export type JsonPrimitive = boolean | number | string;\nexport type AnyJson = JsonPrimitive | null | JsonArray | JsonMap;\n\nexport interface JsonArray extends Array<AnyJson> {\n}\n\nexport interface JsonMap {\n [key: string]: AnyJson;\n}\n\n","import { UseDelegate } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ROUTE_PARAMETER_LIST_KEY } from '../place-component';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { Formatter } from './formatter';\n\n\nexport interface RouteIdOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteListParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T[];\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T[]>> | ParameterSanitiser<T[]>;\n}\n\nexport function RouteId<T extends string | number>(type: Formatter<T>, options?: RouteIdOptions<T>): PropertyDecorator {\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.RouteId(propertyKey.toString(), options, type);\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\nexport function VisitParameter<T>(options?: RouteParameterOptions<T>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\nexport function VisitParameterList<E>(options?: RouteListParameterOptions<E>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate()(prototype, propertyKey);\n };\n}\n\n// export function RouteParameter<T>(type: ParameterType<T>, options?: RouteParameterOptions<T>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, type);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n//\n// export function RouteParameterList<E>(elementType: ParameterType<E>, options?: RouteListParameterOptions<E>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, elementType);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n","import { Injector } from '@angular/core';\nimport { Visit } from '../visit';\nimport { ParameterSnapshot } from './parameter-snapshot';\n\nexport interface ParameterSanitiser<S> {\n sanitise(parameterValue: ParameterSnapshot<S>, visit?: Visit, injector?: Injector): Promise<S> | S;\n}\n","import { ParameterDefinition } from './parameter-definition.class';\n\nexport interface ParameterSnapshot<T> {\n definition: ParameterDefinition<T, any>\n readonly value: T;\n isMissing(): boolean;\n}\n"],"names":["tslib_1.__extends","DelegatingValueModel","assert","UnaryCommand","lang","Directive","ElementRef","Inject","Input","HostListener","GarbageCollector","Logger","NgZone","DOCUMENT","NgModule","CommonModule","BrowserAnimationsModule","FormsModule","MatInputModule","MatFormFieldModule","MatSelectModule","MatTabsModule","DelegatingFormValueModel","EventEmitter","Output","tslib_1.__decorate","UseDelegate","ValueModel","Component","ListModel","StoreInListModel","InjectionToken","Activity","Dsl","ConfirmThenDialogComponent","DelegatingListModel","Deferred","Injector","ComponentFactoryResolver","ViewContainerRef","MutableStream","MutableValueModel","MutableListModel","ViewChild","ViewChildren","Injectable","InteractionService","MatButtonModule","MatDialogModule","PortalModule","RouterModule","Opts","_","ParameterDefinition","Memoize","PlaceDefinition","Binding","PlaceComponent","Klass","_.isNil","_.isEqual","NavigationState","UrlSegment","UrlSnapshot","router","NavigationStart","NavigationEnd","NavigationError","NavigationCancel","Router","UrlSerializer","Location","style","query","group","animate","trigger","transition","Guard","Optional","SkipSelf","StoreInValueModel","Command","HostBinding","MatProgressSpinnerModule","MatListModule","MatTooltipModule","MatIconModule","Bounds","ValueHolder","MatDialog","MatDialogConfig","MAT_DIALOG_DEFAULT_OPTIONS","Observable","Formatter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coolon-angular-ui-powerups.umd.js","sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@coolon/angular-ui-powerups/lib/directives/command.directive.ts","ng://@coolon/angular-ui-powerups/lib/components/disposable-component.ts","ng://@coolon/angular-ui-powerups/lib/directives/focus-binding.directive.ts","ng://@coolon/angular-ui-powerups/lib/directives/directives.module.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/abstract-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/number-input/number-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/password-input/password-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/select-input/select-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/forms/string-input/string-input.component.ts","ng://@coolon/angular-ui-powerups/lib/components/noop/noop.component.ts","ng://@coolon/angular-ui-powerups/lib/components/components.module.ts","ng://@coolon/angular-ui-powerups/lib/interaction/activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/abstract-activity.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/alert-dialog/alert-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction-context-base.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-container/activity-container.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/modal-interaction-context.factory.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/interaction.service.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/inplace-interaction-context/inplace-interaction-context.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/interaction.module.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-definition.class.ts","ng://@coolon/angular-ui-powerups/lib/place/place-definition.ts","ng://@coolon/angular-ui-powerups/lib/place/place-component.ts","ng://@coolon/angular-ui-powerups/lib/place/visit.ts","ng://@coolon/angular-ui-powerups/lib/place/place-config.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/place-component-deactivation-handler.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/navigation-state.ts","ng://@coolon/angular-ui-powerups/lib/place/place-history.ts","ng://@coolon/angular-ui-powerups/lib/place/url-snapshot.ts","ng://@coolon/angular-ui-powerups/lib/place/place-router.ts","ng://@coolon/angular-ui-powerups/lib/place/components/place-outlet/route-animations.ts","ng://@coolon/angular-ui-powerups/lib/place/components/place-outlet/place-outlet.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/abstract-place-navigation.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/busy-overlay/busy-overlay.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/empty-state/empty-state.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/list-place-nav/list-place-nav.component.ts","ng://@coolon/angular-ui-powerups/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.ts","ng://@coolon/angular-ui-powerups/lib/place/place.module.ts","ng://@coolon/angular-ui-powerups/lib/angular-ui-powerups.module.ts","ng://@coolon/angular-ui-powerups/lib/animations/slide-animations.ts","ng://@coolon/angular-ui-powerups/lib/components/types/dimension.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/point.class.ts","ng://@coolon/angular-ui-powerups/lib/components/types/bounds.class.ts","ng://@coolon/angular-ui-powerups/lib/components/resize-aware.component.ts","ng://@coolon/angular-ui-powerups/lib/interaction/alert.ts","ng://@coolon/angular-ui-powerups/lib/interaction/confirm.ts","ng://@coolon/angular-ui-powerups/lib/interaction/result.ts","ng://@coolon/angular-ui-powerups/lib/interaction/components/activity-outlet/activity-outlet-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.ts","ng://@coolon/angular-ui-powerups/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.ts","ng://@coolon/angular-ui-powerups/lib/place/nav-item.ts","ng://@coolon/angular-ui-powerups/lib/place/place.decorator.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/consolidated-param-map.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/noop-auth-guard.service.ts","ng://@coolon/angular-ui-powerups/lib/place/route/visit-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/guards/place.guard.ts","ng://@coolon/angular-ui-powerups/lib/place/route/formatter.ts","ng://@coolon/angular-ui-powerups/lib/place/route/json-types.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-decorators.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-sanitiser.ts","ng://@coolon/angular-ui-powerups/lib/place/route/parameter-snapshot.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { assert, Command, DelegatingValueModel, Dsl, GarbageCollector, lang, UnaryCommand } from '@coolon/pectin';\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinCommand]'\n})\nexport class CommandDirective<P = any> extends GarbageCollector implements OnInit, OnDestroy, AfterViewInit {\n\n private _command: Command<any> | UnaryCommand<P>;\n private _commandEnabled = new DelegatingValueModel<boolean>().withDefault(false);\n\n @Input()\n set pectinCommand(command: Command<any> | UnaryCommand<P>) {\n this._command = command;\n this._commandEnabled.setDelegate(command ? command.enabled : null);\n }\n get pectinCommand():Command<any> | UnaryCommand<P> {\n return this._command;\n }\n\n private _commandParameter: P;\n private _commandParameterProvided = false;\n\n @Input()\n set commandParameter(value: P) {\n this._commandParameterProvided = true;\n this._commandParameter = value;\n }\n\n get commandParameter(): P {\n return this._commandParameter;\n }\n\n constructor(@Inject(ElementRef) private elementRef: ElementRef) {\n super();\n }\n\n ngOnInit(): void {\n assert.notNil(this.pectinCommand);\n if (this.pectinCommand instanceof UnaryCommand) {\n if (!this._commandParameterProvided) {\n lang.illegalState('UnaryCommands required the command parameter to be specified.');\n }\n } else {\n if (this._commandParameterProvided) {\n lang.illegalState('command parameters are only supported by UnaryCommands');\n }\n }\n }\n\n ngAfterViewInit(): void {\n // for some reason mat-buttons kills the disabled host binding. It works on a regular button but for now\n // we need to do this.\n const { chain } = Dsl.disposeWith(this);\n chain(this._commandEnabled).subscribe(enabled => {\n if (enabled) {\n this.elementRef.nativeElement.removeAttribute('disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.setAttribute('href', 'javascript:void');\n }\n } else {\n this.elementRef.nativeElement.setAttribute('disabled', 'disabled');\n if (this.elementRef.nativeElement.tagName === 'A') {\n this.elementRef.nativeElement.removeAttribute('href');\n }\n }\n });\n }\n\n ngOnDestroy(): void {\n this.dispose();\n }\n\n\n @HostListener('click', ['$event'])\n notifyClick($event: Event) {\n $event.preventDefault();\n $event.stopPropagation();\n if (this.pectinCommand.enabled.value) {\n if (this.pectinCommand instanceof UnaryCommand) {\n this.pectinCommand.withContext({ event: $event }).execute(this.commandParameter);\n } else {\n this.pectinCommand.withContext({ event: $event }).execute();\n }\n } else {\n console.warn('disabled command clicked, ignoring.');\n }\n }\n}\n","import { OnDestroy } from '@angular/core';\nimport { GarbageCollector } from '@coolon/pectin';\n\nexport class DisposableComponent extends GarbageCollector implements OnDestroy {\n\n ngOnDestroy(): void {\n this.dispose();\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Directive, ElementRef, HostListener, Inject, Input, NgZone, OnInit } from '@angular/core';\nimport { Dsl, HasFocusTracking, Logger } from '@coolon/pectin';\nimport { DisposableComponent } from '../components/disposable-component';\n\n\n@Directive({\n // tslint:disable-next-line:directive-selector\n selector: '[pectinFocusBinding]'\n})\nexport class FocusBindingDirective extends DisposableComponent implements OnInit, AfterViewInit {\n\n private readonly document: Document;\n\n @Input() pectinFocusBinding: HasFocusTracking;\n @Input() focusBindingTarget: HTMLElement;\n\n @HostListener('focusin')\n onFocusIn() {\n if (this.hasBinding()) {\n this.pectinFocusBinding.focusContext.notifyFocusIn();\n }\n }\n\n @HostListener('focusout')\n onFocusOut() {\n if (this.hasBinding()) {\n this.pectinFocusBinding.focusContext.notifyFocusOut();\n }\n }\n\n constructor(@Inject(ElementRef) private readonly el: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(DOCUMENT) document: any) {\n super();\n // @see https://stackoverflow.com/questions/49513359/could-not-resolve-type-document-in-angular5/53715642#53715642\n this.document = document as Document;\n }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n // TODO: Make this also track the current enabled/disabled state.\n if (this.hasBinding()) {\n const { chain } = Dsl.disposeWith(this);\n chain(this.pectinFocusBinding.focusContext.focused).subscribe((focused) => {\n if (focused && !this.alreadyHasFocus()) {\n this.tryAndFocus();\n }\n });\n } else {\n Logger.get(this).warn('pectinFocusBinding was nil');\n }\n }\n\n private hasBinding() {\n return !!this.pectinFocusBinding && !!this.pectinFocusBinding.focusContext;\n }\n\n// Hook method for debugging via tracing.\n alreadyHasFocus() {\n return this.isFocused(this.focusTarget);\n }\n\n // Hook method for debugging via tracing.\n isFocused(element: Element): boolean {\n return this.document.activeElement === element;\n }\n\n tryAndFocus(retries: number = 5) {\n if (this.modelShouldStillHaveFocus() && this.canFocus()) {\n if (!this.alreadyHasFocus()) {\n this.focusTarget.focus();\n }\n // if we didn't get the focus we try again later.\n if (!this.alreadyHasFocus()) {\n Logger.get(this).log(`focus failed, trying ${retries} more times`);\n if (retries > 0) {\n // try again on the next paint\n // TODO: is there an angular way of doing this without calling a window function.\n requestAnimationFrame(() => {\n this.tryAndFocus(retries - 1);\n });\n } else {\n Logger.get(this).warn(`Tried to focus but gave up as the component wasn't enabled or visible.`);\n }\n }\n }\n }\n\n get focusTarget(): HTMLElement {\n return this.focusBindingTarget || this.el.nativeElement;\n }\n\n // Hook method for debugging via tracing.\n modelShouldStillHaveFocus() {\n return this.hasBinding() && this.pectinFocusBinding.focusContext.focused.value;\n }\n\n // Hook method for debugging via tracing.\n canFocus(): boolean {\n const dimension = this.focusTarget.getBoundingClientRect();\n const hasSize = dimension.height >= 0 && dimension.height >= 0;\n // tslint:disable-next-line:no-string-literal\n return hasSize && !this.focusTarget['disabled'];\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { CommandDirective } from './command.directive';\nimport { FocusBindingDirective } from './focus-binding.directive';\n\n@NgModule({\n declarations: [\n CommandDirective,\n FocusBindingDirective\n ],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule\n ],\n exports: [\n CommandDirective,\n FocusBindingDirective\n ]\n\n})\nexport class DirectivesModule {\n}\n","/* tslint:disable:no-input-rename */\nimport { EventEmitter, HostListener, Input, OnInit, Output } from '@angular/core';\nimport { FormControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { ErrorStateMatcher } from '@angular/material';\nimport { Command, DelegatingFormValueModel, ListModel, UseDelegate, ValueModel } from '@coolon/pectin';\nimport { DisposableComponent } from '../disposable-component';\n\nexport abstract class AbstractInputComponent<T> extends DisposableComponent implements OnInit {\n\n readonly valueModel = new DelegatingFormValueModel<T>();\n\n @Input('valueModel') @UseDelegate()\n set userValueModel(model: ValueModel<T>) {\n this.valueModel.setDelegate(model);\n }\n\n @Input() label: string;\n @Input() floatLabel: 'auto' | 'always' | 'never';\n @Input() hint: string;\n @Input() placeholder: string;\n\n @Input('command.focus') focusCommand: Command<any>;\n @Input('command.blur') blurCommand: Command<any>;\n @Input('command.enter') enterCommand: Command<any>;\n @Input('command.escape') escapeCommand: Command<any>;\n @Input('command.click') clickCommand: Command<any>;\n\n // TODO: fix this.\n // tslint:disable-next-line:no-output-native\n @Output() focus = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() blur = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() enterKey = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n @Output() escapeKey = new EventEmitter();\n\n readonly errorStateMatcher: ErrorStateMatcher;\n\n @HostListener('click')\n notifyClick() {\n this.safelyInvoke(this.clickCommand);\n }\n\n @HostListener('focusin')\n notifyFocusIn() {\n this.safelyInvoke(this.focusCommand);\n this.focus.emit();\n }\n\n @HostListener('focusout')\n notifyFocusOut() {\n this.safelyInvoke(this.blurCommand);\n this.blur.emit();\n }\n\n\n notifyEnterKey() {\n this.safelyInvoke(this.enterCommand);\n this.enterKey.emit();\n }\n\n notifyEscapeKey() {\n this.safelyInvoke(this.escapeCommand);\n this.escapeKey.emit();\n }\n\n protected safelyInvoke(command: Command<any>) {\n if (command && command.enabled.value) {\n command.execute();\n }\n }\n\n constructor() {\n super();\n const self = this;\n this.errorStateMatcher = {\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\n return self.hasErrors();\n }\n };\n }\n\n ngOnInit(): void {\n }\n\n isEnabled(): boolean {\n return this.enabled.value;\n }\n\n get enabled(): ValueModel<boolean> {\n return this.valueModel.enabled;\n }\n\n hasErrors(): boolean {\n return !this.errorList.query().isEmpty();\n }\n\n get errorList(): ListModel<string> {\n return this.valueModel.errorList;\n }\n\n get firstError() {\n return this.hasErrors() ? this.errorList.value[0] : null;\n }\n\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n\n@Component({\n selector: 'aup-number-input',\n templateUrl: './number-input.component.html',\n styleUrls: ['./number-input.component.scss']\n})\nexport class NumberInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'aup-password-input',\n templateUrl: './password-input.component.html',\n styleUrls: ['./password-input.component.scss']\n})\nexport class PasswordInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ListModel, StoreInListModel, UseDelegate } from '@coolon/pectin';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'aup-select-input',\n templateUrl: './select-input.component.html',\n styleUrls: ['./select-input.component.scss']\n})\nexport class SelectInputComponent<T = any> extends AbstractInputComponent<T> implements OnInit {\n\n @Input() @UseDelegate()\n optionsModel: ListModel<T>;\n\n @Input() @StoreInListModel('optionsModel')\n options: T[];\n\n @Input()\n optionLabel: keyof T;\n\n @Input()\n optionLabelFormat: (option: T) => any = (option) => (option && this.optionLabel) ? option[this.optionLabel] : option;\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AbstractInputComponent } from '../abstract-input.component';\n\n@Component({\n selector: 'aup-string-input',\n templateUrl: './string-input.component.html',\n styleUrls: ['./string-input.component.scss']\n})\nexport class StringInputComponent extends AbstractInputComponent<string> implements OnInit {\n\n constructor() {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'aup-noop',\n templateUrl: './noop.component.html',\n styleUrls: ['./noop.component.scss']\n})\nexport class NoopComponent {\n constructor() {\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { NumberInputComponent } from './forms/number-input/number-input.component';\nimport { PasswordInputComponent } from './forms/password-input/password-input.component';\nimport { SelectInputComponent } from './forms/select-input/select-input.component';\nimport { StringInputComponent } from './forms/string-input/string-input.component';\nimport { NoopComponent } from './noop/noop.component';\n\n@NgModule({\n declarations: [\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n NoopComponent\n ],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule,\n DirectivesModule\n ],\n exports: [\n NumberInputComponent,\n StringInputComponent,\n PasswordInputComponent,\n SelectInputComponent,\n NoopComponent\n ]\n\n})\nexport class ComponentsModule {\n}\n","import { InjectionToken } from '@angular/core';\nimport { DelegatingValueModel, GarbageCollector, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\n\nexport const ACTIVITY_DATA = new InjectionToken<any>('InteractionActivityData');\n\nexport abstract class Activity<D, R, E = any> extends GarbageCollector {\n\n private readonly _busyModel = new DelegatingValueModel<boolean>().withDefault(false);\n private _activityContext: Activity.Callbacks<R, E>;\n\n initialise(activityContext: Activity.Callbacks<R, E>): void {\n assert.isNil(this._activityContext);\n this._activityContext = activityContext;\n }\n\n done(result?: R): void {\n return this._activityContext.onDone(result);\n }\n\n cancel(error?: E): void {\n this._activityContext.onCancel(error);\n }\n\n // @Trace()\n onActivityReady() {\n }\n\n\n get busy(): ValueModel<boolean> {\n return this._busyModel.readonly;\n }\n\n busyWhile(busyModel: ValueModel<boolean>) {\n this._busyModel.setDelegate(busyModel);\n }\n\n isBusy() {\n return this._busyModel.value;\n }\n\n}\n\nexport namespace Activity {\n\n export interface Callbacks<R, E> {\n onDone: (result: R) => void,\n onCancel: (error: E) => void,\n }\n}\n","import { DelegatingValueModel, EventListenerList, Trace, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { Activity } from './activity';\nimport { ActivityOutletContext } from './components/activity-outlet/activity-outlet-context';\nimport { InteractionContext } from './interaction-context';\n\n/**\n * Deprecated. You can now extend the Activity class directly.\n */\nexport abstract class AbstractActivity<D, R, E = any> extends Activity<D, R, E> {\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Alert } from '../../alert';\n\n@Component({\n selector: 'aup-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n styleUrls: ['./alert-dialog.component.scss']\n})\nexport class AlertDialogComponent extends AbstractActivity<Alert, void> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly alert: Alert) {\n super();\n }\n\n ngOnInit() {\n }\n\n}\n","import { assert, Constructable, Dsl, GarbageCollector, ListModel, Trace, ValueModel } from '@coolon/pectin';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { Confirm } from './confirm';\n\nexport abstract class InteractionContext extends GarbageCollector {\n\n abstract readonly active: ValueModel<boolean>;\n abstract readonly activityList: ListModel<Activity<any, any, any>>;\n abstract readonly activeActivity: ValueModel<Activity<any, any, any>>;\n\n /**\n * Returns true if an activity is currently running.\n */\n isActive(): boolean {\n return this.active.value;\n }\n\n dispose(): void {\n // TODO: think about auto cancelling any outstanding activity on dispose.\n // See NavigationState.Navigating for a use-case.\n assert.isFalsey(this.isActive());\n super.dispose();\n }\n\n /**\n * Cancels the current activity and returns true the context is no longer active, false if\n * there is still another activity running.\n */\n async cancelActiveActivity(): Promise<boolean> {\n const { when } = Dsl.disposeWith(this);\n const activity = await this.getActiveActivity();\n return new Promise(resolve => {\n when.valueOf(this.activeActivity)\n .changes(nextActivity => {\n resolve(!nextActivity);\n }, { once: true });\n activity.cancel();\n });\n }\n\n /**\n * Returns the activity that is currently active.\n * This model is only updated in the next tick after the view has been updated.\n */\n abstract async getActiveActivity(): Promise<Activity<any, any>>;\n\n abstract startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;\n\n abstract alert(alert: Alert): Promise<void>;\n\n abstract confirm(confirm: Confirm): Promise<boolean>;\n\n abstract async confirmOrReject(confirm: Confirm): Promise<void>;\n\n /**\n * Presents the confirmation to the user and runs the activity only if the user confirms.\n * @param confirm:Confirm the confirmation to display.\n * @param activityType the activity to run if confirmed.\n * @param data the activity data.\n */\n abstract confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R>;\n\n // @Trace()\n // async abort(): Promise<void> {\n // assert.isTruthy(this.isActive());\n // let count = 1;\n // await this.cancelActiveActivity();\n // console.log(`aborted -> ${count++}`);\n // while (this.isActive()) {\n // await this.cancelActiveActivity();\n // console.log(`aborted -> ${count++}`);\n // }\n // }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert, Constructable } from '@coolon/pectin';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { Confirm } from '../../confirm';\nimport { InteractionContext } from '../../interaction-context';\n\n@Component({\n selector: 'aup-confirmation-dialog',\n templateUrl: './confirm-then-dialog.component.html',\n styleUrls: ['./confirm-then-dialog.component.scss']\n})\nexport class ConfirmThenDialogComponent<D,R,E> extends AbstractActivity<ConfirmThenDialogComponent.Data<D,R,E>, R, E> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly config: ConfirmThenDialogComponent.Data<D,R,E>, readonly interactionContext:InteractionContext) {\n super();\n assert.notNil(config);\n }\n\n ngOnInit() {\n }\n\n get confirm():Confirm {\n return this.config.confirm;\n }\n\n isDestructive(): boolean {\n return this.confirm.destructive && this.confirm.destructive();\n }\n\n onConfirm() {\n this.interactionContext.startActivity(this.config.activityType, this.config.data)\n .then((result) => this.done(result))\n .catch(error => this.cancel(error));\n }\n}\n\nexport namespace ConfirmThenDialogComponent {\n export interface Data<D, R, E> {\n confirm:Confirm,\n activityType:Constructable<Activity<D, R, E>>,\n data: D\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { assert } from '@coolon/pectin';\nimport { AbstractActivity } from '../../abstract-activity';\nimport { ACTIVITY_DATA } from '../../activity';\nimport { Confirm } from '../../confirm';\n\n@Component({\n selector: 'aup-confirmation-dialog',\n templateUrl: './confirmation-dialog.component.html',\n styleUrls: ['./confirmation-dialog.component.scss']\n})\nexport class ConfirmationDialogComponent extends AbstractActivity<Confirm, void> implements OnInit {\n\n constructor(@Inject(ACTIVITY_DATA) readonly confirm: Confirm) {\n super();\n assert.notNil(confirm);\n }\n\n ngOnInit() {\n }\n\n isDestructive(): boolean {\n return this.confirm.destructive && this.confirm.destructive();\n }\n}\n","import {\n Constructable,\n Deferred,\n DelegatingListModel, Disposable,\n Dsl,\n EventListenerList,\n GarbageCollector,\n ListModel, ValueModel, ValueModelChain\n} from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { Activity } from './activity';\nimport { Alert } from './alert';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { Confirm } from './confirm';\nimport { InteractionContext } from './interaction-context';\n\nexport abstract class InteractionContextBase extends InteractionContext {\n\n /**\n * Returns the current list of activities that are in progress.\n * This model is only updated in the next tick after the view has been updated.\n */\n private readonly _activityListDelegate = new DelegatingListModel<Activity<any, any>>();\n\n private deferredGetCurrentActivity: Deferred<Activity<any, any, any>>;\n private _currentActivity: ValueModelChain<Activity<any, any, any>>;\n\n protected constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this._currentActivity = chain(this.activityList).last();\n when.valueOf(this._currentActivity).becomesTruthy((activity) => {\n if (this.deferredGetCurrentActivity) {\n this.deferredGetCurrentActivity.resolve(activity);\n this.deferredGetCurrentActivity = null;\n }\n });\n }\n\n protected setActivityList(activityList: ListModel<Activity<any, any>>) {\n this._activityListDelegate.setDelegate(activityList);\n }\n\n get activityList(): ListModel<Activity<any, any, any>> {\n return this._activityListDelegate.readonly;\n }\n\n get activeActivity():ValueModel<Activity<any, any,any>> {\n return this._currentActivity;\n }\n\n /**\n * Returns the activity that is currently active.\n * This model is only updated in the next tick after the view has been updated.\n */\n async getActiveActivity(): Promise<Activity<any, any>> {\n if (!this.isActive()) {\n return Promise.reject('no activity in progress');\n } else {\n if (this.deferredGetCurrentActivity) {\n // we're already waiting then just return the same promise\n return this.deferredGetCurrentActivity.promise;\n } else {\n if (!this._currentActivity.value) {\n // we'be been asked before we've got any activities, create a deferred promise\n // that we resolve when the list populates.\n this.deferredGetCurrentActivity = Deferred.defer();\n return this.deferredGetCurrentActivity.promise;\n } else {\n return this._currentActivity.value;\n }\n }\n }\n }\n protected abstract _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D, disableClose?:boolean): Promise<R>;\n\n startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this._startActivity(activityType, data);\n }\n\n confirm(confirm: Confirm): Promise<boolean> {\n // Important: we have to implement confirmOrReject as the main entry point\n // as the canDeactivation guards need to be able to cancel an interaction\n // without caring about returning a value.\n return this.confirmOrReject(confirm).then(() => true).catch(() => false);\n }\n\n alert(alert: Alert): Promise<void> {\n // TODO: Test disableClose === false\n return this._startActivity(AlertDialogComponent, alert, false);\n }\n\n confirmOrReject(confirm: Confirm): Promise<void> {\n return this._startActivity(ConfirmationDialogComponent, confirm, true);\n }\n\n confirmThen<D, R, E>(confirm: Confirm, activityType: Constructable<Activity<D, R, E>>, data?: D): Promise<R> {\n return this._startActivity<ConfirmThenDialogComponent.Data<D, R, E>, R, E>(ConfirmThenDialogComponent, {\n confirm,\n activityType: activityType,\n data: data\n }, true);\n }\n\n}\n\n","import {\n Component,\n ComponentFactoryResolver,\n ComponentRef,\n Injector,\n Input,\n OnInit,\n ViewContainerRef\n} from '@angular/core';\nimport { Activity, ACTIVITY_DATA } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\nimport { ActivityOutletContext } from './activity-outlet-context';\nimport { assert } from '@coolon/pectin';\n\n/**\n * ActivityOutletComponent creates and displays an activity and delegates the interaction context functionality to an\n * external service.\n *\n * It might be nice to have wrapper component that allows more declarative use, i.e.\n * <activity-view [activityClass]=\"...\", [activityData]=\"...\" (done)=\"..\" (cancel)=\"...\"></activity-view>\n */\n@Component({\n selector: 'aup-activity-outlet',\n template: '',\n styleUrls: ['./activity-outlet.component.scss']\n})\nexport class ActivityOutletComponent<D, R, E> implements OnInit {\n\n @Input()\n interactionContext: InteractionContext;\n private _activityContext: ActivityOutletContext<D, R, E>;\n\n @Input()\n set activityContext(activityContext: ActivityOutletContext<D, R, E>) {\n assert.isNil(this._activityContext);\n this._activityContext = activityContext;\n this.loadActivity(activityContext);\n };\n get activityContext():ActivityOutletContext<D,R,E> {\n return this._activityContext;\n }\n\n\n private activityComponentRef: ComponentRef<Activity<D, R, E>>;\n\n constructor(\n private componentFactoryResolver: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private injector: Injector\n ) {\n }\n\n ngOnInit() {\n }\n\n loadActivity(activityContext: ActivityOutletContext<D, R, E>) {\n const injector = Injector.create({\n providers: [\n {\n provide: InteractionContext,\n useValue: this.interactionContext\n },\n { provide: ACTIVITY_DATA, useValue: activityContext.activityData }\n ],\n parent: this.injector\n });\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(activityContext.activityClass);\n this.viewContainerRef.clear();\n this.activityComponentRef = this.viewContainerRef.createComponent(componentFactory, 0, injector);\n this.activityComponentRef.instance.initialise(activityContext);\n if (this.activityContext.componentReady) {\n this.activityContext.componentReady(this.component);\n }\n }\n\n get component(): Activity<D, R, E> {\n return this.activityComponentRef.instance;\n }\n\n}\n","import {\n AfterViewInit,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n QueryList,\n ViewChild,\n ViewChildren\n} from '@angular/core';\nimport { MatTabGroup } from '@angular/material';\nimport {\n assert,\n Constructable,\n Dsl,\n MutableListModel,\n MutableStream,\n MutableValueModel,\n ValueModel\n} from '@coolon/pectin';\n\nimport { Activity } from '../../activity';\nimport { InteractionContext } from '../../interaction-context';\nimport { InteractionContextBase } from '../../interaction-context-base';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\nimport { ActivityOutletComponent } from '../activity-outlet/activity-outlet.component';\n\n/**\n * Note: this class is mutable and is stored in a list model. This is normally a big no no but\n * we're manually deriving other models from the list after view state changes. I.e. we not\n * using pectin chains on any of the mutable fields.\n */\nclass TabContext<D, R, E> implements ActivityOutletContext<D, R, E> {\n\n private _complete = false;\n private _component: Activity<D, R, E>;\n\n constructor(readonly activityData: D,\n readonly activityClass: Constructable<Activity<D, R, E>>,\n readonly interactionContext: InteractionContext,\n readonly activityCallbacks: Activity.Callbacks<R, E>) {\n }\n\n isComponentRealised(): boolean {\n return !!this._component;\n }\n\n isComplete() {\n return this._complete;\n }\n\n componentReady(component: Activity<D, R, E>) {\n assert.isNil(this._component);\n this._component = component;\n }\n\n get component(): Activity<D, R, E> {\n return this._component;\n }\n\n // @Trace()\n onDone(result: R): void {\n this._complete = true;\n this.activityCallbacks.onDone(result);\n }\n\n // @Trace()\n onCancel(error: E): void {\n this._complete = true;\n this.activityCallbacks.onCancel(error);\n }\n\n dispose() {\n this.component.dispose();\n }\n\n}\n\n\n@Component({\n selector: 'aup-activity-container',\n templateUrl: './activity-container.component.html',\n styleUrls: ['./activity-container.component.scss']\n})\nexport class ActivityContainerComponent<D, R, E> extends InteractionContextBase implements OnInit, AfterViewInit {\n\n private readonly throttledNestedActivityFinishEvents = new MutableStream<any>();\n\n private readonly _initialActivityOutletContext = new MutableValueModel<ActivityOutletContext<D, R, E>>();\n\n @Input()\n set initialActivityOutletContext(initialContext: ActivityOutletContext<D, R, E>) {\n assert.isNil(this._initialActivityOutletContext.value);\n // we clean up at the start as we leave the initial activity in place after it finishes\n // so that the activity remains visible during the inplace-interaction-context animations.\n this.activityTabs.value = [];\n this._activityList.value = [];\n const self = this;\n if (initialContext) {\n this._initialActivityOutletContext.value = initialContext;\n this.activityTabs.push(new TabContext(initialContext.activityData, initialContext.activityClass, this, {\n onDone: (result: R) => {\n self.finishInitialActivity();\n initialContext.onDone(result);\n },\n onCancel: (error: E) => {\n self.finishInitialActivity();\n initialContext.onCancel(error);\n }\n }));\n }\n }\n\n get initialActivityOutletContext() {\n return this._initialActivityOutletContext.value;\n }\n\n // tslint:disable-next-line:no-output-rename\n @Output('initialActivityOutletContext')\n initialActivityOutletContextEvent = new EventEmitter<ActivityOutletContext<D, R, E>>();\n\n @Input()\n dynamicHeight = false;\n\n @ViewChild('tabs', { static: true })\n tabs: MatTabGroup;\n\n @ViewChildren(ActivityOutletComponent)\n outlets: QueryList<ActivityOutletComponent<any, any, any>>;\n\n readonly activityTabs = new MutableListModel<TabContext<any, any, any>>();\n\n readonly active:ValueModel<boolean>;\n\n private readonly _activityList = new MutableListModel<Activity<any, any>>();\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n chain(this.throttledNestedActivityFinishEvents).throttle(50).subscribe(() => this.onNestedActivityFinished());\n this.setActivityList(this._activityList.readonly);\n this.active = chain(this._initialActivityOutletContext).isNotNil();\n }\n\n ngOnInit() {\n }\n\n ngAfterViewInit(): void {\n const { chain, observe } = Dsl.disposeWith(this);\n observe.valuesFrom(this.outlets.changes).subscribe(() => setTimeout(() => this.updateActivityList()));\n observe.valuesFrom(this.tabs.animationDone).subscribe(() => this.onAnimationFinished());\n this.updateActivityList();\n }\n\n _startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n this.cleanupStaleNestedActivities();\n const self = this;\n return new Promise<R1>((resolve, reject) => {\n const context = new TabContext(data, activityType, self, {\n onDone: function(result: R1) {\n resolve(result);\n self.throttledNestedActivityFinishEvents.publish({});\n },\n onCancel: function(error: E1) {\n reject(error);\n self.throttledNestedActivityFinishEvents.publish({});\n }\n });\n self.activityTabs.push(context);\n self.tabs.selectedIndex = this.activityTabs.length;\n });\n }\n\n private finishInitialActivity() {\n this.updateActivityList();\n this._initialActivityOutletContext.value = null;\n this.initialActivityOutletContextEvent.emit(null);\n }\n\n // @Trace()\n private onNestedActivityFinished() {\n this.synchroniseSelectedTabIndex();\n this.updateActivityList();\n }\n\n // @Trace()\n private cleanupStaleNestedActivities() {\n if (this.tabs.selectedIndex < this.activityTabs.length - 1) {\n const tabs = this.activityTabs.value;\n const remainingActivities = tabs.slice(0, 1 + this.tabs.selectedIndex);\n const finishedActivityTabs = tabs.slice(1 + this.tabs.selectedIndex);\n finishedActivityTabs.forEach(a => a.dispose());\n this.activityTabs.runInTransaction(draft => {\n\n draft.value = remainingActivities;\n });\n }\n }\n\n /**\n * Synchronises the selected tab index. Returns true if there was no change to the selected index.\n */\n // @Trace()\n private synchroniseSelectedTabIndex(): boolean {\n const previousIndex = this.tabs.selectedIndex;\n const newIndex = this.activityTabs.query().findIndex(t => t.isComplete()) - 1;\n this.tabs.selectedIndex = newIndex;\n return previousIndex === newIndex;\n }\n\n // @Trace()\n private onAnimationFinished() {\n this.getSelectedOutlet().component.onActivityReady();\n this.cleanupStaleNestedActivities();\n this.updateActivityList();\n }\n\n private updateActivityList() {\n this._activityList.value = this.activityTabs.value.filter(t => !t.isComplete() && t.isComponentRealised()).map(t => t.component);\n }\n\n private getSelectedOutlet() {\n return this.outlets.toArray()[this.tabs.selectedIndex];\n }\n}\n","import { InteractionContext } from '../interaction-context';\n\nexport abstract class ModalInteractionContextFactory {\n\n abstract createInteractionContext(): InteractionContext;\n}\n","import { Injectable } from '@angular/core';\nimport {\n BooleanValueModelChain,\n Disposable,\n Dsl,\n GarbageCollector,\n lang,\n ListModelChain,\n MutableListModel,\n MutableValueModel,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { InteractionContext } from '../interaction-context';\n\nimport { ModalInteractionContextFactory } from './modal-interaction-context.factory';\n\nlet inplaceMonitorCount = 0;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InteractionService {\n\n private readonly garbage = new GarbageCollector();\n readonly active: BooleanValueModelChain;\n private readonly exclusiveContext = new MutableValueModel<InteractionContext>();\n\n private readonly _activeModalInteractionContextModel = new MutableValueModel<InteractionService.Monitor>();\n private readonly _activeInlineInteractionContextModel = new MutableValueModel<InteractionService.Monitor>();\n private readonly _activeInteractionContext: ValueModelChain<InteractionContext>;\n\n readonly activeInteractionContextIds: ListModelChain<string>;\n readonly modelInteractionActive: BooleanValueModelChain;\n readonly inlineInteractionActive: BooleanValueModelChain;\n\n constructor(readonly modelInteractionContextFactory: ModalInteractionContextFactory) {\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this.garbage);\n\n this._activeInteractionContext = chain(this._activeModalInteractionContextModel)\n .otherwise(this._activeInlineInteractionContextModel)\n .pluck('interactionContext');\n\n this.active = chain(this._activeInteractionContext).isNotNil();\n this.modelInteractionActive = chain(this._activeModalInteractionContextModel).isNotNil();\n this.inlineInteractionActive = chain(this._activeInlineInteractionContextModel).isNotNil();\n\n // TODO: chain.concat(listOrValueModels) would be nice.\n this.activeInteractionContextIds = chain(new MutableListModel<InteractionService.Monitor>())\n .append(this._activeInlineInteractionContextModel)\n .append(this._activeModalInteractionContextModel)\n .rejectNil()\n .pluck('id');\n\n }\n\n isActive(): boolean {\n return this.active.value;\n }\n\n isModalActive(): boolean {\n return this.modelInteractionActive.value;\n }\n\n /**\n * @deprecated use #createModalInteractionContextDisposedWith instead.\n * @param disposable\n */\n createModalInteractionContextFor(disposable: Disposable.Collector): InteractionContext {\n return this.createModalInteractionContextDisposedWith(disposable);\n }\n\n /**\n * Creates a new model interaction context that will be disposed along with the component.\n * @param disposable\n */\n createModalInteractionContextDisposedWith(disposable: Disposable.Collector): InteractionContext {\n const context = this.modelInteractionContextFactory.createInteractionContext();\n disposable.registerDisposable(new InteractionService.Monitor('modal', context, this._activeModalInteractionContextModel, this.exclusiveContext));\n return context;\n }\n\n _registerInplaceInteractionContext(interactionContext: InteractionContext) {\n interactionContext.registerDisposable(new InteractionService.Monitor(`ip${++inplaceMonitorCount}`, interactionContext, this._activeInlineInteractionContextModel, this.exclusiveContext));\n }\n\n // @Trace()\n getActiveContext(): InteractionContext {\n assert.isTruthy(this.isActive());\n return this._activeInteractionContext.value;\n }\n\n /**\n * Creates an interaction context that will prevent any other contexts from starting an\n * activity until it is disposed. This is intended for use by the router for passing\n * to PlaceComponent.canDeactivate(interactionContext). This ensures components don't\n * try and interact in a way that we can't track and synchronise with the browser back\n * button.\n */\n _createExclusiveModalInteractionContext(): InteractionContext {\n this.exclusiveContext.value = this.modelInteractionContextFactory.createInteractionContext();\n const self = this;\n this.exclusiveContext.value.registerDisposable({\n dispose(): void {\n self.exclusiveContext.value = null;\n }\n });\n return this.exclusiveContext.value;\n }\n}\n\nexport namespace InteractionService {\n\n export interface Callback {\n onStarted(monitor: Monitor);\n\n onFinished(monitor: Monitor);\n }\n\n export class Monitor extends GarbageCollector {\n constructor(readonly id: string,\n readonly interactionContext: InteractionContext,\n readonly currentActiveMonitor: MutableValueModel<Monitor>,\n readonly exclusiveContext: ValueModel<InteractionContext>) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n when.valueOf(interactionContext.active).becomesTruthy(() => this.onStarted());\n when.valueOf(interactionContext.active).becomesFalsey(() => this.onFinished());\n interactionContext.registerDisposable(this);\n }\n\n protected onStarted() {\n this.assertCanStart();\n this.currentActiveMonitor.value = this;\n }\n\n private assertCanStart() {\n assert.isFalsey(this.currentActiveMonitor.value);\n if (this.exclusiveContext.value && this.interactionContext !== this.exclusiveContext.value) {\n lang.illegalState('Interaction started while exclusive lock active. This is usually because you using a different context during place.canDeactivate(interactionContext)');\n }\n }\n\n protected onFinished() {\n this.assertCurrentlyActive();\n this.currentActiveMonitor.value = null;\n }\n\n private assertCurrentlyActive() {\n assert.isTruthy(this.currentActiveMonitor.value === this);\n }\n }\n}\n","import { AfterViewInit, Component, ViewChild } from '@angular/core';\nimport { Constructable, DelegatingValueModel, Dsl, MutableValueModel, TransactionObserver } from '@coolon/pectin';\nimport { Activity } from '../../activity';\nimport { InteractionContextBase } from '../../interaction-context-base';\nimport { InteractionService } from '../../services/interaction.service';\nimport { ActivityContainerComponent } from '../activity-container/activity-container.component';\nimport { ActivityOutletContext } from '../activity-outlet/activity-outlet-context';\n\n@Component({\n selector: 'aup-inplace-interaction-context',\n templateUrl: './inplace-interaction-context.component.html',\n styleUrls: ['./inplace-interaction-context.component.scss']\n})\nexport class InplaceInteractionContextComponent<D, R, E> extends InteractionContextBase implements AfterViewInit {\n\n @ViewChild('activityContainer', { static: true })\n interactionContext: ActivityContainerComponent<any, any, any>;\n\n initialActivityContext: ActivityOutletContext<D, R, E>;\n\n private _active = new MutableValueModel<boolean>(false);\n\n constructor(readonly interactionService: InteractionService) {\n super();\n this.interactionService._registerInplaceInteractionContext(this);\n }\n\n ngAfterViewInit(): void {\n this.setActivityList(this.interactionContext.activityList);\n }\n\n get active() {\n return this._active.readonly;\n }\n\n protected _startActivity<D1, R1, E1>(activityType: Constructable<Activity<D1, R1, E1>>, data?: D1): Promise<R1> {\n this._active.value = true;\n const self = this;\n return new Promise<R1>((resolve, reject) => {\n this.interactionContext.initialActivityOutletContext = {\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n self._active.value = false;\n resolve(result);\n },\n onCancel(error) {\n self._active.value = false;\n reject(error);\n }\n };\n });\n }\n\n}\n","import { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule, MatDialogModule, MatTabsModule } from '@angular/material';\nimport { MAT_TABS_CONFIG } from '@angular/material/tabs';\nimport { RouterModule } from '@angular/router';\nimport { PlaceModule } from '../place/place.module';\nimport { ActivityContainerComponent } from './components/activity-container/activity-container.component';\nimport { ActivityOutletComponent } from './components/activity-outlet/activity-outlet.component';\nimport { AlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { ConfirmThenDialogComponent } from './components/confirm-then-dialog/confirm-then-dialog.component';\nimport { ConfirmationDialogComponent } from './components/confirmation-dialog/confirmation-dialog.component';\nimport { InplaceInteractionContextComponent } from './components/inplace-interaction-context/inplace-interaction-context.component';\nimport { InteractionService } from './services/interaction.service';\n\n@NgModule({\n imports: [\n CommonModule,\n MatButtonModule,\n MatDialogModule,\n MatTabsModule,\n PortalModule,\n RouterModule\n ],\n declarations: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n ConfirmThenDialogComponent,\n AlertDialogComponent,\n ActivityOutletComponent,\n InplaceInteractionContextComponent\n ],\n exports: [\n ActivityContainerComponent,\n ActivityOutletComponent,\n InplaceInteractionContextComponent\n ],\n entryComponents: [\n ActivityContainerComponent,\n ConfirmationDialogComponent,\n ConfirmThenDialogComponent,\n AlertDialogComponent\n ],\n providers: [\n InteractionService,\n // {\n // provide: MAT_TABS_CONFIG, useValue: { animationDuration: \"2s\" }\n // }\n ]\n})\nexport class InteractionModule {\n}\n","import { Injector } from '@angular/core';\nimport { Trace } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport _ from 'lodash';\nimport { PlaceHistory } from '../place-history';\nimport { Visit } from '../visit';\nimport { Formatter } from './formatter';\n\nexport abstract class ParameterDefinition<T, E = T> {\n\n abstract readonly isRouteId: boolean;\n abstract readonly isArray: boolean;\n\n readonly remember: boolean;\n readonly defaultValue: T;\n private options: Opts<ParameterDefinition.Options<T>>;\n\n constructor(readonly propertyName: string, options: ParameterDefinition.Options<T>, readonly urlFormat?: Formatter<E>) {\n this.options = Opts.get(options);\n this.remember = this.options.getOptional('remember', false);\n this.defaultValue = this.options.getOptional('defaultValue', null);\n }\n\n get name() {\n return this.options.getOptional('as', this.propertyName);\n }\n\n // @Trace()\n get isRouteParameter(): boolean {\n return !!this.urlFormat;\n }\n\n abstract isEmptyValue(value: T): boolean;\n\n abstract hasChanged(a: any, b: any): boolean;\n\n protected getOptionValue<K extends keyof ParameterDefinition.Options<T>>(key: K): ParameterDefinition.Options<T>[K] {\n return this.options.getOptional(key, null);\n }\n\n // @Trace()\n async sanitise(value:T, visit: Visit, placeHistory: PlaceHistory, injector: Injector) {\n if (this.isMissingFrom(visit)) {\n const previousVisit = _.first(placeHistory.getHistory(visit.placeDefinition));\n if (this.remember && previousVisit) {\n value = previousVisit.getParameter(this.name);\n }\n return this.isEmptyValue(value) ? this.defaultValue : value;\n } else {\n // todo: add custom sanitiser\n return value;\n }\n }\n\n private isMissingFrom(visit: Visit) {\n return !visit.hasParameter(this.name);\n }\n}\n\nexport namespace ParameterDefinition {\n\n export interface Options<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser.Options<T>;\n }\n\n export class RouteId<T> extends ParameterDefinition<T> {\n readonly isRouteId = true;\n readonly isArray = false;\n\n isEmptyValue(value: T): boolean {\n return _.isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n }\n\n export class ValueParameter<T> extends ParameterDefinition<T> {\n readonly isRouteId = false;\n readonly isArray = false;\n\n isEmptyValue(value: T): boolean {\n return _.isNil(value);\n }\n\n hasChanged(a: any, b: any): boolean {\n return a !== b;\n }\n }\n\n export class ArrayParameter<T> extends ParameterDefinition<T[], T> {\n readonly isRouteId = false;\n readonly isArray = true;\n\n constructor(parameterName: string, options: Options<T[]>, urlFormat: Formatter<T>) {\n super(parameterName, options, urlFormat);\n }\n\n isEmptyValue(value: T[]): boolean {\n return _.isNil(value) || value.length < 1;\n }\n\n hasChanged(a: T[], b: T[]): boolean {\n return !_.isEqual(a, b);\n }\n\n }\n}\n","import { ParamMap } from '@angular/router';\nimport { assert, Constructable, Trace } from '@coolon/pectin';\nimport { Opts } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport _ from 'lodash';\nimport { PlaceComponent } from './place-component';\nimport { ParameterDefinition } from './route/parameter-definition.class';\nimport { Visit } from './visit';\n\nexport class PlaceDefinition {\n\n constructor(readonly component: Constructable<PlaceComponent>,\n readonly path: string,\n readonly authenticate: boolean,\n readonly data: { [key: string]: any },\n readonly routeParameters: ParameterDefinition<any>[],\n readonly children: PlaceDefinition[]) {\n }\n\n hasRouteId() {\n return !!this.getRouteIdParameterDef();\n }\n\n @Memoize()\n getRouteIdParameterDef(): ParameterDefinition<any> {\n return this.routeParameters.find(p => p.isRouteId);\n }\n\n @Memoize()\n getRouteParameterDefs(includeRouteId = false): ParameterDefinition<any>[] {\n return this.getVisitParameterDefs({ includeRouteId, includeRouteParameters: true });\n }\n\n @Memoize()\n getVisitParameterDefs(include?: PlaceDefinition.ParameterOptions): ParameterDefinition<any>[] {\n const opts = Opts.get(include);\n // includes\n const includeRouteId = !include || opts.getOptional('includeRouteId', false);\n const includeRouteParameters = !include || opts.getOptional('includeRouteParameters', false);\n const includeNonRouteParameters = !include || opts.getOptional('includeNonRouteParameters', false);\n return this.routeParameters.filter(p => {\n return (includeRouteId && p.isRouteId)\n || (includeRouteParameters && p.isRouteParameter && !p.isRouteId) // route id is included in the line above\n || (includeNonRouteParameters && !p.isRouteParameter);\n });\n }\n\n getPlaceData<T>(key: string, defaultValue?: T): T {\n return this.data ?\n _.isNil(this.data[key]) ? defaultValue : this.data[key] :\n defaultValue;\n }\n\n searchPlaceData<T>(keys: string[], defaultValue?: T): T {\n if (this.data) {\n const found = keys.find(key => !_.isNil(this.data[key]));\n return found ? this.data[found] : defaultValue;\n } else {\n return defaultValue;\n }\n }\n\n getRouteIdFrom(visit: Visit) {\n const routeIdParameterDef = this.getRouteIdParameterDef();\n return routeIdParameterDef ? visit.getParameter(routeIdParameterDef.name) : null;\n }\n\n getFormattedRouteId(visit: Visit): any {\n // Note: RouteIds are always present in the url and are just empty strings when not defined. This is\n // mandated by the fact that redirects from <path> to <path>/:id always include the id parameter as\n // an empty string.\n return visit.hasRouteId() ? this.getRouteIdParameterDef().urlFormat.format(visit.getRouteId()) : \"\";\n }\n\n getFormattedRouteParameters(visit: Visit, includeRouteId = false): { [p: string]: string } {\n const result: { [p: string]: string } = {};\n this.getVisitParameterDefs({\n includeRouteId, includeRouteParameters: true\n }).forEach(def => {\n const value = visit.getParameter(def.name);\n if (!def.isEmptyValue(value)) {\n if (def.isArray) {\n assert.isArray(value);\n result[def.name] = value.map(v => def.urlFormat.format(v));\n } else {\n assert.isFalsey(Array.isArray(value));\n result[def.name] = def.urlFormat.format(value);\n }\n }\n });\n return result;\n }\n\n getNonRouteParameters(visit: Visit): { [p: string]: string } {\n const result: { [p: string]: string } = {};\n this.getVisitParameterDefs({ includeNonRouteParameters: true }).forEach(def => {\n const value = visit.getParameter(def.name);\n if (!def.isEmptyValue(value)) {\n result[def.name] = value;\n }\n });\n return result;\n }\n\n // @Trace()\n parseRouteParams(params: ParamMap): { [p: string]: any } {\n const result: { [p: string]: any } = {};\n this.getVisitParameterDefs({\n includeRouteId: true,\n includeRouteParameters: true,\n includeNonRouteParameters: false\n }).forEach(def => {\n // params will return null for non existent names\n if (params.has(def.name)) {\n if (def.isArray) {\n const values = params.getAll(def.name);\n result[def.name] = values.map(v => def.urlFormat.parse(v));\n } else {\n const value = params.get(def.name);\n if (def.isRouteId) { // TODO: Move this to parameter def so it's a strategy pattern\n // because our id routes redirect if the id isn't present we always have a id\n // parameter in our params. This will bugger our remember and defaultvalue sanitisation\n // as it'll see that the id is present (event thought its a blank string).\n if (!_.isEmpty(value)) {\n result[def.name] = def.urlFormat.parse(value);\n }\n } else {\n result[def.name] = def.urlFormat.parse(value);\n }\n }\n }\n });\n return result;\n }\n\n}\n\nexport namespace PlaceDefinition {\n export interface ParameterOptions {\n includeRouteId?: boolean;\n includeRouteParameters?: boolean;\n includeNonRouteParameters?: boolean;\n }\n}\n","import { assert, Binding, Constructable, IMutableHasValue, lang, ValueModel } from '@coolon/pectin';\nimport { Klass } from '@coolon/typescript-utilities';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator';\nimport 'reflect-metadata';\nimport { DisposableComponent } from '../components/disposable-component';\nimport { InteractionContext } from '../interaction/interaction-context';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition.class';\nimport { Visit } from './visit';\n\n// RAKE: making this Symbol(...) broke things.\nexport const DEFINITION_META_DATA_KEY = 'PLACE_DEFINITION_OPTIONS';\n// this one seems ok.\nexport const ROUTE_PARAMETER_LIST_KEY = Symbol('place:route:parameters');\n\nexport class PlaceComponent extends DisposableComponent {\n\n private visit: ValueModel<Visit>;\n // private _inDeactivationGuard = new MutableValueModel<boolean>(false);\n\n interactionContext?: InteractionContext;\n\n canDeactivate?(interactionContext: InteractionContext): boolean | Promise<boolean>;\n\n constructor() {\n super();\n }\n\n public initialiseBindings(visit: ValueModel<Visit>) {\n assert.isNil(this.visit);\n this.visit = visit;\n this.placeDefinition.getVisitParameterDefs().forEach(parameterDef => {\n this.installBinding(parameterDef);\n });\n }\n\n private installBinding<T, S>(parameterDef: ParameterDefinition<T, S>) {\n const model = this[parameterDef.propertyName] as IMutableHasValue<S>;\n // this.txo.observe(parameterDef.propertyName, model);\n this.registerDisposable(new Binding(this.visit, model, {\n toRight(visit: Visit): S {\n const value = visit.getParameter(parameterDef.name);\n // console.log('push to component', {name:parameterDef.name, value, visit});\n return value;\n },\n toLeft(value: S, currentVisit?: Visit): Visit {\n console.log('push to route', { name: parameterDef.name, value, currentVisit });\n return currentVisit.replace(parameterDef, value);\n }\n }));\n }\n\n @Memoize()\n get placeDefinition(): PlaceDefinition {\n return PlaceComponent.getDefinition(this.constructor as any as Constructable<PlaceComponent>);\n }\n\n get childPlaces(): Constructable<PlaceComponent>[] {\n return this.placeDefinition.children.map(d => d.component);\n }\n\n onPlaceReady() {\n }\n\n}\n\nexport namespace PlaceComponent {\n\n export function isPlaceComponentConstructor(target: any): target is Constructable<PlaceComponent> {\n return lang.constructorChain(target as Constructable<any>).includes(PlaceComponent);\n }\n\n export function getRouteParameters(klass: Constructable<PlaceComponent>): ParameterDefinition<any>[] {\n return Klass.get(klass).getMetadataList(ROUTE_PARAMETER_LIST_KEY);\n }\n\n export function getDefinition(klass: Constructable<PlaceComponent>): PlaceDefinition {\n return Reflect.getMetadata(DEFINITION_META_DATA_KEY, klass);\n }\n\n export function injectDefinition(klass: Constructable<PlaceComponent>, definition: PlaceDefinition) {\n Reflect.defineMetadata(DEFINITION_META_DATA_KEY, definition, klass);\n }\n\n}\n","import { UrlSegment } from '@angular/router';\nimport * as _ from 'lodash';\nimport { PlaceDefinition } from './place-definition';\nimport { ParameterDefinition } from './route/parameter-definition.class';\n\ninterface Params {\n [p: string]: any\n}\n\n\nexport class Visit {\n\n constructor(readonly placeDefinition: PlaceDefinition, private readonly visitParameters: Params = {}) {\n }\n\n // @Trace()\n getRouteId(): any {\n return this.placeDefinition.getRouteIdFrom(this);\n }\n\n // @Trace()\n hasRouteId(): boolean {\n return !_.isNil(this.getRouteId());\n }\n\n /**\n * Returns the value of the place parameter with the specified name. The parameter\n * name is taken from the `as` option, e.g. {as: 'aCustomName'} otherwise it is the\n * same as the the ValueModel property name.\n * @param parameterName the field name of the property model or the `as` option if specified.\n */\n getParameter(parameterName: string): any {\n return this.visitParameters[parameterName];\n }\n\n // @Trace()\n hasParameter(parameterName: string) {\n return Object.keys(this.visitParameters).includes(parameterName);\n }\n\n replace<S>(parameter: ParameterDefinition<any, S>, value: S): Visit {\n return new Visit(this.placeDefinition, { ...this.visitParameters, [parameter.name]: value });\n }\n\n mergeRouteParameters<S>(routeParams: { [p: string]: any }): Visit {\n // todo: whitelist parameters.\n const routeParameterKeys = Object.keys(routeParams);\n const params = {};\n this.placeDefinition.getVisitParameterDefs().forEach(def => {\n if (def.isRouteId || def.isRouteParameter) {\n if (routeParameterKeys.includes(def.name)) {\n params[def.name] = routeParams[def.name];\n }\n } else {\n // copy non route params as is, but only if they already exist otherwise we'll inject nil values and break the\n // defaults and remember sanitisation process.\n const value = this.getParameter(def.name);\n if (this.hasParameter(def.name)) {\n params[def.name] = value;\n }\n }\n });\n return new Visit(this.placeDefinition, params);\n }\n\n hasRoutingChangedFrom(other: Visit): boolean {\n const samePlace = other.placeDefinition === this.placeDefinition;\n const sameRouteParameters = _.isEqual(\n this.placeDefinition.getFormattedRouteParameters(this, true),\n this.placeDefinition.getFormattedRouteParameters(other, true)\n );\n return !samePlace || !sameRouteParameters;\n }\n\n hasChangedFrom(other: Visit) {\n const sameNonRouteParameters = _.isEqual(\n this.placeDefinition.getNonRouteParameters(this),\n this.placeDefinition.getNonRouteParameters(other)\n );\n return !sameNonRouteParameters || this.hasRoutingChangedFrom(other);\n }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const AUP_PLACE_CONFIG = new InjectionToken<PlaceConfig>('AUP_PLACE_CONFIG');\n\nexport interface PlaceConfig {\n animationDuration: string;\n}\n","import { Trace } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { PlaceComponent } from '../place-component';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { NavigationState } from './navigation-state';\n\nexport class PlaceComponentDeactivationHandler {\n\n private canDeactivatePromise: Promise<boolean | UrlSnapshot>;\n\n constructor(readonly component: PlaceComponent, readonly navigationState: NavigationState, readonly isPrimaryComponent: boolean) {\n }\n\n get interactionService() {\n return this.navigationState.interactionService;\n }\n\n get placeRouter() {\n return this.navigationState.placeRouter;\n }\n\n async canDeactivate(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // We'll get called multiple times if there's any parameter sanitisation so\n // we always return true if we accepted promise from a previous cycle of the current\n // navigation session.\n if (!this.canDeactivatePromise) {\n // console.log(`creating deactivate promise for -> ${this.component.constructor.name}`);\n this.canDeactivatePromise = this.canDeactivateComponent(currentUrl, nextState);\n }\n return this.canDeactivatePromise;\n }\n\n\n // @Trace()\n protected async canDeactivateComponent(currentUrl: UrlSnapshot, nextState: UrlSnapshot): Promise<UrlSnapshot | boolean> {\n // console.log(this.navigationState.toString());\n // Automatically cancel any active activities if the navigation session was triggered by the back button.\n // If we handled more than just the pop state then it leads to the UI ignoring clicks and just cancelling things which is deeply disconcerting.\n if (this.navigationState.isPopState) {\n if (this.isPrimaryComponent && this.interactionService.isModalActive()) {\n const routeIds = this.placeRouter.getActiveInteractionIdsFromUrl(nextState.url);\n const currentIds = this.interactionService.activeInteractionContextIds.value;\n\n if (!_.isEqual(currentIds, routeIds)) {\n await this.interactionService.getActiveContext().cancelActiveActivity();\n return currentUrl.updateInteractionIds(this.interactionService.activeInteractionContextIds.value);\n }\n } else {\n // check if the component has an in place interaction\n if (this.component.interactionContext && this.component.interactionContext.isActive()) {\n await this.component.interactionContext.cancelActiveActivity();\n return currentUrl\n .updateInteractionIds(this.interactionService.activeInteractionContextIds.value)\n }\n }\n }\n\n\n // Ok, so now we're really leaving, so we ask the component if we should.;\n if (this.isNotJustAChangeInRouteId(nextState)) {\n\n if (this.component.canDeactivate) {\n // No interaction in progress, so ask the component .\n // This may start an interaction, hence checking the interaction context before now. I.e. if the place pops up the dialog, and\n // the user clicks back again, we'll re-enter here and go bang when the component tries to open another dialog.\n return this.component.canDeactivate(this.navigationState.interactionContext);\n }\n\n // The component has an active interaction but no deactivation hook. Rather than guessing what to do\n // we'll just cancel the navigation and print a warning.\n if (this.component.interactionContext && this.component.interactionContext.isActive()) {\n console.warn('Route changed while component has active interaction, cancelling navigation');\n return false;\n }\n\n }\n return true;\n }\n\n protected isNotJustAChangeInRouteId(nextState: UrlSnapshot) {\n // Because places with a route-id cover two route segments we get asked to deactivate\n // if the route id is added or removed. So if our path is still present the url\n // then we shouldn't deactivate the place.\n return !nextState.includesPathOf(this.component.placeDefinition);\n }\n}\n","import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, RouterEvent } from '@angular/router';\nimport { Dsl, GarbageCollector, lang, Logger, Trace } from '@coolon/pectin';\nimport { InteractionContext } from '../../interaction/interaction-context';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceRouter } from '../place-router';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { PlaceComponentDeactivationHandler } from './place-component-deactivation-handler';\n\nexport abstract class NavigationState extends GarbageCollector {\n\n private _visits = new Map<PlaceDefinition, Visit>();\n\n abstract readonly isTransitional: boolean;\n abstract readonly startingUrl: string;\n abstract readonly isPopState: boolean;\n\n constructor(protected readonly context: NavigationState.Context) {\n super();\n }\n\n get name(): string {\n return this.constructor.name;\n }\n\n get idle() {\n return !this.isTransitional;\n }\n\n get placeRouter(): PlaceRouter {\n return this.context.placeRouter;\n }\n\n get interactionService(): InteractionService {\n return this.context.interactionService;\n }\n\n get interactionContext(): InteractionContext {\n return null;\n }\n\n storeVisit(visit: Visit) {\n this._visits.set(visit.placeDefinition, visit);\n }\n\n getVisitFor(placeDef: PlaceDefinition) {\n return this._visits.get(placeDef);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n return this.illegalTransition('onPlaceNavigationStart');\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.illegalTransition(event);\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.illegalTransition(event);\n }\n\n onBackClickedDuringNavigationInteraction(newUrl: string): NavigationState {\n return this.illegalTransition('onBackClickedDuringNavigationInteraction');\n }\n\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return this.illegalTransition('canDeactivatePlace');\n }\n\n getVisits(): Visit[] {\n return Array.from(this._visits.values());\n }\n\n protected illegalTransition<R>(message: string | RouterEvent): R {\n return lang.illegalState(`${message.toString()} not supported by ${this.toString()}`);\n }\n\n protected currentRouterUrl(): string {\n return this.placeRouter.getCurrentRouterUrl();\n }\n\n protected createTransitionStateFor(event: NavigationStart) {\n const popstate = event.navigationTrigger === 'popstate';\n return popstate ?\n this.interactionService.isActive() ?\n new NavigationState.InteractionPopStateTransition(this.context, this.currentRouterUrl()) :\n new NavigationState.PopStateTransition(this.context, this.currentRouterUrl())\n :\n this.interactionService.isActive() ?\n new NavigationState.InteractionTransition(this.context, this.currentRouterUrl()) :\n new NavigationState.NavigationTransition(this.context, this.currentRouterUrl());\n }\n\n protected createIdleState() {\n return this.interactionService.isActive() ?\n new NavigationState.IdleDuringInteraction(this.context, this.currentRouterUrl()) :\n new NavigationState.Idle(this.context);\n }\n\n resetBrowserLocation(url) {\n this.placeRouter.resetBrowserLocation(url);\n }\n\n toString(): string {\n return this.constructor.name;\n }\n}\n\nexport namespace NavigationState {\n\n export class Context {\n constructor(\n readonly placeRouter: PlaceRouter,\n readonly interactionService: InteractionService,\n readonly notifySuccess: (success: NavigationState) => void) {\n }\n }\n\n export class Idle extends NavigationState {\n readonly isTransitional = false;\n readonly startingUrl = null;\n readonly isPopState = false;\n\n constructor(context: Context) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n const navigationTransition = new NavigationTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n\n // calling angularLocation.go() to clear back state can trigger router cycles to the current url if we don't ignore them\n if (event.url === this.currentRouterUrl()) {\n Logger.get(this).info(`navigation started to same url -> ${event.url}`);\n return this;\n }\n\n if (this.placeRouter.hasActiveInteractionIds(event.url)) {\n Logger.get(this).info(`navigation started with interaction outlet -> ${event.url}`);\n return new InteractionTransition(this.context, event.url);\n } else {\n return this.createTransitionStateFor(event);\n }\n }\n\n onPopState(event: NavigationStart): NavigationState {\n return this.createTransitionStateFor(event);\n }\n }\n\n export abstract class AbstractNavigationTransition extends NavigationState {\n readonly isTransitional = true;\n private componentDeactivationHandlers = new Map<PlaceComponent, PlaceComponentDeactivationHandler>();\n private _interactionContext: InteractionContext;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n this._interactionContext = this.interactionService._createExclusiveModalInteractionContext();\n this.onDispose(() => {\n // the interaction context can be detached during the back button cancellation state transition\n // as the transition is synchronous and activityCancellation isn't. Otherwise dispose will be\n // called before the context has been cancelled. It might be work having the interaction context\n // automatically cancel if the context is disposed so we don't have worry about detaching etc.\n if (this._interactionContext) {\n this._interactionContext.dispose(); // or do something like cancelAndDispose?\n }\n });\n }\n\n get interactionContext(): InteractionContext {\n return this._interactionContext;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n // active sessions can have many cancel start cycles due\n // to place guard redirects\n return this;\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n // navigation succeeded\n this.context.notifySuccess(this);\n return new Idle(this.context);\n }\n\n onBackClickedDuringNavigationInteraction(locationTriggerUrl: string): NavigationState {\n Logger.get(this).info(`back button pressed during navigation session interaction promise`);\n // detach the interaction from the session so it doesn't get disposed until the activity has completed.\n const navigationInteraction = this.detachInteractionContext();\n const { when } = Dsl.disposeWith(navigationInteraction);\n // TODO: I need to make the exclusive interaction context disallow nested activities or\n // that would mess things up entirely. Or, can I do a context.abortAll().then(..)\n navigationInteraction.cancelActiveActivity().then(() => {\n navigationInteraction.dispose();\n });\n return new CancelledDuringNavigationInteraction(this.context,\n this.startingUrl,\n this.isPopState,\n locationTriggerUrl);\n }\n\n // @Trace()\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n // lookup the handler and create it if we've not seen it yet\n let handler = this.componentDeactivationHandlers.get(component);\n if (!handler) {\n const isPrimaryHandler = this.componentDeactivationHandlers.size === 0; // only primary handler cancels the app model interations\n handler = new PlaceComponentDeactivationHandler(component, this, isPrimaryHandler);\n this.componentDeactivationHandlers.set(component, handler);\n }\n return handler.canDeactivate(currentUrl, nextUrl);\n }\n\n private detachInteractionContext(): InteractionContext {\n const context = this._interactionContext;\n this._interactionContext = null;\n return context;\n }\n }\n\n export class NavigationTransition extends AbstractNavigationTransition {\n readonly isPopState = false;\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n return this;\n }\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new Idle(this.context);\n }\n\n toString(): string {\n return `${this.constructor.name}(startingUrl: ${this.startingUrl})`;\n }\n }\n\n export class PopStateTransition extends AbstractNavigationTransition {\n readonly isPopState = true;\n\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.startingUrl);\n return new Idle(this.context);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n if (this.currentRouterUrl() !== this.startingUrl) {\n // Angular doesn't preserve the url when a guard cancels the back button.\n // See https://github.com/angular/angular/issues/13586#issuecomment-432795720\n Logger.get(this).info('WORK-AROUND: Updating browser location after pop state - see angular issue #13586');\n this.resetBrowserLocation(this.startingUrl);\n }\n return new Idle(this.context);\n }\n\n }\n\n export class IdleDuringInteraction extends NavigationState {\n readonly isTransitional = false;\n readonly isPopState = false;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context);\n }\n\n onPlaceNavigationStart(visit: Visit, initialUrl: string): NavigationState {\n const navigationTransition = new InteractionTransition(this.context, initialUrl);\n navigationTransition.storeVisit(visit);\n return navigationTransition;\n }\n\n // @Trace()\n onRouterStarted(event: NavigationStart): NavigationState {\n return new InteractionTransition(this.context, event.url);\n }\n\n // @Trace()\n onPopState(event: NavigationStart): NavigationState {\n return new InteractionPopStateTransition(this.context, event.url);\n }\n }\n\n export abstract class AbstractInteractionTransition extends AbstractNavigationTransition {\n readonly isTransitional = true;\n\n constructor(context: Context, readonly startingUrl: string) {\n super(context, startingUrl);\n }\n\n }\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n */\n export class InteractionTransition extends AbstractInteractionTransition {\n readonly isPopState = false;\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): NavigationState {\n if (this.context.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n // @Trace()\n onRouterError(event: NavigationError): NavigationState {\n // navigation was aborted.\n return new IdleDuringInteraction(this.context, this.startingUrl);\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n }\n\n /**\n * This state exists to handle all events while any kind of navigation is in progress. That way all other states can\n * happily ignore interaction contexts.\n */\n export class InteractionPopStateTransition extends AbstractInteractionTransition {\n readonly isPopState = true;\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): NavigationState {\n if (this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n // @Trace()\n onRouterEnd(event: NavigationEnd): NavigationState {\n if (this.context.interactionService.isActive()) {\n return new IdleDuringInteraction(this.context, this.startingUrl);\n } else {\n return new Idle(this.context);\n }\n }\n\n }\n\n\n export class CancelledDuringNavigationInteraction extends NavigationState {\n\n readonly isPopState = false;\n private gotPopStateWithLeavingUrl = false;\n\n constructor(context: Context,\n readonly startingUrl: string,\n readonly startingEventWasAPopState: boolean,\n readonly locationChangeTriggerUrl: string) {\n super(context);\n }\n\n get isTransitional() {\n return true;\n }\n\n onRouterStarted(event: NavigationStart): NavigationState {\n return this.ignore(event);\n }\n\n // @Trace()\n onRouterCancelled(event: NavigationCancel): NavigationState {\n // Depending on the state of the router and what was done we get a different\n // sequence of events.\n // If the navigation change was triggered by clicking a link we'll get a cancel with the locationChangeTriggerUrl as the final event.\n // If the navigation change was triggered with a pop state then we'll get an onPopState with the locationChangeTriggerUrl but no cancel event with it.\n if (this.gotPopStateWithLeavingUrl && this.interactionService.isActive()) {\n const interactionIds = this.interactionService.activeInteractionContextIds.value;\n this.resetBrowserLocation(this.placeRouter.parseUrl(this.startingUrl).updateInteractionIds(interactionIds).url);\n }\n return this.gotPopStateWithLeavingUrl || this.locationChangeTriggerUrl === event.url ? this.createIdleState() : this.ignore(event);\n }\n\n onRouterEnd(event: NavigationEnd): NavigationState {\n return this.ignore(event);\n }\n\n onRouterError(event: NavigationError): NavigationState {\n return this.ignore(event);\n }\n\n onPopState(event: NavigationStart): NavigationState {\n this.gotPopStateWithLeavingUrl = this.gotPopStateWithLeavingUrl || event.url === this.locationChangeTriggerUrl;\n return this.ignore(event);\n }\n\n // @Trace()\n async canDeactivatePlace(component: PlaceComponent, currentUrl: UrlSnapshot, nextUrl: UrlSnapshot): Promise<boolean | UrlSnapshot> {\n return false;\n }\n\n ignore(event: RouterEvent, reason?: string): NavigationState {\n reason = reason ? ` -> ${reason}` : '';\n Logger.get(this).info(`ignoring router event${reason}: ${event.constructor.name} -> ${event.url}`);\n return this;\n }\n\n toString(): string {\n return `${this.constructor.name}(isIdl: ${this.idle}, startingUrl: ${this.startingUrl}, locationChangeTriggerUrl:${this.locationChangeTriggerUrl})`;\n }\n\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport _ from 'lodash';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceHistory {\n\n private _history = new Map<PlaceDefinition, Visit[]>();\n\n constructor() {\n }\n\n // @Trace()\n add(state: Visit) {\n const history = this.getHistory(state.placeDefinition);\n const previousState = _.first(history);\n if (!previousState || state.hasChangedFrom(previousState)) {\n history.unshift(state); // LIFO\n this.setHistory(state.placeDefinition, history.slice(0, 3)); // limit our history to 4 visits\n }\n }\n\n getHistory(placeDef: PlaceDefinition): Visit[] {\n let history = this._history.get(placeDef);\n if (!history) {\n history = [];\n this.setHistory(placeDef, history);\n }\n return history;\n }\n\n private setHistory(placeDef: PlaceDefinition, history: Visit[]) {\n this._history.set(placeDef, history);\n }\n\n// previousVisit(): Visit {\n // return _.last(this._history);\n // }\n //\n // withPreviousVisit<R>(callback:(previousVisit:Visit)=>R, defaultValue:R = null):R{\n // const visit = this.previousVisit();\n // return visit ? callback(visit) : defaultValue;\n // }\n //\n // previousVisitTo(place: Place): Visit {\n // return new VisitHistory.Query(this._history).to(place).last();\n // }\n}\n\nexport namespace VisitHistory {\n\n // export class Query {\n // private _history: Visit.State[];\n // private _places: Place[];\n // private _predicate: (visit: any) => boolean;\n // private _limit: number;\n //\n // constructor(history, limit = history.length) {\n // this._history = history;\n // this._places = [];\n // this._predicate = (visit => true);\n // this._limit = limit;\n // }\n //\n // to(...places:Place[]):this {\n // this._places = places;\n // return this;\n // }\n //\n // with(parameters: { [parameter: string]: any }): this {\n // this.matching(state => {\n // return Object.keys(parameters).reduce((acc, key) => {\n // const matchValue = parameters[key];\n // const visitValue = state.get(key);\n // const matched = matchValue === '*' ? !_.isNil(visitValue) : visitValue == matchValue;\n // // Logger.get(this).info(`matched=${matched}`, parameters, visitValue);\n // return acc && matched;\n // }, true);\n // });\n // return this;\n // }\n //\n // last(): Visit.State {\n // return _.findLast(this._history, visit => this._matches(visit))\n // }\n //\n // // @trace\n // allThatMatch(): Visit.State[] {\n // return _.filter(this._history, visit => this._matches(visit)).slice(-this._limit);\n // }\n //\n // // @trace\n // mostRecentValueOf<T=any>(param: string, defaultValue: T = null): T {\n // const lastStateWithParam = _.findLast(this.allThatMatch(), state => !_.isNil(state.get(param)));\n // return _.isNil(lastStateWithParam) ? defaultValue : lastStateWithParam.get(param);\n // }\n //\n // limit(limit: number): this {\n // this._limit = limit;\n // return this;\n // }\n //\n // matching(predicate: (visit: Visit.State) => boolean): this {\n // this._predicate = predicate;\n // return this;\n // }\n //\n // _matches(visit: Visit.State) {\n // return this._isPlaceMatch(visit) && this._predicate(visit);\n // }\n //\n // _isPlaceMatch(visit: Visit.State) {\n // return this._places.length < 1 || this._places.includes(visit.place)\n // }\n //\n // }\n\n}\n","import { NavigationExtras, UrlSegment, UrlSerializer, UrlTree } from '@angular/router';\nimport { assert, Trace } from '@coolon/pectin';\nimport { PlaceDefinition } from './place-definition';\nimport { Visit } from './visit';\n\nexport class UrlSnapshot {\n\n readonly urlTree: UrlTree;\n\n // TODO: Update this accept a url Parser so it can be immutable and generate new trees on mutation using toString() are parseUrl.\n constructor(readonly urlSerializer: UrlSerializer, readonly url: string) {\n this.urlTree = urlSerializer.parse(url);\n }\n\n public updateVisitSegments(visit: Visit): UrlSnapshot {\n const urlTree = this.urlSerializer.parse(this.url);\n // Ugly, but it works for now.\n const segments = [...this.getPrimarySegments(urlTree)];\n const visitSegments = this.getSegmentsFor(visit);\n const replaceAt = segments.findIndex(segment => segment.path === visitSegments[0].path);\n // do not use the return value, it's the items that were removed!\n segments.splice(replaceAt, visitSegments.length, ...visitSegments);\n urlTree.root.children.primary.segments = segments;\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n\n private getPrimarySegments(urlTree: UrlTree) {\n return this.urlTree.root.children.primary.segments;\n }\n\n /**\n * Converts the visit into segments. Please not that these segments are not e\n * @param visit\n */\n protected getSegmentsFor(visit: Visit): UrlSegment[] {\n return visit.placeDefinition.hasRouteId() ?\n [\n // NOTE:\n // It's important to attach the params to the root path and not the id. If we attach them\n // to an empty id then the angular router won't match the pattern.\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit)),\n new UrlSegment(visit.placeDefinition.getFormattedRouteId(visit), {})]\n :\n [\n new UrlSegment(visit.placeDefinition.path, visit.placeDefinition.getFormattedRouteParameters(visit))\n ];\n }\n\n includesPathOf(placeDef: PlaceDefinition) {\n return this.getPrimarySegments(this.urlTree).find(s => s.path === placeDef.path);\n }\n\n getInteractionIds() {\n const queryParam = this.urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM];\n if (queryParam) {\n return UrlSnapshot.parseInteractionIds(queryParam);\n } else {\n return [];\n }\n }\n\n hasInteractionIds() {\n return this.getInteractionIds().length > 0;\n }\n\n // @Trace()\n updateInteractionIds(ids: string[]): UrlSnapshot {\n if (ids.length === 0) {\n return this.removeInteractionIds();\n } else {\n const urlTree = this.urlSerializer.parse(this.url);\n urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM] = UrlSnapshot.createPathIdFor(ids);\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n }\n\n // @Trace()\n removeInteractionIds(): UrlSnapshot {\n const urlTree = this.urlSerializer.parse(this.url);\n if (urlTree.queryParams && urlTree.queryParams[UrlSnapshot.INTERACTION_QUERY_PARAM]) {\n urlTree.queryParams = {};//[UrlSnapshot.INTERACTION_ROUTER_OUTLET]\n }\n return new UrlSnapshot(this.urlSerializer, urlTree.toString());\n }\n\n // withOptions(options: NavigationExtras) {\n // return new UrlSnapshot(this.urlSerializer, this.url, options);\n // }\n //\n // @Trace()\n // getNavigationExtras(): NavigationExtras {\n // return this.options;\n // }\n\n}\n\nexport namespace UrlSnapshot {\n\n export const INTERACTION_QUERY_PARAM = 'aup-interactions';\n export const INTERACTION_ID_SEPARATOR = '--';\n\n export function parseInteractionIds(path: string) {\n return path.split(INTERACTION_ID_SEPARATOR);\n }\n\n export function createPathIdFor(interactionIds: string[]) {\n return interactionIds.join(INTERACTION_ID_SEPARATOR);\n }\n\n export interface NavigationOptions {\n replaceUrl?: boolean;\n }\n}\n","import { Location } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport {\n ActivatedRoute,\n ActivatedRouteSnapshot,\n NavigationCancel,\n NavigationEnd,\n NavigationError,\n NavigationExtras,\n NavigationStart,\n Router,\n UrlSerializer\n} from '@angular/router';\nimport {\n assert,\n Constructable,\n Dsl,\n GarbageCollector,\n HasOneIndexChain,\n lang,\n ListModel,\n Logger,\n MutableListModel,\n MutableStream,\n MutableValueModel,\n Trace,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport _ from 'lodash';\nimport { InteractionService } from '../interaction/services/interaction.service';\nimport { NavigationState } from './guards/navigation-state';\nimport { PlaceHistory } from './place-history';\nimport { UrlSnapshot } from './url-snapshot';\nimport { Visit } from './visit';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlaceRouter extends GarbageCollector {\n\n private readonly _navigationStateModel = new MutableValueModel<NavigationState>();\n private readonly _activeVisits = new MutableListModel<Visit>();\n\n readonly navigationInProgress: ValueModel<boolean>;\n readonly activeVisitIndex: HasOneIndexChain<'placeDefinition', Visit>;\n private _navigationSessionContext: NavigationState.Context;\n private _navigationStateTypeModel: ValueModelChain<Constructable<NavigationState>>;\n\n constructor(private readonly router: Router,\n private readonly urlSerializer: UrlSerializer,\n private readonly angularLocation: Location,\n private readonly placeHistory: PlaceHistory,\n private readonly interactionService: InteractionService) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.activeVisitIndex = chain(this._activeVisits).indexBy('placeDefinition');\n this.navigationInProgress = chain(this.navigationStateModel).pluck('isTransitional');\n this._navigationSessionContext = new NavigationState.Context(this, this.interactionService, session => {\n this.processNavigationSuccess(session);\n });\n this._navigationStateModel.value = new NavigationState.Idle(this._navigationSessionContext);\n this._navigationStateTypeModel = chain(this._navigationStateModel).map(state => state.constructor as Constructable<NavigationState>);\n\n // TODO: make setup the callbacks in during module initiation to make this testable.\n this.router.events.subscribe(event => {\n // Routing event sequence\n // ======================\n // NavigationStart -> .... -> NavigationCancel --> redirect, go around again in the same session\n // NavigationStart -> .... -> NavigationEnd --> navigation complete, end session.\n // NavigationStart -> .... -> NavigationError --> navigation aborted, end session.\n // =======================\n if (event instanceof NavigationStart) {\n if (event.navigationTrigger === 'popstate') {\n this.runStateTransition(state => state.onPopState(event));\n } else {\n this.runStateTransition(state => state.onRouterStarted(event));\n }\n }\n if (event instanceof NavigationEnd) {\n console.log(event);\n this.runStateTransition(state => state.onRouterEnd(event));\n }\n if (event instanceof NavigationError) {\n console.log(event);\n this.runStateTransition(state => state.onRouterError(event));\n }\n if (event instanceof NavigationCancel) {\n console.log(event);\n this.runStateTransition(state => state.onRouterCancelled(event));\n }\n });\n\n // Push dialog state to the url so we can capture the back button.\n when.listOf(this.interactionService.activeInteractionContextIds).changes((ids, previous) => {\n this.syncInteractionIdsWithRouter(ids, previous);\n }, { unless: this.navigationInProgress }); // TODO: I think the exclusive interaction prevents interactions starting while it's active so we might not need this.\n\n const urlChanges = new MutableStream<{ url: string, state: NavigationState }>();\n\n // The angular router doesn't always fire router events when the back button is pushed while a navigation\n // session is in progress. Sometimes we only know about it from the url change.\n // IMPORTANT ORDER DEPENDENCY\n // This only works because we're notified of the change after the router has started reacting to it. This\n // we can can use our navigationState to determine things.\n angularLocation.onUrlChange(url => {\n const navigationState = this._navigationStateModel.value;\n console.log(`URLChange -> ${url}`, { state: navigationState });\n urlChanges.publish({ url, state: navigationState });\n\n // The url has changed while we're in a transitional state\n if (navigationState.isTransitional) {\n const navigationInteraction = this.navigationState.interactionContext;\n if (navigationInteraction && navigationInteraction.isActive()) {\n this.runStateTransition(state => state.onBackClickedDuringNavigationInteraction(url));\n }\n }\n });\n }\n\n private processNavigationSuccess(session: NavigationState) {\n // We need to update the visits before the session finishes. This allows the placeOutets to ignore visit\n // changes that occur while routerNavigationActive is true.\n assert.isTruthy(this.navigationInProgress.value);\n const visits = session.getVisits();\n visits.forEach(v => this.placeHistory.add(v));\n this._activeVisits.value = visits;\n }\n\n get navigationState(): NavigationState {\n return this._navigationStateModel.value;\n }\n\n get navigationStateModel(): ValueModel<NavigationState> {\n return this._navigationStateModel.readonly;\n }\n\n get activeVisits(): ListModel<Visit> {\n return this._activeVisits.readonly;\n }\n\n /**\n * placeRouter.navigate(placeDestinations.somePlace.createVisit(routeId, ...visitParams));\n * @param visit\n */\n async navigate(visit: Visit, options?: { relativeTo: ActivatedRoute }) {\n this.doNavigation(visit, async router => {\n const commands = [\n visit.placeDefinition.path,\n ...this.createRouteParameters(visit)\n ];\n await this.router.navigate(commands, {\n relativeTo: options ? options.relativeTo : null\n });\n });\n }\n\n // @Trace()\n async pushVisitChangesToRoute(activatedRoute: ActivatedRoute, previous: Visit, next: Visit) {\n // we have to push to history so our remember sanitisers don't pick up the previous value\n // when it's been cleared by the user.\n this.placeHistory.add(next);\n\n // FIXME: no route id -> route id duplicates route parameters\n if (next.hasRoutingChangedFrom(previous)) {\n return this.doNavigation(next, router => {\n const urlSnapshot = this.parseUrl(this.router.routerState.snapshot.url).updateVisitSegments(next);\n console.log('### Push Changes to route Redirect', { commands: urlSnapshot.url });\n return this.navigateByUrl(urlSnapshot);\n });\n }\n }\n\n async doNavigation(visit: Visit, runNavigationCommands: (router: Router) => any) {\n if (this.navigationInProgress.value) {\n lang.illegalState('Navigation already in progress');\n }\n this.runStateTransition(current => {\n const session = this.navigationState.onPlaceNavigationStart(visit, this.getCurrentRouterUrl());\n session.storeVisit(visit);\n return session;\n });\n try {\n await runNavigationCommands(this.router);\n } finally {\n // Router has finished (since there was no router change required) so we\n // need to end the navigation session.\n if (this.navigationState.isTransitional && !this.router.getCurrentNavigation()) {\n this.runStateTransition(session => session.onRouterEnd(new NavigationEnd(-1, '', '')));\n }\n }\n }\n\n // @Trace()\n protected runStateTransition(transition: (navigationSession: NavigationState) => NavigationState) {\n const previous = this._navigationStateModel.value;\n const next = transition(this.navigationState);\n this._navigationStateModel.value = next;\n if (next !== previous) {\n previous.dispose();\n Logger.get(this).info(`Router State Transition: ${previous.toString()} -> ${next.toString()}`);\n }\n }\n\n private createRouteParameters(visit: Visit) {\n const def = visit.placeDefinition;\n return visit.hasRouteId() ?\n [def.getFormattedRouteId(visit), def.getFormattedRouteParameters(visit)] :\n [def.getFormattedRouteParameters(visit)];\n }\n\n extractChildPath(activatedRoute: ActivatedRouteSnapshot): any[] {\n return _.flatten(activatedRoute.children.map(child => child.url));\n }\n\n parseUrl(url: string): UrlSnapshot {\n return new UrlSnapshot(this.urlSerializer, url);\n }\n\n resetBrowserLocation(url: string) {\n this.angularLocation.go(url);\n }\n\n createUrlSnapshot(...visits: Visit[]): UrlSnapshot {\n const bits = [];\n visits.forEach(v => {\n bits.push(this.parseUrl(`${v.placeDefinition.path}`).updateVisitSegments(v).url);\n });\n return this.parseUrl(bits.join(''));\n }\n\n getCurrentRouterUrl(): string {\n return this.router.routerState ? this.router.routerState.snapshot.url : null;\n }\n\n getCurrentRouteSnapshot(): UrlSnapshot {\n return this.parseUrl(this.getCurrentRouterUrl());\n }\n\n getActiveInteractionIdsFromUrl(url: string): string[] {\n return this.parseUrl(url).getInteractionIds();\n }\n\n\n // @Trace()\n hasActiveInteractionIds(url: string) {\n return this.getActiveInteractionIdsFromUrl(url).length > 0;\n }\n\n // @Trace()\n navigateByUrl(urlSnapshot: UrlSnapshot, navigationExtras?: NavigationExtras): Promise<boolean> {\n return this.router.navigateByUrl(urlSnapshot.urlTree, navigationExtras);\n }\n\n // TODO: Should this be moved to the navigation states?\n syncInteractionIdsWithRouter(currentIds: string[], previous: string[]) {\n assert.isFalsey(this.navigationInProgress.value); // Updating interaction routes during an existing navigation breaks all the things.\n console.log({\n startingActivity: currentIds.length > previous.length,\n wasBackButton: this.navigationState.isPopState\n });\n\n if (_.isEqual(currentIds, previous)) {\n console.log('activity ids were the same, skipping');\n } else {\n // OMG, this is nuts.\n const addingActivity = currentIds.length > previous.length;\n const isFirstActivity = addingActivity && previous.length < 1;\n const removingLastActivity = currentIds.length < 1;\n if (addingActivity) {// we're starting a new activity, push the change to the history and update the url\n console.log('adding activity');\n this.navigateByUrl(this.getCurrentRouteSnapshot().updateInteractionIds(currentIds), {\n replaceUrl: !isFirstActivity // we don't let the history pile up\n });\n } else {\n const urlSnapshot = this.getCurrentRouteSnapshot().updateInteractionIds(currentIds);\n if (removingLastActivity) {\n this.navigateByUrl(urlSnapshot, {\n replaceUrl: true\n }).then(() => {\n // for some reason we need to pop the last history off the stack when leaving the\n // active activity state.\n this.angularLocation.back();\n });\n } else {\n this.navigateByUrl(urlSnapshot, {\n replaceUrl: true\n });\n }\n }\n }\n }\n}\n","import { animate, group, query, style, transition, trigger } from '@angular/animations';\n\n// Freezes the state of the components at the start of the animation.\nconst animationStartStyle = style({ position: 'absolute', top: '0', left: '0', bottom: '0', right: '0' });\n\nconst left = [\n query(':enter, :leave', animationStartStyle, { optional: true }),\n group([\n query(':enter', [\n style({ transform: 'translateX(-100%)' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(0%)' }))\n ], {\n optional: true\n }),\n query(':leave', [\n style({ transform: 'translateX(0%)' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(100%)' }))\n ], {\n optional: true\n })\n ])\n];\n\nconst right = [\n query(':enter, :leave', animationStartStyle, { optional: true }),\n group([\n query(':enter', [\n style({ transform: 'translateX(100%)', minHeight: '1px' }),\n animate('{{duration}} ease-out', style({ transform: 'translateX(0%)' }))\n ], {\n optional: true\n }),\n query(':leave', [style({ transform: 'translateX(0%)' }), animate('{{duration}} ease-out', style({\n transform: 'translateX(-100%)',\n minHeight: '1px'\n }))], {\n optional: true\n })\n ])\n];\n\nexport function leftRightPlaceAnimation(duration: string) {\n return trigger('routeAnimations', [\n transition(':increment', right, { params: { duration: duration } }),\n transition(':decrement', left, { params: { duration: duration } })\n ]);\n}\n\nexport const LEFT_RIGHT_PLACE_ANIMATION = leftRightPlaceAnimation('0.3s');\n","import { Component, EventEmitter, Inject, Input, OnInit, Optional, Output, SkipSelf, ViewChild } from '@angular/core';\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\nimport {\n BooleanValueModelChain,\n Constructable,\n DelegatingValueModel,\n Dsl,\n Guard,\n ListModel,\n MutableValueModel,\n StoreInListModel,\n StoreInValueModel,\n UseDelegate,\n ValueModel,\n ValueModelChain\n} from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { DisposableComponent } from '../../../components/disposable-component';\nimport { PlaceComponent } from '../../place-component';\nimport { AUP_PLACE_CONFIG, PlaceConfig } from '../../place-config';\nimport { PlaceDefinition } from '../../place-definition';\nimport { PlaceRouter } from '../../place-router';\n\nimport { Visit } from '../../visit';\nimport { LEFT_RIGHT_PLACE_ANIMATION } from './route-animations';\n\n// Quick hack to avoid circular references between this and PlaceComponents.\ninterface PlaceRef {\n readonly placeDefinition: PlaceDefinition\n\n initialiseBindings(param: ValueModel<Visit>): void;\n\n onPlaceReady(): void;\n}\n\n@Component({\n selector: 'aup-place-outlet',\n templateUrl: './place-outlet.component.html',\n styleUrls: ['./place-outlet.component.scss'],\n animations: [LEFT_RIGHT_PLACE_ANIMATION]\n})\nexport class PlaceOutletComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInValueModel('animateModel')\n animate: boolean;\n\n @Input() @UseDelegate({ defaultValue: true })\n animateModel: ValueModel<boolean>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrderModel') @UseDelegate()\n customPlaceAnimationOrderModel: ListModel<Constructable<PlaceComponent>>;\n\n // tslint:disable-next-line:no-input-rename\n @Input('placeAnimationOrder') @StoreInListModel('customPlaceAnimationOrderModel')\n customPlaceAnimationOrder: Constructable<PlaceComponent>[];\n\n @Output()\n readonly placeChanged = new EventEmitter<PlaceComponent>();\n\n @ViewChild('routeOutlet', { static: true })\n routerOut: RouterOutlet;\n\n private readonly _activePlace = new MutableValueModel<PlaceComponent>();\n private readonly _activePlaceVisitModel = new DelegatingValueModel<Visit>();\n\n private readonly _inOutletActivation = new Guard();\n private readonly _inOutletDeactivation = new Guard();\n private readonly _inOutletUpdate: BooleanValueModelChain;\n private readonly _inRouteVisitUpdate = new Guard();\n private readonly _activatedRouteModel = new MutableValueModel<ActivatedRoute>();\n\n private readonly _placeDefinition = new MutableValueModel<PlaceDefinition>();\n private parentOutletModel: MutableValueModel<PlaceOutletComponent>;\n public readonly placeAnimationOrder: ValueModelChain<number>;\n\n private initialPlaceIndex: number = null;\n private routerVisit: ValueModelChain<Visit>;\n\n constructor(private readonly router: Router,\n private readonly placeRouter: PlaceRouter,\n @Optional() @Inject(AUP_PLACE_CONFIG) readonly placeConfig: PlaceConfig,\n @SkipSelf() @Optional() parentOutlet: PlaceOutletComponent) {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n\n this.parentOutletModel = new MutableValueModel(parentOutlet);\n this._activePlaceVisitModel.setDelegate(new MutableValueModel<Visit>());\n this._inOutletUpdate = valueOf.any(this._inOutletDeactivation, this._inOutletActivation).areTruthy();\n\n const defaultPlaceAnimationOrder = chain(this.parentOutletModel)\n .pullValueModel(o => o.activePlaceModel)\n .pluck('placeDefinition')\n .pluckList('children')\n .pluck('component');\n\n const activatePlaceType = chain(this.activePlaceModel).map(p => p.constructor as Constructable<PlaceComponent>);\n this.placeAnimationOrder = chain(this.customPlaceAnimationOrderModel)\n .otherwise(defaultPlaceAnimationOrder)\n .reduce((placesInOrder) => {\n let placeIndex = 0;\n if (activatePlaceType.value) {\n placeIndex = placesInOrder.indexOf(activatePlaceType.value);\n if (_.isNil(this.initialPlaceIndex)) {\n this.initialPlaceIndex = placeIndex;\n }\n }\n return _.isNil(this.initialPlaceIndex) ? 0 : placeIndex - this.initialPlaceIndex;\n }, { dependsOn: activatePlaceType });\n\n // Push incoming changes into the component\n this.routerVisit = chain(this._activePlace).pluck('placeDefinition').findIn(placeRouter.activeVisitIndex);\n // Our router visit will change when our active is nullified during deactivation, which will push a null visit\n // the the deactivated component, which will nuke it's view before the animations have finished.\n // The visit will alway updated after the router session is finsised (when the new visits are registered) so\n // we can safely ignore it during outlet changes as these always happen before the router session ends.\n when.valueOf(this.routerVisit).changes(() => this.pushRouteChangesToVisit(), { unless: this._inOutletUpdate });\n\n // Handle component based changes\n when.valueOf(this._activePlaceVisitModel).changes((next, previous) => {\n this.pushVisitChangesToRoute(next, previous);\n }, {\n unless: this.placeRouter.navigationInProgress\n });\n\n chain(this._activePlace)\n .postponeWhile(placeRouter.navigationInProgress)\n .subscribe(place => this.placeChanged.emit(place));\n\n }\n\n ngOnInit() {\n }\n\n // @Trace()\n getAnimationOrder() {\n return this.placeAnimationOrder.value;\n }\n\n get animationDuration() {\n return this.placeConfig && this.placeConfig.animationDuration ? this.placeConfig.animationDuration : '500ms';\n }\n\n // @Trace()\n navigate(visit: Visit) {\n // console.log({ activatedRoute: this._activatedRouteModel.value });\n this.placeRouter.navigate(visit, {\n relativeTo: this.parentOutlet ? this.parentOutlet.activatedRouteModel.value : null\n });\n }\n\n get parentOutlet(): PlaceOutletComponent {\n return this.parentOutletModel.value;\n }\n\n // @Trace()\n pushRouteChangesToVisit() {\n const visit = this.routerVisit.value;\n // console.log({\n // visit,\n // place: visit ? visit.placeDefinition.component : null,\n // inOutletActivation: this._inOutletActivation.value,\n // inRoutingSession: this.placeRouter.navigationSessionActive.value\n // });\n if (visit) { // can be null while the place and index sync up\n this._inRouteVisitUpdate.whileTrue(() => {\n this._activePlaceVisitModel.value = visit;\n });\n }\n }\n\n pushVisitChangesToRoute(next: Visit, previous: Visit) {\n const activatedRoute = this._activatedRouteModel.value;\n this.placeRouter.pushVisitChangesToRoute(activatedRoute, previous, next);\n }\n\n get activePlaceModel(): ValueModel<PlaceComponent> {\n return this._activePlace.readonly;\n }\n\n get activatedRouteModel(): ValueModel<ActivatedRoute> {\n return this._activatedRouteModel.readonly;\n }\n\n // @Trace()\n onOutletActivated(routerOutlet: RouterOutlet, place: PlaceComponent) {\n this._inOutletActivation.whileTrue(() => {\n try {\n this._activePlace.value = place;\n this._activatedRouteModel.value = routerOutlet.activatedRoute;\n this._placeDefinition.value = place.placeDefinition;\n const visitModel = new MutableValueModel<Visit>();\n this._activePlaceVisitModel.setDelegate(visitModel);\n place.initialiseBindings(visitModel);\n } catch (error) {\n console.error(error);\n }\n });\n if (!this.animateModel.value) {\n // we're not animating so trigger any post animation callbacks now.\n this.animationDone();\n }\n }\n\n // @Trace()\n onOutletDeactivated() {\n this._inOutletDeactivation.whileTrue(() => {\n this._activePlace.value = null;\n this._activatedRouteModel.value = null;\n this._placeDefinition.value = null;\n this._activePlaceVisitModel.setDelegate(null);\n });\n }\n\n // @Trace()\n animationStarted() {\n // console.log({ activePlace: this._activePlace.value });\n }\n\n // @Trace()\n animationDone() {\n if (this._activePlace.value) {\n this._activePlace.value.onPlaceReady();\n }\n }\n\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n Command,\n Constructable,\n Dsl,\n ListModel,\n ListModelChain,\n StoreInListModel, StoreInValueModel,\n UseDelegate,\n ValueModel, ValueModelChain\n} from '@coolon/pectin';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\nimport { DisposableComponent } from '../../components/disposable-component';\nimport { NavItem } from '../nav-item';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { Visit } from '../visit';\nimport { PlaceOutletComponent } from './place-outlet/place-outlet.component';\n\n@Component({\n template: ''\n})\nexport class AbstractPlaceNavigationComponent extends DisposableComponent implements OnInit {\n\n @Input() @StoreInListModel('placesModel')\n places: Constructable<PlaceComponent>[];\n\n @Input() @UseDelegate()\n placesModel: ListModel<Constructable<PlaceComponent>>;\n\n\n @Input() @StoreInValueModel('placeOutletModel')\n placeOutlet: PlaceOutletComponent;\n\n @Input() @UseDelegate()\n placeOutletModel: ValueModel<PlaceOutletComponent>;\n\n readonly placeDefinitions: ListModelChain<PlaceDefinition>;\n\n readonly commandFactory: Command.Factory<PlaceDefinition, void>;\n readonly activePlaceDefinition: ValueModelChain<PlaceDefinition>;\n\n constructor() {\n super();\n const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);\n this.placeDefinitions = chain(this.placesModel).map(c => PlaceComponent.getDefinition(c));\n this.commandFactory = Command.createFactory((placeDefinition:PlaceDefinition) => {\n this.placeOutlet.navigate(new Visit(placeDefinition))\n });\n this.activePlaceDefinition = chain(this.placeOutletModel).pullValueModel(o => o.activePlaceModel).pluck(\"placeDefinition\")\n }\n\n @Memoize()\n getNav(placeDef: PlaceDefinition): NavItem {\n const navItem = placeDef.getPlaceData('nav') as NavItem;\n return {\n title: () => navItem ? navItem.title() : placeDef.searchPlaceData(['navTitle', 'title']),\n tooltip: () => navItem && navItem.tooltip ? navItem.tooltip() : placeDef.getPlaceData('navTooltip', null),\n icon: () => navItem && navItem.icon ? navItem.icon() : placeDef.getPlaceData('navIcon', null)\n };\n }\n\n isActive(place:PlaceDefinition) {\n return this.activePlaceDefinition.query().equals(place);\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, Input, OnInit } from '@angular/core';\nimport { StoreInValueModel, UseDelegate, ValueModel } from '@coolon/pectin';\n\n@Component({\n selector: 'aup-busy-overlay',\n templateUrl: `./busy-overlay.component.html`,\n styleUrls: ['./busy-overlay.component.scss']\n})\nexport class BusyOverlayComponent implements OnInit {\n\n @Input() @UseDelegate()\n busyModel: ValueModel<boolean>;\n\n @Input() @StoreInValueModel('busyModel')\n busy: boolean;\n\n constructor() {\n }\n\n ngOnInit() {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'aup-empty-state',\n template: `\n <div class=\"container\">\n <ng-content></ng-content>\n </div>\n `,\n styleUrls: ['./empty-state.component.scss']\n})\nexport class EmptyStateComponent implements OnInit {\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { Component, HostBinding } from '@angular/core';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-list-place-nav',\n templateUrl: './list-place-nav.component.html',\n styleUrls: ['./list-place-nav.component.scss']\n})\nexport class ListPlaceNavComponent extends AbstractPlaceNavigationComponent {\n\n @HostBinding('class.expanded')\n public expanded = true;\n\n constructor() {\n super();\n }\n\n expandMenu() {\n this.expanded = true;\n }\n\n collapseMenu() {\n this.expanded = false;\n }\n\n toggleMenu() {\n this.expanded = !this.expanded;\n }\n}\n","import { Component } from '@angular/core';\nimport { AbstractPlaceNavigationComponent } from '../abstract-place-navigation.component';\n\n@Component({\n selector: 'aup-tabbed-place-navigation',\n templateUrl: './tabbed-place-navigation.component.html',\n styleUrls: ['./tabbed-place-navigation.component.scss']\n})\nexport class TabbedPlaceNavigationComponent extends AbstractPlaceNavigationComponent {\n constructor() {\n super();\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatProgressSpinnerModule } from '@angular/material';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { RouterModule } from '@angular/router';\nimport { DirectivesModule } from '../directives/directives.module';\nimport { AbstractPlaceNavigationComponent } from './components/abstract-place-navigation.component';\nimport { BusyOverlayComponent } from './components/busy-overlay/busy-overlay.component';\nimport { EmptyStateComponent } from './components/empty-state/empty-state.component';\nimport { ListPlaceNavComponent } from './components/list-place-nav/list-place-nav.component';\nimport { PlaceOutletComponent } from './components/place-outlet/place-outlet.component';\nimport { TabbedPlaceNavigationComponent } from './components/tabbed-place-navigation/tabbed-place-navigation.component';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n MatProgressSpinnerModule,\n RouterModule,\n MatTabsModule,\n MatListModule,\n MatTooltipModule,\n MatIconModule,\n DirectivesModule\n ],\n declarations: [\n EmptyStateComponent,\n BusyOverlayComponent,\n PlaceOutletComponent,\n TabbedPlaceNavigationComponent,\n ListPlaceNavComponent,\n AbstractPlaceNavigationComponent\n ],\n entryComponents: [BusyOverlayComponent],\n exports: [\n BusyOverlayComponent,\n PlaceOutletComponent,\n EmptyStateComponent,\n TabbedPlaceNavigationComponent,\n ListPlaceNavComponent,\n AbstractPlaceNavigationComponent\n ],\n providers: [\n // {provide: AUP_PLACE_CONFIG, useValue: {animationDuration: \"2000ms\"}}\n ]\n})\nexport class PlaceModule {\n\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatFormFieldModule, MatInputModule, MatSelectModule } from '@angular/material';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ComponentsModule } from './components/components.module';\nimport { NoopComponent } from './components/noop/noop.component';\nimport { DirectivesModule } from './directives/directives.module';\nimport { InteractionModule } from './interaction/interaction.module';\nimport { PlaceModule } from './place/place.module';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule,\n BrowserAnimationsModule,\n FormsModule,\n MatInputModule,\n MatFormFieldModule,\n MatSelectModule,\n MatTabsModule,\n DirectivesModule,\n ComponentsModule,\n PlaceModule,\n InteractionModule\n ],\n exports: [\n InteractionModule,\n PlaceModule,\n DirectivesModule,\n ComponentsModule,\n NoopComponent\n ]\n\n})\nexport class AngularUiPowerupsModule {\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nconst slideDownOnEnterDef = style({\n opacity: 0,\n 'height': '0',\n paddingTop: '0',\n paddingBottom: '0'\n});\n\n// TODO: params aren't getting customised in the view. Need to figure out the correct approach.\nexport const slideDownOnEnterAnimation = trigger('slideDownOnEnter', [\n transition(':enter', [slideDownOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),\n transition(':leave', [animate('{{duration}}', slideDownOnEnterDef)], { params: { duration: '100ms' } })\n]);\n\nconst slideLeftOnEnterDef = style({\n opacity: 0,\n 'width': '0',\n paddingLeft: '0',\n paddingRight: '0'\n});\n\nexport const slideRightOnEnterAnimation = trigger('slideRightOnEnter', [\n transition(':enter', [slideLeftOnEnterDef, animate('{{duration}}')], { params: { duration: '100ms' } }),\n transition(':leave', [animate('{{duration}}', slideLeftOnEnterDef)], { params: { duration: '100ms' } })\n]);\n","export class Dimension {\n constructor(readonly width: number, readonly height: number) {\n }\n}\n","export class Point {\n\n static from(data: { x: number, y: number }) {\n return new Point(data.x, data.y);\n }\n\n constructor(readonly x: number, readonly y: number) {\n }\n\n translate(x: number, y: number): Point {\n return new Point(this.x + x, this.y + y);\n }\n}\n","import { Dimension } from './dimension.class';\nimport { Point } from './point.class';\n\nexport class Bounds extends Dimension {\n\n constructor(readonly top: number, readonly left: number, readonly width: number, readonly height: number) {\n super(width, height);\n }\n\n relativePositionOf(point: { x: number, y: number } | MouseEvent) {\n if (point instanceof MouseEvent) {\n return new Point(point.clientX - this.left, point.clientY - this.top);\n } else {\n return new Point(point.x - this.left, point.y - this.top);\n }\n }\n}\n\nexport namespace Bounds {\n export function ofElement(element: HTMLElement): Bounds {\n const rect = element.getBoundingClientRect();\n return new Bounds(rect.top, rect.left, rect.width, rect.height);\n }\n}\n\n","import { AfterViewInit, ElementRef, NgZone } from '@angular/core';\nimport { ValueHolder, ValueModel } from '@coolon/pectin';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport { DisposableComponent } from './disposable-component';\nimport { Bounds } from './types/bounds.class';\nimport { Point } from './types/point.class';\n\nexport class ResizeAwareComponent extends DisposableComponent implements AfterViewInit {\n\n private _boundsModel = new ValueHolder<Bounds>(new Bounds(0, 0, 0, 0));\n\n constructor(protected readonly elementRef: ElementRef, protected readonly ngZone: NgZone) {\n super();\n }\n\n ngAfterViewInit(): void {\n this.updateBounds();\n const element = this.elementRef.nativeElement;\n const ro = new ResizeObserver((entries, observer) => {\n this.ngZone.run(() => this.updateBounds());\n });\n ro.observe(element);\n this.onDispose(() => ro.disconnect());\n }\n\n get boundsModel(): ValueModel<Bounds> {\n return this._boundsModel.readonly;\n }\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n // TODO: Make this handle body scroll\n public relativePositionOf(point: { x: number, y: number } | MouseEvent): Point {\n return this.bounds.relativePositionOf(point);\n }\n\n get bounds(): Bounds {\n return this._boundsModel.value;\n }\n\n private updateBounds() {\n this._boundsModel.value = Bounds.ofElement(this.nativeElement);\n }\n\n\n}\n\nexport namespace ResizeAwareComponent {\n\n}\n","export interface Alert {\n title?(): string;\n\n content(): string[];\n\n ok(): string;\n}\n","import { Alert } from './alert';\n\nexport interface Confirm extends Alert {\n destructive?: () => boolean;\n\n cancel(): string;\n}\n","export interface Result<R, E> {\n // catch(callback: (error: E) => void): Result<R,E>;\n}\n\nexport namespace Result {\n export interface Callback<R, E> {\n then: <T>(result: R) => T;\n catch: <T>(result: E) => T;\n }\n\n}\n\n// const r:Result<string, number> = null;\n\n// r.catch(e => {}).then();\n\n","import { Constructable } from '@coolon/pectin';\nimport { Activity } from '../../activity';\n\n\nexport interface ActivityOutletContext<D, R, E> extends Activity.Callbacks<R, E> {\n activityClass: Constructable<Activity<D, R, E>>,\n activityData: D,\n componentReady?(component:Activity<D,R,E>);\n}\n","import { MatDialog, MatDialogRef } from '@angular/material';\nimport { MatDialogConfig } from '@angular/material/dialog';\nimport { Constructable, lang, ListModel, MutableValueModel, ValueModel } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { Activity } from '../../activity';\nimport { ActivityContainerComponent } from '../../components/activity-container/activity-container.component';\nimport { InteractionContextBase } from '../../interaction-context-base';\n\nexport class DialogInteractionContext extends InteractionContextBase {\n\n private readonly _activeModel = new MutableValueModel<boolean>(false);\n\n constructor(private readonly dialogService: MatDialog, readonly config: MatDialogConfig<any>) {\n super();\n assert.notNil(dialogService);\n this.onDispose(() => {\n if (this.isActive()) {\n lang.illegalState('Dispose called while active.');\n }\n });\n }\n\n get active(): ValueModel<boolean> {\n return this._activeModel.readonly;\n }\n\n protected _startActivity<D, R, E>(activityType: Constructable<Activity<D, R, E>>, data: D, disableClose: boolean = true) {\n if (this.isActive()) {\n lang.illegalState(`Activity already in progress: ${this.activityList.value.map(a => a.constructor.name).join(', ')}`);\n }\n this._activeModel.value = true;\n const config: MatDialogConfig = {\n ...this.config,\n ...{\n data,\n disableClose,\n panelClass: 'dialog-interaction-context'\n }\n };\n\n const self = this;\n const matDialogRef = this.dialogService.open(ActivityContainerComponent, config) as MatDialogRef<ActivityContainerComponent<D, R, E>>;\n return new Promise<R>((resolve, reject) => {\n const activityContainer = matDialogRef.componentInstance;\n self.safelyUpdateActivityListDelegate(activityContainer.activityList);\n\n activityContainer.initialActivityOutletContext = {\n activityClass: activityType,\n activityData: data,\n onDone(result) {\n resolve(result);\n matDialogRef.close(true); // return true to let the after close listener know we've already handled it.\n },\n onCancel(error) {\n reject(error);\n matDialogRef.close(true); // return true to let the after close listener know we've already handled it.\n }\n };\n // we need to check if our onDone/onCancel methods above we called or if we were\n // closed by the user clicking the backdrop. If the later then we need to reject\n // our promise.\n matDialogRef.afterClosed().subscribe(promiseAlreadyFinished => {\n if (!promiseAlreadyFinished) {\n reject('auto-closed');\n }\n });\n matDialogRef.updateSize();\n matDialogRef.afterOpened().subscribe(promiseAlreadyFinished => {\n matDialogRef.updateSize();\n });\n }).finally(() => {\n self.safelyUpdateActivityListDelegate(null);\n this._activeModel.value = false;\n });\n }\n\n /**\n * Updates teh delegate on the next tick to avoid modifying state during the current change detection cycle.\n * @param delegate\n */\n safelyUpdateActivityListDelegate(delegate: ListModel<Activity<any, any>>) {\n setTimeout(() => this.setActivityList(delegate));\n }\n\n}\n","import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';\nimport { MatDialog } from '@angular/material';\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogConfig } from '@angular/material/dialog';\nimport { BooleanValueModelChain } from '@coolon/pectin';\nimport { assert } from '@coolon/typescript-utilities';\nimport { InteractionContext } from '../../interaction-context';\nimport { ModalInteractionContextFactory } from '../modal-interaction-context.factory';\nimport { DialogInteractionContext } from './dialog-interaction-context';\n\nexport const DIALOG_INTERACTION_SERVICE_DEFAULTS = new InjectionToken<MatDialogConfig<any>>('DIALOG_INTERACTION_SERVICE_DEFAULTS');\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogInteractionContextFactory extends ModalInteractionContextFactory {\n\n readonly active: BooleanValueModelChain;\n\n constructor(private readonly dialogService: MatDialog,\n @Optional() @Inject(DIALOG_INTERACTION_SERVICE_DEFAULTS) readonly dialogServiceDefaults: MatDialogConfig<any>,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) readonly matDialogDefaultConfig: MatDialogConfig<any>\n ) {\n super();\n assert.notNil(dialogService);\n }\n\n createInteractionContext(): InteractionContext {\n const config: MatDialogConfig = {\n autoFocus: false,\n hasBackdrop: true,\n closeOnNavigation: false,\n ...this.matDialogDefaultConfig,\n ...this.dialogServiceDefaults\n };\n\n return new DialogInteractionContext(this.dialogService, config);\n }\n}\n","export interface NavItem {\n title(): string;\n\n icon?(): string;\n\n tooltip?(): string;\n}\n","import { Constructable, lang } from '@coolon/pectin';\nimport * as _ from 'lodash';\nimport { PlaceComponent } from './place-component';\nimport { PlaceDefinition } from './place-definition';\n\nexport function Place(options: Place.Options) {\n return (target: Function) => {\n if (PlaceComponent.isPlaceComponentConstructor(target)) {\n PlaceComponent.injectDefinition(target, new PlaceDefinition(\n target,\n options.path,\n _.isNil(options.authenticate) ? true : options.authenticate,\n options.data,\n PlaceComponent.getRouteParameters(target),\n (options.children || []).map(c => PlaceComponent.getDefinition(c))\n ));\n\n } else {\n lang.illegalState(`${target} must extend PlaceComponent to use the @Place decorator`);\n }\n };\n}\n\nexport namespace Place {\n\n export interface Options {\n path: string,\n data?: { [key: string]: any }, // defaults to true\n authenticate?: boolean, // defaults to true\n children?: Constructable<PlaceComponent>[]\n defaultChild?: Constructable<PlaceComponent>\n }\n\n}\n\n","import { ParamMap, UrlSegment } from '@angular/router';\nimport { Memoize } from '@typescript-plus/fast-memoize-decorator/dist/src';\n\n/**\n * This a work around for the fact that an activated route with multiple segments doesn't\n * include the segment params in the paramMap as well as each segment returns an empty\n * param map even when `parameter`s has content.\n */\nexport class ConsolidatedParameterMap implements ParamMap {\n\n private paramMaps: ParamMap[];\n\n constructor(paramMap: ParamMap, urlSegments: UrlSegment[]) {\n this.paramMaps = [paramMap].concat(\n (urlSegments || []).map(s => new ParamMapAdapter(s.parameters))\n ).filter(m => !!m); // the activated route param map can be null\n }\n\n get(name: string): string | null {\n const paramMap = this.paramMaps.find(m => m.has(name));\n return paramMap.get(name);\n }\n\n getAll(name: string): string[] {\n const paramMap = this.paramMaps.find(m => m.has(name));\n return paramMap.getAll(name);\n }\n\n has(name: string): boolean {\n return !!this.paramMaps.find(m => m.has(name));\n }\n\n @Memoize()\n get keys(): string[] {\n return this.paramMaps.reduce((result, params) => result.concat(params.keys), []);\n }\n}\n\nclass ParamMapAdapter implements ParamMap {\n constructor(private readonly params: { [p: string]: string }) {\n }\n\n get(name: string): string | null {\n return this.params[name];\n }\n\n getAll(name: string): string[] {\n const value = this.get(name);\n return Array.isArray(value) ? value : [value];\n }\n\n has(name: string): boolean {\n return this.keys.includes(name);\n }\n\n get keys(): string[] {\n return Object.keys(this.params);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot, UrlTree } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NoopAuthGuard implements CanActivate {\n\n constructor() {\n }\n\n async canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n return true;\n }\n}\n","import { Injector } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router } from '@angular/router';\nimport { Trace } from '@coolon/pectin';\nimport { PlaceHistory } from '../place-history';\nimport { Visit } from '../visit';\n\nexport class VisitSanitiser {\n constructor(private activatedRoute: ActivatedRouteSnapshot, private router: Router, private placeHistory: PlaceHistory, private injector: Injector) {\n\n }\n\n // @Trace()\n async sanitise(visit: Visit): Promise<Visit> {\n const placeDef = visit.placeDefinition;\n if (placeDef.hasRouteId()) {\n const routeIdDef = placeDef.getRouteIdParameterDef();\n const routeId = visit.getRouteId();\n const sanitisedValue = await routeIdDef.sanitise(routeId, visit, this.placeHistory, this.injector);\n // console.log({routeId, sanitisedValue});\n // ###------- EARLY EXIT --------###\n if (routeIdDef.hasChanged(routeId, sanitisedValue)) {\n // if the route id has changed we redirect immediately as other\n // parameter sanitisers might use it.\n return visit.replace(routeIdDef, sanitisedValue);\n }\n }\n\n // if we didn't replace the routeId we continue the url present parameters.\n const parameterDefs = placeDef.getVisitParameterDefs({\n includeRouteParameters: true,\n includeNonRouteParameters: true\n });\n let sanitisedVisit: Visit = visit;\n for (let i = 0; i < parameterDefs.length; i++) {\n const def = parameterDefs[i];\n const value = visit.getParameter(def.name);\n const sanitisedValue = await def.sanitise(value, sanitisedVisit, this.placeHistory, this.injector);\n if (def.hasChanged(value, sanitisedValue)) {\n sanitisedVisit = sanitisedVisit.replace(def, sanitisedValue);\n }\n }\n\n return sanitisedVisit.hasChangedFrom(visit) ? sanitisedVisit : visit;\n }\n\n}\n","import { Injector } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n CanDeactivate,\n Router,\n RouterStateSnapshot,\n UrlSerializer,\n UrlTree\n} from '@angular/router';\nimport { lang, Trace } from '@coolon/pectin';\nimport { Observable } from 'rxjs';\nimport { InteractionService } from '../../interaction/services/interaction.service';\nimport { PlaceComponent } from '../place-component';\nimport { PlaceDefinition } from '../place-definition';\nimport { PlaceHistory } from '../place-history';\nimport { PlaceRouter } from '../place-router';\nimport { VisitSanitiser } from '../route/visit-sanitiser';\nimport { UrlSnapshot } from '../url-snapshot';\nimport { Visit } from '../visit';\nimport { ConsolidatedParameterMap } from './consolidated-param-map';\n\n\nexport abstract class PlaceGuard implements CanActivate, CanDeactivate<PlaceComponent> {\n\n\n constructor(private readonly router: Router,\n private urlSerializer: UrlSerializer,\n private readonly placeRouter: PlaceRouter,\n private readonly placeHistory: PlaceHistory,\n private readonly interactionService: InteractionService,\n private readonly injector: Injector) {\n }\n\n // @Trace()\n async canActivate(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n\n // TODO: this is ugly now that I'm return UrlSnapshots and not UrlTrees. It'd be better if the functions\n // weren't nested or if I implemented a handler chain.\n return this.authorisePlaceThen(activatedRoute, state, async (placeDefinition) => {\n\n const result = await this.cleanInteractionState(activatedRoute, state, async () => {\n // Parse our route params.\n const params = new ConsolidatedParameterMap(activatedRoute.paramMap, activatedRoute.url);\n const parsedParams = placeDefinition.parseRouteParams(params);\n\n const initialVisit = this.placeRouter.navigationState.getVisitFor(placeDefinition) || new Visit(placeDefinition, parsedParams);\n const sanitiser = new VisitSanitiser(activatedRoute, this.router, this.placeHistory, this.injector);\n const sanitisedVisit = await sanitiser.sanitise(initialVisit.mergeRouteParameters(parsedParams));\n\n // Save the visit with any updated parameters. We need to save it so we remember any non route parameters\n this.placeRouter.navigationState.storeVisit(sanitisedVisit);\n if (initialVisit.hasRoutingChangedFrom(sanitisedVisit)) {\n // Regenerate the url\n const urlSnapshot = this.placeRouter.parseUrl(state.url).updateVisitSegments(sanitisedVisit);\n console.log('##### Place Guard Redirect', urlSnapshot);\n return urlSnapshot;\n } else {\n return true;\n }\n });\n return this.handleGuardResult(result);\n\n });\n }\n\n // @Trace()\n async canDeactivate(component: PlaceComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState?: RouterStateSnapshot): Promise<boolean | UrlTree> {\n const currentUrl = this.placeRouter.parseUrl(currentState.url);\n const nextUrl = this.placeRouter.parseUrl(nextState.url);\n const result = await this.placeRouter.navigationState.canDeactivatePlace(component, currentUrl, nextUrl);\n return this.handleGuardResult(result);\n }\n\n private handleGuardResult(result) {\n if (result instanceof UrlSnapshot) {\n return result.urlTree;\n } else {\n return result;\n }\n }\n\n // @Trace()\n protected async authorisePlaceThen(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot, runPlaceGuards: (placeDefinition: PlaceDefinition) => Promise<boolean | UrlTree>) {\n if (PlaceComponent.isPlaceComponentConstructor(activatedRoute.component)) {\n const placeDefinition = PlaceComponent.getDefinition(activatedRoute.component);\n const authoriseResult = placeDefinition.authenticate ? await this.isAuthorised(activatedRoute, state) : true;\n if (authoriseResult === true) {\n // we're authorised, now run the place guards.\n return runPlaceGuards(placeDefinition);\n } else {\n console.log('not authorised result', authoriseResult);\n return authoriseResult;\n }\n } else {\n return lang.illegalState(`expected component to be an instance of PlaceComponent, got ${activatedRoute.component}`);\n }\n }\n\n // @Trace()\n async isAuthorised(activatedRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean | UrlTree> {\n const authorised = this.getAuthGuard(this.injector).canActivate(activatedRoute, state);\n return (authorised instanceof Observable) ? authorised.toPromise() : authorised;\n }\n\n abstract getAuthGuard(injector: Injector): CanActivate;\n\n // @Trace()\n async cleanInteractionState(route: ActivatedRouteSnapshot, state: RouterStateSnapshot, then: () => Promise<boolean | UrlSnapshot>): Promise<boolean | UrlSnapshot> {\n const url = this.placeRouter.parseUrl(state.url);\n if (!this.interactionService.isActive() && url.hasInteractionIds()) {\n // This happens if we reload the page or the url was pasted as the route should only be activated\n // after the interaction context has become active.\n return url.removeInteractionIds();\n } else {\n return then();\n }\n }\n\n}\n","import _ from 'lodash';\n\nexport interface Formatter<T> {\n format(value: T): string;\n\n parse(value: string): T;\n}\n\nexport namespace Formatter {\n\n class StringType implements Formatter<string> {\n format(value: string): string {\n return value;\n }\n\n parse(value: string): string {\n return value;\n }\n }\n\n class NumberType implements Formatter<number> {\n format(value: number): string {\n return _.isNumber(value) && !_.isNaN(value) ? `${value}` : null;\n }\n\n parse(value: string): number {\n const parsed = Number.parseFloat(value);\n return _.isNaN(parsed) ? null : parsed;\n }\n }\n\n class BooleanType implements Formatter<boolean> {\n format(value: boolean): string {\n return value ? 'true' : 'false';\n }\n\n parse(value: string): boolean {\n return value === 'true';\n }\n }\n\n export const STRING = new StringType();\n export const NUMBER = new NumberType();\n export const BOOLEAN = new BooleanType();\n}\n","export type JsonPrimitive = boolean | number | string;\nexport type AnyJson = JsonPrimitive | null | JsonArray | JsonMap;\n\nexport interface JsonArray extends Array<AnyJson> {\n}\n\nexport interface JsonMap {\n [key: string]: AnyJson;\n}\n\n","import { UseDelegate } from '@coolon/pectin';\nimport { Klass, Opts } from '@coolon/typescript-utilities';\nimport { ROUTE_PARAMETER_LIST_KEY } from '../place-component';\nimport { ParameterDefinition } from './parameter-definition.class';\nimport { Formatter } from './formatter';\n\n\nexport interface RouteIdOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T;\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T>> | ParameterSanitiser<T>;\n}\n\nexport interface RouteListParameterOptions<T> {\n as?: string;\n optional?: boolean;\n remember?: boolean;\n defaultValue?: T[];\n storeInUrl?: Formatter<T>\n // sanitiser?: Constructable<ParameterSanitiser<T[]>> | ParameterSanitiser<T[]>;\n}\n\nexport function RouteId<T extends string | number>(type: Formatter<T>, options?: RouteIdOptions<T>): PropertyDecorator {\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.RouteId(propertyKey.toString(), options, type);\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate({tag: `@RouteId(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n };\n}\n\nexport function VisitParameter<T>(options?: RouteParameterOptions<T>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate({tag: `@VisitParameter(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n };\n}\n\nexport function VisitParameterList<E>(options?: RouteListParameterOptions<E>): PropertyDecorator {\n const opts = Opts.get(options);\n return (prototype: Object, propertyKey: string | symbol) => {\n const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, opts.getOptional(\"storeInUrl\", null));\n Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n UseDelegate({tag: `@VisitParameterList(${prototype.constructor.name}.${propertyKey.toString()})`})(prototype, propertyKey);\n };\n}\n\n// export function RouteParameter<T>(type: ParameterType<T>, options?: RouteParameterOptions<T>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ValueParameter(propertyKey.toString(), options, type);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n//\n// export function RouteParameterList<E>(elementType: ParameterType<E>, options?: RouteListParameterOptions<E>): PropertyDecorator {\n// return (prototype: Object, propertyKey: string | symbol) => {\n// const param = new ParameterDefinition.ArrayParameter(propertyKey.toString(), options, elementType);\n// Klass.get(prototype).addToOwnMetadataList(ROUTE_PARAMETER_LIST_KEY, param);\n// UseDelegate()(prototype, propertyKey);\n// };\n// }\n","import { Injector } from '@angular/core';\nimport { Visit } from '../visit';\nimport { ParameterSnapshot } from './parameter-snapshot';\n\nexport interface ParameterSanitiser<S> {\n sanitise(parameterValue: ParameterSnapshot<S>, visit?: Visit, injector?: Injector): Promise<S> | S;\n}\n","import { ParameterDefinition } from './parameter-definition.class';\n\nexport interface ParameterSnapshot<T> {\n definition: ParameterDefinition<T, any>\n readonly value: T;\n isMissing(): boolean;\n}\n"],"names":["tslib_1.__extends","DelegatingValueModel","assert","UnaryCommand","lang","Directive","ElementRef","Inject","Input","HostListener","GarbageCollector","Logger","NgZone","DOCUMENT","NgModule","CommonModule","BrowserAnimationsModule","FormsModule","MatInputModule","MatFormFieldModule","MatSelectModule","MatTabsModule","DelegatingFormValueModel","EventEmitter","Output","tslib_1.__decorate","UseDelegate","ValueModel","Component","ListModel","StoreInListModel","InjectionToken","Activity","Dsl","ConfirmThenDialogComponent","DelegatingListModel","Deferred","Injector","ComponentFactoryResolver","ViewContainerRef","MutableStream","MutableValueModel","MutableListModel","ViewChild","ViewChildren","Injectable","InteractionService","MatButtonModule","MatDialogModule","PortalModule","RouterModule","Opts","_","ParameterDefinition","Memoize","PlaceDefinition","Binding","PlaceComponent","Klass","_.isNil","_.isEqual","NavigationState","UrlSegment","UrlSnapshot","router","NavigationStart","NavigationEnd","NavigationError","NavigationCancel","Router","UrlSerializer","Location","style","query","group","animate","trigger","transition","Guard","Optional","SkipSelf","StoreInValueModel","Command","HostBinding","MatProgressSpinnerModule","MatListModule","MatTooltipModule","MatIconModule","Bounds","ValueHolder","MatDialog","MatDialogConfig","MAT_DIALOG_DEFAULT_OPTIONS","Observable","Formatter"],"mappings":";;;;;;;;;IAAA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA,IAAI,aAAa,GAAG,SAAS,CAAC,EAAE,CAAC,EAAE;IACnC,IAAI,aAAa,GAAG,MAAM,CAAC,cAAc;IACzC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;IACpF,QAAQ,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,IAAI,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;;AAEF,IAAO,SAAS,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;IAChC,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;;AAED,IAAO,IAAI,QAAQ,GAAG,WAAW;IACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC,EAAE;IACrD,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IAC7D,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7B,YAAY,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,SAAS;IACT,QAAQ,OAAO,CAAC,CAAC;IACjB,MAAK;IACL,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,EAAC;;AAED,IAAO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;IACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,SAAS;IACT,IAAI,OAAO,CAAC,CAAC;IACb,CAAC;;AAED,IAAO,SAAS,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;IAC1D,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACnI,SAAS,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACtJ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;;AAED,IAAO,SAAS,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;IAC/C,IAAI,OAAO,UAAU,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE;IACzE,CAAC;;AAED,IAAO,SAAS,UAAU,CAAC,WAAW,EAAE,aAAa,EAAE;IACvD,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;;AAED,IAAO,SAAS,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS,EAAE;IAC7D,IAAI,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM,EAAE;IAC/D,QAAQ,SAAS,SAAS,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACnG,QAAQ,SAAS,QAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;IACtG,QAAQ,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;IACvJ,QAAQ,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9E,KAAK,CAAC,CAAC;IACP,CAAC;;AAED,IAAO,SAAS,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrH,IAAI,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7J,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,OAAO,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;IACtE,IAAI,SAAS,IAAI,CAAC,EAAE,EAAE;IACtB,QAAQ,IAAI,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;IACtE,QAAQ,OAAO,CAAC,EAAE,IAAI;IACtB,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzK,YAAY,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;IACzB,gBAAgB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM;IAC9C,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxE,gBAAgB,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;IACjE,gBAAgB,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IACjE,gBAAgB;IAChB,oBAAoB,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE;IAChI,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IAC1G,oBAAoB,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;IACzF,oBAAoB,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IACvF,oBAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;IAC1C,oBAAoB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS;IAC3C,aAAa;IACb,YAAY,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,SAAS,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;IAClE,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACzF,KAAK;IACL,CAAC;;AAED,IAAO,SAAS,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE;IACzC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;;AAED,IAAO,SAAS,QAAQ,CAAC,CAAC,EAAE;IAC5B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACtE,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,OAAO;IACX,QAAQ,IAAI,EAAE,YAAY;IAC1B,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAC/C,YAAY,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACpD,SAAS;IACT,KAAK,CAAC;IACN,CAAC;;AAED,IAAO,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;IAC7B,IAAI,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,IAAI;IACR,QAAQ,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACnF,KAAK;IACL,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;IAC3C,YAAY;IACZ,QAAQ,IAAI;IACZ,YAAY,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,SAAS;IACT,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE;IACzC,KAAK;IACL,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;;AAED,IAAO,SAAS,QAAQ,GAAG;IAC3B,IAAI,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;IACtD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,OAAO,EAAE,CAAC;IACd,CAAC;;AAED,IAAO,SAAS,cAAc,GAAG;IACjC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxF,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;IACpD,QAAQ,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;IACzE,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;;AAEF,IAAO,SAAS,OAAO,CAAC,CAAC,EAAE;IAC3B,IAAI,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;;AAED,IAAO,SAAS,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;IACjE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;IAClE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1H,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IAC9I,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;IACtF,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IAC5H,IAAI,SAAS,OAAO,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;IACtD,IAAI,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;;AAED,IAAO,SAAS,gBAAgB,CAAC,CAAC,EAAE;IACpC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAChJ,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;;AAED,IAAO,SAAS,aAAa,CAAC,CAAC,EAAE;IACjC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;IAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACrN,IAAI,SAAS,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,EAAE,EAAE,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;IACpK,IAAI,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;;AAED,IAAO,SAAS,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE;IAClD,IAAI,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE;IACnH,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC;;AAEF,IAAO,SAAS,YAAY,CAAC,GAAG,EAAE;IAClC,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,IAAI,MAAM,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,GAAG,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACnG,IAAI,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;IACzB,IAAI,OAAO,MAAM,CAAC;IAClB,CAAC;;AAED,IAAO,SAAS,eAAe,CAAC,GAAG,EAAE;IACrC,IAAI,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;;;;;;;;;AChMD;QAI+CA,oCAAgB;QA2B7D,0BAAwC,UAAsB;YAA9D,YACE,iBAAO,SACR;YAFuC,gBAAU,GAAV,UAAU,CAAY;YAxBtD,qBAAe,GAAG,IAAIC,2BAAoB,EAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAYzE,+BAAyB,GAAG,KAAK,CAAC;;SAczC;QAxBD,sBACI,2CAAa;;;;YAIjB;gBACE,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;;;;;YAPD,UACkB,OAAuC;gBACvD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;aACpE;;;WAAA;QAQD,sBACI,8CAAgB;;;;YAKpB;gBACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;aAC/B;;;;;YARD,UACqB,KAAQ;gBAC3B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;gBACtC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC;;;WAAA;;;;QAUD,mCAAQ;;;QAAR;YACEC,aAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,aAAa,YAAYC,mBAAY,EAAE;gBAC9C,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;oBACnCC,WAAI,CAAC,YAAY,CAAC,+DAA+D,CAAC,CAAC;iBACpF;aACF;iBAAM;gBACL,IAAI,IAAI,CAAC,yBAAyB,EAAE;oBAClCA,WAAI,CAAC,YAAY,CAAC,wDAAwD,CAAC,CAAC;iBAC7E;aACF;SACF;;;;QAED,0CAAe;;;QAAf;YAAA,iBAiBC;;;YAdS,IAAA,0CAAK;YACb,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS;;;;YAAC,UAAA,OAAO;gBAC3C,IAAI,OAAO,EAAE;oBACX,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;oBAC1D,IAAI,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG,EAAE;wBACjD,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;qBACvE;iBACF;qBAAM;oBACL,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;oBACnE,IAAI,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,KAAK,GAAG,EAAE;wBACjD,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;qBACvD;iBACF;aACF,EAAC,CAAC;SACJ;;;;QAED,sCAAW;;;QAAX;YACE,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;;;;;QAID,sCAAW;;;;QADX,UACY,MAAa;YACvB,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE;gBACpC,IAAI,IAAI,CAAC,aAAa,YAAYD,mBAAY,EAAE;oBAC9C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBAClF;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC7D;aACF;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;aACrD;SACF;;oBArFFE,cAAS,SAAC;;wBAET,QAAQ,EAAE,iBAAiB;qBAC5B;;;;oBANkCC,eAAU,uBAkC9BC,WAAM,SAACD,eAAU;;;oCAtB7BE,UAAK;uCAYLA,UAAK;kCAmDLC,iBAAY,SAAC,OAAO,EAAE,CAAC,QAAQ,CAAC;;QAcnC,uBAAC;KAAA,CAlF8CC,uBAAgB,GAkF9D;;;;;;QAhFC,oCAAiD;;;;;QACjD,2CAAiF;;;;;QAWjF,6CAA6B;;;;;QAC7B,qDAA0C;;;;;QAY9B,sCAAkD;;;;;;;;QC/BvBV,uCAAgB;QAAzD;;SAKC;;;;QAHC,yCAAW;;;QAAX;YACE,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;QACH,0BAAC;KALD,CAAyCU,uBAAgB;;;;;;;QCOdV,yCAAmB;QAqB5D,+BAAiD,EAAc,EAClB,MAAc,EAC7B,QAAa;YAF3C,YAGE,iBAAO,SAGR;YANgD,QAAE,GAAF,EAAE,CAAY;YAClB,YAAM,GAAN,MAAM,CAAQ;;YAIzD,KAAI,CAAC,QAAQ,sBAAG,QAAQ,EAAY,CAAC;;SACtC;;;;QAnBD,yCAAS;;;QADT;YAEE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;aACtD;SACF;;;;QAGD,0CAAU;;;QADV;YAEE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACrB,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;aACvD;SACF;;;;QAUD,wCAAQ;;;QAAR;SACC;;;;QAED,+CAAe;;;QAAf;YAAA,iBAYC;;YAVC,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;gBACb,IAAA,0CAAK;gBACb,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,SAAS;;;;gBAAC,UAAC,OAAO;oBACpE,IAAI,OAAO,IAAI,CAAC,KAAI,CAAC,eAAe,EAAE,EAAE;wBACtC,KAAI,CAAC,WAAW,EAAE,CAAC;qBACpB;iBACF,EAAC,CAAC;aACJ;iBAAM;gBACLW,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;aACrD;SACF;;;;;QAEO,0CAAU;;;;QAAlB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC;SAC5E;;;;;;QAGD,+CAAe;;;;;QAAf;YACE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzC;;;;;;;QAGD,yCAAS;;;;;;QAAT,UAAU,OAAgB;YACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC;SAChD;;;;;QAED,2CAAW;;;;QAAX,UAAY,OAAmB;YAA/B,iBAmBC;YAnBW,wBAAA,EAAA,WAAmB;YAC7B,IAAI,IAAI,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACvD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;oBAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;iBAC1B;;gBAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;oBAC3BA,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,0BAAwB,OAAO,gBAAa,CAAC,CAAC;oBACnE,IAAI,OAAO,GAAG,CAAC,EAAE;;;wBAGf,qBAAqB;;;wBAAC;4BACpB,KAAI,CAAC,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;yBAC/B,EAAC,CAAC;qBACJ;yBAAM;wBACLA,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;qBACjG;iBACF;aACF;SACF;QAED,sBAAI,8CAAW;;;;YAAf;gBACE,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;aACzD;;;WAAA;;;;;;QAGD,yDAAyB;;;;;QAAzB;YACE,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC;SAChF;;;;;;QAGD,wCAAQ;;;;;QAAR;;gBACQ,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE;;gBACpD,OAAO,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;;YAE9D,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SACjD;;oBApGFN,cAAS,SAAC;;wBAET,QAAQ,EAAE,sBAAsB;qBACjC;;;;oBARkCC,eAAU,uBA8B9BC,WAAM,SAACD,eAAU;oBA9B4CM,WAAM,uBA+BnEL,WAAM,SAACK,WAAM;oDACbL,WAAM,SAACM,eAAQ;;;yCAnB3BL,UAAK;yCACLA,UAAK;gCAELC,iBAAY,SAAC,SAAS;iCAOtBA,iBAAY,SAAC,UAAU;;QAmF1B,4BAAC;KAAA,CAjG0C,mBAAmB,GAiG7D;;;;;;QA/FC,yCAAoC;;QAEpC,mDAA8C;;QAC9C,mDAAyC;;;;;QAgB7B,mCAAmD;;;;;QACnD,uCAA+C;;;;;;;AChC7D;QASA;SAqBC;;oBArBAK,aAAQ,SAAC;wBACR,YAAY,EAAE;4BACZ,gBAAgB;4BAChB,qBAAqB;yBACtB;wBACD,OAAO,EAAE;4BACPC,mBAAY;4BACZC,kCAAuB;4BACvBC,iBAAW;4BACXC,uBAAc;4BACdC,2BAAkB;4BAClBC,wBAAe;4BACfC,kBAAa;yBACd;wBACD,OAAO,EAAE;4BACP,gBAAgB;4BAChB,qBAAqB;yBACtB;qBAEF;;QAED,uBAAC;KArBD;;;;;;;;;;ACFA;QAAwDrB,0CAAmB;QAkEzE;YAAA,YACE,iBAAO,SAOR;YAxEQ,gBAAU,GAAG,IAAIsB,+BAAwB,EAAK,CAAC;;;YAoB9C,WAAK,GAAG,IAAIC,iBAAY,EAAE,CAAC;;YAE3B,UAAI,GAAG,IAAIA,iBAAY,EAAE,CAAC;;YAE1B,cAAQ,GAAG,IAAIA,iBAAY,EAAE,CAAC;;YAE9B,eAAS,GAAG,IAAIA,iBAAY,EAAE,CAAC;;gBAwCjC,IAAI,GAAG,KAAI;YACjB,KAAI,CAAC,iBAAiB,GAAG;gBACvB,YAAY;;;;;gBAAZ,UAAa,OAA2B,EAAE,IAAwC;oBAChF,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;iBACzB;aACF,CAAC;;SACH;QArED,sBAAI,kDAAc;;;;;YAAlB,UAAmB,KAAoB;gBACrC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACpC;;;WAAA;;;;QA0BD,4CAAW;;;QADX;YAEE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACtC;;;;QAGD,8CAAa;;;QADb;YAEE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACnB;;;;QAGD,+CAAc;;;QADd;YAEE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAClB;;;;QAGD,+CAAc;;;QAAd;YACE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACtB;;;;QAED,gDAAe;;;QAAf;YACE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvB;;;;;;QAES,6CAAY;;;;;QAAtB,UAAuB,OAAqB;YAC1C,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;gBACpC,OAAO,CAAC,OAAO,EAAE,CAAC;aACnB;SACF;;;;QAYD,yCAAQ;;;QAAR;SACC;;;;QAED,0CAAS;;;QAAT;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;SAC3B;QAED,sBAAI,2CAAO;;;;YAAX;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;aAChC;;;WAAA;;;;QAED,0CAAS;;;QAAT;YACE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;SAC1C;QAED,sBAAI,6CAAS;;;;YAAb;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;aAClC;;;WAAA;QAED,sBAAI,8CAAU;;;;YAAd;gBACE,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;aAC1D;;;WAAA;;qCA7FAf,UAAK,SAAC,YAAY;4BAKlBA,UAAK;iCACLA,UAAK;2BACLA,UAAK;kCACLA,UAAK;mCAELA,UAAK,SAAC,eAAe;kCACrBA,UAAK,SAAC,cAAc;mCACpBA,UAAK,SAAC,eAAe;oCACrBA,UAAK,SAAC,gBAAgB;mCACtBA,UAAK,SAAC,eAAe;4BAIrBgB,WAAM;2BAENA,WAAM;+BAENA,WAAM;gCAENA,WAAM;kCAINf,iBAAY,SAAC,OAAO;oCAKpBA,iBAAY,SAAC,SAAS;qCAMtBA,iBAAY,SAAC,UAAU;;QAtCxBgB;YADsBC,kBAAW,EAAE;sCACTC,iBAAU;6CAAVA,iBAAU;oEAEnC;QA6FH,6BAAC;KAAA,CApGuD,mBAAmB,GAoG1E;;;QAlGC,4CAAwD;;QAOxD,uCAAuB;;QACvB,4CAAiD;;QACjD,sCAAsB;;QACtB,6CAA6B;;QAE7B,8CAAmD;;QACnD,6CAAiD;;QACjD,8CAAmD;;QACnD,+CAAqD;;QACrD,8CAAmD;;QAInD,uCAAqC;;QAErC,sCAAoC;;QAEpC,0CAAwC;;QAExC,2CAAyC;;QAEzC,mDAA8C;;;;;;;;QC5BN3B,wCAA8B;QAEtE;mBACE,iBAAO;SACR;;;;QAED,uCAAQ;;;QAAR;SACC;;oBAZF4B,cAAS,SAAC;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,unBAA4C;;qBAE7C;;;;QAUD,2BAAC;KAAA,CATyC,sBAAsB;;;;;;;QCDpB5B,0CAA8B;QAExE;mBACE,iBAAO;SACR;;;;QAED,yCAAQ;;;QAAR;SACC;;oBAZF4B,cAAS,SAAC;wBACT,QAAQ,EAAE,oBAAoB;wBAC9B,2nBAA8C;;qBAE/C;;;;QAUD,6BAAC;KAAA,CAT2C,sBAAsB;;;;;;;;;ACJlE;QAKmD5B,wCAAyB;QAc1E;YAAA,YACE,iBAAO,SACR;YAJD,uBAAiB;;;;YAAuB,UAAC,MAAM,IAAK,OAAA,CAAC,MAAM,IAAI,KAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAI,CAAC,WAAW,CAAC,GAAG,MAAM,GAAA,EAAC;;SAIpH;;;;QAED,uCAAQ;;;QAAR;SACC;;oBAxBF4B,cAAS,SAAC;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,+vBAA4C;;qBAE7C;;;;;mCAGEpB,UAAK;8BAGLA,UAAK;kCAGLA,UAAK;wCAGLA,UAAK;;QARNiB;YADUC,kBAAW,EAAE;sCACTG,gBAAS;kEAAI;QAG3BJ;YADUK,uBAAgB,CAAC,cAAc,CAAC;;6DAC7B;QAef,2BAAC;KAAA,CArBkD,sBAAsB,GAqBxE;;;QAnBC,4CAC2B;;QAE3B,uCACa;;QAEb,2CACqB;;QAErB,iDACqH;;;;;;;;QCb7E9B,wCAA8B;QAEtE;mBACE,iBAAO;SACR;;;;QAED,uCAAQ;;;QAAR;SACC;;oBAZF4B,cAAS,SAAC;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,+lBAA4C;;qBAE7C;;;;QAUD,2BAAC;KAAA,CATyC,sBAAsB;;;;;;ACRhE;QAQE;SACC;;oBAPFA,cAAS,SAAC;wBACT,QAAQ,EAAE,UAAU;wBACpB,YAAoC;;qBAErC;;;;QAID,oBAAC;KARD;;;;;;ACFA;QAaA;SA4BC;;oBA5BAd,aAAQ,SAAC;wBACR,YAAY,EAAE;4BACZ,oBAAoB;4BACpB,oBAAoB;4BACpB,sBAAsB;4BACtB,oBAAoB;4BACpB,aAAa;yBACd;wBACD,OAAO,EAAE;4BACPC,mBAAY;4BACZC,kCAAuB;4BACvBC,iBAAW;4BACXC,uBAAc;4BACdC,2BAAkB;4BAClBC,wBAAe;4BACfC,kBAAa;4BACb,gBAAgB;yBACjB;wBACD,OAAO,EAAE;4BACP,oBAAoB;4BACpB,oBAAoB;4BACpB,sBAAsB;4BACtB,oBAAoB;4BACpB,aAAa;yBACd;qBAEF;;QAED,uBAAC;KA5BD;;;;;;;ACTA,QAAa,aAAa,GAAG,IAAIU,mBAAc,CAAM,yBAAyB,CAAC;;;;;AAE/E;;;;;QAAsD/B,4BAAgB;QAAtE;YAAA,qEAmCC;YAjCkB,gBAAU,GAAG,IAAIC,2BAAoB,EAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;SAiCtF;;;;;QA9BC,6BAAU;;;;QAAV,UAAW,eAAyC;YAClDC,0BAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACpC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;SACzC;;;;;QAED,uBAAI;;;;QAAJ,UAAK,MAAU;YACb,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC7C;;;;;QAED,yBAAM;;;;QAAN,UAAO,KAAS;YACd,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACvC;;;;;;QAGD,kCAAe;;;;;QAAf;SACC;QAGD,sBAAI,0BAAI;;;;YAAR;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;aACjC;;;WAAA;;;;;QAED,4BAAS;;;;QAAT,UAAU,SAA8B;YACtC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACxC;;;;QAED,yBAAM;;;QAAN;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SAC9B;QAEH,eAAC;KAnCD,CAAsDQ,uBAAgB,GAmCrE;;;;;;QAjCCsB,iCAAqF;;;;;QACrFA,uCAAmD;;IAkCrD,WAAiB,QAAQ;;;;;QAEvB,wBAGC;;;;YAFC,2BAA4B;;YAC5B,6BAA6B;;KAEhC,EANgBA,WAAQ,KAARA,WAAQ,QAMxB;;;;;;;;;;;ACvCD;;;;;;QAA8DhC,oCAAiB;QAA/E;;SACC;QAAD,uBAAC;KADD,CAA8DgC,WAAQ;;;;;;;QCA5BhC,wCAA6B;QAErE,8BAA4C,KAAY;YAAxD,YACE,iBAAO,SACR;YAF2C,WAAK,GAAL,KAAK,CAAO;;SAEvD;;;;QAED,uCAAQ;;;QAAR;SACC;;oBAZF4B,cAAS,SAAC;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,0TAA4C;;qBAE7C;;;;oDAGcrB,WAAM,SAAC,aAAa;;QAOnC,2BAAC;KAAA,CATyC,gBAAgB,GASzD;;;QAPa,qCAA4C;;;;;;;;;;ACP1D;;;;QAAiDP,sCAAgB;QAAjE;;SAqEC;;;;;;;;QA5DC,qCAAQ;;;;QAAR;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SAC1B;;;;QAED,oCAAO;;;QAAP;;;YAGEE,aAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjC,iBAAM,OAAO,WAAE,CAAC;SACjB;;;;;;;;;;QAMK,iDAAoB;;;;;QAA1B;;;;;;;4BACU,IAAI,GAAK+B,UAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAA1B;4BACK,qBAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA;;4BAAzC,QAAQ,GAAG,SAA8B;4BAC/C,sBAAO,IAAI,OAAO;;;;gCAAC,UAAA,OAAO;oCACxB,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,cAAc,CAAC;yCAC9B,OAAO;;;;oCAAC,UAAA,YAAY;wCACnB,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC;qCACxB,GAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oCACrB,QAAQ,CAAC,MAAM,EAAE,CAAC;iCACnB,EAAC,EAAC;;;;SACJ;QAmCH,yBAAC;KArED,CAAiDvB,uBAAgB,GAqEhE;;;QAnEC,oCAA8C;;QAC9C,0CAAmE;;QACnE,4CAAsE;;;;;;;QAoCtE,iEAAgE;;;;;;;;QAEhE,+EAAsG;;;;;;QAEtG,0DAA4C;;;;;;QAE5C,8DAAqD;;;;;;QAErD,sEAAgE;;;;;;;;;;QAQhE,sFAAsH;;;;;;;;;;ACtDxH;QAKuDV,8CAA8D;QAEnH,oCAA4C,MAA8C,EAAW,kBAAqC;YAA1I,YACE,iBAAO,SAER;YAH2C,YAAM,GAAN,MAAM,CAAwC;YAAW,wBAAkB,GAAlB,kBAAkB,CAAmB;YAExIE,aAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;SACvB;;;;QAED,6CAAQ;;;QAAR;SACC;QAED,sBAAI,+CAAO;;;;YAAX;gBACE,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;aAC5B;;;WAAA;;;;QAED,kDAAa;;;QAAb;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SAC/D;;;;QAED,8CAAS;;;QAAT;YAAA,iBAIC;YAHC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC9E,IAAI;;;;YAAC,UAAC,MAAM,IAAK,OAAA,KAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAA,EAAC;iBACnC,KAAK;;;;YAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAA,EAAC,CAAC;SACvC;;oBA3BF0B,cAAS,SAAC;wBACT,QAAQ,EAAE,yBAAyB;wBACnC,wdAAmD;;qBAEpD;;;;oDAGcrB,WAAM,SAAC,aAAa;oBAT1B,kBAAkB;;QA8B3B,iCAAC;KAAA,CAvBsD,gBAAgB,GAuBtE;;;QArBa2B,6BAA8E;;QAAEA,yCAA8C;;IAuB5I,WAAiB,0BAA0B;;;;;QACzC,mBAIC;;;;YAHC,uBAAgB;;YAChB,4BAA8C;;YAC9C,oBAAO;;KAEV,EANgBA,WAA0B,KAA1BA,WAA0B,QAM1C;;;;;;;QChCgDlC,+CAA+B;QAE9E,qCAA4C,OAAgB;YAA5D,YACE,iBAAO,SAER;YAH2C,aAAO,GAAP,OAAO,CAAS;YAE1DE,aAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;;SACxB;;;;QAED,8CAAQ;;;QAAR;SACC;;;;QAED,mDAAa;;;QAAb;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SAC/D;;oBAjBF0B,cAAS,SAAC;wBACT,QAAQ,EAAE,yBAAyB;wBACnC,mdAAmD;;qBAEpD;;;;oDAGcrB,WAAM,SAAC,aAAa;;QAWnC,kCAAC;KAAA,CAbgD,gBAAgB,GAahE;;;QAXa,8CAAgD;;;;;;;;;;ACK9D;;;;QAAqDP,0CAAkB;QAWrE;YAAA,YACE,iBAAO,SASR;;;;;YAfgB,2BAAqB,GAAG,IAAImC,0BAAmB,EAAsB,CAAC;YAO/E,IAAA,kCAAkF,EAAhF,gBAAK,EAAE,oBAAO,EAAE,kBAAM,EAAE,cAAI,EAAE,gBAAK,EAAE,oBAAO,EAAE,sBAAkC;YACxF,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa;;;;YAAC,UAAC,QAAQ;gBACzD,IAAI,KAAI,CAAC,0BAA0B,EAAE;oBACnC,KAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAClD,KAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;iBACxC;aACF,EAAC,CAAC;;SACJ;;;;;;QAES,gDAAe;;;;;QAAzB,UAA0B,YAA2C;YACnE,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SACtD;QAED,sBAAI,gDAAY;;;;YAAhB;gBACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;aAC5C;;;WAAA;QAED,sBAAI,kDAAc;;;;YAAlB;gBACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;aAC9B;;;WAAA;;;;;;;;;;QAMK,kDAAiB;;;;;QAAvB;;;oBACE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;wBACpB,sBAAO,OAAO,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAC;qBAClD;yBAAM;wBACL,IAAI,IAAI,CAAC,0BAA0B,EAAE;;4BAEnC,sBAAO,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAC;yBAChD;6BAAM;4BACL,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;;;gCAGhC,IAAI,CAAC,0BAA0B,GAAGC,eAAQ,CAAC,KAAK,EAAE,CAAC;gCACnD,sBAAO,IAAI,CAAC,0BAA0B,CAAC,OAAO,EAAC;6BAChD;iCAAM;gCACL,sBAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAC;6BACpC;yBACF;qBACF;;;;SACF;;;;;;;QAGD,8CAAa;;;;;;QAAb,UAAuB,YAA8C,EAAE,IAAQ;YAC7E,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;SAChD;;;;;QAED,wCAAO;;;;QAAP,UAAQ,OAAgB;;;;YAItB,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI;;;YAAC,cAAM,OAAA,IAAI,GAAA,EAAC,CAAC,KAAK;;;YAAC,cAAM,OAAA,KAAK,GAAA,EAAC,CAAC;SAC1E;;;;;QAED,sCAAK;;;;QAAL,UAAM,KAAY;;YAEhB,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SAChE;;;;;QAED,gDAAe;;;;QAAf,UAAgB,OAAgB;YAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,2BAA2B,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SACxE;;;;;;;;QAED,4CAAW;;;;;;;QAAX,UAAqB,OAAgB,EAAE,YAA8C,EAAE,IAAQ;YAC7F,OAAO,IAAI,CAAC,cAAc,CAAiDF,WAA0B,EAAE;gBACrG,OAAO,SAAA;gBACP,YAAY,EAAE,YAAY;gBAC1B,IAAI,EAAE,IAAI;aACX,EAAE,IAAI,CAAC,CAAC;SACV;QAEH,6BAAC;KAxFD,CAAqD,kBAAkB,GAwFtE;;;;;;;;QAlFC,uDAAuF;;;;;QAEvF,4DAAsE;;;;;QACtE,kDAAmE;;;;;;;;;;QAiDnE,kGAAwI;;;;;;;IC5E1I;;;;;;;;AAqBA;QAwBE,iCACU,wBAAkD,EAClD,gBAAkC,EAClC,QAAkB;YAFlB,6BAAwB,GAAxB,wBAAwB,CAA0B;YAClD,qBAAgB,GAAhB,gBAAgB,CAAkB;YAClC,aAAQ,GAAR,QAAQ,CAAU;SAE3B;QAlBD,sBACI,oDAAe;;;;YAKnB;gBACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;aAC9B;;;;;YARD,UACoB,eAA+C;gBACjEhC,aAAM,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACpC,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;gBACxC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;aACpC;;;WAAA;QAAA,CAAC;;;;QAeF,0CAAQ;;;QAAR;SACC;;;;;QAED,8CAAY;;;;QAAZ,UAAa,eAA+C;;gBACpD,QAAQ,GAAGmC,aAAQ,CAAC,MAAM,CAAC;gBAC/B,SAAS,EAAE;oBACT;wBACE,OAAO,EAAE,kBAAkB;wBAC3B,QAAQ,EAAE,IAAI,CAAC,kBAAkB;qBAClC;oBACD,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,CAAC,YAAY,EAAE;iBACnE;gBACD,MAAM,EAAE,IAAI,CAAC,QAAQ;aACtB,CAAC;;gBACI,gBAAgB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,eAAe,CAAC,aAAa,CAAC;YAC7G,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;gBACvC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACrD;SACF;QAED,sBAAI,8CAAS;;;;YAAb;gBACE,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;aAC3C;;;WAAA;;oBAxDFT,cAAS,SAAC;wBACT,QAAQ,EAAE,qBAAqB;wBAC/B,QAAQ,EAAE,EAAE;;qBAEb;;;;oBAvBCU,6BAAwB;oBAKxBC,qBAAgB;oBAHhBF,aAAQ;;;yCAwBP7B,UAAK;sCAILA,UAAK;;QA+CR,8BAAC;KA1DD,IA0DC;;;QAnDC,qDACuC;;;;;QACvC,mDAAyD;;;;;QAazD,uDAA8D;;;;;QAG5D,2DAA0D;;;;;QAC1D,mDAA0C;;;;;QAC1C,2CAA0B;;;;;;;;;;;;;;ICf9B;;;;;;;QAKE,oBAAqB,YAAe,EACf,aAA+C,EAC/C,kBAAsC,EACtC,iBAA2C;YAH3C,iBAAY,GAAZ,YAAY,CAAG;YACf,kBAAa,GAAb,aAAa,CAAkC;YAC/C,uBAAkB,GAAlB,kBAAkB,CAAoB;YACtC,sBAAiB,GAAjB,iBAAiB,CAA0B;YANxD,cAAS,GAAG,KAAK,CAAC;SAOzB;;;;QAED,wCAAmB;;;QAAnB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;SAC1B;;;;QAED,+BAAU;;;QAAV;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;SACvB;;;;;QAED,mCAAc;;;;QAAd,UAAe,SAA4B;YACzCN,aAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;QAED,sBAAI,iCAAS;;;;YAAb;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC;aACxB;;;WAAA;;;;;;;QAGD,2BAAM;;;;;;QAAN,UAAO,MAAS;YACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACvC;;;;;;;QAGD,6BAAQ;;;;;;QAAR,UAAS,KAAQ;YACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACxC;;;;QAED,4BAAO;;;QAAP;YACE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;SAC1B;QAEH,iBAAC;KAAA,IAAA;;;;;;QA1CC,+BAA0B;;;;;QAC1B,gCAAsC;;QAE1B,kCAAwB;;QACxB,mCAAwD;;QACxD,wCAA+C;;QAC/C,uCAAoD;;;;;AAuClE;QAKyDF,8CAAsB;QAoD7E;YAAA,YACE,iBAAO,SAKR;YAxDgB,yCAAmC,GAAG,IAAIwC,oBAAa,EAAO,CAAC;YAE/D,mCAA6B,GAAG,IAAIC,wBAAiB,EAAkC,CAAC;;YA+BzG,uCAAiC,GAAG,IAAIlB,iBAAY,EAAkC,CAAC;YAGvF,mBAAa,GAAG,KAAK,CAAC;YAQb,kBAAY,GAAG,IAAImB,uBAAgB,EAA6B,CAAC;YAIzD,mBAAa,GAAG,IAAIA,uBAAgB,EAAsB,CAAC;YAIpE,IAAA,kCAAkF,EAAhF,gBAAK,EAAE,oBAAO,EAAE,kBAAM,EAAE,cAAI,EAAE,gBAAK,EAAE,oBAAO,EAAE,sBAAkC;YACxF,KAAK,CAAC,KAAI,CAAC,mCAAmC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS;;;YAAC,cAAM,OAAA,KAAI,CAAC,wBAAwB,EAAE,GAAA,EAAC,CAAC;YAC9G,KAAI,CAAC,eAAe,CAAC,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAClD,KAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAI,CAAC,6BAA6B,CAAC,CAAC,QAAQ,EAAE,CAAC;;SACpE;QApDD,sBACI,oEAA4B;;;;YAsBhC;gBACE,OAAO,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC;aACjD;;;;;YAzBD,UACiC,cAA8C;gBAC7ExC,aAAM,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;;;gBAGvD,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;;oBACxB,IAAI,GAAG,IAAI;gBACjB,IAAI,cAAc,EAAE;oBAClB,IAAI,CAAC,6BAA6B,CAAC,KAAK,GAAG,cAAc,CAAC;oBAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,aAAa,EAAE,IAAI,EAAE;wBACrG,MAAM;;;;wBAAE,UAAC,MAAS;4BAChB,IAAI,CAAC,qBAAqB,EAAE,CAAC;4BAC7B,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;yBAC/B,CAAA;wBACD,QAAQ;;;;wBAAE,UAAC,KAAQ;4BACjB,IAAI,CAAC,qBAAqB,EAAE,CAAC;4BAC7B,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;yBAChC,CAAA;qBACF,CAAC,CAAC,CAAC;iBACL;aACF;;;WAAA;;;;QAiCD,6CAAQ;;;QAAR;SACC;;;;QAED,oDAAe;;;QAAf;YAAA,iBAKC;YAJO,IAAA,iCAA0C,EAAxC,gBAAK,EAAE,oBAAiC;YAChD,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS;;;YAAC,cAAM,OAAA,UAAU;;;YAAC,cAAM,OAAA,KAAI,CAAC,kBAAkB,EAAE,GAAA,EAAC,GAAA,EAAC,CAAC;YACtG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,SAAS;;;YAAC,cAAM,OAAA,KAAI,CAAC,mBAAmB,EAAE,GAAA,EAAC,CAAC;YACxF,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;;;;;;;QAED,mDAAc;;;;;;QAAd,UAA2B,YAAiD,EAAE,IAAS;YAAvF,iBAiBC;YAhBC,IAAI,CAAC,4BAA4B,EAAE,CAAC;;gBAC9B,IAAI,GAAG,IAAI;YACjB,OAAO,IAAI,OAAO;;;;;YAAK,UAAC,OAAO,EAAE,MAAM;;oBAC/B,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;oBACvD,MAAM;;;;oBAAE,UAAS,MAAU;wBACzB,OAAO,CAAC,MAAM,CAAC,CAAC;wBAChB,IAAI,CAAC,mCAAmC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;qBACtD,CAAA;oBACD,QAAQ;;;;oBAAE,UAAS,KAAS;wBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;wBACd,IAAI,CAAC,mCAAmC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;qBACtD,CAAA;iBACF,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC;aACpD,EAAC,CAAC;SACJ;;;;;QAEO,0DAAqB;;;;QAA7B;YACE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,6BAA6B,CAAC,KAAK,GAAG,IAAI,CAAC;YAChD,IAAI,CAAC,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnD;;;;;;;QAGO,6DAAwB;;;;;;QAAhC;YACE,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;;;;;;;QAGO,iEAA4B;;;;;;QAApC;YACE,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;;oBACpD,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK;;oBAC9B,qBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;;oBAChE,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;gBACpE,oBAAoB,CAAC,OAAO;;;;gBAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,EAAE,GAAA,EAAC,CAAC;gBAC/C,IAAI,CAAC,YAAY,CAAC,gBAAgB;;;;gBAAC,UAAA,KAAK;oBAEtC,KAAK,CAAC,KAAK,GAAG,qBAAmB,CAAC;iBACnC,EAAC,CAAC;aACJ;SACF;;;;;;;;;;;QAMO,gEAA2B;;;;;;QAAnC;;gBACQ,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;;gBACvC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,EAAE,GAAA,EAAC,GAAG,CAAC;YAC7E,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YACnC,OAAO,aAAa,KAAK,QAAQ,CAAC;SACnC;;;;;;;QAGO,wDAAmB;;;;;;QAA3B;YACE,IAAI,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;YACrD,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;;;;;QAEO,uDAAkB;;;;QAA1B;YACE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,mBAAmB,EAAE,GAAA,EAAC,CAAC,GAAG;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,GAAA,EAAC,CAAC;SAClI;;;;;QAEO,sDAAiB;;;;QAAzB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACxD;;oBAhJF0B,cAAS,SAAC;wBACT,QAAQ,EAAE,wBAAwB;wBAClC,8TAAkD;;qBAEnD;;;;;mDAOEpB,UAAK;wDA4BLgB,WAAM,SAAC,8BAA8B;oCAGrChB,UAAK;2BAGLmC,cAAS,SAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;8BAGlCC,iBAAY,SAAC,uBAAuB;;QAiGvC,iCAAC;KAAA,CA5IwD,sBAAsB,GA4I9E;;;;;;QA1IC,yEAAgF;;;;;QAEhF,mEAAyG;;QA8BzG,uEACuF;;QAEvF,mDACsB;;QAEtB,0CACkB;;QAElB,6CAC2D;;QAE3D,kDAA0E;;QAE1E,4CAAoC;;;;;QAEpC,mDAA4E;;;;;;;;;;ACrI9E;;;;QAAA;SAGC;QAAD,qCAAC;KAAA,IAAA;;;;;;QADC,oFAAwD;;;;;;;;QCctD,mBAAmB,GAAG,CAAC;AAE3B;QAiBE,4BAAqB,8BAA8D;YAA9D,mCAA8B,GAA9B,8BAA8B,CAAgC;YAZlE,YAAO,GAAG,IAAIlC,uBAAgB,EAAE,CAAC;YAEjC,qBAAgB,GAAG,IAAI+B,wBAAiB,EAAsB,CAAC;YAE/D,wCAAmC,GAAG,IAAIA,wBAAiB,EAA8B,CAAC;YAC1F,yCAAoC,GAAG,IAAIA,wBAAiB,EAA8B,CAAC;YAQpG,IAAA,yCAA0F,EAAxF,gBAAK,EAAE,oBAAO,EAAE,kBAAM,EAAE,cAAI,EAAE,gBAAK,EAAE,oBAAO,EAAE,sBAA0C;YAEhG,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC;iBAC7E,SAAS,CAAC,IAAI,CAAC,oCAAoC,CAAC;iBACpD,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAE/B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC/D,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzF,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC,QAAQ,EAAE,CAAC;;YAG3F,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC,IAAIC,uBAAgB,EAA8B,CAAC;iBACzF,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC;iBACjD,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC;iBAChD,SAAS,EAAE;iBACX,KAAK,CAAC,IAAI,CAAC,CAAC;SAEhB;;;;QAED,qCAAQ;;;QAAR;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;SAC1B;;;;QAED,0CAAa;;;QAAb;YACE,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;SAC1C;;;;;;;;;;QAMD,6DAAgC;;;;;QAAhC,UAAiC,UAAgC;YAC/D,OAAO,IAAI,CAAC,yCAAyC,CAAC,UAAU,CAAC,CAAC;SACnE;;;;;;;;;;QAMD,sEAAyC;;;;;QAAzC,UAA0C,UAAgC;;gBAClE,OAAO,GAAG,IAAI,CAAC,8BAA8B,CAAC,wBAAwB,EAAE;YAC9E,UAAU,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,mCAAmC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACjJ,OAAO,OAAO,CAAC;SAChB;;;;;QAED,+DAAkC;;;;QAAlC,UAAmC,kBAAsC;YACvE,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,OAAK,EAAE,mBAAqB,EAAE,kBAAkB,EAAE,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;SAC3L;;;;;;QAGD,6CAAgB;;;;;QAAhB;YACExC,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;SAC7C;;;;;;;;;;;;;;;;QASD,oEAAuC;;;;;;;;QAAvC;YACE,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,8BAA8B,CAAC,wBAAwB,EAAE,CAAC;;gBACvF,IAAI,GAAG,IAAI;YACjB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAC7C,OAAO;;;gBAAP;oBACE,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;iBACpC;aACF,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;SACpC;;oBAzFF2C,eAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;oBANQ,8BAA8B;;;iCAhBvC;KAoBA,IA0FC;;;;;;QArFCC,6BAAkD;;QAClDA,4BAAwC;;;;;QACxCA,sCAAgF;;;;;QAEhFA,yDAA2G;;;;;QAC3GA,0DAA4G;;;;;QAC5GA,+CAAgF;;QAEhFA,iDAA6D;;QAC7DA,4CAAwD;;QACxDA,6CAAyD;;QAE7CA,oDAAuE;;IA2ErF,WAAiB,kBAAkB;;;;QAEjC,uBAIC;;;;;;;YAHC,sDAA4B;;;;;YAE5B,uDAA6B;;QAG/B;YAA6B9C,2BAAgB;YAC3C,iBAAqB,EAAU,EACV,kBAAsC,EACtC,oBAAgD,EAChD,gBAAgD;gBAHrE,YAIE,iBAAO,SAKR;gBAToB,QAAE,GAAF,EAAE,CAAQ;gBACV,wBAAkB,GAAlB,kBAAkB,CAAoB;gBACtC,0BAAoB,GAApB,oBAAoB,CAA4B;gBAChD,sBAAgB,GAAhB,gBAAgB,CAAgC;gBAE7D,IAAA,kCAAkF,EAAhF,gBAAK,EAAE,oBAAO,EAAE,kBAAM,EAAE,cAAI,EAAE,gBAAK,EAAE,oBAAO,EAAE,sBAAkC;gBACxF,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,aAAa;;;gBAAC,cAAM,OAAA,KAAI,CAAC,SAAS,EAAE,GAAA,EAAC,CAAC;gBAC9E,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,aAAa;;;gBAAC,cAAM,OAAA,KAAI,CAAC,UAAU,EAAE,GAAA,EAAC,CAAC;gBAC/E,kBAAkB,CAAC,kBAAkB,CAAC,KAAI,CAAC,CAAC;;aAC7C;;;;;YAES,2BAAS;;;;YAAnB;gBACE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC;aACxC;;;;;YAEO,gCAAc;;;;YAAtB;gBACEE,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE;oBAC1FE,WAAI,CAAC,YAAY,CAAC,wJAAwJ,CAAC,CAAC;iBAC7K;aACF;;;;;YAES,4BAAU;;;;YAApB;gBACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC;aACxC;;;;;YAEO,uCAAqB;;;;YAA7B;gBACEF,0BAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;aAC3D;YACH,cAAC;SAhCD,CAA6BQ,uBAAgB,GAgC5C;QAhCY,0BAAO,UAgCnB,CAAA;;;YA/Ba,qBAAmB;;YACnB,qCAA+C;;YAC/C,uCAAyD;;YACzD,mCAAyD;;KA6BxE,EAzCgBoC,UAAkB,KAAlBA,UAAkB,QAyClC;;;;;;;;;ACjJD;QAKiE9C,sDAAsB;QASrF,4CAAqB,kBAAsC;YAA3D,YACE,iBAAO,SAER;YAHoB,wBAAkB,GAAlB,kBAAkB,CAAoB;YAFnD,aAAO,GAAG,IAAIyC,wBAAiB,CAAU,KAAK,CAAC,CAAC;YAItD,KAAI,CAAC,kBAAkB,CAAC,kCAAkC,CAAC,KAAI,CAAC,CAAC;;SAClE;;;;QAED,4DAAe;;;QAAf;YACE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;SAC5D;QAED,sBAAI,sDAAM;;;;YAAV;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;aAC9B;;;WAAA;;;;;;;;QAES,2DAAc;;;;;;;QAAxB,UAAqC,YAAiD,EAAE,IAAS;YAAjG,iBAiBC;YAhBC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;;gBACpB,IAAI,GAAG,IAAI;YACjB,OAAO,IAAI,OAAO;;;;;YAAK,UAAC,OAAO,EAAE,MAAM;gBACrC,KAAI,CAAC,kBAAkB,CAAC,4BAA4B,GAAG;oBACrD,aAAa,EAAE,YAAY;oBAC3B,YAAY,EAAE,IAAI;oBAClB,MAAM;;;;8BAAC,MAAM;wBACX,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;wBAC3B,OAAO,CAAC,MAAM,CAAC,CAAC;qBACjB;oBACD,QAAQ;;;;8BAAC,KAAK;wBACZ,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;wBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;qBACf;iBACF,CAAC;aACH,EAAC,CAAC;SACJ;;oBA5CFb,cAAS,SAAC;wBACT,QAAQ,EAAE,iCAAiC;wBAC3C,gcAA2D;;qBAE5D;;;;oBARQkB,UAAkB;;;yCAWxBH,cAAS,SAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;QAuClD,yCAAC;KAAA,CAzCgE,sBAAsB,GAyCtF;;;QAvCC,gEAC8D;;QAE9D,oEAAuD;;;;;QAEvD,qDAAwD;;QAE5C,gEAA+C;;;;;;;ACtB7D;QAeA;SAoCC;;oBApCA7B,aAAQ,SAAC;wBACR,OAAO,EAAE;4BACPC,mBAAY;4BACZgC,wBAAe;4BACfC,wBAAe;4BACf3B,sBAAa;4BACb4B,mBAAY;4BACZC,mBAAY;yBACb;wBACD,YAAY,EAAE;4BACZ,0BAA0B;4BAC1B,2BAA2B;4BAC3BhB,WAA0B;4BAC1B,oBAAoB;4BACpB,uBAAuB;4BACvB,kCAAkC;yBACnC;wBACD,OAAO,EAAE;4BACP,0BAA0B;4BAC1B,uBAAuB;4BACvB,kCAAkC;yBACnC;wBACD,eAAe,EAAE;4BACf,0BAA0B;4BAC1B,2BAA2B;4BAC3BA,WAA0B;4BAC1B,oBAAoB;yBACrB;wBACD,SAAS,EAAE;4BACTY,UAAkB;yBAInB;qBACF;;QAED,wBAAC;KApCD;;;;;;;;;;ACPA;;;;;QASE,6BAAqB,YAAoB,EAAE,OAAuC,EAAW,SAAwB;YAAhG,iBAAY,GAAZ,YAAY,CAAQ;YAAoD,cAAS,GAAT,SAAS,CAAe;YACnH,IAAI,CAAC,OAAO,GAAGK,wBAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SACpE;QAED,sBAAI,qCAAI;;;;YAAR;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aAC1D;;;WAAA;QAGD,sBAAI,iDAAgB;;;;;;;YAApB;gBACE,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;aACzB;;;WAAA;;;;;;;QAMS,4CAAc;;;;;;QAAxB,UAAyE,GAAM;YAC7E,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SAC5C;;;;;;;;;;QAGK,sCAAQ;;;;;;;;;QAAd,UAAe,KAAO,EAAE,KAAY,EAAE,YAA0B,EAAE,QAAkB;;;;oBAClF,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;wBACvB,aAAa,GAAGC,mBAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;wBAC7E,IAAI,IAAI,CAAC,QAAQ,IAAI,aAAa,EAAE;4BAClC,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;yBAC/C;wBACD,sBAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,EAAC;qBAC7D;yBAAM;;wBAEL,sBAAO,KAAK,EAAC;qBACd;;;;SACF;;;;;;QAEO,2CAAa;;;;;QAArB,UAAsB,KAAY;YAChC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACvC;QACH,0BAAC;KAAA,IAAA;;;QA/CCC,gDAAqC;;QACrCA,8CAAmC;;QAEnCA,+CAA2B;;QAC3BA,mDAAyB;;;;;QACzBA,8CAAsD;;QAE1CA,mDAA6B;;QAA2CA,gDAAiC;;;;;;QAerHA,0EAAyC;;;;;;;QAEzCA,uEAA6C;;IAyB/C,WAAiB,mBAAmB;;;;;QAElC,sBAMC;;;;YALC,qBAAY;;YACZ,2BAAmB;;YACnB,2BAAmB;;YACnB,+BAAiB;;;;;QAInB;;;;YAAgCrD,2BAAsB;YAAtD;gBAAA,qEAWC;gBAVU,eAAS,GAAG,IAAI,CAAC;gBACjB,aAAO,GAAG,KAAK,CAAC;;aAS1B;;;;;YAPC,8BAAY;;;;YAAZ,UAAa,KAAQ;gBACnB,OAAOoD,mBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACvB;;;;;;YAED,4BAAU;;;;;YAAV,UAAW,CAAM,EAAE,CAAM;gBACvB,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;YACH,cAAC;SAXD,CAAgC,mBAAmB,GAWlD;QAXY,2BAAO,UAWnB,CAAA;;;YAVC,4BAA0B;;YAC1B,0BAAyB;;;;;QAW3B;;;;YAAuCpD,kCAAsB;YAA7D;gBAAA,qEAWC;gBAVU,eAAS,GAAG,KAAK,CAAC;gBAClB,aAAO,GAAG,KAAK,CAAC;;aAS1B;;;;;YAPC,qCAAY;;;;YAAZ,UAAa,KAAQ;gBACnB,OAAOoD,mBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACvB;;;;;;YAED,mCAAU;;;;;YAAV,UAAW,CAAM,EAAE,CAAM;gBACvB,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;YACH,qBAAC;SAXD,CAAuC,mBAAmB,GAWzD;QAXY,kCAAc,iBAW1B,CAAA;;;YAVC,mCAA2B;;YAC3B,iCAAyB;;;;;QAW3B;;;;YAAuCpD,kCAA2B;YAIhE,wBAAY,aAAqB,EAAE,OAAqB,EAAE,SAAuB;gBAAjF,YACE,kBAAM,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,SACzC;gBALQ,eAAS,GAAG,KAAK,CAAC;gBAClB,aAAO,GAAG,IAAI,CAAC;;aAIvB;;;;;YAED,qCAAY;;;;YAAZ,UAAa,KAAU;gBACrB,OAAOoD,mBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;aAC3C;;;;;;YAED,mCAAU;;;;;YAAV,UAAW,CAAM,EAAE,CAAM;gBACvB,OAAO,CAACA,mBAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACzB;YAEH,qBAAC;SAhBD,CAAuC,mBAAmB,GAgBzD;QAhBY,kCAAc,iBAgB1B,CAAA;;;YAfC,mCAA2B;;YAC3B,iCAAwB;;KAe3B,EArDgBC,2BAAmB,KAAnBA,2BAAmB,QAqDnC;;;;;;;QCrGC,yBAAqB,SAAwC,EACxC,IAAY,EACZ,YAAqB,EACrB,IAA4B,EAC5B,eAA2C,EAC3C,QAA2B;YAL3B,cAAS,GAAT,SAAS,CAA+B;YACxC,SAAI,GAAJ,IAAI,CAAQ;YACZ,iBAAY,GAAZ,YAAY,CAAS;YACrB,SAAI,GAAJ,IAAI,CAAwB;YAC5B,oBAAe,GAAf,eAAe,CAA4B;YAC3C,aAAQ,GAAR,QAAQ,CAAmB;SAC/C;;;;QAED,oCAAU;;;QAAV;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACxC;;;;QAGD,gDAAsB;;;QAAtB;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,GAAA,EAAC,CAAC;SACpD;;;;;QAGD,+CAAqB;;;;QAArB,UAAsB,cAAsB;YAAtB,+BAAA,EAAA,sBAAsB;YAC1C,OAAO,IAAI,CAAC,qBAAqB,CAAC,EAAE,cAAc,gBAAA,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;SACrF;;;;;QAGD,+CAAqB;;;;QAArB,UAAsB,OAA0C;;gBACxD,IAAI,GAAGF,wBAAI,CAAC,GAAG,CAAC,OAAO,CAAC;;;gBAExB,cAAc,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,KAAK,CAAC;;gBACtE,sBAAsB,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,CAAC;;gBACtF,yBAAyB,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,2BAA2B,EAAE,KAAK,CAAC;YAClG,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM;;;;YAAC,UAAA,CAAC;gBAClC,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC,SAAS;wBAC/B,sBAAsB,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;wBAC7D,yBAAyB,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;aACzD,EAAC,CAAC;SACJ;;;;;;;QAED,sCAAY;;;;;;QAAZ,UAAgB,GAAW,EAAE,YAAgB;YAC3C,OAAO,IAAI,CAAC,IAAI;gBACdC,mBAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvD,YAAY,CAAC;SAChB;;;;;;;QAED,yCAAe;;;;;;QAAf,UAAmB,IAAc,EAAE,YAAgB;YAAnD,iBAOC;YANC,IAAI,IAAI,CAAC,IAAI,EAAE;;oBACP,KAAK,GAAG,IAAI,CAAC,IAAI;;;;gBAAC,UAAA,GAAG,IAAI,OAAA,CAACA,mBAAC,CAAC,KAAK,CAAC,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAA,EAAC;gBACxD,OAAO,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;aAChD;iBAAM;gBACL,OAAO,YAAY,CAAC;aACrB;SACF;;;;;QAED,wCAAc;;;;QAAd,UAAe,KAAY;;gBACnB,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE;YACzD,OAAO,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;SAClF;;;;;QAED,6CAAmB;;;;QAAnB,UAAoB,KAAY;;;;YAI9B,OAAO,KAAK,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,CAAC;SACrG;;;;;;QAED,qDAA2B;;;;;QAA3B,UAA4B,KAAY,EAAE,cAAsB;YAAtB,+BAAA,EAAA,sBAAsB;;gBACxD,MAAM,GAA4B,EAAE;YAC1C,IAAI,CAAC,qBAAqB,CAAC;gBACzB,cAAc,gBAAA,EAAE,sBAAsB,EAAE,IAAI;aAC7C,CAAC,CAAC,OAAO;;;;YAAC,UAAA,GAAG;;oBACN,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAC5B,IAAI,GAAG,CAAC,OAAO,EAAE;wBACflD,aAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACtB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG;;;;wBAAC,UAAA,CAAC,IAAI,OAAA,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAA,EAAC,CAAC;qBAC5D;yBAAM;wBACLA,aAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;wBACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBAChD;iBACF;aACF,EAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;;;;;QAED,+CAAqB;;;;QAArB,UAAsB,KAAY;;gBAC1B,MAAM,GAA4B,EAAE;YAC1C,IAAI,CAAC,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO;;;;YAAC,UAAA,GAAG;;oBACnE,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;gBAC1C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAC1B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;iBAC5B;aACF,EAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;;;;;;;QAGD,0CAAgB;;;;;;QAAhB,UAAiB,MAAgB;;gBACzB,MAAM,GAAyB,EAAE;YACvC,IAAI,CAAC,qBAAqB,CAAC;gBACzB,cAAc,EAAE,IAAI;gBACpB,sBAAsB,EAAE,IAAI;gBAC5B,yBAAyB,EAAE,KAAK;aACjC,CAAC,CAAC,OAAO;;;;YAAC,UAAA,GAAG;;gBAEZ,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACxB,IAAI,GAAG,CAAC,OAAO,EAAE;;4BACT,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;wBACtC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG;;;;wBAAC,UAAA,CAAC,IAAI,OAAA,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAA,EAAC,CAAC;qBAC5D;yBAAM;;4BACC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;wBAClC,IAAI,GAAG,CAAC,SAAS,EAAE;;;;4BAIjB,IAAI,CAACkD,mBAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gCACrB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;6BAC/C;yBACF;6BAAM;4BACL,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;yBAC/C;qBACF;iBACF;aACF,EAAC,CAAC;YACH,OAAO,MAAM,CAAC;SACf;QA7GD3B;YADC6B,WAAO,EAAE;;;4CACgBD,2BAAmB;qEAE5C;QAGD5B;YADC6B,WAAO,EAAE;;;;oEAGT;QAGD7B;YADC6B,WAAO,EAAE;;;;oEAYT;QA0FH,sBAAC;KA9HD,IA8HC;;;QA5HaC,4CAAiD;;QACjDA,uCAAqB;;QACrBA,+CAA8B;;QAC9BA,uCAAqC;;QACrCA,kDAAoD;;QACpDA,2CAAoC;;IAyHlD,WAAiB,eAAe;;;;QAC9B,+BAIC;;;;YAHC,0CAAyB;;YACzB,kDAAiC;;YACjC,qDAAoC;;KAEvC,EANgBA,uBAAe,KAAfA,uBAAe,QAM/B;;;;;;;;ACpID,QAAa,wBAAwB,GAAG,0BAA0B;;;AAElE,QAAa,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;AAExE;QAAoCvD,kCAAmB;QASrD;mBACE,iBAAO;SACR;;;;;QAEM,2CAAkB;;;;QAAzB,UAA0B,KAAwB;YAAlD,iBAMC;YALCE,aAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,OAAO;;;;YAAC,UAAA,YAAY;gBAC/D,KAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;aACnC,EAAC,CAAC;SACJ;;;;;;;QAEO,uCAAc;;;;;;QAAtB,UAA6B,YAAuC;;gBAC5D,KAAK,sBAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,EAAuB;;YAEpE,IAAI,CAAC,kBAAkB,CAAC,IAAIsD,cAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;gBACrD,OAAO;;;;gBAAP,UAAQ,KAAY;;wBACZ,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC;;oBAEnD,OAAO,KAAK,CAAC;iBACd;gBACD,MAAM;;;;;gBAAN,UAAO,KAAQ,EAAE,YAAoB;oBACnC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,KAAK,OAAA,EAAE,YAAY,cAAA,EAAE,CAAC,CAAC;oBAC/E,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;iBAClD;aACF,CAAC,CAAC,CAAC;SACL;QAGD,sBAAI,2CAAe;;;;YAAnB;gBACE,OAAO,cAAc,CAAC,aAAa,uCAAC,IAAI,CAAC,WAAW,KAAyC,CAAC;aAC/F;;;WAAA;QAED,sBAAI,uCAAW;;;;YAAf;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG;;;;gBAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,GAAA,EAAC,CAAC;aAC5D;;;WAAA;;;;QAED,qCAAY;;;QAAZ;SACC;QATD/B;YADC6B,4BAAO,EAAE;sCACaC,uBAAe;;6DAErC;QASH,qBAAC;KAAA,CAjDmC,mBAAmB,GAiDtD;;;;;;QA/CCE,uCAAiC;;QAGjCA,oDAAwC;;IA8C1C,WAAiB,cAAc;;;;;QAE7B,SAAgB,2BAA2B,CAAC,MAAW;YACrD,OAAOrD,WAAI,CAAC,gBAAgB,oBAAC,MAAM,GAAuB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;SACrF;QAFe,0CAA2B,8BAE1C,CAAA;;;;;QAED,SAAgB,kBAAkB,CAAC,KAAoC;YACrE,OAAOsD,yBAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,wBAAwB,CAAC,CAAC;SACnE;QAFe,iCAAkB,qBAEjC,CAAA;;;;;QAED,SAAgB,aAAa,CAAC,KAAoC;YAChE,OAAO,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;SAC7D;QAFe,4BAAa,gBAE5B,CAAA;;;;;;QAED,SAAgB,gBAAgB,CAAC,KAAoC,EAAE,UAA2B;YAChG,OAAO,CAAC,cAAc,CAAC,wBAAwB,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SACrE;QAFe,+BAAgB,mBAE/B,CAAA;KAEF,EAlBgBD,sBAAc,KAAdA,sBAAc,QAkB9B;;;;;;;;;IC/ED,qBAEC;AAGD;QAEE,eAAqB,eAAgC,EAAmB,eAA4B;YAA5B,gCAAA,EAAA,oBAA4B;YAA/E,oBAAe,GAAf,eAAe,CAAiB;YAAmB,oBAAe,GAAf,eAAe,CAAa;SACnG;;;;;;QAGD,0BAAU;;;;;QAAV;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAClD;;;;;;QAGD,0BAAU;;;;;QAAV;YACE,OAAO,CAACE,gBAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SACpC;;;;;;;;;;;;;;QAQD,4BAAY;;;;;;;QAAZ,UAAa,aAAqB;YAChC,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SAC5C;;;;;;;QAGD,4BAAY;;;;;;QAAZ,UAAa,aAAqB;YAChC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;SAClE;;;;;;;QAED,uBAAO;;;;;;QAAP,UAAW,SAAsC,EAAE,KAAQ;;YACzD,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,eAAO,IAAI,CAAC,eAAe,eAAG,SAAS,CAAC,IAAI,IAAG,KAAK,OAAG,CAAC;SAC9F;;;;;;QAED,oCAAoB;;;;;QAApB,UAAwB,WAAiC;YAAzD,iBAmBC;;;gBAjBO,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;;gBAC7C,MAAM,GAAG,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC,OAAO;;;;YAAC,UAAA,GAAG;gBACtD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,gBAAgB,EAAE;oBACzC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;wBACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBAC1C;iBACF;qBAAM;;;;wBAGC,KAAK,GAAG,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;oBACzC,IAAI,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;wBAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;qBAC1B;iBACF;aACF,EAAC,CAAC;YACH,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;SAChD;;;;;QAED,qCAAqB;;;;QAArB,UAAsB,KAAY;;gBAC1B,SAAS,GAAG,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe;;gBAC1D,mBAAmB,GAAGC,kBAAS,CACnC,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,EAAE,IAAI,CAAC,EAC5D,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,KAAK,EAAE,IAAI,CAAC,CAC9D;YACD,OAAO,CAAC,SAAS,IAAI,CAAC,mBAAmB,CAAC;SAC3C;;;;;QAED,8BAAc;;;;QAAd,UAAe,KAAY;;gBACnB,sBAAsB,GAAGA,kBAAS,CACtC,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAChD,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAClD;YACD,OAAO,CAAC,sBAAsB,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;SACrE;QAEH,YAAC;KAAA,IAAA;;;QAtEa,gCAAyC;;;;;QAAE,gCAA6C;;;;;;;ICZtG;AAEA,QAAa,gBAAgB,GAAG,IAAI7B,mBAAc,CAAc,kBAAkB,CAAC;;;;IAEnF,0BAEC;;;QADC,wCAA0B;;;;;;;;QCK1B,2CAAqB,SAAyB,EAAW,eAAgC,EAAW,kBAA2B;YAA1G,cAAS,GAAT,SAAS,CAAgB;YAAW,oBAAe,GAAf,eAAe,CAAiB;YAAW,uBAAkB,GAAlB,kBAAkB,CAAS;SAC9H;QAED,sBAAI,iEAAkB;;;;YAAtB;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC;aAChD;;;WAAA;QAED,sBAAI,0DAAW;;;;YAAf;gBACE,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;aACzC;;;WAAA;;;;;;QAEK,yDAAa;;;;;QAAnB,UAAoB,UAAuB,EAAE,SAAsB;;;;;;oBAIjE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;;wBAE9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;qBAChF;oBACD,sBAAO,IAAI,CAAC,oBAAoB,EAAC;;;SAClC;;;;;;;;;QAIe,kEAAsB;;;;;;;;QAAtC,UAAuC,UAAuB,EAAE,SAAsB;;;;;;iCAIhF,IAAI,CAAC,eAAe,CAAC,UAAU,EAA/B,wBAA+B;kCAC7B,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAA,EAAlE,wBAAkE;4BAC9D,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAAC,SAAS,CAAC,GAAG,CAAC;4BACzE,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,KAAK;iCAExE,CAAC6B,kBAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAhC,wBAAgC;4BAClC,qBAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,EAAE,EAAA;;4BAAvE,SAAuE,CAAC;4BACxE,sBAAO,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAC;;;kCAIhG,IAAI,CAAC,SAAS,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAA,EAAjF,wBAAiF;4BACnF,qBAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,EAAA;;4BAA9D,SAA8D,CAAC;4BAC/D,sBAAO,UAAU;qCACd,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAA;;;4BAOxF,IAAI,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,EAAE;gCAE7C,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;;;;oCAIhC,sBAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,EAAC;iCAC9E;;;gCAID,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE;oCACrF,OAAO,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;oCAC5F,sBAAO,KAAK,EAAC;iCACd;6BAEF;4BACD,sBAAO,IAAI,EAAC;;;;SACb;;;;;;QAES,qEAAyB;;;;;QAAnC,UAAoC,SAAsB;;;;YAIxD,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;SAClE;QACH,wCAAC;KAAA,IAAA;;;;;;QA7EC,iEAA6D;;QAEjD,sDAAkC;;QAAE,4DAAyC;;QAAE,+DAAoC;;;;;;;;;;ACCjI;;;;QAA8C5D,mCAAgB;QAQ5D,yBAA+B,OAAgC;YAA/D,YACE,iBAAO,SACR;YAF8B,aAAO,GAAP,OAAO,CAAyB;YANvD,aAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;;SAQnD;QAED,sBAAI,iCAAI;;;;YAAR;gBACE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;aAC9B;;;WAAA;QAED,sBAAI,iCAAI;;;;YAAR;gBACE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;aAC7B;;;WAAA;QAED,sBAAI,wCAAW;;;;YAAf;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;aACjC;;;WAAA;QAED,sBAAI,+CAAkB;;;;YAAtB;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;aACxC;;;WAAA;QAED,sBAAI,+CAAkB;;;;YAAtB;gBACE,OAAO,IAAI,CAAC;aACb;;;WAAA;;;;;QAED,oCAAU;;;;QAAV,UAAW,KAAY;YACrB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;SAChD;;;;;QAED,qCAAW;;;;QAAX,UAAY,QAAyB;YACnC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACnC;;;;;;QAED,gDAAsB;;;;;QAAtB,UAAuB,KAAY,EAAE,UAAkB;YACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;SACzD;;;;;QAED,oCAAU;;;;QAAV,UAAW,KAAsB;YAC/B,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACtC;;;;;QAED,yCAAe;;;;QAAf,UAAgB,KAAsB;YACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACtC;;;;;QAED,2CAAiB;;;;QAAjB,UAAkB,KAAuB;YACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACtC;;;;;QAED,uCAAa;;;;QAAb,UAAc,KAAsB;YAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACtC;;;;;QAED,qCAAW;;;;QAAX,UAAY,KAAoB;YAC9B,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACtC;;;;;QAED,kEAAwC;;;;QAAxC,UAAyC,MAAc;YACrD,OAAO,IAAI,CAAC,iBAAiB,CAAC,0CAA0C,CAAC,CAAC;SAC3E;;;;;;;QAEK,4CAAkB;;;;;;QAAxB,UAAyB,SAAyB,EAAE,UAAuB,EAAE,OAAoB;;;oBAC/F,sBAAO,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAC;;;SACrD;;;;QAED,mCAAS;;;QAAT;YACE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;SAC1C;;;;;;;QAES,2CAAiB;;;;;;QAA3B,UAA+B,OAA6B;YAC1D,OAAOI,WAAI,CAAC,YAAY,CAAI,OAAO,CAAC,QAAQ,EAAE,0BAAqB,IAAI,CAAC,QAAQ,EAAI,CAAC,CAAC;SACvF;;;;;QAES,0CAAgB;;;;QAA1B;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC;SAC/C;;;;;;QAES,kDAAwB;;;;;QAAlC,UAAmC,KAAsB;;gBACjD,QAAQ,GAAG,KAAK,CAAC,iBAAiB,KAAK,UAAU;YACvD,OAAO,QAAQ;gBACb,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;oBAChC,IAAI,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACxF,IAAI,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;;oBAE/E,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;wBAChC,IAAI,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBAChF,IAAI,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;SACrF;;;;;QAES,yCAAe;;;;QAAzB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE;gBACvC,IAAI,eAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAChF,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1C;;;;;QAED,8CAAoB;;;;QAApB,UAAqB,GAAG;YACtB,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;SAC5C;;;;QAED,kCAAQ;;;QAAR;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;SAC9B;QACH,sBAAC;KA7GD,CAA8CM,uBAAgB,GA6G7D;;;;;;QA3GCmD,0CAAoD;;QAEpDA,iDAA0C;;QAC1CA,8CAAsC;;QACtCA,6CAAsC;;;;;QAE1BA,0CAAmD;;IAuGjE,WAAiB,eAAe;QAE9B;YACE,iBACW,WAAwB,EACxB,kBAAsC,EACtC,aAAiD;gBAFjD,gBAAW,GAAX,WAAW,CAAa;gBACxB,uBAAkB,GAAlB,kBAAkB,CAAoB;gBACtC,kBAAa,GAAb,aAAa,CAAoC;aAC3D;YACH,cAAC;SAAA,IAAA;QANY,uBAAO,UAMnB,CAAA;;;YAJG,8BAAiC;;YACjC,qCAA+C;;YAC/C,gCAA0D;;QAI9D;YAA0B7D,wBAAe;YAKvC,cAAY,OAAgB;gBAA5B,YACE,kBAAM,OAAO,CAAC,SACf;gBANQ,oBAAc,GAAG,KAAK,CAAC;gBACvB,iBAAW,GAAG,IAAI,CAAC;gBACnB,gBAAU,GAAG,KAAK,CAAC;;aAI3B;;;;;;YAED,qCAAsB;;;;;YAAtB,UAAuB,KAAY,EAAE,UAAkB;;oBAC/C,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;gBAC/E,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,oBAAoB,CAAC;aAC7B;;;;;YAED,8BAAe;;;;YAAf,UAAgB,KAAsB;;gBAGpC,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,gBAAgB,EAAE,EAAE;oBACzCW,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,uCAAqC,KAAK,CAAC,GAAK,CAAC,CAAC;oBACxE,OAAO,IAAI,CAAC;iBACb;gBAED,IAAI,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACvDA,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mDAAiD,KAAK,CAAC,GAAK,CAAC,CAAC;oBACpF,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC3D;qBAAM;oBACL,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;iBAC7C;aACF;;;;;YAED,yBAAU;;;;YAAV,UAAW,KAAsB;gBAC/B,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;aAC7C;YACH,WAAC;SAlCD,CAA0B,eAAe,GAkCxC;QAlCY,oBAAI,OAkChB,CAAA;;;YAjCC,8BAAgC;;YAChC,2BAA4B;;YAC5B,0BAA4B;;;;;QAiC9B;;;;YAA2DX,gDAAe;YAKxE,sCAAY,OAAgB,EAAW,WAAmB;gBAA1D,YACE,kBAAM,OAAO,CAAC,SAWf;gBAZsC,iBAAW,GAAX,WAAW,CAAQ;gBAJjD,oBAAc,GAAG,IAAI,CAAC;gBACvB,mCAA6B,GAAG,IAAI,GAAG,EAAqD,CAAC;gBAKnG,KAAI,CAAC,mBAAmB,GAAG,KAAI,CAAC,kBAAkB,CAAC,uCAAuC,EAAE,CAAC;gBAC7F,KAAI,CAAC,SAAS;;;gBAAC;;;;;oBAKb,IAAI,KAAI,CAAC,mBAAmB,EAAE;wBAC5B,KAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,CAAC;qBACpC;iBACF,EAAC,CAAC;;aACJ;YAED,sBAAI,4DAAkB;;;;gBAAtB;oBACE,OAAO,IAAI,CAAC,mBAAmB,CAAC;iBACjC;;;eAAA;;;;;YAED,sDAAe;;;;YAAf,UAAgB,KAAsB;;;gBAGpC,OAAO,IAAI,CAAC;aACb;;;;;YAED,kDAAW;;;;YAAX,UAAY,KAAoB;;gBAE9B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;gBACjC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;;;;;YAED,+EAAwC;;;;YAAxC,UAAyC,kBAA0B;gBACjEW,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;;;oBAErF,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE;gBACrD,IAAA,yDAAI;;;gBAGZ,qBAAqB,CAAC,oBAAoB,EAAE,CAAC,IAAI;;;gBAAC;oBAChD,qBAAqB,CAAC,OAAO,EAAE,CAAC;iBACjC,EAAC,CAAC;gBACH,OAAO,IAAI,oCAAoC,CAAC,IAAI,CAAC,OAAO,EAC1D,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,kBAAkB,CAAC,CAAC;aACvB;;;;;;;;;YAGK,yDAAkB;;;;;;;;YAAxB,UAAyB,SAAyB,EAAE,UAAuB,EAAE,OAAoB;;;;;wBAE3F,OAAO,GAAG,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,SAAS,CAAC;wBAC/D,IAAI,CAAC,OAAO,EAAE;4BACN,gBAAgB,GAAG,IAAI,CAAC,6BAA6B,CAAC,IAAI,KAAK,CAAC;4BACtE,OAAO,GAAG,IAAI,iCAAiC,CAAC,SAAS,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;4BACnF,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;yBAC5D;wBACD,sBAAO,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAAC;;;aACnD;;;;;YAEO,+DAAwB;;;;YAAhC;;oBACQ,OAAO,GAAG,IAAI,CAAC,mBAAmB;gBACxC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,OAAO,OAAO,CAAC;aAChB;YACH,mCAAC;SApED,CAA2D,eAAe,GAoEzE;QApEqB,4CAA4B,+BAoEjD,CAAA;;;YAnEC,sDAA+B;;;;;YAC/B,qEAAqG;;;;;YACrG,2DAAgD;;YAElB,mDAA4B;;QAiE5D;YAA0CX,wCAA4B;YAAtE;gBAAA,qEAeC;gBAdU,gBAAU,GAAG,KAAK,CAAC;;aAc7B;;;;;YAZC,gDAAiB;;;;YAAjB,UAAkB,KAAuB;gBACvC,OAAO,IAAI,CAAC;aACb;;;;;YAED,4CAAa;;;;YAAb,UAAc,KAAsB;;gBAElC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;;;;YAED,uCAAQ;;;YAAR;gBACE,OAAU,IAAI,CAAC,WAAW,CAAC,IAAI,sBAAiB,IAAI,CAAC,WAAW,MAAG,CAAC;aACrE;YACH,2BAAC;SAfD,CAA0C,4BAA4B,GAerE;QAfY,oCAAoB,uBAehC,CAAA;;;YAdC,0CAA4B;;QAgB9B;YAAwCA,sCAA4B;YAApE;gBAAA,qEAsBC;gBArBU,gBAAU,GAAG,IAAI,CAAC;;aAqB5B;;;;;YAnBC,8CAAiB;;;;YAAjB,UAAkB,KAAuB;;;gBAGvCW,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;gBAC3G,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5C,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;;;;;YAED,0CAAa;;;;YAAb,UAAc,KAAsB;;gBAElC,IAAI,IAAI,CAAC,gBAAgB,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;;;oBAGhDA,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;oBAC3G,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBAC7C;gBACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;YAEH,yBAAC;SAtBD,CAAwC,4BAA4B,GAsBnE;QAtBY,kCAAkB,qBAsB9B,CAAA;;;YArBC,wCAA2B;;QAuB7B;YAA2CX,yCAAe;YAIxD,+BAAY,OAAgB,EAAW,WAAmB;gBAA1D,YACE,kBAAM,OAAO,CAAC,SACf;gBAFsC,iBAAW,GAAX,WAAW,CAAQ;gBAHjD,oBAAc,GAAG,KAAK,CAAC;gBACvB,gBAAU,GAAG,KAAK,CAAC;;aAI3B;;;;;;YAED,sDAAsB;;;;;YAAtB,UAAuB,KAAY,EAAE,UAAkB;;oBAC/C,oBAAoB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC;gBAChF,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,oBAAoB,CAAC;aAC7B;;;;;;;YAGD,+CAAe;;;;;;YAAf,UAAgB,KAAsB;gBACpC,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;aAC3D;;;;;;;YAGD,0CAAU;;;;;;YAAV,UAAW,KAAsB;gBAC/B,OAAO,IAAI,6BAA6B,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;aACnE;YACH,4BAAC;SAvBD,CAA2C,eAAe,GAuBzD;QAvBY,qCAAqB,wBAuBjC,CAAA;;;YAtBC,+CAAgC;;YAChC,2CAA4B;;YAEE,4CAA4B;;;;;QAqB5D;;;;YAA4DA,iDAA4B;YAGtF,uCAAY,OAAgB,EAAW,WAAmB;gBAA1D,YACE,kBAAM,OAAO,EAAE,WAAW,CAAC,SAC5B;gBAFsC,iBAAW,GAAX,WAAW,CAAQ;gBAFjD,oBAAc,GAAG,IAAI,CAAC;;aAI9B;YAEH,oCAAC;SAPD,CAA4D,4BAA4B,GAOvF;QAPqB,6CAA6B,gCAOlD,CAAA;;;YANC,uDAA+B;;YAED,oDAA4B;;;;;;QAU5D;;;;;YAA2CA,yCAA6B;YAAxE;gBAAA,qEA4BC;gBA3BU,gBAAU,GAAG,KAAK,CAAC;;aA2B7B;;;;;;;YAxBC,iDAAiB;;;;;;YAAjB,UAAkB,KAAuB;gBACvC,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE;;wBACxC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,KAAK;oBAChF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;oBAChH,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;iBAClE;qBAAM;oBACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC/B;aACF;;;;;;;YAGD,6CAAa;;;;;;YAAb,UAAc,KAAsB;;gBAElC,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aAClE;;;;;;;YAGD,2CAAW;;;;;;YAAX,UAAY,KAAoB;gBAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE;oBAC9C,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;iBAClE;qBAAM;oBACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC/B;aACF;YACH,4BAAC;SA5BD,CAA2C,6BAA6B,GA4BvE;QA5BY,qCAAqB,wBA4BjC,CAAA;;;YA3BC,2CAA4B;;;;;;QAiC9B;;;;;YAAmDA,iDAA6B;YAAhF;gBAAA,qEAuBC;gBAtBU,gBAAU,GAAG,IAAI,CAAC;;aAsB5B;;;;;;;YAnBC,yDAAiB;;;;;;YAAjB,UAAkB,KAAuB;gBACvC,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE;;wBAChC,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,KAAK;oBAChF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;oBAChH,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;iBAClE;qBAAM;oBACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC/B;aACF;;;;;;;YAGD,mDAAW;;;;;;YAAX,UAAY,KAAoB;gBAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE;oBAC9C,OAAO,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;iBAClE;qBAAM;oBACL,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC/B;aACF;YAEH,oCAAC;SAvBD,CAAmD,6BAA6B,GAuB/E;QAvBY,6CAA6B,gCAuBzC,CAAA;;;YAtBC,mDAA2B;;QAyB7B;YAA0DA,wDAAe;YAKvE,8CAAY,OAAgB,EACP,WAAmB,EACnB,yBAAkC,EAClC,wBAAgC;gBAHrD,YAIE,kBAAM,OAAO,CAAC,SACf;gBAJoB,iBAAW,GAAX,WAAW,CAAQ;gBACnB,+BAAyB,GAAzB,yBAAyB,CAAS;gBAClC,8BAAwB,GAAxB,wBAAwB,CAAQ;gBAN5C,gBAAU,GAAG,KAAK,CAAC;gBACpB,+BAAyB,GAAG,KAAK,CAAC;;aAOzC;YAED,sBAAI,gEAAc;;;;gBAAlB;oBACE,OAAO,IAAI,CAAC;iBACb;;;eAAA;;;;;YAED,8DAAe;;;;YAAf,UAAgB,KAAsB;gBACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC3B;;;;;;;YAGD,gEAAiB;;;;;;YAAjB,UAAkB,KAAuB;;;;;gBAKvC,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,EAAE;;wBAClE,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,KAAK;oBAChF,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;iBACjH;gBACD,OAAO,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,wBAAwB,KAAK,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACpI;;;;;YAED,0DAAW;;;;YAAX,UAAY,KAAoB;gBAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC3B;;;;;YAED,4DAAa;;;;YAAb,UAAc,KAAsB;gBAClC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC3B;;;;;YAED,yDAAU;;;;YAAV,UAAW,KAAsB;gBAC/B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,wBAAwB,CAAC;gBAC/G,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC3B;;;;;;;;;YAGK,iEAAkB;;;;;;;;YAAxB,UAAyB,SAAyB,EAAE,UAAuB,EAAE,OAAoB;;;wBAC/F,sBAAO,KAAK,EAAC;;;aACd;;;;;;YAED,qDAAM;;;;;YAAN,UAAO,KAAkB,EAAE,MAAe;gBACxC,MAAM,GAAG,MAAM,GAAG,SAAO,MAAQ,GAAG,EAAE,CAAC;gBACvCW,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAAwB,MAAM,UAAK,KAAK,CAAC,WAAW,CAAC,IAAI,YAAO,KAAK,CAAC,GAAK,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;aACb;;;;YAED,uDAAQ;;;YAAR;gBACE,OAAU,IAAI,CAAC,WAAW,CAAC,IAAI,gBAAW,IAAI,CAAC,IAAI,uBAAkB,IAAI,CAAC,WAAW,mCAA8B,IAAI,CAAC,wBAAwB,MAAG,CAAC;aACrJ;YAEH,2CAAC;SA7DD,CAA0D,eAAe,GA6DxE;QA7DY,oDAAoC,uCA6DhD,CAAA;;;YA3DC,0DAA4B;;;;;YAC5B,yEAA0C;;YAG9B,2DAA4B;;YAC5B,yEAA2C;;YAC3C,wEAAyC;;KAsDxD,EA7TgBkD,uBAAe,KAAfA,uBAAe,QA6T/B;;;;;;ACvbD;QAcE;YAFQ,aAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;SAGtD;;;;;;;QAGD,0BAAG;;;;;;QAAH,UAAI,KAAY;;gBACR,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC;;gBAChD,aAAa,GAAGT,mBAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACtC,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;gBACzD,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACvB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7D;SACF;;;;;QAED,iCAAU;;;;QAAV,UAAW,QAAyB;;gBAC9B,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;aACpC;YACD,OAAO,OAAO,CAAC;SAChB;;;;;;;QAEO,iCAAU;;;;;;QAAlB,UAAmB,QAAyB,EAAE,OAAgB;YAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;SACtC;;oBA/BFP,eAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;;2BATD;KAOA,IA6CC;;;;;;QAxCC,gCAAuD;;;;;;;;;QCFvD,qBAAqB,aAA4B,EAAW,GAAW;YAAlD,kBAAa,GAAb,aAAa,CAAe;YAAW,QAAG,GAAH,GAAG,CAAQ;YACrE,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACzC;;;;;QAEM,yCAAmB;;;;QAA1B,UAA2B,KAAY;;gBAC/B,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;;;gBAE5C,QAAQ,YAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;;gBAChD,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;;gBAC1C,SAAS,GAAG,QAAQ,CAAC,SAAS;;;;YAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,GAAA,EAAC;;YAEvF,QAAQ,CAAC,MAAM,OAAf,QAAQ,YAAQ,SAAS,EAAE,aAAa,CAAC,MAAM,GAAK,aAAa,GAAE;YACnE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAClD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChE;;;;;;QAEO,wCAAkB;;;;;QAA1B,UAA2B,OAAgB;YACzC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpD;;;;;;;;;;;QAMS,oCAAc;;;;;;QAAxB,UAAyB,KAAY;YACnC,OAAO,KAAK,CAAC,eAAe,CAAC,UAAU,EAAE;gBACvC;;;;oBAIE,IAAIiB,iBAAU,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBACpG,IAAIA,iBAAU,CAAC,KAAK,CAAC,eAAe,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;iBAAC;;oBAEvE;wBACE,IAAIA,iBAAU,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;qBACrG,CAAC;SACL;;;;;QAED,oCAAc;;;;QAAd,UAAe,QAAyB;YACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,GAAA,EAAC,CAAC;SAClF;;;;QAED,uCAAiB;;;QAAjB;;gBACQ,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,CAAC;YAChF,IAAI,UAAU,EAAE;gBACd,OAAO,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;aACpD;iBAAM;gBACL,OAAO,EAAE,CAAC;aACX;SACF;;;;QAED,uCAAiB;;;QAAjB;YACE,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5C;;;;;;;QAGD,0CAAoB;;;;;;QAApB,UAAqB,GAAa;YAChC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;aACpC;iBAAM;;oBACC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;gBAClD,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC5F,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;aAChE;SACF;;;;;;QAGD,0CAAoB;;;;;QAApB;;gBACQ,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAClD,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE;gBACnF,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC;aAC1B;YACD,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;SAChE;QAWH,kBAAC;KAAA,IAAA;;;QAvFCC,sCAA0B;;QAGdA,4CAAqC;;QAAEA,kCAAoB;;IAsFzE,WAAiB,WAAW;QAEb,mCAAuB,GAAG,kBAAkB;QAC5C,oCAAwB,GAAG,IAAI;;;;;QAE5C,SAAgB,mBAAmB,CAAC,IAAY;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAA,wBAAwB,CAAC,CAAC;SAC7C;QAFe,+BAAmB,sBAElC,CAAA;;;;;QAED,SAAgB,eAAe,CAAC,cAAwB;YACtD,OAAO,cAAc,CAAC,IAAI,CAAC,YAAA,wBAAwB,CAAC,CAAC;SACtD;QAFe,2BAAe,kBAE9B,CAAA;;;;QAED,gCAEC;;;;YADC,uCAAqB;;KAExB,EAhBgBA,mBAAW,KAAXA,mBAAW,QAgB3B;;;;;;;QCxEgC/D,+BAAgB;QAU/C,qBAA6BgE,QAAc,EACd,aAA4B,EAC5B,eAAyB,EACzB,YAA0B,EAC1B,kBAAsC;YAJnE,YAKE,iBAAO,SAgER;YArE4B,YAAM,GAANA,QAAM,CAAQ;YACd,mBAAa,GAAb,aAAa,CAAe;YAC5B,qBAAe,GAAf,eAAe,CAAU;YACzB,kBAAY,GAAZ,YAAY,CAAc;YAC1B,wBAAkB,GAAlB,kBAAkB,CAAoB;YAZlD,2BAAqB,GAAG,IAAIvB,wBAAiB,EAAmB,CAAC;YACjE,mBAAa,GAAG,IAAIC,uBAAgB,EAAS,CAAC;YAavD,IAAA,kCAAkF,EAAhF,gBAAK,EAAE,oBAAO,EAAE,kBAAM,EAAE,cAAI,EAAE,gBAAK,EAAE,oBAAO,EAAE,sBAAkC;YACxF,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC7E,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,KAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACrF,KAAI,CAAC,yBAAyB,GAAG,IAAImB,uBAAe,CAAC,OAAO,CAAC,KAAI,EAAE,KAAI,CAAC,kBAAkB;;;;YAAE,UAAA,OAAO;gBACjG,KAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;aACxC,EAAC,CAAC;YACH,KAAI,CAAC,qBAAqB,CAAC,KAAK,GAAG,IAAIA,uBAAe,CAAC,IAAI,CAAC,KAAI,CAAC,yBAAyB,CAAC,CAAC;YAC5F,KAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC,KAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG;;;;YAAC,UAAA,KAAK,8BAAI,KAAK,CAAC,WAAW,KAAkC,EAAC,CAAC;;YAGrI,KAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS;;;;YAAC,UAAA,KAAK;;;;;;;gBAOhC,IAAI,KAAK,YAAYI,sBAAe,EAAE;oBACpC,IAAI,KAAK,CAAC,iBAAiB,KAAK,UAAU,EAAE;wBAC1C,KAAI,CAAC,kBAAkB;;;;wBAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAA,EAAC,CAAC;qBAC3D;yBAAM;wBACL,KAAI,CAAC,kBAAkB;;;;wBAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,GAAA,EAAC,CAAC;qBAChE;iBACF;gBACD,IAAI,KAAK,YAAYC,oBAAa,EAAE;oBAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnB,KAAI,CAAC,kBAAkB;;;;oBAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAA,EAAC,CAAC;iBAC5D;gBACD,IAAI,KAAK,YAAYC,sBAAe,EAAE;oBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnB,KAAI,CAAC,kBAAkB;;;;oBAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,GAAA,EAAC,CAAC;iBAC9D;gBACD,IAAI,KAAK,YAAYC,uBAAgB,EAAE;oBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnB,KAAI,CAAC,kBAAkB;;;;oBAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAA,EAAC,CAAC;iBAClE;aACF,EAAC,CAAC;;YAGH,IAAI,CAAC,MAAM,CAAC,KAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,CAAC,OAAO;;;;;YAAC,UAAC,GAAG,EAAE,QAAQ;gBACrF,KAAI,CAAC,4BAA4B,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;aAClD,GAAE,EAAE,MAAM,EAAE,KAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;;;gBAEpC,UAAU,GAAG,IAAI5B,oBAAa,EAA2C;;;;;;YAO/E,eAAe,CAAC,WAAW;;;;YAAC,UAAA,GAAG;;oBACvB,eAAe,GAAG,KAAI,CAAC,qBAAqB,CAAC,KAAK;gBACxD,OAAO,CAAC,GAAG,CAAC,kBAAgB,GAAK,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC/D,UAAU,CAAC,OAAO,CAAC,EAAE,GAAG,KAAA,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;;gBAGpD,IAAI,eAAe,CAAC,cAAc,EAAE;;wBAC5B,qBAAqB,GAAG,KAAI,CAAC,eAAe,CAAC,kBAAkB;oBACrE,IAAI,qBAAqB,IAAI,qBAAqB,CAAC,QAAQ,EAAE,EAAE;wBAC7D,KAAI,CAAC,kBAAkB;;;;wBAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,wCAAwC,CAAC,GAAG,CAAC,GAAA,EAAC,CAAC;qBACvF;iBACF;aACF,EAAC,CAAC;;SACJ;;;;;;QAEO,8CAAwB;;;;;QAAhC,UAAiC,OAAwB;YAAzD,iBAOC;;;YAJCtC,aAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;;gBAC3C,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE;YAClC,MAAM,CAAC,OAAO;;;;YAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAA,EAAC,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC;SACnC;QAED,sBAAI,wCAAe;;;;YAAnB;gBACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;aACzC;;;WAAA;QAED,sBAAI,6CAAoB;;;;YAAxB;gBACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;aAC5C;;;WAAA;QAED,sBAAI,qCAAY;;;;YAAhB;gBACE,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;aACpC;;;WAAA;;;;;;;;;;;QAMK,8BAAQ;;;;;;QAAd,UAAe,KAAY,EAAE,OAAwC;;;;oBACnE,IAAI,CAAC,YAAY,CAAC,KAAK;;;;oBAAE,UAAM,MAAM;;;;;oCAC7B,QAAQ;wCACZ,KAAK,CAAC,eAAe,CAAC,IAAI;uCACvB,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CACrC;oCACD,qBAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;4CACnC,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI;yCAChD,CAAC,EAAA;;oCAFF,SAEE,CAAC;;;;yBACJ,EAAC,CAAC;;;;SACJ;;;;;;;;;QAGK,6CAAuB;;;;;;;;QAA7B,UAA8B,cAA8B,EAAE,QAAe,EAAE,IAAW;;;;;;oBAGxF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;oBAG5B,IAAI,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE;wBACxC,sBAAO,IAAI,CAAC,YAAY,CAAC,IAAI;;;;4BAAE,UAAA,MAAM;;oCAC7B,WAAW,GAAG,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC;gCACjG,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;gCACjF,OAAO,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;6BACxC,EAAC,EAAC;qBACJ;;;;SACF;;;;;;QAEK,kCAAY;;;;;QAAlB,UAAmB,KAAY,EAAE,qBAA8C;;;;;;4BAC7E,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;gCACnCE,WAAI,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAC;6BACrD;4BACD,IAAI,CAAC,kBAAkB;;;;4BAAC,UAAA,OAAO;;oCACvB,OAAO,GAAG,KAAI,CAAC,eAAe,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAI,CAAC,mBAAmB,EAAE,CAAC;gCAC9F,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gCAC1B,OAAO,OAAO,CAAC;6BAChB,EAAC,CAAC;;;;4BAED,qBAAM,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAA;;4BAAxC,SAAwC,CAAC;;;;;4BAIzC,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,EAAE;gCAC9E,IAAI,CAAC,kBAAkB;;;;gCAAC,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,WAAW,CAAC,IAAI8D,oBAAa,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAA,EAAC,CAAC;6BACxF;;;;;;SAEJ;;;;;;;;QAGS,wCAAkB;;;;;;;QAA5B,UAA6B,UAAmE;;gBACxF,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK;;gBAC3C,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,CAAC,qBAAqB,CAAC,KAAK,GAAG,IAAI,CAAC;YACxC,IAAI,IAAI,KAAK,QAAQ,EAAE;gBACrB,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnBvD,aAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,8BAA4B,QAAQ,CAAC,QAAQ,EAAE,YAAO,IAAI,CAAC,QAAQ,EAAI,CAAC,CAAC;aAChG;SACF;;;;;;QAEO,2CAAqB;;;;;QAA7B,UAA8B,KAAY;;gBAClC,GAAG,GAAG,KAAK,CAAC,eAAe;YACjC,OAAO,KAAK,CAAC,UAAU,EAAE;gBACvB,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;gBACxE,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5C;;;;;QAED,sCAAgB;;;;QAAhB,UAAiB,cAAsC;YACrD,OAAOyC,mBAAC,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;;;;YAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,GAAG,GAAA,EAAC,CAAC,CAAC;SACnE;;;;;QAED,8BAAQ;;;;QAAR,UAAS,GAAW;YAClB,OAAO,IAAIW,mBAAW,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;SACjD;;;;;QAED,0CAAoB;;;;QAApB,UAAqB,GAAW;YAC9B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;SAC9B;;;;;QAED,uCAAiB;;;;QAAjB;YAAA,iBAMC;YANiB,gBAAkB;iBAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;gBAAlB,2BAAkB;;;gBAC5B,IAAI,GAAG,EAAE;YACf,MAAM,CAAC,OAAO;;;;YAAC,UAAA,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,KAAG,CAAC,CAAC,eAAe,CAAC,IAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aAClF,EAAC,CAAC;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;SACrC;;;;QAED,yCAAmB;;;QAAnB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC;SAC9E;;;;QAED,6CAAuB;;;QAAvB;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;SAClD;;;;;QAED,oDAA8B;;;;QAA9B,UAA+B,GAAW;YACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;SAC/C;;;;;;;QAID,6CAAuB;;;;;;QAAvB,UAAwB,GAAW;YACjC,OAAO,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5D;;;;;;;;QAGD,mCAAa;;;;;;;QAAb,UAAc,WAAwB,EAAE,gBAAmC;YACzE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;SACzE;;;;;;;;QAGD,kDAA4B;;;;;;;QAA5B,UAA6B,UAAoB,EAAE,QAAkB;YAArE,iBAoCC;YAnCC7D,aAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC;gBACV,gBAAgB,EAAE,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;gBACrD,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,UAAU;aAC/C,CAAC,CAAC;YAEH,IAAIkD,mBAAC,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACnC,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;aACrD;iBAAM;;;oBAEC,cAAc,GAAG,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;;oBACpD,eAAe,GAAG,cAAc,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;;oBACvD,oBAAoB,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;gBAClD,IAAI,cAAc,EAAE;oBAClB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE;wBAClF,UAAU,EAAE,CAAC,eAAe;qBAC7B,CAAC,CAAC;iBACJ;qBAAM;;wBACC,WAAW,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC,oBAAoB,CAAC,UAAU,CAAC;oBACnF,IAAI,oBAAoB,EAAE;wBACxB,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;4BAC9B,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAC,IAAI;;;wBAAC;;;4BAGN,KAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;yBAC7B,EAAC,CAAC;qBACJ;yBAAM;wBACL,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;4BAC9B,UAAU,EAAE,IAAI;yBACjB,CAAC,CAAC;qBACJ;iBACF;aACF;SACF;;oBA/PFP,eAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;oBA7BCwB,aAAM;oBACNC,oBAAa;oBAXNC,eAAQ;oBAgCR,YAAY;oBAFZzB,UAAkB;;;0BA9B3B;KAqSC,CA7PgCpC,uBAAgB,GA6PhD;;;;;;QA3PC,4CAAkF;;;;;QAClF,oCAA+D;;QAE/D,2CAAmD;;QACnD,uCAAsE;;;;;QACtE,gDAA2D;;;;;QAC3D,gDAAmF;;;;;QAEvE,6BAA+B;;;;;QAC/B,oCAA6C;;;;;QAC7C,sCAA0C;;;;;QAC1C,mCAA2C;;;;;QAC3C,yCAAuD;;;;;;;ICtDrE;;QAGM,mBAAmB,GAAG8D,kBAAK,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;;QAEnG,IAAI,GAAG;QACXC,kBAAK,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAChEC,kBAAK,CAAC;YACJD,kBAAK,CAAC,QAAQ,EAAE;gBACdD,kBAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;gBACzCG,oBAAO,CAAC,uBAAuB,EAAEH,kBAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACzE,EAAE;gBACD,QAAQ,EAAE,IAAI;aACf,CAAC;YACFC,kBAAK,CAAC,QAAQ,EAAE;gBACdD,kBAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;gBACtCG,oBAAO,CAAC,uBAAuB,EAAEH,kBAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;aAC3E,EAAE;gBACD,QAAQ,EAAE,IAAI;aACf,CAAC;SACH,CAAC;KACH;;QAEK,KAAK,GAAG;QACZC,kBAAK,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAChEC,kBAAK,CAAC;YACJD,kBAAK,CAAC,QAAQ,EAAE;gBACdD,kBAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gBAC1DG,oBAAO,CAAC,uBAAuB,EAAEH,kBAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;aACzE,EAAE;gBACD,QAAQ,EAAE,IAAI;aACf,CAAC;YACFC,kBAAK,CAAC,QAAQ,EAAE,CAACD,kBAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EAAEG,oBAAO,CAAC,uBAAuB,EAAEH,kBAAK,CAAC;oBAC9F,SAAS,EAAE,mBAAmB;oBAC9B,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC,CAAC,EAAE;gBACJ,QAAQ,EAAE,IAAI;aACf,CAAC;SACH,CAAC;KACH;;;;;IAED,SAAgB,uBAAuB,CAAC,QAAgB;QACtD,OAAOI,oBAAO,CAAC,iBAAiB,EAAE;YAChCC,uBAAU,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;YACnEA,uBAAU,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;SACnE,CAAC,CAAC;KACJ;;AAED,QAAa,0BAA0B,GAAG,uBAAuB,CAAC,MAAM,CAAC;;;;;;;;;ICrBzE,uBAMC;;;QALC,mCAAyC;;;;;QAEzC,6DAAmD;;;;QAEnD,kDAAqB;;AAGvB;QAM0C7E,wCAAmB;QAsC3D,8BAA6B,MAAc,EACd,WAAwB,EACM,WAAwB,EAC/C,YAAkC;YAHtE,YAIE,iBAAO,SA8CR;YAlD4B,YAAM,GAAN,MAAM,CAAQ;YACd,iBAAW,GAAX,WAAW,CAAa;YACM,iBAAW,GAAX,WAAW,CAAa;YAvB1E,kBAAY,GAAG,IAAIuB,iBAAY,EAAkB,CAAC;YAK1C,kBAAY,GAAG,IAAIkB,wBAAiB,EAAkB,CAAC;YACvD,4BAAsB,GAAG,IAAIxC,2BAAoB,EAAS,CAAC;YAE3D,yBAAmB,GAAG,IAAI6E,YAAK,EAAE,CAAC;YAClC,2BAAqB,GAAG,IAAIA,YAAK,EAAE,CAAC;YAEpC,yBAAmB,GAAG,IAAIA,YAAK,EAAE,CAAC;YAClC,0BAAoB,GAAG,IAAIrC,wBAAiB,EAAkB,CAAC;YAE/D,sBAAgB,GAAG,IAAIA,wBAAiB,EAAmB,CAAC;YAIrE,uBAAiB,GAAW,IAAI,CAAC;YAQjC,IAAA,kCAAkF,EAAhF,gBAAK,EAAE,oBAAO,EAAE,kBAAM,EAAE,cAAI,EAAE,gBAAK,EAAE,oBAAO,EAAE,sBAAkC;YAExF,KAAI,CAAC,iBAAiB,GAAG,IAAIA,wBAAiB,CAAC,YAAY,CAAC,CAAC;YAC7D,KAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAIA,wBAAiB,EAAS,CAAC,CAAC;YACxE,KAAI,CAAC,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,KAAI,CAAC,qBAAqB,EAAE,KAAI,CAAC,mBAAmB,CAAC,CAAC,SAAS,EAAE,CAAC;;gBAE/F,0BAA0B,GAAG,KAAK,CAAC,KAAI,CAAC,iBAAiB,CAAC;iBAC7D,cAAc;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,gBAAgB,GAAA,EAAC;iBACvC,KAAK,CAAC,iBAAiB,CAAC;iBACxB,SAAS,CAAC,UAAU,CAAC;iBACrB,KAAK,CAAC,WAAW,CAAC;;gBAEf,iBAAiB,GAAG,KAAK,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC,GAAG;;;;YAAC,UAAA,CAAC,8BAAI,CAAC,CAAC,WAAW,KAAiC,EAAC;YAC/G,KAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,KAAI,CAAC,8BAA8B,CAAC;iBAClE,SAAS,CAAC,0BAA0B,CAAC;iBACrC,MAAM;;;;YAAC,UAAC,aAAa;;oBAChB,UAAU,GAAG,CAAC;gBAClB,IAAI,iBAAiB,CAAC,KAAK,EAAE;oBAC3B,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;oBAC5D,IAAIkB,gBAAO,CAAC,KAAI,CAAC,iBAAiB,CAAC,EAAE;wBACnC,KAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;qBACrC;iBACF;gBACD,OAAOA,gBAAO,CAAC,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,UAAU,GAAG,KAAI,CAAC,iBAAiB,CAAC;aAClF,GAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;;YAGvC,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;;;;;YAK1G,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,OAAO;;;YAAC,cAAM,OAAA,KAAI,CAAC,uBAAuB,EAAE,GAAA,GAAE,EAAE,MAAM,EAAE,KAAI,CAAC,eAAe,EAAE,CAAC,CAAC;;YAG/G,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO;;;;;YAAC,UAAC,IAAI,EAAE,QAAQ;gBAC/D,KAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC9C,GAAE;gBACD,MAAM,EAAE,KAAI,CAAC,WAAW,CAAC,oBAAoB;aAC9C,CAAC,CAAC;YAEH,KAAK,CAAC,KAAI,CAAC,YAAY,CAAC;iBACrB,aAAa,CAAC,WAAW,CAAC,oBAAoB,CAAC;iBAC/C,SAAS;;;;YAAC,UAAA,KAAK,IAAI,OAAA,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,GAAA,EAAC,CAAC;;SAEtD;;;;QAED,uCAAQ;;;QAAR;SACC;;;;;;QAGD,gDAAiB;;;;;QAAjB;YACE,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;SACvC;QAED,sBAAI,mDAAiB;;;;YAArB;gBACE,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,GAAG,OAAO,CAAC;aAC9G;;;WAAA;;;;;;;QAGD,uCAAQ;;;;;;QAAR,UAAS,KAAY;;YAEnB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAC/B,UAAU,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,GAAG,IAAI;aACnF,CAAC,CAAC;SACJ;QAED,sBAAI,8CAAY;;;;YAAhB;gBACE,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;aACrC;;;WAAA;;;;;;QAGD,sDAAuB;;;;;QAAvB;YAAA,iBAaC;;gBAZO,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK;;;;;;;YAOpC,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,mBAAmB,CAAC,SAAS;;;gBAAC;oBACjC,KAAI,CAAC,sBAAsB,CAAC,KAAK,GAAG,KAAK,CAAC;iBAC3C,EAAC,CAAC;aACJ;SACF;;;;;;QAED,sDAAuB;;;;;QAAvB,UAAwB,IAAW,EAAE,QAAe;;gBAC5C,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK;YACtD,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,cAAc,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC1E;QAED,sBAAI,kDAAgB;;;;YAApB;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aACnC;;;WAAA;QAED,sBAAI,qDAAmB;;;;YAAvB;gBACE,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;aAC3C;;;WAAA;;;;;;;;QAGD,gDAAiB;;;;;;;QAAjB,UAAkB,YAA0B,EAAE,KAAqB;YAAnE,iBAiBC;YAhBC,IAAI,CAAC,mBAAmB,CAAC,SAAS;;;YAAC;gBACjC,IAAI;oBACF,KAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;oBAChC,KAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,YAAY,CAAC,cAAc,CAAC;oBAC9D,KAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC;;wBAC9C,UAAU,GAAG,IAAIlB,wBAAiB,EAAS;oBACjD,KAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBACpD,KAAK,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;iBACtC;gBAAC,OAAO,KAAK,EAAE;oBACd,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBACtB;aACF,EAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;;gBAE5B,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB;SACF;;;;;;QAGD,kDAAmB;;;;;QAAnB;YAAA,iBAOC;YANC,IAAI,CAAC,qBAAqB,CAAC,SAAS;;;YAAC;gBACnC,KAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC/B,KAAI,CAAC,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC;gBACvC,KAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC;gBACnC,KAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAC/C,EAAC,CAAC;SACJ;;;;;;QAGD,+CAAgB;;;;;QAAhB;;SAEC;;;;;;QAGD,4CAAa;;;;;QAAb;YACE,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;gBAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;aACxC;SACF;;oBA7LFb,cAAS,SAAC;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,sfAA4C;wBAE5C,UAAU,EAAE,CAAC,0BAA0B,CAAC;;qBACzC;;;;oBAvCwByC,aAAM;oBAoBtB,WAAW;oDA4DLU,aAAQ,YAAIxE,WAAM,SAAC,gBAAgB;oBACE,oBAAoB,uBAAzDyE,aAAQ,YAAID,aAAQ;;;8BAvChCvE,UAAK;mCAGLA,UAAK;qDAILA,UAAK,SAAC,0BAA0B;gDAIhCA,UAAK,SAAC,qBAAqB;mCAG3BgB,WAAM;gCAGNmB,cAAS,SAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;QAhB1ClB;YADUwD,wBAAiB,CAAC,cAAc,CAAC;;6DAC1B;QAGjBxD;YADUC,kBAAW,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;sCAC/BC,iBAAU;kEAAU;QAIlCF;YADoCC,kBAAW,EAAE;sCACjBG,gBAAS;oFAAgC;QAIzEJ;YAD+BK,uBAAgB,CAAC,gCAAgC,CAAC;;+EACtB;QA4K7D,2BAAC;KAAA,CA1LyC,mBAAmB,GA0L5D;;;QAxLC,uCACiB;;QAEjB,4CACkC;;QAGlC,8DACyE;;QAGzE,yDAC2D;;QAE3D,4CAC2D;;QAE3D,yCACwB;;;;;QAExB,4CAAwE;;;;;QACxE,sDAA4E;;;;;QAE5E,mDAAmD;;;;;QACnD,qDAAqD;;;;;QACrD,+CAAyD;;;;;QACzD,mDAAmD;;;;;QACnD,oDAAgF;;;;;QAEhF,gDAA6E;;;;;QAC7E,iDAAmE;;QACnE,mDAA6D;;;;;QAE7D,iDAAyC;;;;;QACzC,2CAA4C;;;;;QAEhC,sCAA+B;;;;;QAC/B,2CAAyC;;QACzC,2CAAuE;;;;;;;;QC1D/B9B,oDAAmB;QAoBvE;YAAA,YACE,iBAAO,SAOR;YANO,IAAA,kCAAkF,EAAhF,gBAAK,EAAE,oBAAO,EAAE,kBAAM,EAAE,cAAI,EAAE,gBAAK,EAAE,oBAAO,EAAE,sBAAkC;YACxF,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,GAAG;;;;YAAC,UAAA,CAAC,IAAI,OAAAyD,sBAAc,CAAC,aAAa,CAAC,CAAC,CAAC,GAAA,EAAC,CAAC;YAC1F,KAAI,CAAC,cAAc,GAAGyB,cAAO,CAAC,aAAa;;;;YAAC,UAAC,eAA+B;gBAC1E,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;aACtD,EAAC,CAAC;YACH,KAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC,cAAc;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,gBAAgB,GAAA,EAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAA;;SAC3H;;;;;QAGD,iDAAM;;;;QAAN,UAAO,QAAyB;;gBACxB,OAAO,sBAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,EAAW;YACvD,OAAO;gBACL,KAAK;;;gBAAE,cAAM,OAAA,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,GAAA,CAAA;gBACxF,OAAO;;;gBAAE,cAAM,OAAA,OAAO,IAAI,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,GAAA,CAAA;gBACzG,IAAI;;;gBAAE,cAAM,OAAA,OAAO,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,GAAA,CAAA;aAC9F,CAAC;SACH;;;;;QAED,mDAAQ;;;;QAAR,UAAS,KAAqB;YAC5B,OAAO,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACzD;;;;QAED,mDAAQ;;;QAAR;SACC;;oBAhDFtD,cAAS,SAAC;wBACT,QAAQ,EAAE,EAAE;qBACb;;;;;6BAGEpB,UAAK;kCAGLA,UAAK;kCAILA,UAAK;uCAGLA,UAAK;;QATNiB;YADUK,uBAAgB,CAAC,aAAa,CAAC;;wEACD;QAGxCL;YADUC,kBAAW,EAAE;sCACVG,gBAAS;6EAAgC;QAItDJ;YADUwD,wBAAiB,CAAC,kBAAkB,CAAC;sCAClC,oBAAoB;6EAAC;QAGlCxD;YADUC,kBAAW,EAAE;sCACLC,iBAAU;kFAAuB;QAkBnDF;YADC6B,WAAO,EAAE;;6CACOC,uBAAe;;sEAO/B;QASH,uCAAC;KAAA,CA/CqD,mBAAmB,GA+CxE;;;QA7CC,kDACwC;;QAExC,uDACsD;;QAGtD,uDACkC;;QAElC,4DACmD;;QAEnD,4DAA2D;;QAE3D,0DAAgE;;QAChE,iEAAiE;;;;;;;;QCzBjE;SACC;;;;QAED,uCAAQ;;;QAAR;SACC;;oBAjBF3B,cAAS,SAAC;wBACT,QAAQ,EAAE,kBAAkB;wBAC5B,0MAA4C;;qBAE7C;;;;;gCAGEpB,UAAK;2BAGLA,UAAK;;QAFNiB;YADUC,kBAAW,EAAE;sCACZC,iBAAU;+DAAU;QAG/BF;YADUwD,wBAAiB,CAAC,WAAW,CAAC;;0DAC1B;QAQhB,2BAAC;KAnBD,IAmBC;;;QAZC,yCAC+B;;QAE/B,oCACc;;;;;;;ACdhB;QAaE;SACC;;;;QAED,sCAAQ;;;QAAR;SACC;;oBAfFrD,cAAS,SAAC;wBACT,QAAQ,EAAE,iBAAiB;wBAC3B,QAAQ,EAAE,0FAIT;;qBAEF;;;;QAQD,0BAAC;KAhBD;;;;;;;QCM2C5B,yCAAgC;QAKzE;YAAA,YACE,iBAAO,SACR;YAJM,cAAQ,GAAG,IAAI,CAAC;;SAItB;;;;QAED,0CAAU;;;QAAV;YACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB;;;;QAED,4CAAY;;;QAAZ;YACE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;;;;QAED,0CAAU;;;QAAV;YACE,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;SAChC;;oBAxBF4B,cAAS,SAAC;wBACT,QAAQ,EAAE,oBAAoB;wBAC9B,ufAA8C;;qBAE/C;;;;;+BAGEuD,gBAAW,SAAC,gBAAgB;;QAkB/B,4BAAC;KAAA,CApB0C,gCAAgC,GAoB1E;;;QAlBC,yCACuB;;;;;;;;QCH2BnF,kDAAgC;QAClF;mBACE,iBAAO;SACR;;oBARF4B,cAAS,SAAC;wBACT,QAAQ,EAAE,6BAA6B;wBACvC,mcAAuD;;qBAExD;;;;QAKD,qCAAC;KAAA,CAJmD,gCAAgC;;;;;;ACRpF;QAiBA;SAmCC;;oBAnCAd,aAAQ,SAAC;wBACR,OAAO,EAAE;4BACPC,mBAAY;4BACZC,kCAAuB;4BACvBoE,iCAAwB;4BACxBlC,mBAAY;4BACZ7B,kBAAa;4BACbgE,kBAAa;4BACbC,wBAAgB;4BAChBC,kBAAa;4BACb,gBAAgB;yBACjB;wBACD,YAAY,EAAE;4BACZ,mBAAmB;4BACnB,oBAAoB;4BACpB,oBAAoB;4BACpB,8BAA8B;4BAC9B,qBAAqB;4BACrB,gCAAgC;yBACjC;wBACD,eAAe,EAAE,CAAC,oBAAoB,CAAC;wBACvC,OAAO,EAAE;4BACP,oBAAoB;4BACpB,oBAAoB;4BACpB,mBAAmB;4BACnB,8BAA8B;4BAC9B,qBAAqB;4BACrB,gCAAgC;yBACjC;wBACD,SAAS,EAAE;;yBAEV;qBACF;;QAGD,kBAAC;KAnCD;;;;;;ACjBA;QAYA;SAyBC;;oBAzBAzE,aAAQ,SAAC;wBACR,YAAY,EAAE,EAAE;wBAChB,OAAO,EAAE;4BACPC,mBAAY;4BACZC,kCAAuB;4BACvBC,iBAAW;4BACXC,uBAAc;4BACdC,2BAAkB;4BAClBC,wBAAe;4BACfC,kBAAa;4BACb,gBAAgB;4BAChB,gBAAgB;4BAChB,WAAW;4BACX,iBAAiB;yBAClB;wBACD,OAAO,EAAE;4BACP,iBAAiB;4BACjB,WAAW;4BACX,gBAAgB;4BAChB,gBAAgB;4BAChB,aAAa;yBACd;qBAEF;;QAED,8BAAC;KAzBD;;;;;;ICZA;QAEM,mBAAmB,GAAGmD,kBAAK,CAAC;QAChC,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,GAAG;QACb,UAAU,EAAE,GAAG;QACf,aAAa,EAAE,GAAG;KACnB,CAAC;;;AAGF,QAAa,yBAAyB,GAAGI,oBAAO,CAAC,kBAAkB,EAAE;QACnEC,uBAAU,CAAC,QAAQ,EAAE,CAAC,mBAAmB,EAAEF,oBAAO,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACvGE,uBAAU,CAAC,QAAQ,EAAE,CAACF,oBAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;KACxG,CAAC;;QAEI,mBAAmB,GAAGH,kBAAK,CAAC;QAChC,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,GAAG;QAChB,YAAY,EAAE,GAAG;KAClB,CAAC;;AAEF,QAAa,0BAA0B,GAAGI,oBAAO,CAAC,mBAAmB,EAAE;QACrEC,uBAAU,CAAC,QAAQ,EAAE,CAAC,mBAAmB,EAAEF,oBAAO,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;QACvGE,uBAAU,CAAC,QAAQ,EAAE,CAACF,oBAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;KACxG,CAAC;;;;;;;;;;;ACzBF;QACE,mBAAqB,KAAa,EAAW,MAAc;YAAtC,UAAK,GAAL,KAAK,CAAQ;YAAW,WAAM,GAAN,MAAM,CAAQ;SAC1D;QACH,gBAAC;KAAA,IAAA;;;QAFa,0BAAsB;;QAAE,2BAAuB;;;;;;;ACD7D;QAME,eAAqB,CAAS,EAAW,CAAS;YAA7B,MAAC,GAAD,CAAC,CAAQ;YAAW,MAAC,GAAD,CAAC,CAAQ;SACjD;;;;;QALM,UAAI;;;;QAAX,UAAY,IAA8B;YACxC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;SAClC;;;;;;QAKD,yBAAS;;;;;QAAT,UAAU,CAAS,EAAE,CAAS;YAC5B,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1C;QACH,YAAC;KAAA,IAAA;;;QANa,kBAAkB;;QAAE,kBAAkB;;;;;;;;QCHxB3E,0BAAS;QAEnC,gBAAqB,GAAW,EAAW,IAAY,EAAW,KAAa,EAAW,MAAc;YAAxG,YACE,kBAAM,KAAK,EAAE,MAAM,CAAC,SACrB;YAFoB,SAAG,GAAH,GAAG,CAAQ;YAAW,UAAI,GAAJ,IAAI,CAAQ;YAAW,WAAK,GAAL,KAAK,CAAQ;YAAW,YAAM,GAAN,MAAM,CAAQ;;SAEvG;;;;;QAED,mCAAkB;;;;QAAlB,UAAmB,KAA4C;YAC7D,IAAI,KAAK,YAAY,UAAU,EAAE;gBAC/B,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aACvE;iBAAM;gBACL,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aAC3D;SACF;QACH,aAAC;KAbD,CAA4B,SAAS,GAapC;;;QAXawF,6BAAoB;;QAAEA,8BAAqB;;QAAEA,+BAAsB;;QAAEA,gCAAuB;;IAa1G,WAAiB,MAAM;;;;;QACrB,SAAgB,SAAS,CAAC,OAAoB;;gBACtC,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE;YAC5C,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SACjE;QAHe,gBAAS,YAGxB,CAAA;KACF,EALgBA,cAAM,KAANA,cAAM,QAKtB;;;;;;;QChByCxF,wCAAmB;QAI3D,8BAA+B,UAAsB,EAAqB,MAAc;YAAxF,YACE,iBAAO,SACR;YAF8B,gBAAU,GAAV,UAAU,CAAY;YAAqB,YAAM,GAAN,MAAM,CAAQ;YAFhF,kBAAY,GAAG,IAAIyF,kBAAW,CAAS,IAAID,cAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;SAItE;;;;QAED,8CAAe;;;QAAf;YAAA,iBAQC;YAPC,IAAI,CAAC,YAAY,EAAE,CAAC;;gBACd,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;;gBACvC,EAAE,GAAG,IAAI,cAAc;;;;;YAAC,UAAC,OAAO,EAAE,QAAQ;gBAC9C,KAAI,CAAC,MAAM,CAAC,GAAG;;;gBAAC,cAAM,OAAA,KAAI,CAAC,YAAY,EAAE,GAAA,EAAC,CAAC;aAC5C,EAAC;YACF,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpB,IAAI,CAAC,SAAS;;;YAAC,cAAM,OAAA,EAAE,CAAC,UAAU,EAAE,GAAA,EAAC,CAAC;SACvC;QAED,sBAAI,6CAAW;;;;YAAf;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aACnC;;;WAAA;QAED,sBAAI,+CAAa;;;;YAAjB;gBACE,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;aACtC;;;WAAA;;;;;;;QAGM,iDAAkB;;;;;;QAAzB,UAA0B,KAA4C;YACpE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAC9C;QAED,sBAAI,wCAAM;;;;YAAV;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;aAChC;;;WAAA;;;;;QAEO,2CAAY;;;;QAApB;YACE,IAAI,CAAC,YAAY,CAAC,KAAK,GAAGA,cAAM,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAChE;QAGH,2BAAC;KAxCD,CAA0C,mBAAmB,GAwC5D;;;;;;QAtCC,4CAAuE;;;;;QAE3D,0CAAyC;;;;;QAAE,sCAAiC;;;;;;;;;;;;;;;;;;;;ICX1F,oBAMC;;;;;QALC,wCAAiB;;;;QAEjB,0CAAoB;;;;QAEpB,qCAAa;;;;;;;;;;ICHf,sBAIC;;;QAHC,8BAA4B;;;;QAE5B,2CAAiB;;;;;;;;;;;ICLnB,qBAEC;IAED,WAAiB,MAAM;;;;;QACrB,uBAGC;;;;YAFC,wBAA0B;;YAC1B,yBAA2B;;KAG9B,EANgB,MAAM,KAAN,MAAM,QAMtB;;;;;;;;;;ICND,oCAIC;;;QAHC,8CAAgD;;QAChD,6CAAgB;;;;;QAChB,0EAA2C;;;;;;;;QCCCxF,4CAAsB;QAIlE,kCAA6B,aAAwB,EAAW,MAA4B;YAA5F,YACE,iBAAO,SAOR;YAR4B,mBAAa,GAAb,aAAa,CAAW;YAAW,YAAM,GAAN,MAAM,CAAsB;YAF3E,kBAAY,GAAG,IAAIyC,wBAAiB,CAAU,KAAK,CAAC,CAAC;YAIpEvC,0BAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC7B,KAAI,CAAC,SAAS;;;YAAC;gBACb,IAAI,KAAI,CAAC,QAAQ,EAAE,EAAE;oBACnBE,WAAI,CAAC,YAAY,CAAC,8BAA8B,CAAC,CAAC;iBACnD;aACF,EAAC,CAAC;;SACJ;QAED,sBAAI,4CAAM;;;;YAAV;gBACE,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;aACnC;;;WAAA;;;;;;;;;QAES,iDAAc;;;;;;;;QAAxB,UAAkC,YAA8C,EAAE,IAAO,EAAE,YAA4B;YAAvH,iBAgDC;YAhD0F,6BAAA,EAAA,mBAA4B;YACrH,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACnBA,WAAI,CAAC,YAAY,CAAC,mCAAiC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG;;;;gBAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,CAAC,IAAI,GAAA,EAAC,CAAC,IAAI,CAAC,IAAI,CAAG,CAAC,CAAC;aACvH;YACD,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC;;gBACzB,MAAM,gBACP,IAAI,CAAC,MAAM,EACX;gBACD,IAAI,MAAA;gBACJ,YAAY,cAAA;gBACZ,UAAU,EAAE,4BAA4B;aACzC,CACF;;gBAEK,IAAI,GAAG,IAAI;;gBACX,YAAY,sBAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,EAAqD;YACrI,OAAO,IAAI,OAAO;;;;;YAAI,UAAC,OAAO,EAAE,MAAM;;oBAC9B,iBAAiB,GAAG,YAAY,CAAC,iBAAiB;gBACxD,IAAI,CAAC,gCAAgC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBAEtE,iBAAiB,CAAC,4BAA4B,GAAG;oBAC/C,aAAa,EAAE,YAAY;oBAC3B,YAAY,EAAE,IAAI;oBAClB,MAAM;;;;8BAAC,MAAM;wBACX,OAAO,CAAC,MAAM,CAAC,CAAC;wBAChB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBAC1B;oBACD,QAAQ;;;;8BAAC,KAAK;wBACZ,MAAM,CAAC,KAAK,CAAC,CAAC;wBACd,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;qBAC1B;iBACF,CAAC;;;;gBAIF,YAAY,CAAC,WAAW,EAAE,CAAC,SAAS;;;;gBAAC,UAAA,sBAAsB;oBACzD,IAAI,CAAC,sBAAsB,EAAE;wBAC3B,MAAM,CAAC,aAAa,CAAC,CAAC;qBACvB;iBACF,EAAC,CAAC;gBACH,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC1B,YAAY,CAAC,WAAW,EAAE,CAAC,SAAS;;;;gBAAC,UAAA,sBAAsB;oBACzD,YAAY,CAAC,UAAU,EAAE,CAAC;iBAC3B,EAAC,CAAC;aACJ,EAAC,CAAC,OAAO;;;YAAC;gBACT,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC;gBAC5C,KAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;aACjC,EAAC,CAAC;SACJ;;;;;;;;;;QAMD,mEAAgC;;;;;QAAhC,UAAiC,QAAuC;YAAxE,iBAEC;YADC,UAAU;;;YAAC,cAAM,OAAA,KAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAA,EAAC,CAAC;SAClD;QAEH,+BAAC;KA5ED,CAA8C,sBAAsB,GA4EnE;;;;;;QA1EC,gDAAsE;;;;;QAE1D,iDAAyC;;QAAE,0CAAqC;;;;;;;;ACH9F,QAAa,mCAAmC,GAAG,IAAI2B,mBAAc,CAAuB,qCAAqC,CAAC;AAElI;QAGqD/B,mDAA8B;QAIjF,yCAA6B,aAAwB,EACyB,qBAA2C,EACpD,sBAA4C;YAFjH,YAIE,iBAAO,SAER;YAN4B,mBAAa,GAAb,aAAa,CAAW;YACyB,2BAAqB,GAArB,qBAAqB,CAAsB;YACpD,4BAAsB,GAAtB,sBAAsB,CAAsB;YAG/GE,0BAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;;SAC9B;;;;QAED,kEAAwB;;;QAAxB;;gBACQ,MAAM,cACV,SAAS,EAAE,KAAK,EAChB,WAAW,EAAE,IAAI,EACjB,iBAAiB,EAAE,KAAK,IACrB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,qBAAqB,CAC9B;YAED,OAAO,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SACjE;;oBAzBF2C,eAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;oBAZQ6C,kBAAS;oBACmBC,sBAAe,uBAiBrCZ,aAAQ,YAAIxE,WAAM,SAAC,mCAAmC;oBAjBhCoF,sBAAe,uBAkBrCZ,aAAQ,YAAIxE,WAAM,SAACqF,iCAA0B;;;8CApB5D;KAqCC,CAvBoD,8BAA8B,GAuBlF;;;QArBC,iDAAwC;;;;;QAE5B,wDAAyC;;QACzC,gEAA6G;;QAC7G,iEAAqG;;;;;;;;;;;;;;;ICpBnH,sBAMC;;;;;QALC,0CAAgB;;;;QAEhB,yCAAgB;;;;QAEhB,4CAAmB;;;;;;;ICLrB;;;;IAKA,SAAgB,KAAK,CAAC,OAAsB;QAC1C;;;;QAAO,UAAC,MAAgB;YACtB,IAAInC,sBAAc,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE;gBACtDA,sBAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAIF,uBAAe,CACzD,MAAM,EACN,OAAO,CAAC,IAAI,EACZI,gBAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,EAC3D,OAAO,CAAC,IAAI,EACZF,sBAAc,CAAC,kBAAkB,CAAC,MAAM,CAAC,EACzC,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG;;;;gBAAC,UAAA,CAAC,IAAI,OAAAA,sBAAc,CAAC,aAAa,CAAC,CAAC,CAAC,GAAA,EAAC,CACnE,CAAC,CAAC;aAEJ;iBAAM;gBACLrD,WAAI,CAAC,YAAY,CAAI,MAAM,4DAAyD,CAAC,CAAC;aACvF;SACF,EAAC;KACH;IAED,WAAiB,KAAK;;;;QAEpB,sBAMC;;;;YALC,uBAAa;;YACb,uBAA8B;;YAC9B,+BAAuB;;YACvB,2BAA0C;;YAC1C,+BAA4C;;KAG/C,EAVgB,KAAK,KAAL,KAAK,QAUrB;;;;;;;;;;;ACzBD;QAIE,kCAAY,QAAkB,EAAE,WAAyB;YACvD,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAChC,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG;;;;YAAC,UAAA,CAAC,IAAI,OAAA,IAAI,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,GAAA,EAAC,CAChE,CAAC,MAAM;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,GAAA,EAAC,CAAC;SACpB;;;;;QAED,sCAAG;;;;QAAH,UAAI,IAAY;;gBACR,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAA,EAAC;YACtD,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC3B;;;;;QAED,yCAAM;;;;QAAN,UAAO,IAAY;;gBACX,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAA,EAAC;YACtD,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;;;;;QAED,sCAAG;;;;QAAH,UAAI,IAAY;YACd,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI;;;;YAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAA,EAAC,CAAC;SAChD;QAGD,sBAAI,0CAAI;;;;YAAR;gBACE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM;;;;;gBAAC,UAAC,MAAM,EAAE,MAAM,IAAK,OAAA,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAA,GAAE,EAAE,CAAC,CAAC;aAClF;;;WAAA;QAFDqB;YADC6B,WAAO,EAAE;;;4DAGT;QACH,+BAAC;KA5BD,IA4BC;;;;;;QA1BC,6CAA8B;;IA4BhC;QACE,yBAA6B,MAA+B;YAA/B,WAAM,GAAN,MAAM,CAAyB;SAC3D;;;;;QAED,6BAAG;;;;QAAH,UAAI,IAAY;YACd,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC1B;;;;;QAED,gCAAM;;;;QAAN,UAAO,IAAY;;gBACX,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAC5B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;SAC/C;;;;;QAED,6BAAG;;;;QAAH,UAAI,IAAY;YACd,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACjC;QAED,sBAAI,iCAAI;;;;YAAR;gBACE,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACjC;;;WAAA;QAEH,sBAAC;KAAA,IAAA;;;;;;QApBa,iCAAgD;;;;;;;;QC/B5D;SACC;;;;;;QAEK,mCAAW;;;;;QAAjB,UAAkB,cAAsC,EAAE,KAA0B;;;oBAClF,sBAAO,IAAI,EAAC;;;SACb;;oBAVFT,eAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;;4BALD;KAGA;;;;;;;QCIE,wBAAoB,cAAsC,EAAU,MAAc,EAAU,YAA0B,EAAU,QAAkB;YAA9H,mBAAc,GAAd,cAAc,CAAwB;YAAU,WAAM,GAAN,MAAM,CAAQ;YAAU,iBAAY,GAAZ,YAAY,CAAc;YAAU,aAAQ,GAAR,QAAQ,CAAU;SAEjJ;;;;;;;QAGK,iCAAQ;;;;;;QAAd,UAAe,KAAY;;;;;;4BACnB,QAAQ,GAAG,KAAK,CAAC,eAAe;iCAClC,QAAQ,CAAC,UAAU,EAAE,EAArB,wBAAqB;4BACjB,UAAU,GAAG,QAAQ,CAAC,sBAAsB,EAAE;4BAC9C,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE;4BACX,qBAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAA;;4BAA5F,cAAc,GAAG,SAA2E;;;4BAGlG,IAAI,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE;;;gCAGlD,sBAAO,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,EAAC;6BAClD;;;;4BAIG,aAAa,GAAG,QAAQ,CAAC,qBAAqB,CAAC;gCACnD,sBAAsB,EAAE,IAAI;gCAC5B,yBAAyB,EAAE,IAAI;6BAChC,CAAC;4BACE,cAAc,GAAU,KAAK;4BACxB,CAAC,GAAG,CAAC;;;kCAAE,CAAC,GAAG,aAAa,CAAC,MAAM,CAAA;4BAChC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC;4BACtB,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC;4BACnB,qBAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAA;;4BAA5F,cAAc,GAAG,SAA2E;4BAClG,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE;gCACzC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;6BAC9D;;;4BANuC,CAAC,EAAE,CAAA;;gCAS7C,sBAAO,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,cAAc,GAAG,KAAK,EAAC;;;;SACtE;QAEH,qBAAC;KAAA,IAAA;;;;;;QAtCa,wCAA8C;;;;;QAAE,gCAAsB;;;;;QAAE,sCAAkC;;;;;QAAE,kCAA0B;;;;;;;;;;ACgBpJ;;;;QAGE,oBAA6B,MAAc,EACvB,aAA4B,EACnB,WAAwB,EACxB,YAA0B,EAC1B,kBAAsC,EACtC,QAAkB;YALlB,WAAM,GAAN,MAAM,CAAQ;YACvB,kBAAa,GAAb,aAAa,CAAe;YACnB,gBAAW,GAAX,WAAW,CAAa;YACxB,iBAAY,GAAZ,YAAY,CAAc;YAC1B,uBAAkB,GAAlB,kBAAkB,CAAoB;YACtC,aAAQ,GAAR,QAAQ,CAAU;SAC9C;;;;;;;;QAGK,gCAAW;;;;;;;QAAjB,UAAkB,cAAsC,EAAE,KAA0B;;;;;;oBAIlF,sBAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,KAAK;;;;wBAAE,UAAO,eAAe;;;;;4CAE3D,qBAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,KAAK;;;wCAAE;;;;;;wDAE/D,MAAM,GAAG,IAAI,wBAAwB,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC;wDAClF,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC;wDAEvD,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,IAAI,KAAK,CAAC,eAAe,EAAE,YAAY,CAAC;wDACxH,SAAS,GAAG,IAAI,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC;wDAC5E,qBAAM,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC,EAAA;;wDAA1F,cAAc,GAAG,SAAyE;;wDAGhG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;wDAC5D,IAAI,YAAY,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE;;4DAEhD,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC;4DAC5F,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;4DACvD,sBAAO,WAAW,EAAC;yDACpB;6DAAM;4DACL,sBAAO,IAAI,EAAC;yDACb;;;;6CACF,EAAC,EAAA;;wCAnBI,MAAM,GAAG,SAmBb;wCACF,sBAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAC;;;6BAEvC,EAAC,EAAC;;;SACJ;;;;;;;;;;QAGK,kCAAa;;;;;;;;;QAAnB,UAAoB,SAAyB,EAAE,YAAoC,EAAE,YAAiC,EAAE,SAA+B;;;;;;4BAC/I,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC;4BACxD,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;4BACzC,qBAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,EAAA;;4BAAlG,MAAM,GAAG,SAAyF;4BACxG,sBAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAC;;;;SACvC;;;;;;QAEO,sCAAiB;;;;;QAAzB,UAA0B,MAAM;YAC9B,IAAI,MAAM,YAAYkB,mBAAW,EAAE;gBACjC,OAAO,MAAM,CAAC,OAAO,CAAC;aACvB;iBAAM;gBACL,OAAO,MAAM,CAAC;aACf;SACF;;;;;;;;;;QAGe,uCAAkB;;;;;;;;;QAAlC,UAAmC,cAAsC,EAAE,KAA0B,EAAE,cAAgF;;;;;;iCACjLN,sBAAc,CAAC,2BAA2B,CAAC,cAAc,CAAC,SAAS,CAAC,EAApE,wBAAoE;4BAChE,eAAe,GAAGA,sBAAc,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC;iCACtD,eAAe,CAAC,YAAY,EAA5B,wBAA4B;4BAAG,qBAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,EAAA;;4BAA9C,KAAA,SAA8C,CAAA;;;4BAAG,KAAA,IAAI,CAAA;;;4BAAtG,eAAe,KAAuF;4BAC5G,IAAI,eAAe,KAAK,IAAI,EAAE;;gCAE5B,sBAAO,cAAc,CAAC,eAAe,CAAC,EAAC;6BACxC;iCAAM;gCACL,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;gCACtD,sBAAO,eAAe,EAAC;6BACxB;;gCAED,sBAAOrD,WAAI,CAAC,YAAY,CAAC,iEAA+D,cAAc,CAAC,SAAW,CAAC,EAAC;;;;;SAEvH;;;;;;;;QAGK,iCAAY;;;;;;;QAAlB,UAAmB,cAAsC,EAAE,KAA0B;;;;oBAC7E,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC;oBACtF,sBAAO,CAAC,UAAU,YAAYyF,eAAU,IAAI,UAAU,CAAC,SAAS,EAAE,GAAG,UAAU,EAAC;;;SACjF;;;;;;;;;QAKK,0CAAqB;;;;;;;;QAA3B,UAA4B,KAA6B,EAAE,KAA0B,EAAE,IAA0C;;;;oBACzH,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;oBAChD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,iBAAiB,EAAE,EAAE;;;wBAGlE,sBAAO,GAAG,CAAC,oBAAoB,EAAE,EAAC;qBACnC;yBAAM;wBACL,sBAAO,IAAI,EAAE,EAAC;qBACf;;;;SACF;QAEH,iBAAC;KAAA,IAAA;;;;;;QA7Fa,4BAA+B;;;;;QAC/B,mCAAoC;;;;;QACpC,iCAAyC;;;;;QACzC,kCAA2C;;;;;QAC3C,wCAAuD;;;;;QACvD,8BAAmC;;;;;;QA0E/C,4DAAuD;;;;;;;ICzGzD;AAQA,AAoCC;IApCD,WAAiB,SAAS;QAExB;YAAA;aAQC;;;;;YAPC,2BAAM;;;;YAAN,UAAO,KAAa;gBAClB,OAAO,KAAK,CAAC;aACd;;;;;YAED,0BAAK;;;;YAAL,UAAM,KAAa;gBACjB,OAAO,KAAK,CAAC;aACd;YACH,iBAAC;SAAA,IAAA;QAED;YAAA;aASC;;;;;YARC,2BAAM;;;;YAAN,UAAO,KAAa;gBAClB,OAAOzC,mBAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAACA,mBAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAG,KAAO,GAAG,IAAI,CAAC;aACjE;;;;;YAED,0BAAK;;;;YAAL,UAAM,KAAa;;oBACX,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;gBACvC,OAAOA,mBAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;aACxC;YACH,iBAAC;SAAA,IAAA;QAED;YAAA;aAQC;;;;;YAPC,4BAAM;;;;YAAN,UAAO,KAAc;gBACnB,OAAO,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;aACjC;;;;;YAED,2BAAK;;;;YAAL,UAAM,KAAa;gBACjB,OAAO,KAAK,KAAK,MAAM,CAAC;aACzB;YACH,kBAAC;SAAA,IAAA;QAEY,gBAAM,GAAG,IAAI,UAAU,EAAE;QACzB,gBAAM,GAAG,IAAI,UAAU,EAAE;QACzB,iBAAO,GAAG,IAAI,WAAW,EAAE;KACzC,EApCgB0C,iBAAS,KAATA,iBAAS,QAoCzB;;;;;;;;;ICzCD,wBACC;;;;IAED,sBAEC;;;;;;ICRD;;;;IAOA,6BAMC;;;QALC,4BAAY;;QACZ,kCAAmB;;QACnB,kCAAmB;;QACnB,sCAAiB;;;;;;IAInB,oCAOC;;;QANC,mCAAY;;QACZ,yCAAmB;;QACnB,yCAAmB;;QACnB,6CAAiB;;QACjB,2CAAyB;;;;;;IAI3B,wCAOC;;;QANC,uCAAY;;QACZ,6CAAmB;;QACnB,6CAAmB;;QACnB,iDAAmB;;QACnB,+CAAyB;;;;;;;;IAI3B,SAAgB,OAAO,CAA4B,IAAkB,EAAE,OAA2B;QAChG;;;;;QAAO,UAAC,SAAiB,EAAE,WAA4B;;gBAC/C,KAAK,GAAG,IAAIzC,2BAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC;YACpFK,yBAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC3EhC,kBAAW,CAAC,EAAC,GAAG,EAAE,cAAY,SAAS,CAAC,WAAW,CAAC,IAAI,SAAI,WAAW,CAAC,QAAQ,EAAE,MAAG,EAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACjH,EAAC;KACH;;;;;;IAED,SAAgB,cAAc,CAAI,OAAkC;;YAC5D,IAAI,GAAGyB,wBAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9B;;;;;QAAO,UAAC,SAAiB,EAAE,WAA4B;;gBAC/C,KAAK,GAAG,IAAIE,2BAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3HK,yBAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC3EhC,kBAAW,CAAC,EAAC,GAAG,EAAE,qBAAmB,SAAS,CAAC,WAAW,CAAC,IAAI,SAAI,WAAW,CAAC,QAAQ,EAAE,MAAG,EAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACxH,EAAC;KACH;;;;;;IAED,SAAgB,kBAAkB,CAAI,OAAsC;;YACpE,IAAI,GAAGyB,wBAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAC9B;;;;;QAAO,UAAC,SAAiB,EAAE,WAA4B;;gBAC/C,KAAK,GAAG,IAAIE,2BAAmB,CAAC,cAAc,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3HK,yBAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC3EhC,kBAAW,CAAC,EAAC,GAAG,EAAE,yBAAuB,SAAS,CAAC,WAAW,CAAC,IAAI,SAAI,WAAW,CAAC,QAAQ,EAAE,MAAG,EAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC5H,EAAC;KACH;;;;;;;;;;ICrDD,iCAEC;;;;;;;;QADC,uFAAmG;;;;;;;;;;;ICHrG,gCAIC;;;QAHC,uCAAuC;;QACvC,kCAAkB;;;;QAClB,wDAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|