@geoit/ui 0.1.0 → 0.1.1

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.
@@ -150,6 +150,18 @@ export const GEO_MAP_DEFAULT_TOOLBAR_ACTIONS = [
150
150
  tooltip: 'Chụp ảnh bản đồ',
151
151
  },
152
152
  ];
153
+ /**
154
+ * Built-in "Vị trí của tôi" toolbar action — pair with `id: 'locate'` handling that
155
+ * `geo-map-shell` already resolves internally (geolocate + emit `located`/`locateError`).
156
+ * Not included in `GEO_MAP_DEFAULT_TOOLBAR_ACTIONS`; host apps opt in explicitly.
157
+ */
158
+ export const GEO_MAP_LOCATE_TOOLBAR_ACTION = {
159
+ id: 'locate',
160
+ label: 'Vị trí của tôi',
161
+ icon: 'aim',
162
+ iconOnly: true,
163
+ tooltip: 'Vị trí của tôi',
164
+ };
153
165
  /**
154
166
  * Demo thematic overlays for Storybook (offline-friendly GeoJSON).
155
167
  * Groups match portal layers popover: QHSDD · địa chính · hiện trạng.
@@ -494,4 +506,4 @@ export const GEO_MAP_DEFAULT_PLANNING_LAYERS = [
494
506
  features: [],
495
507
  },
496
508
  ];
497
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tbWFwL2dlby1tYXAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBOEIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsV0FBVyxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQUU5QyxtRUFBbUU7QUFDbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsZUFBZSxDQUFDO0FBRXhELDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxpQkFBaUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUM7QUFDeEQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsaUJBQWlCLENBQUM7QUFFNUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBSzdDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFbEMseUVBQXlFO0FBQ3pF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LElBQUk7UUFDYixPQUFPLEVBQUUsQ0FBQztRQUNWLE1BQU0sRUFBRSxHQUFHO1FBQ1gsS0FBSyxFQUFFLFFBQVE7UUFDZixRQUFRLEVBQUUsRUFBRTtLQUNiO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgR2VvTWFwQmFzZW1hcE9wdGlvbixcbiAgR2VvTWFwTGF5ZXJDb25maWcsXG4gIEdlb01hcExlZ2VuZEl0ZW0sXG4gIEdlb01hcFBhcmNlbERldGFpbCxcbiAgR2VvTWFwVG9vbGJhckFjdGlvbixcbiAgR2VvTWFwWHl6TGF5ZXJDb25maWcsXG59IGZyb20gJy4vZ2VvLW1hcC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7IEdlb1RyZWVOb2RlIH0gZnJvbSAnLi4vZ2VvLXRyZWUvZ2VvLXRyZWUudHlwZXMnO1xuaW1wb3J0IHsgR0VPX01BUF9UT09MQkFSX0lDT05TIH0gZnJvbSAnLi9nZW8tbWFwLXRvb2xiYXIuaWNvbnMnO1xuXG4vKiogQnVpbHQtaW4gQ1JTIGNvZGVzIGF2YWlsYWJsZSB3aXRob3V0IGN1c3RvbSBwcm9qNCByZWdpc3RyYXRpb24uICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9CVUlMVElOX1BST0pFQ1RJT05TID0gWydFUFNHOjQzMjYnLCAnRVBTRzozODU3J10gYXMgY29uc3Q7XG5cbi8qKlxuICogRGVmYXVsdCB2aWV3IOKAlCBXZWIgTWVyY2F0b3IgYXJvdW5kIMSQw6AgTOG6oXQgKEzDom0gxJDhu5NuZykuXG4gKiBDZW50ZXIgaXMgYWxyZWFkeSBpbiBFUFNHOjM4NTcgKGRvIG5vdCB0cmVhdCBhcyBsb24vbGF0KS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9DRU5URVI6IHJlYWRvbmx5IFtudW1iZXIsIG51bWJlcl0gPSBbMTIwNTIwMDAsIDEzMzAwMDBdO1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9aT09NID0gMTE7XG5leHBvcnQgY29uc3QgR0VPX01BUF9ERUZBVUxUX01JTl9aT09NID0gMjtcbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFRkFVTFRfTUFYX1pPT00gPSAyMDtcbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFRkFVTFRfVklFV19QUk9KRUNUSU9OID0gJ0VQU0c6Mzg1Nyc7XG5leHBvcnQgY29uc3QgR0VPX01BUF9ERUZBVUxUX0hFSUdIVCA9ICc0ODBweCc7XG5cbi8qKiBJbnRlcm5hbCBsYXllciBpZCByZXNlcnZlZCBmb3IgdGhlIGBiYXNlbWFwYCBpbnB1dCBzaG9ydGN1dC4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0JBU0VNQVBfTEFZRVJfSUQgPSAnX19nZW9fYmFzZW1hcCc7XG5cbi8qKiBJbnRlcm5hbCB2ZWN0b3IgbGF5ZXJzIHJlc2VydmVkIGZvciBzZWxlY3Rpb24gLyBtZWFzdXJlIC8gaGlnaGxpZ2h0LiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfU0VMRUNUSU9OX0xBWUVSX0lEID0gJ19fZ2VvX3NlbGVjdGlvbic7XG5leHBvcnQgY29uc3QgR0VPX01BUF9NRUFTVVJFX0xBWUVSX0lEID0gJ19fZ2VvX21lYXN1cmUnO1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfSElHSExJR0hUX0xBWUVSX0lEID0gJ19fZ2VvX2hpZ2hsaWdodCc7XG5cbi8qKlxuICogRGVmYXVsdCBwcm92aW5jZSBleHRlbnQgKEzDom0gxJDhu5NuZyBhcHByb3gsIEVQU0c6NDMyNikgZm9yIOKAnHhlbSB0b8OgbiB04buJbmjigJ0gKFRDUUguMTQgR0Q1KS5cbiAqIEhvc3QgYXBwcyBzaG91bGQgb3ZlcnJpZGUgd2l0aCBhdXRob3JpdGF0aXZlIGJvdW5kYXJ5IGV4dGVudCBmcm9tIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9QUk9WSU5DRV9FWFRFTlRfNDMyNjogcmVhZG9ubHkgW1xuICBudW1iZXIsXG4gIG51bWJlcixcbiAgbnVtYmVyLFxuICBudW1iZXIsXG5dID0gWzEwNy4yLCAxMS4xNSwgMTA4Ljc1LCAxMi4zNV07XG5cbi8qKiBPcHRpb25hbCB0cmFmZmljIC8gcm9hZHMgcmVmZXJlbmNlIG92ZXJsYXkgKG5vdCBhIHBsYW5uaW5nIGxheWVyKS4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX1RSQUZGSUNfTEFZRVJfSUQgPSAnX19nZW9fdHJhZmZpYyc7XG5cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0VTUklfSU1BR0VSWV9VUkwgPVxuICAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JztcblxuZXhwb3J0IGNvbnN0IEdFT19NQVBfRVNSSV9TVFJFRVRTX1VSTCA9XG4gICdodHRwczovL3NlcnZlci5hcmNnaXNvbmxpbmUuY29tL0FyY0dJUy9yZXN0L3NlcnZpY2VzL1dvcmxkX1N0cmVldF9NYXAvTWFwU2VydmVyL3RpbGUve3p9L3t5fS97eH0nO1xuXG5leHBvcnQgY29uc3QgR0VPX01BUF9FU1JJX1RSQU5TUE9SVF9VUkwgPVxuICAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9SZWZlcmVuY2UvV29ybGRfVHJhbnNwb3J0YXRpb24vTWFwU2VydmVyL3RpbGUve3p9L3t5fS97eH0nO1xuXG4vKiogRGVmYXVsdCBiYXNlbWFwIHBpY2tlciBvcHRpb25zICjEkcaw4budbmcgcGjhu5EgLyB24buHIHRpbmgpLiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9CQVNFTUFQX09QVElPTlM6IEdlb01hcEJhc2VtYXBPcHRpb25bXSA9IFtcbiAge1xuICAgIGlkOiAnb3NtJyxcbiAgICBsYWJlbDogJ8SQxrDhu51uZyBwaOG7kScsXG4gICAgYmFzZW1hcDogJ29zbScsXG4gICAgcHJldmlld1VybDogJ2h0dHBzOi8vdGlsZS5vcGVuc3RyZWV0bWFwLm9yZy82LzUwLzMwLnBuZycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NhdGVsbGl0ZScsXG4gICAgbGFiZWw6ICdW4buHIHRpbmgnLFxuICAgIGJhc2VtYXA6IHtcbiAgICAgIHR5cGU6ICd4eXonLFxuICAgICAgdXJsOiBHRU9fTUFQX0VTUklfSU1BR0VSWV9VUkwsXG4gICAgICBhdHRyaWJ1dGlvbnM6ICdFc3JpLCBNYXhhciwgRWFydGhzdGFyIEdlb2dyYXBoaWNzJyxcbiAgICAgIHRpdGxlOiAn4bqibmggduG7hyB0aW5oJyxcbiAgICB9LFxuICAgIHByZXZpZXdVcmw6XG4gICAgICAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9JbWFnZXJ5L01hcFNlcnZlci90aWxlLzYvMzAvNTAnLFxuICB9LFxuXTtcblxuLyoqIFRyYW5zcG9ydGF0aW9uIHJlZmVyZW5jZSBvdmVybGF5IOKAlCB0b2dnbGUgaW5kZXBlbmRlbnRseSBvZiBiYXNlbWFwLiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfVFJBRkZJQ19PVkVSTEFZOiBHZW9NYXBYeXpMYXllckNvbmZpZyA9IHtcbiAgaWQ6IEdFT19NQVBfVFJBRkZJQ19MQVlFUl9JRCxcbiAgdGl0bGU6ICdM4bubcCBnaWFvIHRow7RuZycsXG4gIHR5cGU6ICd4eXonLFxuICB1cmw6IEdFT19NQVBfRVNSSV9UUkFOU1BPUlRfVVJMLFxuICBhdHRyaWJ1dGlvbnM6ICdFc3JpJyxcbiAgdmlzaWJsZTogZmFsc2UsXG4gIG9wYWNpdHk6IDAuOSxcbiAgekluZGV4OiA1LFxuICBiYXNlbWFwOiBmYWxzZSxcbiAgZ3JvdXA6ICdiYXNlLW1hcCcsXG59O1xuXG4vKiogQnVpbHQtaW4gdG9vbGJhciBhY3Rpb25zIOKAlCBGaWdtYSBtYXAgY2hyb21lIChEYXQgRGFpIExhbSBEb25nIDIwMjYpLiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9UT09MQkFSX0FDVElPTlM6IEdlb01hcFRvb2xiYXJBY3Rpb25bXSA9IFtcbiAge1xuICAgIGlkOiAnaG9tZScsXG4gICAgbGFiZWw6ICdUcmFuZyBjaOG7pycsXG4gICAgaWNvbjogJ2hvbWUnLFxuICAgIGljb25TcmM6IEdFT19NQVBfVE9PTEJBUl9JQ09OUy5ob21lLFxuICAgIGljb25Pbmx5OiB0cnVlLFxuICAgIHRvb2x0aXA6ICdUcmFuZyBjaOG7pycsXG4gICAgdmFyaWFudDogJ3ByaW1hcnknLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzZWFyY2gnLFxuICAgIGxhYmVsOiAnVHJhIGPhu6l1JyxcbiAgICBpY29uOiAnc2VhcmNoJyxcbiAgICBpY29uU3JjOiBHRU9fTUFQX1RPT0xCQVJfSUNPTlMuc2VhcmNoLFxuICAgIGljb25Pbmx5OiB0cnVlLFxuICAgIHRvb2x0aXA6ICdUcmEgY+G7qXUgdGjhu61hIMSR4bqldCcsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3BhbicsXG4gICAgbGFiZWw6ICdEaSBjaHV54buDbicsXG4gICAgaWNvbjogJ2RyYWcnLFxuICAgIGljb25TcmM6IEdFT19NQVBfVE9PTEJBUl9JQ09OUy5wYW4sXG4gICAgaWNvbk9ubHk6IHRydWUsXG4gICAgdG9vbHRpcDogJ0RpIGNodXnhu4NuIGLhuqNuIMSR4buTJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnem9vbS1pbicsXG4gICAgbGFiZWw6ICdQaMOzbmcgdG8nLFxuICAgIGljb246ICdwbHVzJyxcbiAgICBpY29uU3JjOiBHRU9fTUFQX1RPT0xCQVJfSUNPTlMuem9vbUluLFxuICAgIGljb25Pbmx5OiB0cnVlLFxuICAgIHRvb2x0aXA6ICdQaMOzbmcgdG8nLFxuICB9LFxuICB7XG4gICAgaWQ6ICd6b29tLW91dCcsXG4gICAgbGFiZWw6ICdUaHUgbmjhu48nLFxuICAgIGljb246ICdtaW51cycsXG4gICAgaWNvblNyYzogR0VPX01BUF9UT09MQkFSX0lDT05TLnpvb21PdXQsXG4gICAgaWNvbk9ubHk6IHRydWUsXG4gICAgdG9vbHRpcDogJ1RodSBuaOG7jycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2Z1bGxzY3JlZW4nLFxuICAgIGxhYmVsOiAnVG/DoG4gbcOgbiBow6xuaCcsXG4gICAgaWNvbjogJ2Z1bGxzY3JlZW4nLFxuICAgIGljb25TcmM6IEdFT19NQVBfVE9PTEJBUl9JQ09OUy5mdWxsc2NyZWVuLFxuICAgIGljb25Pbmx5OiB0cnVlLFxuICAgIHRvb2x0aXA6ICdYZW0gdG/DoG4gYuG6o24gxJHhu5MnLFxuICB9LFxuICB7XG4gICAgaWQ6ICdtZWFzdXJlLWRpc3RhbmNlJyxcbiAgICBsYWJlbDogJ8SQbyBraG/huqNuZyBjw6FjaCcsXG4gICAgaWNvbjogJ2NvbHVtbi13aWR0aCcsXG4gICAgaWNvblNyYzogR0VPX01BUF9UT09MQkFSX0lDT05TLm1lYXN1cmVEaXN0YW5jZSxcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnxJBvIGtob+G6o25nIGPDoWNoJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWVhc3VyZS1hcmVhJyxcbiAgICBsYWJlbDogJ8SQbyBkaeG7h24gdMOtY2gnLFxuICAgIGljb246ICdib3JkZXItb3V0ZXInLFxuICAgIGljb25TcmM6IEdFT19NQVBfVE9PTEJBUl9JQ09OUy5tZWFzdXJlQXJlYSxcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnxJBvIGRp4buHbiB0w61jaCcsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xheWVycycsXG4gICAgbGFiZWw6ICdM4bubcCBi4bqjbiDEkeG7kycsXG4gICAgaWNvbjogJ2FwcHN0b3JlJyxcbiAgICBpY29uU3JjOiBHRU9fTUFQX1RPT0xCQVJfSUNPTlMubGF5ZXJzLFxuICAgIGljb25Pbmx5OiB0cnVlLFxuICAgIHRvb2x0aXA6ICdC4bqtdC904bqvdCBs4bubcCBi4bqjbiDEkeG7kycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xlZ2VuZCcsXG4gICAgbGFiZWw6ICdDaMO6IGdp4bqjaScsXG4gICAgaWNvbjogJ3Vub3JkZXJlZC1saXN0JyxcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnWGVtIGNow7ogZ2nhuqNpJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc25hcHNob3QnLFxuICAgIGxhYmVsOiAnQ2jhu6VwIOG6o25oJyxcbiAgICBpY29uOiAnY2FtZXJhJyxcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnQ2jhu6VwIOG6o25oIGLhuqNuIMSR4buTJyxcbiAgfSxcbl07XG5cbi8qKlxuICogRGVtbyB0aGVtYXRpYyBvdmVybGF5cyBmb3IgU3Rvcnlib29rIChvZmZsaW5lLWZyaWVuZGx5IEdlb0pTT04pLlxuICogR3JvdXBzIG1hdGNoIHBvcnRhbCBsYXllcnMgcG9wb3ZlcjogUUhTREQgwrcgxJHhu4thIGNow61uaCDCtyBoaeG7h24gdHLhuqFuZy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVNT19USEVNQVRJQ19MQVlFUlM6IEdlb01hcExheWVyQ29uZmlnW10gPSBbXG4gIHtcbiAgICBpZDogJ2RlbW8tcWhzZGQtMjAyMCcsXG4gICAgdGl0bGU6ICdRSFNERCB04buJbmggTMOibSDEkOG7k25nIDIwMjAtMjAyNScsXG4gICAgdHlwZTogJ2dlb2pzb24nLFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgb3BhY2l0eTogMC40LFxuICAgIHpJbmRleDogMTAsXG4gICAgZ3JvdXA6ICdxaHNkZCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIFFIU0REJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPRFQnLCBuYW1lOiAnxJDhuqV0IOG7nyDEkcO0IHRo4buLIChRSCAyMDIwLTIwMjUpJyB9LFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzEwOC40MiwgMTEuOTNdLFxuICAgICAgICAgICAgICAgIFsxMDguNDgsIDExLjkzXSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ4LCAxMS45N10sXG4gICAgICAgICAgICAgICAgWzEwOC40MiwgMTEuOTddLFxuICAgICAgICAgICAgICAgIFsxMDguNDIsIDExLjkzXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAnZGVtby1xaHNkZC0yMDI1JyxcbiAgICB0aXRsZTogJ1FIU0REIHThu4luaCBMw6JtIMSQ4buTbmcgMjAyNS0yMDMwJyxcbiAgICB0eXBlOiAnZ2VvanNvbicsXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgb3BhY2l0eTogMC40LFxuICAgIHpJbmRleDogMTEsXG4gICAgZ3JvdXA6ICdxaHNkZCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIFFIU0REJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPRFQnLCBuYW1lOiAnxJDhuqV0IOG7nyDEkcO0IHRo4buLIChRSCAyMDI1LTIwMzApJyB9LFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzEwOC40MywgMTEuOTI1XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ5LCAxMS45MjVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDksIDExLjk2NV0sXG4gICAgICAgICAgICAgICAgWzEwOC40MywgMTEuOTY1XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQzLCAxMS45MjVdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgaWQ6ICdkZW1vLXBhcmNlbCcsXG4gICAgdGl0bGU6ICdU4buJbmggTMOibSDEkOG7k25nJyxcbiAgICB0eXBlOiAnZ2VvanNvbicsXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgICBvcGFjaXR5OiAwLjQsXG4gICAgekluZGV4OiAyMCxcbiAgICBncm91cDogJ2NhZGFzdHJlJyxcbiAgICBncm91cExhYmVsOiAnQuG6o24gxJHhu5MgxJHhu4thIGNow61uaCcsXG4gICAgZ3JvdXBTZWxlY3Rpb246ICdtdWx0aScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgcXVlcnlhYmxlOiB0cnVlLFxuICAgIGRhdGFQcm9qZWN0aW9uOiAnRVBTRzo0MzI2JyxcbiAgICBmZWF0dXJlUHJvamVjdGlvbjogJ0VQU0c6Mzg1NycsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgcHJvcGVydGllczogeyBwYXJjZWw6ICcxMicsIHNoZWV0OiAnNDUnIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMTA4LjQ1LCAxMS45NF0sXG4gICAgICAgICAgICAgICAgWzEwOC40NjUsIDExLjk0XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ2NSwgMTEuOTUyXSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ1LCAxMS45NTJdLFxuICAgICAgICAgICAgICAgIFsxMDguNDUsIDExLjk0XSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAnZGVtby1jdXJyZW50LTIwMjAnLFxuICAgIHRpdGxlOiAnUUhTREQgdOG7iW5oIEzDom0gxJDhu5NuZyAyMDIwLTIwMjUnLFxuICAgIHR5cGU6ICdnZW9qc29uJyxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIG9wYWNpdHk6IDAuNCxcbiAgICB6SW5kZXg6IDEyLFxuICAgIGdyb3VwOiAnY3VycmVudCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIGhp4buHbiB0cuG6oW5nJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPTlQnLCBuYW1lOiAnxJDhuqV0IOG7nyB04bqhaSBuw7RuZyB0aMO0biAoSFQgMjAyMC0yMDI1KScgfSxcbiAgICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxMDguNDQsIDExLjkyXSxcbiAgICAgICAgICAgICAgICBbMTA4LjUsIDExLjkyXSxcbiAgICAgICAgICAgICAgICBbMTA4LjUsIDExLjk2XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ0LCAxMS45Nl0sXG4gICAgICAgICAgICAgICAgWzEwOC40NCwgMTEuOTJdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgaWQ6ICdkZW1vLWN1cnJlbnQtMjAyNScsXG4gICAgdGl0bGU6ICdRSFNERCB04buJbmggTMOibSDEkOG7k25nIDIwMjUtMjAzMCcsXG4gICAgdHlwZTogJ2dlb2pzb24nLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIG9wYWNpdHk6IDAuNCxcbiAgICB6SW5kZXg6IDEzLFxuICAgIGdyb3VwOiAnY3VycmVudCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIGhp4buHbiB0cuG6oW5nJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPTlQnLCBuYW1lOiAnxJDhuqV0IOG7nyB04bqhaSBuw7RuZyB0aMO0biAoSFQgMjAyNS0yMDMwKScgfSxcbiAgICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxMDguNDM1LCAxMS45MTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDk1LCAxMS45MTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDk1LCAxMS45NTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDM1LCAxMS45NTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDM1LCAxMS45MTVdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxuXTtcblxuLyoqXG4gKiBTYW1wbGUgbGVnZW5kIOKAlCBwbGFjZWhvbGRlciBjb2xvcnMgdW50aWwgVGjDtG5nIHTGsCAwOS8yMDI0IHBhbGV0dGUgaXMgY29tcGxldGUgKFExM+KAk1ExNSkuXG4gKiBEbyBub3QgdHJlYXQgYXMgbGVnYWxseSBhdXRob3JpdGF0aXZlLlxuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9ERU1PX0xFR0VORF9JVEVNUzogR2VvTWFwTGVnZW5kSXRlbVtdID0gW1xuICB7IGNvZGU6ICdPRFQnLCBsYWJlbDogJ8SQ4bqldCDhu58gxJHDtCB0aOG7iycsIGNvbG9yOiAnI0U4N0IzNScgfSxcbiAgeyBjb2RlOiAnT05UJywgbGFiZWw6ICfEkOG6pXQg4bufIHThuqFpIG7DtG5nIHRow7RuJywgY29sb3I6ICcjRjJDMTRFJyB9LFxuICB7IGNvZGU6ICdTS0MnLCBsYWJlbDogJ8SQ4bqldCBjxqEgc+G7nyBz4bqjbiB4deG6pXQga2luaCBkb2FuaCcsIGNvbG9yOiAnI0M0NUMyNicgfSxcbiAgeyBjb2RlOiAnREdUJywgbGFiZWw6ICfEkOG6pXQgZ2lhbyB0aMO0bmcnLCBjb2xvcjogJyM2QjcyODAnIH0sXG4gIHsgY29kZTogJ1RNRCcsIGxhYmVsOiAnxJDhuqV0IHRoxrDGoW5nIG3huqFpIGThu4tjaCB24bulJywgY29sb3I6ICcjREIyNzc3JyB9LFxuICB7IGNvZGU6ICdDTE4nLCBsYWJlbDogJ8SQ4bqldCB0cuG7k25nIGPDonkgbMOidSBuxINtJywgY29sb3I6ICcjMTZBMzRBJyB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9IRUxQX1NFQ1RJT05TOiBBcnJheTx7IHRpdGxlOiBzdHJpbmc7IGJvZHk6IHN0cmluZyB9PiA9IFtcbiAge1xuICAgIHRpdGxlOiAnRGkgY2h1eeG7g24gYuG6o24gxJHhu5MnLFxuICAgIGJvZHk6ICdLw6lvIGNodeG7mXQgxJHhu4MgcGFuLiBDdeG7mW4gY2h14buZdCBob+G6t2MgZMO5bmcgbsO6dCArLy0gxJHhu4MgdGh1IHBow7NuZy4gRMO5bmcg4oCcUGjDs25nIHRvIHRoZW8gdsO5bmfigJ0gLyDigJxUaHUgbmjhu48gdGhlbyB2w7luZ+KAnSDEkeG7gyBraG9hbmggdsO5bmcgdHLDqm4gYuG6o24gxJHhu5MuIOKAnFhlbSB0b8OgbiB04buJbmjigJ0gY8SDbiBraHVuZyBuaMOsbiB24buBIHBo4bqhbSB2aSB04buJbmguJyxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnVHJhIGPhu6l1IHRo4butYSDEkeG6pXQnLFxuICAgIGJvZHk6ICdN4bufIOKAnFRyYSBj4bupdeKAnSDEkeG7gyB0w6xtIHRoZW8gY2jhu6cgc+G7rSBk4bulbmcsIEdDTiwgdOG7jWEgxJHhu5ksIMSR4buLYSBjaOG7iSBob+G6t2Mgc+G7kSB04budL3Ro4butYS4gS+G6v3QgcXXhuqMgaGnhu4NuIHRo4buLIGRhbmggc8OhY2ggdsOgIGhpZ2hsaWdodCB0csOqbiBi4bqjbiDEkeG7ky4nLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdM4bubcCBi4bqjbiDEkeG7kycsXG4gICAgYm9keTogJ03hu58g4oCcTOG7m3AgYuG6o24gxJHhu5PigJ0gxJHhu4MgYuG6rXQvdOG6r3QgcXV5IGhv4bqhY2ggU0TEkCwgaGnhu4duIHRy4bqhbmcgU0TEkCwgdGjhu61hIMSR4bqldC4gQ2jhu41uIHbhu4cgdGluaCDhu58gYuG7mSBjaHV54buDbiBs4bubcCBu4buBbi4gQuG6rXQgbmhp4buBdSBs4bubcCBjw7luZyBsw7pjIMSR4buDIGNo4buTbmcgeOG6v3Agc28gc8OhbmguJyxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnxJDGoW4gduG7iyBow6BuaCBjaMOtbmgnLFxuICAgIGJvZHk6ICdN4bufIGLhu5kgbOG7jWMgxJBWSEMgY+G6pXAgeMOjIMSR4buDIHRodSBo4bq5cCBraHVuZyBuaMOsbiB0aGVvIHjDoyDEkcOjIGNo4buNbi4g4oCcWGVtIHRvw6BuIHThu4luaOKAnSDEkcawYSBi4bqjbiDEkeG7kyB24buBIHRvw6BuIGPhuqNuaCB04buJbmguJyxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnxJBvIMSR4bqhYyAmIHRp4buHbiDDrWNoJyxcbiAgICBib2R5OiAnxJBvIGtob+G6o25nIGPDoWNoIC8gZGnhu4duIHTDrWNoIGLhurFuZyBjw6FjaCBuaOG6pXAgY8OhYyDEkWnhu4NtIHRyw6puIGLhuqNuIMSR4buTIChuaMOheSDEkcO6cCDEkeG7gyBr4bq/dCB0aMO6YykuIETDuW5nIOKAnMSQ4buZIHRyb25nIHN14buRdOKAnSDEkeG7gyBuaMOsbiB4dXnDqm4gbOG7m3AuIOKAnENo4bulcCDhuqNuaOKAnSB04bqjaSBQTkcga2h1bmcgbmjDrG4gaGnhu4duIHThuqFpLicsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ1bhu4sgdHLDrSBj4bunYSB0w7RpJyxcbiAgICBib2R5OiAnQ2hvIHBow6lwIHRyw6xuaCBkdXnhu4d0IGNoaWEgc+G6uyB24buLIHRyw60gxJHhu4MgY8SDbiBnaeG7r2EgYuG6o24gxJHhu5MgdOG6oWkgduG7iyB0csOtIHRoaeG6v3QgYuG7iyBj4bunYSBi4bqhbi4nLFxuICB9LFxuXTtcblxuLyoqIERlbW8gYWRtaW4gdHJlZSAoeMOjKSBmb3IgU3Rvcnlib29rIOKAlCByZXBsYWNlIHZpYSBBUEkgaW4gcHJvZHVjdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFTU9fQURNSU5fTk9ERVM6IEdlb1RyZWVOb2RlW10gPSBbXG4gIHtcbiAgICBrZXk6ICdsYW0tZG9uZycsXG4gICAgdGl0bGU6ICdU4buJbmggTMOibSDEkOG7k25nJyxcbiAgICBleHBhbmRlZDogdHJ1ZSxcbiAgICBjaGlsZHJlbjogW1xuICAgICAgeyBrZXk6ICd4YS0xJywgdGl0bGU6ICdYw6MgxJDhuqEgVOG6u2gnLCBpc0xlYWY6IHRydWUgfSxcbiAgICAgIHsga2V5OiAneGEtMicsIHRpdGxlOiAnWMOjIMSQ4bqhIEh1b2FpJywgaXNMZWFmOiB0cnVlIH0sXG4gICAgICB7IGtleTogJ3hhLTMnLCB0aXRsZTogJ1jDoyDEkOG6oSBLaG8nLCBpc0xlYWY6IHRydWUgfSxcbiAgICAgIHsga2V5OiAneGEtNCcsIHRpdGxlOiAnUGjGsOG7nW5nIDEgKMSQw6AgTOG6oXQpJywgaXNMZWFmOiB0cnVlIH0sXG4gICAgICB7IGtleTogJ3hhLTUnLCB0aXRsZTogJ1BoxrDhu51uZyAyICjEkMOgIEzhuqF0KScsIGlzTGVhZjogdHJ1ZSB9LFxuICAgIF0sXG4gIH0sXG5dO1xuXG4vKiogRGVtbyBwYXJjZWwgZGV0YWlsIGZvciBTdG9yeWJvb2sgc2VhcmNoL3BvcHVwIChUQ1FILjEyKS4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFTU9fUEFSQ0VMX0RFVEFJTDogR2VvTWFwUGFyY2VsRGV0YWlsID0ge1xuICBwYXJjZWxDb2RlOiAnMDEwMDAwMTIzNCcsXG4gIHBhcmNlbE51bWJlcjogJzIwMjMnLFxuICBzaGVldE51bWJlcjogJzE1MycsXG4gIHdhcmQ6ICdQaMaw4budbmcgMScsXG4gIHByb3ZpbmNlOiAnTMOibSDEkOG7k25nJyxcbiAgYXJlYTogJzI1MDAgbcKyJyxcbiAgbGVnYWxBcmVhOiAnMjUwMCBtwrInLFxuICBsYW5kVXNlOiAnTFVDIC0gxJDhuqV0IGNodXnDqm4gdHLhu5NuZyBsw7phIG7GsOG7m2MnLFxuICBhZGRyZXNzOiAnU+G7kSAxMCwgxJHGsOG7nW5nIFRy4bqnbiBQaMO6JyxcbiAgdXNlRm9ybTogJ1Phu60gZOG7pW5nIHJpw6puZycsXG4gIHJlZ2lzdHJhdGlvblN0YXR1czogJ8SQw6MgY+G6pXAgZ2nhuqV5IGNo4bupbmcgbmjhuq1uJyxcbiAgbGFuZFByaWNlOiAnxJBhbmcgY+G6rXAgbmjhuq10JyxcbiAgc2hhcGVJbmZvOiAnSMOsbmggY2jhu68gbmjhuq10JyxcbiAgcGxhbm5pbmdJbmZvOiAnTuG6sW0gdHJvbmcgcXV5IGhv4bqhY2ggxJHhuqV0IOG7nyDEkcO0IHRo4buLIGdpYWkgxJFv4bqhbiAyMDIx4oCTMjAzMCcsXG59O1xuXG4vKipcbiAqIFBsYWNlaG9sZGVyIGVuZHBvaW50cyDigJQgcmVwbGFjZSB2aWEgZW52aXJvbm1lbnQgLyBBUEkuXG4gKiBEbyBub3QgaGFyZC1jb2RlIHByb2R1Y3Rpb24gZG9tYWlucyBoZXJlLlxuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9FTlZfUExBQ0VIT0xERVJTID0ge1xuICB3bXNVcmw6ICdodHRwczovL3tNQVBfQVBJX0hPU1R9L2dlb3NlcnZlci93bXMnLFxuICB4eXpTYXRlbGxpdGVVcmw6XG4gICAgJ2h0dHBzOi8ve1RJTEVfSE9TVH0vc2F0ZWxsaXRlL3t6fS97eH0ve3l9LnBuZycsXG4gIGdlb2pzb25QYXJjZWxVcmw6ICdodHRwczovL3tNQVBfQVBJX0hPU1R9L2FwaS92MS9wYXJjZWxzLmdlb2pzb24nLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBFeGFtcGxlIG11bHRpLWxheWVyIHN0YWNrIGZvciBsYW5kLXVzZSBwbGFubmluZyBkZW1vcyAvIFN0b3J5Ym9vay5cbiAqIFVSTHMgYXJlIHBsYWNlaG9sZGVyczsgV01TL1hZWiB0aWxlcyB3aWxsIGZhaWwgdW50aWwgZW52IGlzIHdpcmVkLlxuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9ERUZBVUxUX1BMQU5OSU5HX0xBWUVSUzogR2VvTWFwTGF5ZXJDb25maWdbXSA9IFtcbiAge1xuICAgIGlkOiAnb3NtJyxcbiAgICB0aXRsZTogJ0LhuqNuIMSR4buTIMSRxrDhu51uZyBwaOG7kScsXG4gICAgdHlwZTogJ29zbScsXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgICBvcGFjaXR5OiAxLFxuICAgIHpJbmRleDogMCxcbiAgICBiYXNlbWFwOiB0cnVlLFxuICAgIGdyb3VwOiAnYmFzZS1tYXAnLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIHRpdGxlOiAn4bqibmggduG7hyB0aW5oJyxcbiAgICB0eXBlOiAneHl6JyxcbiAgICB1cmw6IEdFT19NQVBfRU5WX1BMQUNFSE9MREVSUy54eXpTYXRlbGxpdGVVcmwsXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgb3BhY2l0eTogMSxcbiAgICB6SW5kZXg6IDAsXG4gICAgYmFzZW1hcDogdHJ1ZSxcbiAgICBncm91cDogJ2Jhc2UtbWFwJyxcbiAgICBhdHRyaWJ1dGlvbnM6ICdTYXRlbGxpdGUgKHBsYWNlaG9sZGVyKScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xhbmQtdXNlLXBsYW5uaW5nJyxcbiAgICB0aXRsZTogJ1F1eSBob+G6oWNoIHPhu60gZOG7pW5nIMSR4bqldCcsXG4gICAgdHlwZTogJ3dtcycsXG4gICAgdXJsOiBHRU9fTUFQX0VOVl9QTEFDRUhPTERFUlMud21zVXJsLFxuICAgIGxheWVyTmFtZTogJ3dvcmtzcGFjZTpsYW5kX3VzZV9wbGFubmluZycsXG4gICAgcGFyYW1zOiB7XG4gICAgICBMQVlFUlM6ICd3b3Jrc3BhY2U6bGFuZF91c2VfcGxhbm5pbmcnLFxuICAgICAgVElMRUQ6IHRydWUsXG4gICAgfSxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIG9wYWNpdHk6IDAuNyxcbiAgICB6SW5kZXg6IDEwLFxuICAgIHByb2plY3Rpb246ICdFUFNHOjM4NTcnLFxuICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcbiAgICBncm91cDogJ3BsYW5uaW5nJyxcbiAgICBzZXJ2ZXJUeXBlOiAnZ2Vvc2VydmVyJyxcbiAgfSxcbiAge1xuICAgIGlkOiAncGFyY2VsLWJvdW5kYXJ5JyxcbiAgICB0aXRsZTogJ1JhbmggZ2nhu5tpIHRo4butYSDEkeG6pXQnLFxuICAgIHR5cGU6ICd3bXMnLFxuICAgIHVybDogR0VPX01BUF9FTlZfUExBQ0VIT0xERVJTLndtc1VybCxcbiAgICBsYXllck5hbWU6ICd3b3Jrc3BhY2U6cGFyY2VsX2JvdW5kYXJ5JyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIExBWUVSUzogJ3dvcmtzcGFjZTpwYXJjZWxfYm91bmRhcnknLFxuICAgICAgVElMRUQ6IHRydWUsXG4gICAgfSxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIG9wYWNpdHk6IDAuOSxcbiAgICB6SW5kZXg6IDIwLFxuICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcbiAgICBncm91cDogJ3BsYW5uaW5nJyxcbiAgICBzZXJ2ZXJUeXBlOiAnZ2Vvc2VydmVyJyxcbiAgfSxcbiAge1xuICAgIGlkOiBHRU9fTUFQX1NFTEVDVElPTl9MQVlFUl9JRCxcbiAgICB0aXRsZTogJ8SQ4buRaSB0xrDhu6NuZyDEkWFuZyBjaOG7jW4nLFxuICAgIHR5cGU6ICd2ZWN0b3InLFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgb3BhY2l0eTogMSxcbiAgICB6SW5kZXg6IDEwMCxcbiAgICBncm91cDogJ3N5c3RlbScsXG4gICAgZmVhdHVyZXM6IFtdLFxuICB9LFxuICB7XG4gICAgaWQ6IEdFT19NQVBfTUVBU1VSRV9MQVlFUl9JRCxcbiAgICB0aXRsZTogJ0vhur90IHF14bqjIMSRbycsXG4gICAgdHlwZTogJ3ZlY3RvcicsXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgICBvcGFjaXR5OiAxLFxuICAgIHpJbmRleDogMTEwLFxuICAgIGdyb3VwOiAnc3lzdGVtJyxcbiAgICBmZWF0dXJlczogW10sXG4gIH0sXG5dO1xuIl19
509
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9nZW8tdWkvc3JjL2xpYi9maWdtYS9nZW8tbWFwL2dlby1tYXAuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLHNFQUFzRTtBQUN0RSxNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFdBQVcsRUFBRSxXQUFXLENBQVUsQ0FBQztBQUUvRTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBOEIsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDckYsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsRUFBRSxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxFQUFFLENBQUM7QUFDM0MsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsV0FBVyxDQUFDO0FBQzNELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQUU5QyxtRUFBbUU7QUFDbkUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsZUFBZSxDQUFDO0FBRXhELDJFQUEyRTtBQUMzRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxpQkFBaUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxlQUFlLENBQUM7QUFDeEQsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsaUJBQWlCLENBQUM7QUFFNUQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBSzdDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFbEMseUVBQXlFO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLGVBQWUsQ0FBQztBQUV4RCxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FDbkMsK0ZBQStGLENBQUM7QUFFbEcsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQ25DLGtHQUFrRyxDQUFDO0FBRXJHLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUNyQyxnSEFBZ0gsQ0FBQztBQUVuSCw0REFBNEQ7QUFDNUQsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQTBCO0lBQ3BFO1FBQ0UsRUFBRSxFQUFFLEtBQUs7UUFDVCxLQUFLLEVBQUUsV0FBVztRQUNsQixPQUFPLEVBQUUsS0FBSztRQUNkLFVBQVUsRUFBRSw0Q0FBNEM7S0FDekQ7SUFDRDtRQUNFLEVBQUUsRUFBRSxXQUFXO1FBQ2YsS0FBSyxFQUFFLFNBQVM7UUFDaEIsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLEtBQUs7WUFDWCxHQUFHLEVBQUUsd0JBQXdCO1lBQzdCLFlBQVksRUFBRSxvQ0FBb0M7WUFDbEQsS0FBSyxFQUFFLGFBQWE7U0FDckI7UUFDRCxVQUFVLEVBQ1IsMkZBQTJGO0tBQzlGO0NBQ0YsQ0FBQztBQUVGLDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBeUI7SUFDM0QsRUFBRSxFQUFFLHdCQUF3QjtJQUM1QixLQUFLLEVBQUUsZ0JBQWdCO0lBQ3ZCLElBQUksRUFBRSxLQUFLO0lBQ1gsR0FBRyxFQUFFLDBCQUEwQjtJQUMvQixZQUFZLEVBQUUsTUFBTTtJQUNwQixPQUFPLEVBQUUsS0FBSztJQUNkLE9BQU8sRUFBRSxHQUFHO0lBQ1osTUFBTSxFQUFFLENBQUM7SUFDVCxPQUFPLEVBQUUsS0FBSztJQUNkLEtBQUssRUFBRSxVQUFVO0NBQ2xCLENBQUM7QUFFRiwyRUFBMkU7QUFDM0UsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQTBCO0lBQ3BFO1FBQ0UsRUFBRSxFQUFFLE1BQU07UUFDVixLQUFLLEVBQUUsV0FBVztRQUNsQixJQUFJLEVBQUUsTUFBTTtRQUNaLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxJQUFJO1FBQ25DLFFBQVEsRUFBRSxJQUFJO1FBQ2QsT0FBTyxFQUFFLFdBQVc7UUFDcEIsT0FBTyxFQUFFLFNBQVM7S0FDbkI7SUFDRDtRQUNFLEVBQUUsRUFBRSxRQUFRO1FBQ1osS0FBSyxFQUFFLFNBQVM7UUFDaEIsSUFBSSxFQUFFLFFBQVE7UUFDZCxPQUFPLEVBQUUscUJBQXFCLENBQUMsTUFBTTtRQUNyQyxRQUFRLEVBQUUsSUFBSTtRQUNkLE9BQU8sRUFBRSxrQkFBa0I7S0FDNUI7SUFDRDtRQUNFLEVBQUUsRUFBRSxLQUFLO1FBQ1QsS0FBSyxFQUFFLFdBQVc7UUFDbEIsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUscUJBQXFCLENBQUMsR0FBRztRQUNsQyxRQUFRLEVBQUUsSUFBSTtRQUNkLE9BQU8sRUFBRSxrQkFBa0I7S0FDNUI7SUFDRDtRQUNFLEVBQUUsRUFBRSxTQUFTO1FBQ2IsS0FBSyxFQUFFLFVBQVU7UUFDakIsSUFBSSxFQUFFLE1BQU07UUFDWixPQUFPLEVBQUUscUJBQXFCLENBQUMsTUFBTTtRQUNyQyxRQUFRLEVBQUUsSUFBSTtRQUNkLE9BQU8sRUFBRSxVQUFVO0tBQ3BCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsVUFBVTtRQUNkLEtBQUssRUFBRSxTQUFTO1FBQ2hCLElBQUksRUFBRSxPQUFPO1FBQ2IsT0FBTyxFQUFFLHFCQUFxQixDQUFDLE9BQU87UUFDdEMsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsU0FBUztLQUNuQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLFlBQVk7UUFDaEIsS0FBSyxFQUFFLGVBQWU7UUFDdEIsSUFBSSxFQUFFLFlBQVk7UUFDbEIsT0FBTyxFQUFFLHFCQUFxQixDQUFDLFVBQVU7UUFDekMsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsaUJBQWlCO0tBQzNCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsa0JBQWtCO1FBQ3RCLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsSUFBSSxFQUFFLGNBQWM7UUFDcEIsT0FBTyxFQUFFLHFCQUFxQixDQUFDLGVBQWU7UUFDOUMsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsZ0JBQWdCO0tBQzFCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsY0FBYztRQUNsQixLQUFLLEVBQUUsY0FBYztRQUNyQixJQUFJLEVBQUUsY0FBYztRQUNwQixPQUFPLEVBQUUscUJBQXFCLENBQUMsV0FBVztRQUMxQyxRQUFRLEVBQUUsSUFBSTtRQUNkLE9BQU8sRUFBRSxjQUFjO0tBQ3hCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsUUFBUTtRQUNaLEtBQUssRUFBRSxZQUFZO1FBQ25CLElBQUksRUFBRSxVQUFVO1FBQ2hCLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQyxNQUFNO1FBQ3JDLFFBQVEsRUFBRSxJQUFJO1FBQ2QsT0FBTyxFQUFFLG9CQUFvQjtLQUM5QjtJQUNEO1FBQ0UsRUFBRSxFQUFFLFFBQVE7UUFDWixLQUFLLEVBQUUsVUFBVTtRQUNqQixJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsT0FBTyxFQUFFLGNBQWM7S0FDeEI7SUFDRDtRQUNFLEVBQUUsRUFBRSxVQUFVO1FBQ2QsS0FBSyxFQUFFLFVBQVU7UUFDakIsSUFBSSxFQUFFLFFBQVE7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLE9BQU8sRUFBRSxpQkFBaUI7S0FDM0I7Q0FDRixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUF3QjtJQUNoRSxFQUFFLEVBQUUsUUFBUTtJQUNaLEtBQUssRUFBRSxnQkFBZ0I7SUFDdkIsSUFBSSxFQUFFLEtBQUs7SUFDWCxRQUFRLEVBQUUsSUFBSTtJQUNkLE9BQU8sRUFBRSxnQkFBZ0I7Q0FDMUIsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUF3QjtJQUMvRDtRQUNFLEVBQUUsRUFBRSxpQkFBaUI7UUFDckIsS0FBSyxFQUFFLCtCQUErQjtRQUN0QyxJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLEdBQUc7UUFDWixNQUFNLEVBQUUsRUFBRTtRQUNWLEtBQUssRUFBRSxPQUFPO1FBQ2QsVUFBVSxFQUFFLGNBQWM7UUFDMUIsY0FBYyxFQUFFLFFBQVE7UUFDeEIsT0FBTyxFQUFFLEtBQUs7UUFDZCxjQUFjLEVBQUUsV0FBVztRQUMzQixpQkFBaUIsRUFBRSxXQUFXO1FBQzlCLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxtQkFBbUI7WUFDekIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLDZCQUE2QixFQUFFO29CQUNoRSxRQUFRLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsV0FBVyxFQUFFOzRCQUNYO2dDQUNFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztnQ0FDZixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7Z0NBQ2YsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dDQUNmLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztnQ0FDZixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7NkJBQ2hCO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLEtBQUssRUFBRSwrQkFBK0I7UUFDdEMsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxHQUFHO1FBQ1osTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsT0FBTztRQUNkLFVBQVUsRUFBRSxjQUFjO1FBQzFCLGNBQWMsRUFBRSxRQUFRO1FBQ3hCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsY0FBYyxFQUFFLFdBQVc7UUFDM0IsaUJBQWlCLEVBQUUsV0FBVztRQUM5QixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVEsRUFBRTtnQkFDUjtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSw2QkFBNkIsRUFBRTtvQkFDaEUsUUFBUSxFQUFFO3dCQUNSLElBQUksRUFBRSxTQUFTO3dCQUNmLFdBQVcsRUFBRTs0QkFDWDtnQ0FDRSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0NBQ2hCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztnQ0FDaEIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDO2dDQUNoQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0NBQ2hCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQzs2QkFDakI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxhQUFhO1FBQ2pCLEtBQUssRUFBRSxlQUFlO1FBQ3RCLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLElBQUk7UUFDYixPQUFPLEVBQUUsR0FBRztRQUNaLE1BQU0sRUFBRSxFQUFFO1FBQ1YsS0FBSyxFQUFFLFVBQVU7UUFDakIsVUFBVSxFQUFFLGtCQUFrQjtRQUM5QixjQUFjLEVBQUUsT0FBTztRQUN2QixPQUFPLEVBQUUsS0FBSztRQUNkLFNBQVMsRUFBRSxJQUFJO1FBQ2YsY0FBYyxFQUFFLFdBQVc7UUFDM0IsaUJBQWlCLEVBQUUsV0FBVztRQUM5QixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVEsRUFBRTtnQkFDUjtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7b0JBQ3pDLFFBQVEsRUFBRTt3QkFDUixJQUFJLEVBQUUsU0FBUzt3QkFDZixXQUFXLEVBQUU7NEJBQ1g7Z0NBQ0UsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO2dDQUNmLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQztnQ0FDaEIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO2dDQUNqQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0NBQ2hCLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQzs2QkFDaEI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0Y7SUFDRDtRQUNFLEVBQUUsRUFBRSxtQkFBbUI7UUFDdkIsS0FBSyxFQUFFLCtCQUErQjtRQUN0QyxJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLEdBQUc7UUFDWixNQUFNLEVBQUUsRUFBRTtRQUNWLEtBQUssRUFBRSxTQUFTO1FBQ2hCLFVBQVUsRUFBRSxtQkFBbUI7UUFDL0IsY0FBYyxFQUFFLFFBQVE7UUFDeEIsT0FBTyxFQUFFLEtBQUs7UUFDZCxjQUFjLEVBQUUsV0FBVztRQUMzQixpQkFBaUIsRUFBRSxXQUFXO1FBQzlCLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxtQkFBbUI7WUFDekIsUUFBUSxFQUFFO2dCQUNSO29CQUNFLElBQUksRUFBRSxTQUFTO29CQUNmLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLG9DQUFvQyxFQUFFO29CQUN2RSxRQUFRLEVBQUU7d0JBQ1IsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsV0FBVyxFQUFFOzRCQUNYO2dDQUNFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztnQ0FDZixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7Z0NBQ2QsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO2dDQUNkLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQztnQ0FDZixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7NkJBQ2hCO3lCQUNGO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsbUJBQW1CO1FBQ3ZCLEtBQUssRUFBRSwrQkFBK0I7UUFDdEMsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsS0FBSztRQUNkLE9BQU8sRUFBRSxHQUFHO1FBQ1osTUFBTSxFQUFFLEVBQUU7UUFDVixLQUFLLEVBQUUsU0FBUztRQUNoQixVQUFVLEVBQUUsbUJBQW1CO1FBQy9CLGNBQWMsRUFBRSxRQUFRO1FBQ3hCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsY0FBYyxFQUFFLFdBQVc7UUFDM0IsaUJBQWlCLEVBQUUsV0FBVztRQUM5QixJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFFBQVEsRUFBRTtnQkFDUjtvQkFDRSxJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxvQ0FBb0MsRUFBRTtvQkFDdkUsUUFBUSxFQUFFO3dCQUNSLElBQUksRUFBRSxTQUFTO3dCQUNmLFdBQVcsRUFBRTs0QkFDWDtnQ0FDRSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7Z0NBQ2pCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQztnQ0FDakIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO2dDQUNqQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUM7Z0NBQ2pCLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQzs2QkFDbEI7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXVCO0lBQzNELEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDeEQsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQy9ELEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsK0JBQStCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtJQUN6RSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7SUFDMUQsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ2xFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRTtDQUNsRSxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQTJDO0lBQ25GO1FBQ0UsS0FBSyxFQUFFLGtCQUFrQjtRQUN6QixJQUFJLEVBQUUsMExBQTBMO0tBQ2pNO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsa0JBQWtCO1FBQ3pCLElBQUksRUFBRSxrSUFBa0k7S0FDekk7SUFDRDtRQUNFLEtBQUssRUFBRSxZQUFZO1FBQ25CLElBQUksRUFBRSxvSkFBb0o7S0FDM0o7SUFDRDtRQUNFLEtBQUssRUFBRSxtQkFBbUI7UUFDMUIsSUFBSSxFQUFFLDRHQUE0RztLQUNuSDtJQUNEO1FBQ0UsS0FBSyxFQUFFLG1CQUFtQjtRQUMxQixJQUFJLEVBQUUsd0tBQXdLO0tBQy9LO0lBQ0Q7UUFDRSxLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLElBQUksRUFBRSxxRkFBcUY7S0FDNUY7Q0FDRixDQUFDO0FBRUYsMEVBQTBFO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFrQjtJQUNyRDtRQUNFLEdBQUcsRUFBRSxVQUFVO1FBQ2YsS0FBSyxFQUFFLGVBQWU7UUFDdEIsUUFBUSxFQUFFLElBQUk7UUFDZCxRQUFRLEVBQUU7WUFDUixFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ2pELEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDbkQsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUNqRCxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFDekQsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1NBQzFEO0tBQ0Y7Q0FDRixDQUFDO0FBRUYsK0RBQStEO0FBQy9ELE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUF1QjtJQUM1RCxVQUFVLEVBQUUsWUFBWTtJQUN4QixZQUFZLEVBQUUsTUFBTTtJQUNwQixXQUFXLEVBQUUsS0FBSztJQUNsQixJQUFJLEVBQUUsVUFBVTtJQUNoQixRQUFRLEVBQUUsVUFBVTtJQUNwQixJQUFJLEVBQUUsU0FBUztJQUNmLFNBQVMsRUFBRSxTQUFTO0lBQ3BCLE9BQU8sRUFBRSxpQ0FBaUM7SUFDMUMsT0FBTyxFQUFFLHVCQUF1QjtJQUNoQyxPQUFPLEVBQUUsZUFBZTtJQUN4QixrQkFBa0IsRUFBRSx3QkFBd0I7SUFDNUMsU0FBUyxFQUFFLGVBQWU7SUFDMUIsU0FBUyxFQUFFLGVBQWU7SUFDMUIsWUFBWSxFQUFFLHNEQUFzRDtDQUNyRSxDQUFDO0FBRUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsTUFBTSxFQUFFLHNDQUFzQztJQUM5QyxlQUFlLEVBQ2IsK0NBQStDO0lBQ2pELGdCQUFnQixFQUFFLCtDQUErQztDQUN6RCxDQUFDO0FBRVg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQXdCO0lBQ2xFO1FBQ0UsRUFBRSxFQUFFLEtBQUs7UUFDVCxLQUFLLEVBQUUsa0JBQWtCO1FBQ3pCLElBQUksRUFBRSxLQUFLO1FBQ1gsT0FBTyxFQUFFLElBQUk7UUFDYixPQUFPLEVBQUUsQ0FBQztRQUNWLE1BQU0sRUFBRSxDQUFDO1FBQ1QsT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUUsVUFBVTtLQUNsQjtJQUNEO1FBQ0UsRUFBRSxFQUFFLFdBQVc7UUFDZixLQUFLLEVBQUUsYUFBYTtRQUNwQixJQUFJLEVBQUUsS0FBSztRQUNYLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQyxlQUFlO1FBQzdDLE9BQU8sRUFBRSxLQUFLO1FBQ2QsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLEVBQUUsQ0FBQztRQUNULE9BQU8sRUFBRSxJQUFJO1FBQ2IsS0FBSyxFQUFFLFVBQVU7UUFDakIsWUFBWSxFQUFFLHlCQUF5QjtLQUN4QztJQUNEO1FBQ0UsRUFBRSxFQUFFLG1CQUFtQjtRQUN2QixLQUFLLEVBQUUsdUJBQXVCO1FBQzlCLElBQUksRUFBRSxLQUFLO1FBQ1gsR0FBRyxFQUFFLHdCQUF3QixDQUFDLE1BQU07UUFDcEMsU0FBUyxFQUFFLDZCQUE2QjtRQUN4QyxNQUFNLEVBQUU7WUFDTixNQUFNLEVBQUUsNkJBQTZCO1lBQ3JDLEtBQUssRUFBRSxJQUFJO1NBQ1o7UUFDRCxPQUFPLEVBQUUsSUFBSTtRQUNiLE9BQU8sRUFBRSxHQUFHO1FBQ1osTUFBTSxFQUFFLEVBQUU7UUFDVixVQUFVLEVBQUUsV0FBVztRQUN2QixTQUFTLEVBQUUsSUFBSTtRQUNmLEtBQUssRUFBRSxVQUFVO1FBQ2pCLFVBQVUsRUFBRSxXQUFXO0tBQ3hCO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsaUJBQWlCO1FBQ3JCLEtBQUssRUFBRSxvQkFBb0I7UUFDM0IsSUFBSSxFQUFFLEtBQUs7UUFDWCxHQUFHLEVBQUUsd0JBQXdCLENBQUMsTUFBTTtRQUNwQyxTQUFTLEVBQUUsMkJBQTJCO1FBQ3RDLE1BQU0sRUFBRTtZQUNOLE1BQU0sRUFBRSwyQkFBMkI7WUFDbkMsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLEdBQUc7UUFDWixNQUFNLEVBQUUsRUFBRTtRQUNWLFNBQVMsRUFBRSxJQUFJO1FBQ2YsS0FBSyxFQUFFLFVBQVU7UUFDakIsVUFBVSxFQUFFLFdBQVc7S0FDeEI7SUFDRDtRQUNFLEVBQUUsRUFBRSwwQkFBMEI7UUFDOUIsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLEVBQUUsR0FBRztRQUNYLEtBQUssRUFBRSxRQUFRO1FBQ2YsUUFBUSxFQUFFLEVBQUU7S0FDYjtJQUNEO1FBQ0UsRUFBRSxFQUFFLHdCQUF3QjtRQUM1QixLQUFLLEVBQUUsWUFBWTtRQUNuQixJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxJQUFJO1FBQ2IsT0FBTyxFQUFFLENBQUM7UUFDVixNQUFNLEVBQUUsR0FBRztRQUNYLEtBQUssRUFBRSxRQUFRO1FBQ2YsUUFBUSxFQUFFLEVBQUU7S0FDYjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEdlb01hcEJhc2VtYXBPcHRpb24sXG4gIEdlb01hcExheWVyQ29uZmlnLFxuICBHZW9NYXBMZWdlbmRJdGVtLFxuICBHZW9NYXBQYXJjZWxEZXRhaWwsXG4gIEdlb01hcFRvb2xiYXJBY3Rpb24sXG4gIEdlb01hcFh5ekxheWVyQ29uZmlnLFxufSBmcm9tICcuL2dlby1tYXAudHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBHZW9UcmVlTm9kZSB9IGZyb20gJy4uL2dlby10cmVlL2dlby10cmVlLnR5cGVzJztcbmltcG9ydCB7IEdFT19NQVBfVE9PTEJBUl9JQ09OUyB9IGZyb20gJy4vZ2VvLW1hcC10b29sYmFyLmljb25zJztcblxuLyoqIEJ1aWx0LWluIENSUyBjb2RlcyBhdmFpbGFibGUgd2l0aG91dCBjdXN0b20gcHJvajQgcmVnaXN0cmF0aW9uLiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfQlVJTFRJTl9QUk9KRUNUSU9OUyA9IFsnRVBTRzo0MzI2JywgJ0VQU0c6Mzg1NyddIGFzIGNvbnN0O1xuXG4vKipcbiAqIERlZmF1bHQgdmlldyDigJQgV2ViIE1lcmNhdG9yIGFyb3VuZCDEkMOgIEzhuqF0IChMw6JtIMSQ4buTbmcpLlxuICogQ2VudGVyIGlzIGFscmVhZHkgaW4gRVBTRzozODU3IChkbyBub3QgdHJlYXQgYXMgbG9uL2xhdCkuXG4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFRkFVTFRfQ0VOVEVSOiByZWFkb25seSBbbnVtYmVyLCBudW1iZXJdID0gWzEyMDUyMDAwLCAxMzMwMDAwXTtcbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFRkFVTFRfWk9PTSA9IDExO1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9NSU5fWk9PTSA9IDI7XG5leHBvcnQgY29uc3QgR0VPX01BUF9ERUZBVUxUX01BWF9aT09NID0gMjA7XG5leHBvcnQgY29uc3QgR0VPX01BUF9ERUZBVUxUX1ZJRVdfUFJPSkVDVElPTiA9ICdFUFNHOjM4NTcnO1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9IRUlHSFQgPSAnNDgwcHgnO1xuXG4vKiogSW50ZXJuYWwgbGF5ZXIgaWQgcmVzZXJ2ZWQgZm9yIHRoZSBgYmFzZW1hcGAgaW5wdXQgc2hvcnRjdXQuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9CQVNFTUFQX0xBWUVSX0lEID0gJ19fZ2VvX2Jhc2VtYXAnO1xuXG4vKiogSW50ZXJuYWwgdmVjdG9yIGxheWVycyByZXNlcnZlZCBmb3Igc2VsZWN0aW9uIC8gbWVhc3VyZSAvIGhpZ2hsaWdodC4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX1NFTEVDVElPTl9MQVlFUl9JRCA9ICdfX2dlb19zZWxlY3Rpb24nO1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfTUVBU1VSRV9MQVlFUl9JRCA9ICdfX2dlb19tZWFzdXJlJztcbmV4cG9ydCBjb25zdCBHRU9fTUFQX0hJR0hMSUdIVF9MQVlFUl9JRCA9ICdfX2dlb19oaWdobGlnaHQnO1xuXG4vKipcbiAqIERlZmF1bHQgcHJvdmluY2UgZXh0ZW50IChMw6JtIMSQ4buTbmcgYXBwcm94LCBFUFNHOjQzMjYpIGZvciDigJx4ZW0gdG/DoG4gdOG7iW5o4oCdIChUQ1FILjE0IEdENSkuXG4gKiBIb3N0IGFwcHMgc2hvdWxkIG92ZXJyaWRlIHdpdGggYXV0aG9yaXRhdGl2ZSBib3VuZGFyeSBleHRlbnQgZnJvbSBBUEkuXG4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFRkFVTFRfUFJPVklOQ0VfRVhURU5UXzQzMjY6IHJlYWRvbmx5IFtcbiAgbnVtYmVyLFxuICBudW1iZXIsXG4gIG51bWJlcixcbiAgbnVtYmVyLFxuXSA9IFsxMDcuMiwgMTEuMTUsIDEwOC43NSwgMTIuMzVdO1xuXG4vKiogT3B0aW9uYWwgdHJhZmZpYyAvIHJvYWRzIHJlZmVyZW5jZSBvdmVybGF5IChub3QgYSBwbGFubmluZyBsYXllcikuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9UUkFGRklDX0xBWUVSX0lEID0gJ19fZ2VvX3RyYWZmaWMnO1xuXG5leHBvcnQgY29uc3QgR0VPX01BUF9FU1JJX0lNQUdFUllfVVJMID1cbiAgJ2h0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIvdGlsZS97en0ve3l9L3t4fSc7XG5cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0VTUklfU1RSRUVUU19VUkwgPVxuICAnaHR0cHM6Ly9zZXJ2ZXIuYXJjZ2lzb25saW5lLmNvbS9BcmNHSVMvcmVzdC9zZXJ2aWNlcy9Xb3JsZF9TdHJlZXRfTWFwL01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JztcblxuZXhwb3J0IGNvbnN0IEdFT19NQVBfRVNSSV9UUkFOU1BPUlRfVVJMID1cbiAgJ2h0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvUmVmZXJlbmNlL1dvcmxkX1RyYW5zcG9ydGF0aW9uL01hcFNlcnZlci90aWxlL3t6fS97eX0ve3h9JztcblxuLyoqIERlZmF1bHQgYmFzZW1hcCBwaWNrZXIgb3B0aW9ucyAoxJHGsOG7nW5nIHBo4buRIC8gduG7hyB0aW5oKS4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFRkFVTFRfQkFTRU1BUF9PUFRJT05TOiBHZW9NYXBCYXNlbWFwT3B0aW9uW10gPSBbXG4gIHtcbiAgICBpZDogJ29zbScsXG4gICAgbGFiZWw6ICfEkMaw4budbmcgcGjhu5EnLFxuICAgIGJhc2VtYXA6ICdvc20nLFxuICAgIHByZXZpZXdVcmw6ICdodHRwczovL3RpbGUub3BlbnN0cmVldG1hcC5vcmcvNi81MC8zMC5wbmcnLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIGxhYmVsOiAnVuG7hyB0aW5oJyxcbiAgICBiYXNlbWFwOiB7XG4gICAgICB0eXBlOiAneHl6JyxcbiAgICAgIHVybDogR0VPX01BUF9FU1JJX0lNQUdFUllfVVJMLFxuICAgICAgYXR0cmlidXRpb25zOiAnRXNyaSwgTWF4YXIsIEVhcnRoc3RhciBHZW9ncmFwaGljcycsXG4gICAgICB0aXRsZTogJ+G6om5oIHbhu4cgdGluaCcsXG4gICAgfSxcbiAgICBwcmV2aWV3VXJsOlxuICAgICAgJ2h0dHBzOi8vc2VydmVyLmFyY2dpc29ubGluZS5jb20vQXJjR0lTL3Jlc3Qvc2VydmljZXMvV29ybGRfSW1hZ2VyeS9NYXBTZXJ2ZXIvdGlsZS82LzMwLzUwJyxcbiAgfSxcbl07XG5cbi8qKiBUcmFuc3BvcnRhdGlvbiByZWZlcmVuY2Ugb3ZlcmxheSDigJQgdG9nZ2xlIGluZGVwZW5kZW50bHkgb2YgYmFzZW1hcC4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX1RSQUZGSUNfT1ZFUkxBWTogR2VvTWFwWHl6TGF5ZXJDb25maWcgPSB7XG4gIGlkOiBHRU9fTUFQX1RSQUZGSUNfTEFZRVJfSUQsXG4gIHRpdGxlOiAnTOG7m3AgZ2lhbyB0aMO0bmcnLFxuICB0eXBlOiAneHl6JyxcbiAgdXJsOiBHRU9fTUFQX0VTUklfVFJBTlNQT1JUX1VSTCxcbiAgYXR0cmlidXRpb25zOiAnRXNyaScsXG4gIHZpc2libGU6IGZhbHNlLFxuICBvcGFjaXR5OiAwLjksXG4gIHpJbmRleDogNSxcbiAgYmFzZW1hcDogZmFsc2UsXG4gIGdyb3VwOiAnYmFzZS1tYXAnLFxufTtcblxuLyoqIEJ1aWx0LWluIHRvb2xiYXIgYWN0aW9ucyDigJQgRmlnbWEgbWFwIGNocm9tZSAoRGF0IERhaSBMYW0gRG9uZyAyMDI2KS4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFRkFVTFRfVE9PTEJBUl9BQ1RJT05TOiBHZW9NYXBUb29sYmFyQWN0aW9uW10gPSBbXG4gIHtcbiAgICBpZDogJ2hvbWUnLFxuICAgIGxhYmVsOiAnVHJhbmcgY2jhu6cnLFxuICAgIGljb246ICdob21lJyxcbiAgICBpY29uU3JjOiBHRU9fTUFQX1RPT0xCQVJfSUNPTlMuaG9tZSxcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnVHJhbmcgY2jhu6cnLFxuICAgIHZhcmlhbnQ6ICdwcmltYXJ5JyxcbiAgfSxcbiAge1xuICAgIGlkOiAnc2VhcmNoJyxcbiAgICBsYWJlbDogJ1RyYSBj4bupdScsXG4gICAgaWNvbjogJ3NlYXJjaCcsXG4gICAgaWNvblNyYzogR0VPX01BUF9UT09MQkFSX0lDT05TLnNlYXJjaCxcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnVHJhIGPhu6l1IHRo4butYSDEkeG6pXQnLFxuICB9LFxuICB7XG4gICAgaWQ6ICdwYW4nLFxuICAgIGxhYmVsOiAnRGkgY2h1eeG7g24nLFxuICAgIGljb246ICdkcmFnJyxcbiAgICBpY29uU3JjOiBHRU9fTUFQX1RPT0xCQVJfSUNPTlMucGFuLFxuICAgIGljb25Pbmx5OiB0cnVlLFxuICAgIHRvb2x0aXA6ICdEaSBjaHV54buDbiBi4bqjbiDEkeG7kycsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3pvb20taW4nLFxuICAgIGxhYmVsOiAnUGjDs25nIHRvJyxcbiAgICBpY29uOiAncGx1cycsXG4gICAgaWNvblNyYzogR0VPX01BUF9UT09MQkFSX0lDT05TLnpvb21JbixcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnUGjDs25nIHRvJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnem9vbS1vdXQnLFxuICAgIGxhYmVsOiAnVGh1IG5o4buPJyxcbiAgICBpY29uOiAnbWludXMnLFxuICAgIGljb25TcmM6IEdFT19NQVBfVE9PTEJBUl9JQ09OUy56b29tT3V0LFxuICAgIGljb25Pbmx5OiB0cnVlLFxuICAgIHRvb2x0aXA6ICdUaHUgbmjhu48nLFxuICB9LFxuICB7XG4gICAgaWQ6ICdmdWxsc2NyZWVuJyxcbiAgICBsYWJlbDogJ1Rvw6BuIG3DoG4gaMOsbmgnLFxuICAgIGljb246ICdmdWxsc2NyZWVuJyxcbiAgICBpY29uU3JjOiBHRU9fTUFQX1RPT0xCQVJfSUNPTlMuZnVsbHNjcmVlbixcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnWGVtIHRvw6BuIGLhuqNuIMSR4buTJyxcbiAgfSxcbiAge1xuICAgIGlkOiAnbWVhc3VyZS1kaXN0YW5jZScsXG4gICAgbGFiZWw6ICfEkG8ga2hv4bqjbmcgY8OhY2gnLFxuICAgIGljb246ICdjb2x1bW4td2lkdGgnLFxuICAgIGljb25TcmM6IEdFT19NQVBfVE9PTEJBUl9JQ09OUy5tZWFzdXJlRGlzdGFuY2UsXG4gICAgaWNvbk9ubHk6IHRydWUsXG4gICAgdG9vbHRpcDogJ8SQbyBraG/huqNuZyBjw6FjaCcsXG4gIH0sXG4gIHtcbiAgICBpZDogJ21lYXN1cmUtYXJlYScsXG4gICAgbGFiZWw6ICfEkG8gZGnhu4duIHTDrWNoJyxcbiAgICBpY29uOiAnYm9yZGVyLW91dGVyJyxcbiAgICBpY29uU3JjOiBHRU9fTUFQX1RPT0xCQVJfSUNPTlMubWVhc3VyZUFyZWEsXG4gICAgaWNvbk9ubHk6IHRydWUsXG4gICAgdG9vbHRpcDogJ8SQbyBkaeG7h24gdMOtY2gnLFxuICB9LFxuICB7XG4gICAgaWQ6ICdsYXllcnMnLFxuICAgIGxhYmVsOiAnTOG7m3AgYuG6o24gxJHhu5MnLFxuICAgIGljb246ICdhcHBzdG9yZScsXG4gICAgaWNvblNyYzogR0VPX01BUF9UT09MQkFSX0lDT05TLmxheWVycyxcbiAgICBpY29uT25seTogdHJ1ZSxcbiAgICB0b29sdGlwOiAnQuG6rXQvdOG6r3QgbOG7m3AgYuG6o24gxJHhu5MnLFxuICB9LFxuICB7XG4gICAgaWQ6ICdsZWdlbmQnLFxuICAgIGxhYmVsOiAnQ2jDuiBnaeG6o2knLFxuICAgIGljb246ICd1bm9yZGVyZWQtbGlzdCcsXG4gICAgaWNvbk9ubHk6IHRydWUsXG4gICAgdG9vbHRpcDogJ1hlbSBjaMO6IGdp4bqjaScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ3NuYXBzaG90JyxcbiAgICBsYWJlbDogJ0No4bulcCDhuqNuaCcsXG4gICAgaWNvbjogJ2NhbWVyYScsXG4gICAgaWNvbk9ubHk6IHRydWUsXG4gICAgdG9vbHRpcDogJ0No4bulcCDhuqNuaCBi4bqjbiDEkeG7kycsXG4gIH0sXG5dO1xuXG4vKipcbiAqIEJ1aWx0LWluIFwiVuG7iyB0csOtIGPhu6dhIHTDtGlcIiB0b29sYmFyIGFjdGlvbiDigJQgcGFpciB3aXRoIGBpZDogJ2xvY2F0ZSdgIGhhbmRsaW5nIHRoYXRcbiAqIGBnZW8tbWFwLXNoZWxsYCBhbHJlYWR5IHJlc29sdmVzIGludGVybmFsbHkgKGdlb2xvY2F0ZSArIGVtaXQgYGxvY2F0ZWRgL2Bsb2NhdGVFcnJvcmApLlxuICogTm90IGluY2x1ZGVkIGluIGBHRU9fTUFQX0RFRkFVTFRfVE9PTEJBUl9BQ1RJT05TYDsgaG9zdCBhcHBzIG9wdCBpbiBleHBsaWNpdGx5LlxuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9MT0NBVEVfVE9PTEJBUl9BQ1RJT046IEdlb01hcFRvb2xiYXJBY3Rpb24gPSB7XG4gIGlkOiAnbG9jYXRlJyxcbiAgbGFiZWw6ICdW4buLIHRyw60gY+G7p2EgdMO0aScsXG4gIGljb246ICdhaW0nLFxuICBpY29uT25seTogdHJ1ZSxcbiAgdG9vbHRpcDogJ1bhu4sgdHLDrSBj4bunYSB0w7RpJyxcbn07XG5cbi8qKlxuICogRGVtbyB0aGVtYXRpYyBvdmVybGF5cyBmb3IgU3Rvcnlib29rIChvZmZsaW5lLWZyaWVuZGx5IEdlb0pTT04pLlxuICogR3JvdXBzIG1hdGNoIHBvcnRhbCBsYXllcnMgcG9wb3ZlcjogUUhTREQgwrcgxJHhu4thIGNow61uaCDCtyBoaeG7h24gdHLhuqFuZy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVNT19USEVNQVRJQ19MQVlFUlM6IEdlb01hcExheWVyQ29uZmlnW10gPSBbXG4gIHtcbiAgICBpZDogJ2RlbW8tcWhzZGQtMjAyMCcsXG4gICAgdGl0bGU6ICdRSFNERCB04buJbmggTMOibSDEkOG7k25nIDIwMjAtMjAyNScsXG4gICAgdHlwZTogJ2dlb2pzb24nLFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgb3BhY2l0eTogMC40LFxuICAgIHpJbmRleDogMTAsXG4gICAgZ3JvdXA6ICdxaHNkZCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIFFIU0REJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPRFQnLCBuYW1lOiAnxJDhuqV0IOG7nyDEkcO0IHRo4buLIChRSCAyMDIwLTIwMjUpJyB9LFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzEwOC40MiwgMTEuOTNdLFxuICAgICAgICAgICAgICAgIFsxMDguNDgsIDExLjkzXSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ4LCAxMS45N10sXG4gICAgICAgICAgICAgICAgWzEwOC40MiwgMTEuOTddLFxuICAgICAgICAgICAgICAgIFsxMDguNDIsIDExLjkzXSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAnZGVtby1xaHNkZC0yMDI1JyxcbiAgICB0aXRsZTogJ1FIU0REIHThu4luaCBMw6JtIMSQ4buTbmcgMjAyNS0yMDMwJyxcbiAgICB0eXBlOiAnZ2VvanNvbicsXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgb3BhY2l0eTogMC40LFxuICAgIHpJbmRleDogMTEsXG4gICAgZ3JvdXA6ICdxaHNkZCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIFFIU0REJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPRFQnLCBuYW1lOiAnxJDhuqV0IOG7nyDEkcO0IHRo4buLIChRSCAyMDI1LTIwMzApJyB9LFxuICAgICAgICAgIGdlb21ldHJ5OiB7XG4gICAgICAgICAgICB0eXBlOiAnUG9seWdvbicsXG4gICAgICAgICAgICBjb29yZGluYXRlczogW1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgWzEwOC40MywgMTEuOTI1XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ5LCAxMS45MjVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDksIDExLjk2NV0sXG4gICAgICAgICAgICAgICAgWzEwOC40MywgMTEuOTY1XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQzLCAxMS45MjVdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgaWQ6ICdkZW1vLXBhcmNlbCcsXG4gICAgdGl0bGU6ICdU4buJbmggTMOibSDEkOG7k25nJyxcbiAgICB0eXBlOiAnZ2VvanNvbicsXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgICBvcGFjaXR5OiAwLjQsXG4gICAgekluZGV4OiAyMCxcbiAgICBncm91cDogJ2NhZGFzdHJlJyxcbiAgICBncm91cExhYmVsOiAnQuG6o24gxJHhu5MgxJHhu4thIGNow61uaCcsXG4gICAgZ3JvdXBTZWxlY3Rpb246ICdtdWx0aScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgcXVlcnlhYmxlOiB0cnVlLFxuICAgIGRhdGFQcm9qZWN0aW9uOiAnRVBTRzo0MzI2JyxcbiAgICBmZWF0dXJlUHJvamVjdGlvbjogJ0VQU0c6Mzg1NycsXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgIGZlYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgcHJvcGVydGllczogeyBwYXJjZWw6ICcxMicsIHNoZWV0OiAnNDUnIH0sXG4gICAgICAgICAgZ2VvbWV0cnk6IHtcbiAgICAgICAgICAgIHR5cGU6ICdQb2x5Z29uJyxcbiAgICAgICAgICAgIGNvb3JkaW5hdGVzOiBbXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBbMTA4LjQ1LCAxMS45NF0sXG4gICAgICAgICAgICAgICAgWzEwOC40NjUsIDExLjk0XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ2NSwgMTEuOTUyXSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ1LCAxMS45NTJdLFxuICAgICAgICAgICAgICAgIFsxMDguNDUsIDExLjk0XSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAnZGVtby1jdXJyZW50LTIwMjAnLFxuICAgIHRpdGxlOiAnUUhTREQgdOG7iW5oIEzDom0gxJDhu5NuZyAyMDIwLTIwMjUnLFxuICAgIHR5cGU6ICdnZW9qc29uJyxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIG9wYWNpdHk6IDAuNCxcbiAgICB6SW5kZXg6IDEyLFxuICAgIGdyb3VwOiAnY3VycmVudCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIGhp4buHbiB0cuG6oW5nJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPTlQnLCBuYW1lOiAnxJDhuqV0IOG7nyB04bqhaSBuw7RuZyB0aMO0biAoSFQgMjAyMC0yMDI1KScgfSxcbiAgICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxMDguNDQsIDExLjkyXSxcbiAgICAgICAgICAgICAgICBbMTA4LjUsIDExLjkyXSxcbiAgICAgICAgICAgICAgICBbMTA4LjUsIDExLjk2XSxcbiAgICAgICAgICAgICAgICBbMTA4LjQ0LCAxMS45Nl0sXG4gICAgICAgICAgICAgICAgWzEwOC40NCwgMTEuOTJdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxuICB7XG4gICAgaWQ6ICdkZW1vLWN1cnJlbnQtMjAyNScsXG4gICAgdGl0bGU6ICdRSFNERCB04buJbmggTMOibSDEkOG7k25nIDIwMjUtMjAzMCcsXG4gICAgdHlwZTogJ2dlb2pzb24nLFxuICAgIHZpc2libGU6IGZhbHNlLFxuICAgIG9wYWNpdHk6IDAuNCxcbiAgICB6SW5kZXg6IDEzLFxuICAgIGdyb3VwOiAnY3VycmVudCcsXG4gICAgZ3JvdXBMYWJlbDogJ0LhuqNuIMSR4buTIGhp4buHbiB0cuG6oW5nJyxcbiAgICBncm91cFNlbGVjdGlvbjogJ3NpbmdsZScsXG4gICAgYmFzZW1hcDogZmFsc2UsXG4gICAgZGF0YVByb2plY3Rpb246ICdFUFNHOjQzMjYnLFxuICAgIGZlYXR1cmVQcm9qZWN0aW9uOiAnRVBTRzozODU3JyxcbiAgICBkYXRhOiB7XG4gICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgZmVhdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdGZWF0dXJlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGNvZGU6ICdPTlQnLCBuYW1lOiAnxJDhuqV0IOG7nyB04bqhaSBuw7RuZyB0aMO0biAoSFQgMjAyNS0yMDMwKScgfSxcbiAgICAgICAgICBnZW9tZXRyeToge1xuICAgICAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIFsxMDguNDM1LCAxMS45MTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDk1LCAxMS45MTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDk1LCAxMS45NTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDM1LCAxMS45NTVdLFxuICAgICAgICAgICAgICAgIFsxMDguNDM1LCAxMS45MTVdLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICB9LFxuXTtcblxuLyoqXG4gKiBTYW1wbGUgbGVnZW5kIOKAlCBwbGFjZWhvbGRlciBjb2xvcnMgdW50aWwgVGjDtG5nIHTGsCAwOS8yMDI0IHBhbGV0dGUgaXMgY29tcGxldGUgKFExM+KAk1ExNSkuXG4gKiBEbyBub3QgdHJlYXQgYXMgbGVnYWxseSBhdXRob3JpdGF0aXZlLlxuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9ERU1PX0xFR0VORF9JVEVNUzogR2VvTWFwTGVnZW5kSXRlbVtdID0gW1xuICB7IGNvZGU6ICdPRFQnLCBsYWJlbDogJ8SQ4bqldCDhu58gxJHDtCB0aOG7iycsIGNvbG9yOiAnI0U4N0IzNScgfSxcbiAgeyBjb2RlOiAnT05UJywgbGFiZWw6ICfEkOG6pXQg4bufIHThuqFpIG7DtG5nIHRow7RuJywgY29sb3I6ICcjRjJDMTRFJyB9LFxuICB7IGNvZGU6ICdTS0MnLCBsYWJlbDogJ8SQ4bqldCBjxqEgc+G7nyBz4bqjbiB4deG6pXQga2luaCBkb2FuaCcsIGNvbG9yOiAnI0M0NUMyNicgfSxcbiAgeyBjb2RlOiAnREdUJywgbGFiZWw6ICfEkOG6pXQgZ2lhbyB0aMO0bmcnLCBjb2xvcjogJyM2QjcyODAnIH0sXG4gIHsgY29kZTogJ1RNRCcsIGxhYmVsOiAnxJDhuqV0IHRoxrDGoW5nIG3huqFpIGThu4tjaCB24bulJywgY29sb3I6ICcjREIyNzc3JyB9LFxuICB7IGNvZGU6ICdDTE4nLCBsYWJlbDogJ8SQ4bqldCB0cuG7k25nIGPDonkgbMOidSBuxINtJywgY29sb3I6ICcjMTZBMzRBJyB9LFxuXTtcblxuZXhwb3J0IGNvbnN0IEdFT19NQVBfREVGQVVMVF9IRUxQX1NFQ1RJT05TOiBBcnJheTx7IHRpdGxlOiBzdHJpbmc7IGJvZHk6IHN0cmluZyB9PiA9IFtcbiAge1xuICAgIHRpdGxlOiAnRGkgY2h1eeG7g24gYuG6o24gxJHhu5MnLFxuICAgIGJvZHk6ICdLw6lvIGNodeG7mXQgxJHhu4MgcGFuLiBDdeG7mW4gY2h14buZdCBob+G6t2MgZMO5bmcgbsO6dCArLy0gxJHhu4MgdGh1IHBow7NuZy4gRMO5bmcg4oCcUGjDs25nIHRvIHRoZW8gdsO5bmfigJ0gLyDigJxUaHUgbmjhu48gdGhlbyB2w7luZ+KAnSDEkeG7gyBraG9hbmggdsO5bmcgdHLDqm4gYuG6o24gxJHhu5MuIOKAnFhlbSB0b8OgbiB04buJbmjigJ0gY8SDbiBraHVuZyBuaMOsbiB24buBIHBo4bqhbSB2aSB04buJbmguJyxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnVHJhIGPhu6l1IHRo4butYSDEkeG6pXQnLFxuICAgIGJvZHk6ICdN4bufIOKAnFRyYSBj4bupdeKAnSDEkeG7gyB0w6xtIHRoZW8gY2jhu6cgc+G7rSBk4bulbmcsIEdDTiwgdOG7jWEgxJHhu5ksIMSR4buLYSBjaOG7iSBob+G6t2Mgc+G7kSB04budL3Ro4butYS4gS+G6v3QgcXXhuqMgaGnhu4NuIHRo4buLIGRhbmggc8OhY2ggdsOgIGhpZ2hsaWdodCB0csOqbiBi4bqjbiDEkeG7ky4nLFxuICB9LFxuICB7XG4gICAgdGl0bGU6ICdM4bubcCBi4bqjbiDEkeG7kycsXG4gICAgYm9keTogJ03hu58g4oCcTOG7m3AgYuG6o24gxJHhu5PigJ0gxJHhu4MgYuG6rXQvdOG6r3QgcXV5IGhv4bqhY2ggU0TEkCwgaGnhu4duIHRy4bqhbmcgU0TEkCwgdGjhu61hIMSR4bqldC4gQ2jhu41uIHbhu4cgdGluaCDhu58gYuG7mSBjaHV54buDbiBs4bubcCBu4buBbi4gQuG6rXQgbmhp4buBdSBs4bubcCBjw7luZyBsw7pjIMSR4buDIGNo4buTbmcgeOG6v3Agc28gc8OhbmguJyxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnxJDGoW4gduG7iyBow6BuaCBjaMOtbmgnLFxuICAgIGJvZHk6ICdN4bufIGLhu5kgbOG7jWMgxJBWSEMgY+G6pXAgeMOjIMSR4buDIHRodSBo4bq5cCBraHVuZyBuaMOsbiB0aGVvIHjDoyDEkcOjIGNo4buNbi4g4oCcWGVtIHRvw6BuIHThu4luaOKAnSDEkcawYSBi4bqjbiDEkeG7kyB24buBIHRvw6BuIGPhuqNuaCB04buJbmguJyxcbiAgfSxcbiAge1xuICAgIHRpdGxlOiAnxJBvIMSR4bqhYyAmIHRp4buHbiDDrWNoJyxcbiAgICBib2R5OiAnxJBvIGtob+G6o25nIGPDoWNoIC8gZGnhu4duIHTDrWNoIGLhurFuZyBjw6FjaCBuaOG6pXAgY8OhYyDEkWnhu4NtIHRyw6puIGLhuqNuIMSR4buTIChuaMOheSDEkcO6cCDEkeG7gyBr4bq/dCB0aMO6YykuIETDuW5nIOKAnMSQ4buZIHRyb25nIHN14buRdOKAnSDEkeG7gyBuaMOsbiB4dXnDqm4gbOG7m3AuIOKAnENo4bulcCDhuqNuaOKAnSB04bqjaSBQTkcga2h1bmcgbmjDrG4gaGnhu4duIHThuqFpLicsXG4gIH0sXG4gIHtcbiAgICB0aXRsZTogJ1bhu4sgdHLDrSBj4bunYSB0w7RpJyxcbiAgICBib2R5OiAnQ2hvIHBow6lwIHRyw6xuaCBkdXnhu4d0IGNoaWEgc+G6uyB24buLIHRyw60gxJHhu4MgY8SDbiBnaeG7r2EgYuG6o24gxJHhu5MgdOG6oWkgduG7iyB0csOtIHRoaeG6v3QgYuG7iyBj4bunYSBi4bqhbi4nLFxuICB9LFxuXTtcblxuLyoqIERlbW8gYWRtaW4gdHJlZSAoeMOjKSBmb3IgU3Rvcnlib29rIOKAlCByZXBsYWNlIHZpYSBBUEkgaW4gcHJvZHVjdGlvbi4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFTU9fQURNSU5fTk9ERVM6IEdlb1RyZWVOb2RlW10gPSBbXG4gIHtcbiAgICBrZXk6ICdsYW0tZG9uZycsXG4gICAgdGl0bGU6ICdU4buJbmggTMOibSDEkOG7k25nJyxcbiAgICBleHBhbmRlZDogdHJ1ZSxcbiAgICBjaGlsZHJlbjogW1xuICAgICAgeyBrZXk6ICd4YS0xJywgdGl0bGU6ICdYw6MgxJDhuqEgVOG6u2gnLCBpc0xlYWY6IHRydWUgfSxcbiAgICAgIHsga2V5OiAneGEtMicsIHRpdGxlOiAnWMOjIMSQ4bqhIEh1b2FpJywgaXNMZWFmOiB0cnVlIH0sXG4gICAgICB7IGtleTogJ3hhLTMnLCB0aXRsZTogJ1jDoyDEkOG6oSBLaG8nLCBpc0xlYWY6IHRydWUgfSxcbiAgICAgIHsga2V5OiAneGEtNCcsIHRpdGxlOiAnUGjGsOG7nW5nIDEgKMSQw6AgTOG6oXQpJywgaXNMZWFmOiB0cnVlIH0sXG4gICAgICB7IGtleTogJ3hhLTUnLCB0aXRsZTogJ1BoxrDhu51uZyAyICjEkMOgIEzhuqF0KScsIGlzTGVhZjogdHJ1ZSB9LFxuICAgIF0sXG4gIH0sXG5dO1xuXG4vKiogRGVtbyBwYXJjZWwgZGV0YWlsIGZvciBTdG9yeWJvb2sgc2VhcmNoL3BvcHVwIChUQ1FILjEyKS4gKi9cbmV4cG9ydCBjb25zdCBHRU9fTUFQX0RFTU9fUEFSQ0VMX0RFVEFJTDogR2VvTWFwUGFyY2VsRGV0YWlsID0ge1xuICBwYXJjZWxDb2RlOiAnMDEwMDAwMTIzNCcsXG4gIHBhcmNlbE51bWJlcjogJzIwMjMnLFxuICBzaGVldE51bWJlcjogJzE1MycsXG4gIHdhcmQ6ICdQaMaw4budbmcgMScsXG4gIHByb3ZpbmNlOiAnTMOibSDEkOG7k25nJyxcbiAgYXJlYTogJzI1MDAgbcKyJyxcbiAgbGVnYWxBcmVhOiAnMjUwMCBtwrInLFxuICBsYW5kVXNlOiAnTFVDIC0gxJDhuqV0IGNodXnDqm4gdHLhu5NuZyBsw7phIG7GsOG7m2MnLFxuICBhZGRyZXNzOiAnU+G7kSAxMCwgxJHGsOG7nW5nIFRy4bqnbiBQaMO6JyxcbiAgdXNlRm9ybTogJ1Phu60gZOG7pW5nIHJpw6puZycsXG4gIHJlZ2lzdHJhdGlvblN0YXR1czogJ8SQw6MgY+G6pXAgZ2nhuqV5IGNo4bupbmcgbmjhuq1uJyxcbiAgbGFuZFByaWNlOiAnxJBhbmcgY+G6rXAgbmjhuq10JyxcbiAgc2hhcGVJbmZvOiAnSMOsbmggY2jhu68gbmjhuq10JyxcbiAgcGxhbm5pbmdJbmZvOiAnTuG6sW0gdHJvbmcgcXV5IGhv4bqhY2ggxJHhuqV0IOG7nyDEkcO0IHRo4buLIGdpYWkgxJFv4bqhbiAyMDIx4oCTMjAzMCcsXG59O1xuXG4vKipcbiAqIFBsYWNlaG9sZGVyIGVuZHBvaW50cyDigJQgcmVwbGFjZSB2aWEgZW52aXJvbm1lbnQgLyBBUEkuXG4gKiBEbyBub3QgaGFyZC1jb2RlIHByb2R1Y3Rpb24gZG9tYWlucyBoZXJlLlxuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9FTlZfUExBQ0VIT0xERVJTID0ge1xuICB3bXNVcmw6ICdodHRwczovL3tNQVBfQVBJX0hPU1R9L2dlb3NlcnZlci93bXMnLFxuICB4eXpTYXRlbGxpdGVVcmw6XG4gICAgJ2h0dHBzOi8ve1RJTEVfSE9TVH0vc2F0ZWxsaXRlL3t6fS97eH0ve3l9LnBuZycsXG4gIGdlb2pzb25QYXJjZWxVcmw6ICdodHRwczovL3tNQVBfQVBJX0hPU1R9L2FwaS92MS9wYXJjZWxzLmdlb2pzb24nLFxufSBhcyBjb25zdDtcblxuLyoqXG4gKiBFeGFtcGxlIG11bHRpLWxheWVyIHN0YWNrIGZvciBsYW5kLXVzZSBwbGFubmluZyBkZW1vcyAvIFN0b3J5Ym9vay5cbiAqIFVSTHMgYXJlIHBsYWNlaG9sZGVyczsgV01TL1hZWiB0aWxlcyB3aWxsIGZhaWwgdW50aWwgZW52IGlzIHdpcmVkLlxuICovXG5leHBvcnQgY29uc3QgR0VPX01BUF9ERUZBVUxUX1BMQU5OSU5HX0xBWUVSUzogR2VvTWFwTGF5ZXJDb25maWdbXSA9IFtcbiAge1xuICAgIGlkOiAnb3NtJyxcbiAgICB0aXRsZTogJ0LhuqNuIMSR4buTIMSRxrDhu51uZyBwaOG7kScsXG4gICAgdHlwZTogJ29zbScsXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgICBvcGFjaXR5OiAxLFxuICAgIHpJbmRleDogMCxcbiAgICBiYXNlbWFwOiB0cnVlLFxuICAgIGdyb3VwOiAnYmFzZS1tYXAnLFxuICB9LFxuICB7XG4gICAgaWQ6ICdzYXRlbGxpdGUnLFxuICAgIHRpdGxlOiAn4bqibmggduG7hyB0aW5oJyxcbiAgICB0eXBlOiAneHl6JyxcbiAgICB1cmw6IEdFT19NQVBfRU5WX1BMQUNFSE9MREVSUy54eXpTYXRlbGxpdGVVcmwsXG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgb3BhY2l0eTogMSxcbiAgICB6SW5kZXg6IDAsXG4gICAgYmFzZW1hcDogdHJ1ZSxcbiAgICBncm91cDogJ2Jhc2UtbWFwJyxcbiAgICBhdHRyaWJ1dGlvbnM6ICdTYXRlbGxpdGUgKHBsYWNlaG9sZGVyKScsXG4gIH0sXG4gIHtcbiAgICBpZDogJ2xhbmQtdXNlLXBsYW5uaW5nJyxcbiAgICB0aXRsZTogJ1F1eSBob+G6oWNoIHPhu60gZOG7pW5nIMSR4bqldCcsXG4gICAgdHlwZTogJ3dtcycsXG4gICAgdXJsOiBHRU9fTUFQX0VOVl9QTEFDRUhPTERFUlMud21zVXJsLFxuICAgIGxheWVyTmFtZTogJ3dvcmtzcGFjZTpsYW5kX3VzZV9wbGFubmluZycsXG4gICAgcGFyYW1zOiB7XG4gICAgICBMQVlFUlM6ICd3b3Jrc3BhY2U6bGFuZF91c2VfcGxhbm5pbmcnLFxuICAgICAgVElMRUQ6IHRydWUsXG4gICAgfSxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIG9wYWNpdHk6IDAuNyxcbiAgICB6SW5kZXg6IDEwLFxuICAgIHByb2plY3Rpb246ICdFUFNHOjM4NTcnLFxuICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcbiAgICBncm91cDogJ3BsYW5uaW5nJyxcbiAgICBzZXJ2ZXJUeXBlOiAnZ2Vvc2VydmVyJyxcbiAgfSxcbiAge1xuICAgIGlkOiAncGFyY2VsLWJvdW5kYXJ5JyxcbiAgICB0aXRsZTogJ1JhbmggZ2nhu5tpIHRo4butYSDEkeG6pXQnLFxuICAgIHR5cGU6ICd3bXMnLFxuICAgIHVybDogR0VPX01BUF9FTlZfUExBQ0VIT0xERVJTLndtc1VybCxcbiAgICBsYXllck5hbWU6ICd3b3Jrc3BhY2U6cGFyY2VsX2JvdW5kYXJ5JyxcbiAgICBwYXJhbXM6IHtcbiAgICAgIExBWUVSUzogJ3dvcmtzcGFjZTpwYXJjZWxfYm91bmRhcnknLFxuICAgICAgVElMRUQ6IHRydWUsXG4gICAgfSxcbiAgICB2aXNpYmxlOiB0cnVlLFxuICAgIG9wYWNpdHk6IDAuOSxcbiAgICB6SW5kZXg6IDIwLFxuICAgIHF1ZXJ5YWJsZTogdHJ1ZSxcbiAgICBncm91cDogJ3BsYW5uaW5nJyxcbiAgICBzZXJ2ZXJUeXBlOiAnZ2Vvc2VydmVyJyxcbiAgfSxcbiAge1xuICAgIGlkOiBHRU9fTUFQX1NFTEVDVElPTl9MQVlFUl9JRCxcbiAgICB0aXRsZTogJ8SQ4buRaSB0xrDhu6NuZyDEkWFuZyBjaOG7jW4nLFxuICAgIHR5cGU6ICd2ZWN0b3InLFxuICAgIHZpc2libGU6IHRydWUsXG4gICAgb3BhY2l0eTogMSxcbiAgICB6SW5kZXg6IDEwMCxcbiAgICBncm91cDogJ3N5c3RlbScsXG4gICAgZmVhdHVyZXM6IFtdLFxuICB9LFxuICB7XG4gICAgaWQ6IEdFT19NQVBfTUVBU1VSRV9MQVlFUl9JRCxcbiAgICB0aXRsZTogJ0vhur90IHF14bqjIMSRbycsXG4gICAgdHlwZTogJ3ZlY3RvcicsXG4gICAgdmlzaWJsZTogdHJ1ZSxcbiAgICBvcGFjaXR5OiAxLFxuICAgIHpJbmRleDogMTEwLFxuICAgIGdyb3VwOiAnc3lzdGVtJyxcbiAgICBmZWF0dXJlczogW10sXG4gIH0sXG5dO1xuIl19
@@ -4189,6 +4189,18 @@ const GEO_MAP_DEFAULT_TOOLBAR_ACTIONS = [
4189
4189
  tooltip: 'Chụp ảnh bản đồ',
4190
4190
  },
4191
4191
  ];
4192
+ /**
4193
+ * Built-in "Vị trí của tôi" toolbar action — pair with `id: 'locate'` handling that
4194
+ * `geo-map-shell` already resolves internally (geolocate + emit `located`/`locateError`).
4195
+ * Not included in `GEO_MAP_DEFAULT_TOOLBAR_ACTIONS`; host apps opt in explicitly.
4196
+ */
4197
+ const GEO_MAP_LOCATE_TOOLBAR_ACTION = {
4198
+ id: 'locate',
4199
+ label: 'Vị trí của tôi',
4200
+ icon: 'aim',
4201
+ iconOnly: true,
4202
+ tooltip: 'Vị trí của tôi',
4203
+ };
4192
4204
  /**
4193
4205
  * Demo thematic overlays for Storybook (offline-friendly GeoJSON).
4194
4206
  * Groups match portal layers popover: QHSDD · địa chính · hiện trạng.
@@ -6137,6 +6149,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
6137
6149
  args: [{ selector: 'geo-map-zoom', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-zoom-host' }, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"md\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Thu nh\u1ECF\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF\"\n [disabled]=\"!controller()\"\n (click)=\"zoomOut()\"\n >\n <geo-icon type=\"minus\" size=\"md\" />\n </button>\n\n @if (showNav()) {\n <span class=\"geo-map-zoom__divider\" aria-hidden=\"true\"></span>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'in'\"\n nz-tooltip=\"Ph\u00F3ng to theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('in')\"\n >\n <geo-icon type=\"zoom-in\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'out'\"\n nz-tooltip=\"Thu nh\u1ECF theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('out')\"\n >\n <geo-icon type=\"zoom-out\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom tr\u01B0\u1EDBc\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom tr\u01B0\u1EDBc\"\n [disabled]=\"!controller() || !canZoomPrev()\"\n (click)=\"zoomPrev()\"\n >\n <geo-icon type=\"left\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom sau\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom sau\"\n [disabled]=\"!controller() || !canZoomNext()\"\n (click)=\"zoomNext()\"\n >\n <geo-icon type=\"right\" size=\"sm\" />\n </button>\n @if (showFitProvince()) {\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Xem to\u00E0n t\u1EC9nh\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Xem to\u00E0n t\u1EC9nh\"\n [disabled]=\"!controller()\"\n (click)=\"fitProvince()\"\n >\n <geo-icon type=\"expand\" size=\"sm\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"isFullscreen()\"\n [nz-tooltip]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n [disabled]=\"!controller()\"\n (click)=\"toggleFullscreen()\"\n >\n <geo-icon\n [type]=\"isFullscreen() ? 'fullscreen-exit' : 'fullscreen'\"\n size=\"sm\"\n />\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-zoom-host{display:block}.geo-map-zoom{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px}.geo-map-zoom__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:40px;min-height:40px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:40px;padding:0}.geo-map-zoom__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-zoom__btn:active:not(:disabled){transform:scale(.98)}.geo-map-zoom__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-zoom__btn--active,.geo-map-zoom__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__btn--icon-only{width:40px;padding:0}.geo-map-zoom__btn--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__dragbox{background:color-mix(in srgb,var(--geo-color-primary-default) 18%,transparent);border:2px solid var(--geo-color-primary-default)}.geo-map-zoom__divider{height:1px;margin:2px 6px;background:var(--geo-color-neutral-100)}\n"] }]
6138
6150
  }], ctorParameters: () => [] });
6139
6151
 
6152
+ /**
6153
+ * Shared browser-geolocation trigger — centers `ctrl` on the user and reports the outcome.
6154
+ * Used by both `geo-map-locate` (standalone button) and `geo-map-shell`'s built-in locate
6155
+ * toolbar action so the two never drift on error-reason mapping.
6156
+ */
6157
+ function runGeoMapLocate(ctrl, callbacks) {
6158
+ if (typeof navigator === 'undefined' || !navigator.geolocation) {
6159
+ callbacks.onError?.({
6160
+ reason: 'unsupported',
6161
+ message: 'Trình duyệt không hỗ trợ định vị.',
6162
+ });
6163
+ return;
6164
+ }
6165
+ navigator.geolocation.getCurrentPosition((pos) => {
6166
+ const lonLat = [pos.coords.longitude, pos.coords.latitude];
6167
+ const mercator = fromLonLat(lonLat);
6168
+ ctrl.setCenter(mercator, Math.max(ctrl.getZoom() ?? 14, 14));
6169
+ callbacks.onLocated?.(lonLat);
6170
+ }, (err) => {
6171
+ if (err.code === err.PERMISSION_DENIED) {
6172
+ callbacks.onDenied?.();
6173
+ callbacks.onError?.({ reason: 'denied', message: err.message });
6174
+ return;
6175
+ }
6176
+ const reason = err.code === err.POSITION_UNAVAILABLE
6177
+ ? 'unavailable'
6178
+ : err.code === err.TIMEOUT
6179
+ ? 'timeout'
6180
+ : 'unknown';
6181
+ callbacks.onError?.({ reason, message: err.message });
6182
+ }, {
6183
+ enableHighAccuracy: true,
6184
+ timeout: 12000,
6185
+ maximumAge: 0,
6186
+ });
6187
+ }
6188
+
6140
6189
  /**
6141
6190
  * Geolocation button: center map on user after permission.
6142
6191
  *
@@ -6156,43 +6205,20 @@ class GeoMapLocateComponent {
6156
6205
  if (!ctrl || this.busy()) {
6157
6206
  return;
6158
6207
  }
6159
- if (typeof navigator === 'undefined' || !navigator.geolocation) {
6160
- this.locateError.emit({
6161
- reason: 'unsupported',
6162
- message: 'Trình duyệt không hỗ trợ định vị.',
6163
- });
6164
- return;
6165
- }
6166
6208
  this.busy.set(true);
6167
- navigator.geolocation.getCurrentPosition((pos) => {
6168
- this.busy.set(false);
6169
- const lonLat = [
6170
- pos.coords.longitude,
6171
- pos.coords.latitude,
6172
- ];
6173
- const mercator = fromLonLat(lonLat);
6174
- ctrl.setCenter(mercator, Math.max(ctrl.getZoom() ?? 14, 14));
6175
- this.located.emit(lonLat);
6176
- }, (err) => {
6177
- this.busy.set(false);
6178
- if (err.code === err.PERMISSION_DENIED) {
6209
+ runGeoMapLocate(ctrl, {
6210
+ onLocated: (lonLat) => {
6211
+ this.busy.set(false);
6212
+ this.located.emit(lonLat);
6213
+ },
6214
+ onDenied: () => {
6215
+ this.busy.set(false);
6179
6216
  this.denied.emit();
6180
- this.locateError.emit({
6181
- reason: 'denied',
6182
- message: err.message,
6183
- });
6184
- return;
6185
- }
6186
- const reason = err.code === err.POSITION_UNAVAILABLE
6187
- ? 'unavailable'
6188
- : err.code === err.TIMEOUT
6189
- ? 'timeout'
6190
- : 'unknown';
6191
- this.locateError.emit({ reason, message: err.message });
6192
- }, {
6193
- enableHighAccuracy: true,
6194
- timeout: 12000,
6195
- maximumAge: 0,
6217
+ },
6218
+ onError: (error) => {
6219
+ this.busy.set(false);
6220
+ this.locateError.emit(error);
6221
+ },
6196
6222
  });
6197
6223
  }
6198
6224
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapLocateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
@@ -7554,6 +7580,8 @@ class GeoMapShellComponent {
7554
7580
  /** Extra overlays merged after demo thematic + traffic. */
7555
7581
  layers = input([]);
7556
7582
  legendItems = input(GEO_MAP_DEMO_LEGEND_ITEMS);
7583
+ /** Host app sets true when the legend catalog (loại đất/ký hiệu/màu) failed to load. */
7584
+ legendCatalogMissing = input(false);
7557
7585
  showNav = input(true);
7558
7586
  includeDemoLayers = input(true);
7559
7587
  adminNodes = input(GEO_MAP_DEMO_ADMIN_NODES);
@@ -7584,7 +7612,9 @@ class GeoMapShellComponent {
7584
7612
  adminExpandedKeys = model(['lam-dong']);
7585
7613
  mapReady = output();
7586
7614
  mapClick = output();
7615
+ located = output();
7587
7616
  locateDenied = output();
7617
+ locateError = output();
7588
7618
  actionClick = output();
7589
7619
  search = output();
7590
7620
  searchReset = output();
@@ -7778,6 +7808,9 @@ class GeoMapShellComponent {
7778
7808
  case 'fit-province':
7779
7809
  this.zoomRef()?.fitProvince();
7780
7810
  break;
7811
+ case 'locate':
7812
+ this.triggerLocate();
7813
+ break;
7781
7814
  case 'pan':
7782
7815
  if (this.toolMode() === 'pan') {
7783
7816
  this.exitToolMode();
@@ -7991,6 +8024,18 @@ class GeoMapShellComponent {
7991
8024
  }
7992
8025
  this.setMapCursor('grab');
7993
8026
  }
8027
+ /** Backing action for the `locate` toolbar entry (`GEO_MAP_LOCATE_TOOLBAR_ACTION`). */
8028
+ triggerLocate() {
8029
+ const ctrl = this.controller();
8030
+ if (!ctrl) {
8031
+ return;
8032
+ }
8033
+ runGeoMapLocate(ctrl, {
8034
+ onLocated: () => this.located.emit(),
8035
+ onDenied: () => this.locateDenied.emit(),
8036
+ onError: (error) => this.locateError.emit(error),
8037
+ });
8038
+ }
7994
8039
  setMapCursor(cursor) {
7995
8040
  const el = this.controller()?.getMap()?.getTargetElement();
7996
8041
  if (!el) {
@@ -8069,7 +8114,7 @@ class GeoMapShellComponent {
8069
8114
  this.managedLayers.set(next);
8070
8115
  }
8071
8116
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8072
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapShellComponent, isStandalone: true, selector: "geo-map-shell", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showMousePosition: { classPropertyName: "showMousePosition", publicName: "showMousePosition", isSignal: true, isRequired: false, transformFunction: null }, basemapOptions: { classPropertyName: "basemapOptions", publicName: "basemapOptions", isSignal: true, isRequired: false, transformFunction: null }, toolbarActions: { classPropertyName: "toolbarActions", publicName: "toolbarActions", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, includeDemoLayers: { classPropertyName: "includeDemoLayers", publicName: "includeDemoLayers", isSignal: true, isRequired: false, transformFunction: null }, adminNodes: { classPropertyName: "adminNodes", publicName: "adminNodes", isSignal: true, isRequired: false, transformFunction: null }, locationLabel: { classPropertyName: "locationLabel", publicName: "locationLabel", isSignal: true, isRequired: false, transformFunction: null }, parcelAudience: { classPropertyName: "parcelAudience", publicName: "parcelAudience", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, demoSearch: { classPropertyName: "demoSearch", publicName: "demoSearch", isSignal: true, isRequired: false, transformFunction: null }, homeMode: { classPropertyName: "homeMode", publicName: "homeMode", isSignal: true, isRequired: false, transformFunction: null }, basemapId: { classPropertyName: "basemapId", publicName: "basemapId", isSignal: true, isRequired: false, transformFunction: null }, measureMode: { classPropertyName: "measureMode", publicName: "measureMode", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null }, layersOpen: { classPropertyName: "layersOpen", publicName: "layersOpen", isSignal: true, isRequired: false, transformFunction: null }, legendOpen: { classPropertyName: "legendOpen", publicName: "legendOpen", isSignal: true, isRequired: false, transformFunction: null }, helpOpen: { classPropertyName: "helpOpen", publicName: "helpOpen", isSignal: true, isRequired: false, transformFunction: null }, swipeActive: { classPropertyName: "swipeActive", publicName: "swipeActive", isSignal: true, isRequired: false, transformFunction: null }, searchOpen: { classPropertyName: "searchOpen", publicName: "searchOpen", isSignal: true, isRequired: false, transformFunction: null }, adminFilterOpen: { classPropertyName: "adminFilterOpen", publicName: "adminFilterOpen", isSignal: true, isRequired: false, transformFunction: null }, parcelOpen: { classPropertyName: "parcelOpen", publicName: "parcelOpen", isSignal: true, isRequired: false, transformFunction: null }, managedLayers: { classPropertyName: "managedLayers", publicName: "managedLayers", isSignal: true, isRequired: false, transformFunction: null }, searchResults: { classPropertyName: "searchResults", publicName: "searchResults", isSignal: true, isRequired: false, transformFunction: null }, selectedParcel: { classPropertyName: "selectedParcel", publicName: "selectedParcel", isSignal: true, isRequired: false, transformFunction: null }, adminCheckedKeys: { classPropertyName: "adminCheckedKeys", publicName: "adminCheckedKeys", isSignal: true, isRequired: false, transformFunction: null }, adminExpandedKeys: { classPropertyName: "adminExpandedKeys", publicName: "adminExpandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { basemapId: "basemapIdChange", measureMode: "measureModeChange", checkedMap: "checkedMapChange", layersOpen: "layersOpenChange", legendOpen: "legendOpenChange", helpOpen: "helpOpenChange", swipeActive: "swipeActiveChange", searchOpen: "searchOpenChange", adminFilterOpen: "adminFilterOpenChange", parcelOpen: "parcelOpenChange", managedLayers: "managedLayersChange", searchResults: "searchResultsChange", selectedParcel: "selectedParcelChange", adminCheckedKeys: "adminCheckedKeysChange", adminExpandedKeys: "adminExpandedKeysChange", mapReady: "mapReady", mapClick: "mapClick", locateDenied: "locateDenied", actionClick: "actionClick", search: "search", searchReset: "searchReset", resultSelect: "resultSelect", parcelExport: "parcelExport", adminApply: "adminApply" }, host: { properties: { "style.height": "height()" }, classAttribute: "geo-map-shell-host" }, viewQueries: [{ propertyName: "snapshotRef", first: true, predicate: GeoMapSnapshotComponent, descendants: true, isSignal: true }, { propertyName: "zoomRef", first: true, predicate: GeoMapZoomComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"], dependencies: [{ kind: "component", type: GeoMapComponent, selector: "geo-map", inputs: ["center", "zoom", "minZoom", "maxZoom", "viewProjection", "basemap", "layers", "height", "registerProjections", "projections", "showMousePosition", "mousePositionProjection", "showZoomControl"], outputs: ["mapReady", "mapClick", "viewChange", "initError"] }, { kind: "component", type: GeoMapToolbarComponent, selector: "geo-map-toolbar", inputs: ["controller", "actions", "compact", "checkedMap"], outputs: ["checkedMapChange", "actionClick", "actionToggle"] }, { kind: "component", type: GeoMapZoomComponent, selector: "geo-map-zoom", inputs: ["controller", "showNav", "showFitProvince", "provinceExtent", "fullscreenTarget"] }, { kind: "component", type: GeoMapSnapshotComponent, selector: "geo-map-snapshot", inputs: ["controller", "label", "filename"], outputs: ["captured", "captureError"] }, { kind: "component", type: GeoMapMeasureComponent, selector: "geo-map-measure", inputs: ["controller", "mode", "showResult"], outputs: ["modeChange", "measureChange"] }, { kind: "component", type: GeoMapLayersDrawerComponent, selector: "geo-map-layers-drawer", inputs: ["controller", "open", "title", "legendItems", "showOpacity", "showLegend", "layers"], outputs: ["openChange", "layersChange", "closed"] }, { kind: "component", type: GeoMapLegendComponent, selector: "geo-map-legend", inputs: ["title", "items", "open"], outputs: ["openChange", "closed"] }, { kind: "component", type: GeoMapHelpComponent, selector: "geo-map-help", inputs: ["open", "title", "sections"], outputs: ["openChange"] }, { kind: "component", type: GeoMapSwipeComponent, selector: "geo-map-swipe", inputs: ["controller", "active", "position", "layerId"], outputs: ["activeChange", "positionChange"] }, { kind: "component", type: GeoMapSearchComponent, selector: "geo-map-search", inputs: ["open", "title", "mode", "results", "loading", "pageIndex", "pageSize", "total", "emptyText"], outputs: ["openChange", "modeChange", "pageIndexChange", "pageSizeChange", "search", "reset", "resultSelect", "closed"] }, { kind: "component", type: GeoMapAdminFilterComponent, selector: "geo-map-admin-filter", inputs: ["open", "title", "nodes", "checkedKeys", "expandedKeys"], outputs: ["openChange", "checkedKeysChange", "expandedKeysChange", "apply", "reset", "fitProvince", "closed", "selectionChange"] }, { kind: "component", type: GeoMapParcelPopupComponent, selector: "geo-map-parcel-popup", inputs: ["open", "title", "parcel", "audience", "showExport"], outputs: ["openChange", "closed", "back", "exportClick", "diagramClick"] }, { kind: "component", type: GeoMapLocationChipComponent, selector: "geo-map-location-chip", inputs: ["label", "icon"] }, { kind: "component", type: GeoMapBasemapSwitcherComponent, selector: "geo-map-basemap-switcher", inputs: ["options", "selectedId", "label", "tooltip"], outputs: ["selectedIdChange", "basemapChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8117
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapShellComponent, isStandalone: true, selector: "geo-map-shell", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showMousePosition: { classPropertyName: "showMousePosition", publicName: "showMousePosition", isSignal: true, isRequired: false, transformFunction: null }, basemapOptions: { classPropertyName: "basemapOptions", publicName: "basemapOptions", isSignal: true, isRequired: false, transformFunction: null }, toolbarActions: { classPropertyName: "toolbarActions", publicName: "toolbarActions", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, legendItems: { classPropertyName: "legendItems", publicName: "legendItems", isSignal: true, isRequired: false, transformFunction: null }, legendCatalogMissing: { classPropertyName: "legendCatalogMissing", publicName: "legendCatalogMissing", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, includeDemoLayers: { classPropertyName: "includeDemoLayers", publicName: "includeDemoLayers", isSignal: true, isRequired: false, transformFunction: null }, adminNodes: { classPropertyName: "adminNodes", publicName: "adminNodes", isSignal: true, isRequired: false, transformFunction: null }, locationLabel: { classPropertyName: "locationLabel", publicName: "locationLabel", isSignal: true, isRequired: false, transformFunction: null }, parcelAudience: { classPropertyName: "parcelAudience", publicName: "parcelAudience", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, demoSearch: { classPropertyName: "demoSearch", publicName: "demoSearch", isSignal: true, isRequired: false, transformFunction: null }, homeMode: { classPropertyName: "homeMode", publicName: "homeMode", isSignal: true, isRequired: false, transformFunction: null }, basemapId: { classPropertyName: "basemapId", publicName: "basemapId", isSignal: true, isRequired: false, transformFunction: null }, measureMode: { classPropertyName: "measureMode", publicName: "measureMode", isSignal: true, isRequired: false, transformFunction: null }, checkedMap: { classPropertyName: "checkedMap", publicName: "checkedMap", isSignal: true, isRequired: false, transformFunction: null }, layersOpen: { classPropertyName: "layersOpen", publicName: "layersOpen", isSignal: true, isRequired: false, transformFunction: null }, legendOpen: { classPropertyName: "legendOpen", publicName: "legendOpen", isSignal: true, isRequired: false, transformFunction: null }, helpOpen: { classPropertyName: "helpOpen", publicName: "helpOpen", isSignal: true, isRequired: false, transformFunction: null }, swipeActive: { classPropertyName: "swipeActive", publicName: "swipeActive", isSignal: true, isRequired: false, transformFunction: null }, searchOpen: { classPropertyName: "searchOpen", publicName: "searchOpen", isSignal: true, isRequired: false, transformFunction: null }, adminFilterOpen: { classPropertyName: "adminFilterOpen", publicName: "adminFilterOpen", isSignal: true, isRequired: false, transformFunction: null }, parcelOpen: { classPropertyName: "parcelOpen", publicName: "parcelOpen", isSignal: true, isRequired: false, transformFunction: null }, managedLayers: { classPropertyName: "managedLayers", publicName: "managedLayers", isSignal: true, isRequired: false, transformFunction: null }, searchResults: { classPropertyName: "searchResults", publicName: "searchResults", isSignal: true, isRequired: false, transformFunction: null }, selectedParcel: { classPropertyName: "selectedParcel", publicName: "selectedParcel", isSignal: true, isRequired: false, transformFunction: null }, adminCheckedKeys: { classPropertyName: "adminCheckedKeys", publicName: "adminCheckedKeys", isSignal: true, isRequired: false, transformFunction: null }, adminExpandedKeys: { classPropertyName: "adminExpandedKeys", publicName: "adminExpandedKeys", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { basemapId: "basemapIdChange", measureMode: "measureModeChange", checkedMap: "checkedMapChange", layersOpen: "layersOpenChange", legendOpen: "legendOpenChange", helpOpen: "helpOpenChange", swipeActive: "swipeActiveChange", searchOpen: "searchOpenChange", adminFilterOpen: "adminFilterOpenChange", parcelOpen: "parcelOpenChange", managedLayers: "managedLayersChange", searchResults: "searchResultsChange", selectedParcel: "selectedParcelChange", adminCheckedKeys: "adminCheckedKeysChange", adminExpandedKeys: "adminExpandedKeysChange", mapReady: "mapReady", mapClick: "mapClick", located: "located", locateDenied: "locateDenied", locateError: "locateError", actionClick: "actionClick", search: "search", searchReset: "searchReset", resultSelect: "resultSelect", parcelExport: "parcelExport", adminApply: "adminApply" }, host: { properties: { "style.height": "height()" }, classAttribute: "geo-map-shell-host" }, viewQueries: [{ propertyName: "snapshotRef", first: true, predicate: GeoMapSnapshotComponent, descendants: true, isSignal: true }, { propertyName: "zoomRef", first: true, predicate: GeoMapZoomComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n @if (legendCatalogMissing()) {\n <div class=\"geo-map-shell__notice\">\n <geo-alert\n type=\"warning\"\n [showIcon]=\"true\"\n title=\"Ch\u01B0a c\u00F3 danh m\u1EE5c ch\u00FA gi\u1EA3i\"\n message=\"Danh m\u1EE5c lo\u1EA1i \u0111\u1EA5t v\u00E0 k\u00FD hi\u1EC7u/m\u00E0u c\u1EE7a t\u1EC9nh ch\u01B0a \u0111\u01B0\u1EE3c n\u1EA1p v\u00E0o h\u1EC7 th\u1ED1ng. B\u1EA3n \u0111\u1ED3 v\u1EABn hi\u1EC3n th\u1ECB b\u00ECnh th\u01B0\u1EDDng.\"\n />\n </div>\n }\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__notice{position:absolute;top:16px;left:50%;z-index:8;transform:translate(-50%);width:min(480px,100% - 32px);pointer-events:none}.geo-map-shell__notice>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"], dependencies: [{ kind: "component", type: GeoMapComponent, selector: "geo-map", inputs: ["center", "zoom", "minZoom", "maxZoom", "viewProjection", "basemap", "layers", "height", "registerProjections", "projections", "showMousePosition", "mousePositionProjection", "showZoomControl"], outputs: ["mapReady", "mapClick", "viewChange", "initError"] }, { kind: "component", type: GeoMapToolbarComponent, selector: "geo-map-toolbar", inputs: ["controller", "actions", "compact", "checkedMap"], outputs: ["checkedMapChange", "actionClick", "actionToggle"] }, { kind: "component", type: GeoMapZoomComponent, selector: "geo-map-zoom", inputs: ["controller", "showNav", "showFitProvince", "provinceExtent", "fullscreenTarget"] }, { kind: "component", type: GeoMapSnapshotComponent, selector: "geo-map-snapshot", inputs: ["controller", "label", "filename"], outputs: ["captured", "captureError"] }, { kind: "component", type: GeoMapMeasureComponent, selector: "geo-map-measure", inputs: ["controller", "mode", "showResult"], outputs: ["modeChange", "measureChange"] }, { kind: "component", type: GeoMapLayersDrawerComponent, selector: "geo-map-layers-drawer", inputs: ["controller", "open", "title", "legendItems", "showOpacity", "showLegend", "layers"], outputs: ["openChange", "layersChange", "closed"] }, { kind: "component", type: GeoMapLegendComponent, selector: "geo-map-legend", inputs: ["title", "items", "open"], outputs: ["openChange", "closed"] }, { kind: "component", type: GeoMapHelpComponent, selector: "geo-map-help", inputs: ["open", "title", "sections"], outputs: ["openChange"] }, { kind: "component", type: GeoMapSwipeComponent, selector: "geo-map-swipe", inputs: ["controller", "active", "position", "layerId"], outputs: ["activeChange", "positionChange"] }, { kind: "component", type: GeoMapSearchComponent, selector: "geo-map-search", inputs: ["open", "title", "mode", "results", "loading", "pageIndex", "pageSize", "total", "emptyText"], outputs: ["openChange", "modeChange", "pageIndexChange", "pageSizeChange", "search", "reset", "resultSelect", "closed"] }, { kind: "component", type: GeoMapAdminFilterComponent, selector: "geo-map-admin-filter", inputs: ["open", "title", "nodes", "checkedKeys", "expandedKeys"], outputs: ["openChange", "checkedKeysChange", "expandedKeysChange", "apply", "reset", "fitProvince", "closed", "selectionChange"] }, { kind: "component", type: GeoMapParcelPopupComponent, selector: "geo-map-parcel-popup", inputs: ["open", "title", "parcel", "audience", "showExport"], outputs: ["openChange", "closed", "back", "exportClick", "diagramClick"] }, { kind: "component", type: GeoMapLocationChipComponent, selector: "geo-map-location-chip", inputs: ["label", "icon"] }, { kind: "component", type: GeoMapBasemapSwitcherComponent, selector: "geo-map-basemap-switcher", inputs: ["options", "selectedId", "label", "tooltip"], outputs: ["selectedIdChange", "basemapChange"] }, { kind: "component", type: GeoAlertComponent, selector: "geo-alert", inputs: ["type", "title", "message", "closable", "visible", "showIcon"], outputs: ["visibleChange", "closed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8073
8118
  }
8074
8119
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapShellComponent, decorators: [{
8075
8120
  type: Component,
@@ -8088,10 +8133,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
8088
8133
  GeoMapParcelPopupComponent,
8089
8134
  GeoMapLocationChipComponent,
8090
8135
  GeoMapBasemapSwitcherComponent,
8136
+ GeoAlertComponent,
8091
8137
  ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
8092
8138
  class: 'geo-map-shell-host',
8093
8139
  '[style.height]': 'height()',
8094
- }, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"] }]
8140
+ }, template: "<div class=\"geo-map-shell\">\n <geo-map\n class=\"geo-map-shell__map\"\n [center]=\"center()\"\n [zoom]=\"zoom()\"\n [height]=\"'100%'\"\n [basemap]=\"basemap()\"\n [layers]=\"resolvedLayers()\"\n [showMousePosition]=\"showMousePosition()\"\n [showZoomControl]=\"false\"\n (mapReady)=\"onMapReady($event)\"\n (mapClick)=\"onMapClick($event)\"\n />\n\n @if (legendCatalogMissing()) {\n <div class=\"geo-map-shell__notice\">\n <geo-alert\n type=\"warning\"\n [showIcon]=\"true\"\n title=\"Ch\u01B0a c\u00F3 danh m\u1EE5c ch\u00FA gi\u1EA3i\"\n message=\"Danh m\u1EE5c lo\u1EA1i \u0111\u1EA5t v\u00E0 k\u00FD hi\u1EC7u/m\u00E0u c\u1EE7a t\u1EC9nh ch\u01B0a \u0111\u01B0\u1EE3c n\u1EA1p v\u00E0o h\u1EC7 th\u1ED1ng. B\u1EA3n \u0111\u1ED3 v\u1EABn hi\u1EC3n th\u1ECB b\u00ECnh th\u01B0\u1EDDng.\"\n />\n </div>\n }\n\n <div class=\"geo-map-shell__chrome-left\">\n <geo-map-toolbar\n class=\"geo-map-shell__toolbar\"\n [controller]=\"controller()\"\n [actions]=\"resolvedToolbarActions()\"\n [(checkedMap)]=\"checkedMap\"\n (actionClick)=\"onToolbarAction($event)\"\n (actionToggle)=\"onToolbarToggle($event)\"\n />\n\n <div class=\"geo-map-shell__panels\">\n <geo-map-search\n [(open)]=\"searchOpen\"\n [results]=\"searchResults()\"\n (search)=\"onSearch($event)\"\n (reset)=\"onSearchReset()\"\n (resultSelect)=\"onResultSelect($event)\"\n />\n <geo-map-admin-filter\n [(open)]=\"adminFilterOpen\"\n title=\"Chuy\u1EC3n v\u1ECB tr\u00ED\"\n [nodes]=\"adminNodes()\"\n [(checkedKeys)]=\"adminCheckedKeys\"\n [(expandedKeys)]=\"adminExpandedKeys\"\n (apply)=\"onAdminApply($event)\"\n (reset)=\"adminCheckedKeys.set([])\"\n (fitProvince)=\"onFitProvince()\"\n (closed)=\"onAdminClosed()\"\n />\n <geo-map-parcel-popup\n [(open)]=\"parcelOpen\"\n [parcel]=\"selectedParcel()\"\n [audience]=\"parcelAudience()\"\n (exportClick)=\"parcelExport.emit($event)\"\n (back)=\"onParcelBack()\"\n (closed)=\"onParcelClosed()\"\n />\n <geo-map-layers-drawer\n [controller]=\"controller()\"\n [(open)]=\"layersOpen\"\n [(layers)]=\"managedLayers\"\n />\n <geo-map-legend\n [(open)]=\"legendOpen\"\n [items]=\"legendItems()\"\n />\n </div>\n </div>\n\n <!-- Headless bridges: zoom/fullscreen + snapshot (driven by toolbar actions). -->\n <geo-map-zoom\n class=\"geo-map-shell__zoom-bridge\"\n [controller]=\"controller()\"\n [showNav]=\"showNav()\"\n [provinceExtent]=\"provinceExtent()\"\n />\n <geo-map-snapshot\n class=\"geo-map-shell__snapshot-bridge\"\n [controller]=\"controller()\"\n />\n\n <div class=\"geo-map-shell__top-right\">\n <ng-content select=\"[geoMapShellTopRight]\" />\n </div>\n\n <div class=\"geo-map-shell__bottom-right\">\n <geo-map-basemap-switcher\n [options]=\"basemapOptions()\"\n [(selectedId)]=\"basemapId\"\n (basemapChange)=\"onBasemapChange($event)\"\n />\n </div>\n\n <div class=\"geo-map-shell__status\">\n @if (locationLabel()) {\n <geo-map-location-chip [label]=\"locationLabel()\" />\n }\n <geo-map-measure\n [controller]=\"controller()\"\n [(mode)]=\"measureMode\"\n />\n </div>\n\n <geo-map-swipe\n [controller]=\"controller()\"\n [(active)]=\"swipeActive\"\n />\n\n <geo-map-help [(open)]=\"helpOpen\" />\n</div>\n", styles: [".geo-map-shell-host{display:block;min-height:360px}.geo-map-shell{position:relative;width:100%;height:100%;min-height:inherit;overflow:hidden;border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen,.geo-map-shell:-webkit-full-screen{width:100%;height:100%;min-height:100%;border:0;border-radius:0;background:var(--geo-color-neutral-100)}.geo-map-shell:fullscreen>.cdk-overlay-container,.geo-map-shell:-webkit-full-screen>.cdk-overlay-container{z-index:1200}.geo-map-shell__map{display:block;width:100%;height:100%}.geo-map-shell__chrome-left{position:absolute;top:16px;left:16px;z-index:6;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:calc(100% - 32px);max-height:calc(100% - 172px);overflow:visible;pointer-events:none}.geo-map-shell__chrome-left>*{pointer-events:auto}.geo-map-shell__toolbar{flex-shrink:0}.geo-map-shell__panels{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:min(420px,100%);min-height:0;overflow:visible;pointer-events:none}.geo-map-shell__panels>*{pointer-events:auto}.geo-map-shell__panels .geo-map-search,.geo-map-shell__panels .geo-map-admin-filter,.geo-map-shell__panels .geo-map-parcel-popup,.geo-map-shell__panels .geo-map-layers-drawer,.geo-map-shell__panels .geo-map-legend{max-height:min(640px,100dvh - 100px);overflow:auto}.geo-map-shell__snapshot-bridge,.geo-map-shell__zoom-bridge{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;opacity:0}.geo-map-shell__bottom-left{position:absolute;left:16px;bottom:72px;z-index:5;display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:min(300px,100% - 120px);pointer-events:none}.geo-map-shell__bottom-left>*{pointer-events:auto}.geo-map-shell__notice{position:absolute;top:16px;left:50%;z-index:8;transform:translate(-50%);width:min(480px,100% - 32px);pointer-events:none}.geo-map-shell__notice>*{pointer-events:auto}.geo-map-shell__top-right{position:absolute;top:16px;right:16px;z-index:7;display:flex;align-items:center;justify-content:flex-end;height:64px;max-width:min(360px,100% - 32px);pointer-events:none}.geo-map-shell__top-right>*{pointer-events:auto}.geo-map-shell__bottom-right{position:absolute;right:16px;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none}.geo-map-shell__bottom-right>*{pointer-events:auto}.geo-map-shell__status{position:absolute;left:50%;bottom:24px;z-index:5;display:flex;flex-direction:column;align-items:center;gap:8px;max-width:min(480px,100% - 32px);transform:translate(-50%);pointer-events:none}.geo-map-shell__status>*{pointer-events:auto}.geo-map-shell .geo-map__mouse-position,.geo-map-shell .ol-scale-line{display:none!important}.geo-map-shell .ol-attribution{display:none}\n"] }]
8095
8141
  }], ctorParameters: () => [] });
8096
8142
 
8097
8143
  /*
@@ -8102,5 +8148,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
8102
8148
  * Generated bundle index. Do not edit.
8103
8149
  */
8104
8150
 
8105
- export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAccordionComponent, GeoAccordionPanelDirective, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoDetailViewComponent, GeoDetailViewItemDirective, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoSwitchComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
8151
+ export { DEFAULT_UI_ROW_ACTIONS, DEFAULT_UI_TABLE_PAGE_SIZE_OPTIONS, GEO_ICON_SIZE_MAP, GEO_LAYOUT_DEFAULT_NOTIFICATIONS, GEO_LAYOUT_DEFAULT_SUBSYSTEMS, GEO_LAYOUT_DEFAULT_USER, GEO_LAYOUT_DEFAULT_USER_MENU, GEO_MAP_BASEMAP_LAYER_ID, GEO_MAP_BUILTIN_PROJECTIONS, GEO_MAP_DEFAULT_BASEMAP_OPTIONS, GEO_MAP_DEFAULT_CENTER, GEO_MAP_DEFAULT_HEIGHT, GEO_MAP_DEFAULT_HELP_SECTIONS, GEO_MAP_DEFAULT_MAX_ZOOM, GEO_MAP_DEFAULT_MIN_ZOOM, GEO_MAP_DEFAULT_PLANNING_LAYERS, GEO_MAP_DEFAULT_PROVINCE_EXTENT_4326, GEO_MAP_DEFAULT_TOOLBAR_ACTIONS, GEO_MAP_DEFAULT_VIEW_PROJECTION, GEO_MAP_DEFAULT_ZOOM, GEO_MAP_DEMO_ADMIN_NODES, GEO_MAP_DEMO_LEGEND_ITEMS, GEO_MAP_DEMO_PARCEL_DETAIL, GEO_MAP_DEMO_THEMATIC_LAYERS, GEO_MAP_ENV_PLACEHOLDERS, GEO_MAP_ESRI_IMAGERY_URL, GEO_MAP_ESRI_STREETS_URL, GEO_MAP_ESRI_TRANSPORT_URL, GEO_MAP_HIGHLIGHT_LAYER_ID, GEO_MAP_LOCATE_TOOLBAR_ACTION, GEO_MAP_MEASURE_LAYER_ID, GEO_MAP_SELECTION_LAYER_ID, GEO_MAP_TOOLBAR_ASSET_BASE, GEO_MAP_TOOLBAR_ICONS, GEO_MAP_TRAFFIC_LAYER_ID, GEO_MAP_TRAFFIC_OVERLAY, GEO_STATUS_COLOR_MAP, GEO_STATUS_LABELS, GEO_TOAST_DEFAULT_TITLES, GEO_TOAST_ICONS, GEO_TYPOGRAPHY_TAG, GEO_TYPOGRAPHY_VARIANTS, GeoAccordionComponent, GeoAccordionPanelDirective, GeoAlertComponent, GeoBackButtonComponent, GeoBreadcrumbComponent, GeoButtonComponent, GeoChartComponent, GeoCheckboxComponent, GeoColumnPickerComponent, GeoConfirmModalComponent, GeoDashboardComponent, GeoDatePickerComponent, GeoDateRangePickerComponent, GeoDetailViewComponent, GeoDetailViewItemDirective, GeoEmptyStateComponent, GeoFeedbackFormComponent, GeoFilePickerComponent, GeoForgotPasswordComponent, GeoFormModalComponent, GeoIconComponent, GeoInputComponent, GeoLayoutActionsDirective, GeoLayoutComponent, GeoLayoutFooterComponent, GeoLayoutHeaderActionsComponent, GeoLayoutHeaderComponent, GeoLayoutSidebarComponent, GeoListPageComponent, GeoLoginComponent, GeoMapAdminFilterComponent, GeoMapBasemapSwitcherComponent, GeoMapComponent, GeoMapController, GeoMapHelpComponent, GeoMapLayerCardComponent, GeoMapLayerPanelComponent, GeoMapLayerService, GeoMapLayersDrawerComponent, GeoMapLegendComponent, GeoMapLocateComponent, GeoMapLocationChipComponent, GeoMapMeasureComponent, GeoMapOpacityComponent, GeoMapParcelPopupComponent, GeoMapProjectionError, GeoMapProjectionService, GeoMapSearchComponent, GeoMapService, GeoMapShellComponent, GeoMapSnapshotComponent, GeoMapSwipeComponent, GeoMapToolbarComponent, GeoMapZoomComponent, GeoOverlapResultComponent, GeoPageHeaderComponent, GeoPageTitleComponent, GeoPaginationComponent, GeoRadioComponent, GeoRowActionsComponent, GeoSelectComponent, GeoSliderComponent, GeoStatCardComponent, GeoStatusTagComponent, GeoStepFormLayoutComponent, GeoStepperComponent, GeoSwitchComponent, GeoTabDirective, GeoTableComponent, GeoTableFilterComponent, GeoTablePaginationComponent, GeoTableToolbarComponent, GeoTabsComponent, GeoTextareaComponent, GeoToastComponent, GeoToastService, GeoTreeComponent, GeoTypographyComponent, GeoUploadComponent, NgZorroAntdModule, UI_ALERT_DEFAULT_TITLES, UI_STATUS_LABELS, UI_TABLE_MOBILE_BREAKPOINT, applyColumnPickerState, cssVar, geoColorCssVars, geoColorTokens, geoFormatBytes, geoFormatSpeed, geoRadiusCssVars, geoRadiusTokens, geoShadowTokens, geoTypographyTokens, geoUploadPercent, loadColumnPickerState, mergeColumnPickerItems, pickInlineRowActions, pickOverflowRowActions, saveColumnPickerState };
8106
8152
  //# sourceMappingURL=geoit-ui.mjs.map