@uportal/form-builder 1.3.2 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +86 -11
- package/dist/form-builder.js +1533 -0
- package/dist/form-builder.js.map +1 -0
- package/dist/form-builder.min.js +530 -0
- package/dist/form-builder.min.js.map +1 -0
- package/package.json +62 -52
- package/src/form-builder.js +1451 -0
- package/CHANGELOG.md +0 -219
- package/build/asset-manifest.json +0 -7
- package/build/favicon.ico +0 -0
- package/build/index.html +0 -1
- package/build/manifest.json +0 -15
- package/build/precache-manifest.e7546ad26defe0da5fad7a6ae0d03bdb.js +0 -10
- package/build/sample/communication-preferences/form.json +0 -0
- package/build/service-worker.js +0 -34
- package/build/static/js/form-builder.js +0 -2
- package/build/static/js/form-builder.js.map +0 -1
- package/src/App.js +0 -301
- package/src/App.test.js +0 -9
- package/src/index.js +0 -4
- package/src/setupProxy.js +0 -8
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-builder.min.js","sources":["../node_modules/@lit/reactive-element/css-tag.js","../node_modules/@lit/reactive-element/reactive-element.js","../node_modules/lit-html/lit-html.js","../node_modules/lit-element/lit-element.js","../node_modules/jwt-decode/build/esm/index.js","../src/form-builder.js"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,css,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:h,getOwnPropertyNames:r,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),b={attribute:!0,type:String,converter:u,reflect:!1,useDefault:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class y extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=b){if(s.state&&(s.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((s=Object.create(s)).wrapped=!0),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),h=this.getPropertyDescriptor(t,i,s);void 0!==h&&e(this.prototype,t,h)}}static getPropertyDescriptor(t,s,i){const{get:e,set:r}=h(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get:e,set(s){const h=e?.call(this);r?.call(this,s),this.requestUpdate(t,h,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??b}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...r(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$ET(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const h=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==h?this.removeAttribute(e):this.setAttribute(e,h),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),h=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e;const r=h.fromAttribute(s,t.type);this[e]=r??this._$Ej?.get(e)??r,this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){const e=this.constructor,h=this[t];if(i??=e.getPropertyOptions(t),!((i.hasChanged??f)(h,s)||i.useDefault&&i.reflect&&h===this._$Ej?.get(t)&&!this.hasAttribute(e._$Eu(t,i))))return;this.C(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(t,s,{useDefault:i,reflect:e,wrapped:h},r){i&&!(this._$Ej??=new Map).has(t)&&(this._$Ej.set(t,r??s??this[t]),!0!==h||void 0!==r)||(this._$AL.has(t)||(this.hasUpdated||i||(s=void 0),this._$AL.set(t,s)),!0===e&&this._$Em!==t&&(this._$Eq??=new Set).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t){const{wrapped:t}=i,e=this[s];!0!==t||this._$AL.has(s)||void 0===e||this.C(s,void 0,i,e)}}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EM()}catch(s){throw t=!1,this._$EM(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&=this._$Eq.forEach((t=>this._$ET(t,this[t]))),this._$EM()}updated(t){}firstUpdated(t){}}y.elementStyles=[],y.shadowRootOptions={mode:\"open\"},y[d(\"elementProperties\")]=new Map,y[d(\"finalized\")]=new Map,p?.({ReactiveElement:y}),(a.reactiveElementVersions??=[]).push(\"2.1.1\");export{y as ReactiveElement,s as adoptStyles,u as defaultConverter,t as getCompatibleStyle,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,i=t.trustedTypes,s=i?i.createPolicy(\"lit-html\",{createHTML:t=>t}):void 0,e=\"$lit$\",h=`lit$${Math.random().toFixed(9).slice(2)}$`,o=\"?\"+h,n=`<${o}>`,r=document,l=()=>r.createComment(\"\"),c=t=>null===t||\"object\"!=typeof t&&\"function\"!=typeof t,a=Array.isArray,u=t=>a(t)||\"function\"==typeof t?.[Symbol.iterator],d=\"[ \\t\\n\\f\\r]\",f=/<(?:(!--|\\/[^a-zA-Z])|(\\/?[a-zA-Z][^>\\s]*)|(\\/?$))/g,v=/-->/g,_=/>/g,m=RegExp(`>|${d}(?:([^\\\\s\"'>=/]+)(${d}*=${d}*(?:[^ \\t\\n\\f\\r\"'\\`<>=]|(\"|')|))|$)`,\"g\"),p=/'/g,g=/\"/g,$=/^(?:script|style|textarea|title)$/i,y=t=>(i,...s)=>({_$litType$:t,strings:i,values:s}),x=y(1),b=y(2),w=y(3),T=Symbol.for(\"lit-noChange\"),E=Symbol.for(\"lit-nothing\"),A=new WeakMap,C=r.createTreeWalker(r,129);function P(t,i){if(!a(t)||!t.hasOwnProperty(\"raw\"))throw Error(\"invalid template strings array\");return void 0!==s?s.createHTML(i):i}const V=(t,i)=>{const s=t.length-1,o=[];let r,l=2===i?\"<svg>\":3===i?\"<math>\":\"\",c=f;for(let i=0;i<s;i++){const s=t[i];let a,u,d=-1,y=0;for(;y<s.length&&(c.lastIndex=y,u=c.exec(s),null!==u);)y=c.lastIndex,c===f?\"!--\"===u[1]?c=v:void 0!==u[1]?c=_:void 0!==u[2]?($.test(u[2])&&(r=RegExp(\"</\"+u[2],\"g\")),c=m):void 0!==u[3]&&(c=m):c===m?\">\"===u[0]?(c=r??f,d=-1):void 0===u[1]?d=-2:(d=c.lastIndex-u[2].length,a=u[1],c=void 0===u[3]?m:'\"'===u[3]?g:p):c===g||c===p?c=m:c===v||c===_?c=f:(c=m,r=void 0);const x=c===m&&t[i+1].startsWith(\"/>\")?\" \":\"\";l+=c===f?s+n:d>=0?(o.push(a),s.slice(0,d)+e+s.slice(d)+h+x):s+h+(-2===d?i:x)}return[P(t,l+(t[s]||\"<?>\")+(2===i?\"</svg>\":3===i?\"</math>\":\"\")),o]};class N{constructor({strings:t,_$litType$:s},n){let r;this.parts=[];let c=0,a=0;const u=t.length-1,d=this.parts,[f,v]=V(t,s);if(this.el=N.createElement(f,n),C.currentNode=this.el.content,2===s||3===s){const t=this.el.content.firstChild;t.replaceWith(...t.childNodes)}for(;null!==(r=C.nextNode())&&d.length<u;){if(1===r.nodeType){if(r.hasAttributes())for(const t of r.getAttributeNames())if(t.endsWith(e)){const i=v[a++],s=r.getAttribute(t).split(h),e=/([.?@])?(.*)/.exec(i);d.push({type:1,index:c,name:e[2],strings:s,ctor:\".\"===e[1]?H:\"?\"===e[1]?I:\"@\"===e[1]?L:k}),r.removeAttribute(t)}else t.startsWith(h)&&(d.push({type:6,index:c}),r.removeAttribute(t));if($.test(r.tagName)){const t=r.textContent.split(h),s=t.length-1;if(s>0){r.textContent=i?i.emptyScript:\"\";for(let i=0;i<s;i++)r.append(t[i],l()),C.nextNode(),d.push({type:2,index:++c});r.append(t[s],l())}}}else if(8===r.nodeType)if(r.data===o)d.push({type:2,index:c});else{let t=-1;for(;-1!==(t=r.data.indexOf(h,t+1));)d.push({type:7,index:c}),t+=h.length-1}c++}}static createElement(t,i){const s=r.createElement(\"template\");return s.innerHTML=t,s}}function S(t,i,s=t,e){if(i===T)return i;let h=void 0!==e?s._$Co?.[e]:s._$Cl;const o=c(i)?void 0:i._$litDirective$;return h?.constructor!==o&&(h?._$AO?.(!1),void 0===o?h=void 0:(h=new o(t),h._$AT(t,s,e)),void 0!==e?(s._$Co??=[])[e]=h:s._$Cl=h),void 0!==h&&(i=S(t,h._$AS(t,i.values),h,e)),i}class M{constructor(t,i){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=i}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:i},parts:s}=this._$AD,e=(t?.creationScope??r).importNode(i,!0);C.currentNode=e;let h=C.nextNode(),o=0,n=0,l=s[0];for(;void 0!==l;){if(o===l.index){let i;2===l.type?i=new R(h,h.nextSibling,this,t):1===l.type?i=new l.ctor(h,l.name,l.strings,this,t):6===l.type&&(i=new z(h,this,t)),this._$AV.push(i),l=s[++n]}o!==l?.index&&(h=C.nextNode(),o++)}return C.currentNode=r,e}p(t){let i=0;for(const s of this._$AV)void 0!==s&&(void 0!==s.strings?(s._$AI(t,s,i),i+=s.strings.length-2):s._$AI(t[i])),i++}}class R{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(t,i,s,e){this.type=2,this._$AH=E,this._$AN=void 0,this._$AA=t,this._$AB=i,this._$AM=s,this.options=e,this._$Cv=e?.isConnected??!0}get parentNode(){let t=this._$AA.parentNode;const i=this._$AM;return void 0!==i&&11===t?.nodeType&&(t=i.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,i=this){t=S(this,t,i),c(t)?t===E||null==t||\"\"===t?(this._$AH!==E&&this._$AR(),this._$AH=E):t!==this._$AH&&t!==T&&this._(t):void 0!==t._$litType$?this.$(t):void 0!==t.nodeType?this.T(t):u(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==E&&c(this._$AH)?this._$AA.nextSibling.data=t:this.T(r.createTextNode(t)),this._$AH=t}$(t){const{values:i,_$litType$:s}=t,e=\"number\"==typeof s?this._$AC(t):(void 0===s.el&&(s.el=N.createElement(P(s.h,s.h[0]),this.options)),s);if(this._$AH?._$AD===e)this._$AH.p(i);else{const t=new M(e,this),s=t.u(this.options);t.p(i),this.T(s),this._$AH=t}}_$AC(t){let i=A.get(t.strings);return void 0===i&&A.set(t.strings,i=new N(t)),i}k(t){a(this._$AH)||(this._$AH=[],this._$AR());const i=this._$AH;let s,e=0;for(const h of t)e===i.length?i.push(s=new R(this.O(l()),this.O(l()),this,this.options)):s=i[e],s._$AI(h),e++;e<i.length&&(this._$AR(s&&s._$AB.nextSibling,e),i.length=e)}_$AR(t=this._$AA.nextSibling,i){for(this._$AP?.(!1,!0,i);t!==this._$AB;){const i=t.nextSibling;t.remove(),t=i}}setConnected(t){void 0===this._$AM&&(this._$Cv=t,this._$AP?.(t))}}class k{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,i,s,e,h){this.type=1,this._$AH=E,this._$AN=void 0,this.element=t,this.name=i,this._$AM=e,this.options=h,s.length>2||\"\"!==s[0]||\"\"!==s[1]?(this._$AH=Array(s.length-1).fill(new String),this.strings=s):this._$AH=E}_$AI(t,i=this,s,e){const h=this.strings;let o=!1;if(void 0===h)t=S(this,t,i,0),o=!c(t)||t!==this._$AH&&t!==T,o&&(this._$AH=t);else{const e=t;let n,r;for(t=h[0],n=0;n<h.length-1;n++)r=S(this,e[s+n],i,n),r===T&&(r=this._$AH[n]),o||=!c(r)||r!==this._$AH[n],r===E?t=E:t!==E&&(t+=(r??\"\")+h[n+1]),this._$AH[n]=r}o&&!e&&this.j(t)}j(t){t===E?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??\"\")}}class H extends k{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===E?void 0:t}}class I extends k{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==E)}}class L extends k{constructor(t,i,s,e,h){super(t,i,s,e,h),this.type=5}_$AI(t,i=this){if((t=S(this,t,i,0)??E)===T)return;const s=this._$AH,e=t===E&&s!==E||t.capture!==s.capture||t.once!==s.once||t.passive!==s.passive,h=t!==E&&(s===E||e);e&&this.element.removeEventListener(this.name,this,s),h&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){\"function\"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,t):this._$AH.handleEvent(t)}}class z{constructor(t,i,s){this.element=t,this.type=6,this._$AN=void 0,this._$AM=i,this.options=s}get _$AU(){return this._$AM._$AU}_$AI(t){S(this,t)}}const Z={M:e,P:h,A:o,C:1,L:V,R:M,D:u,V:S,I:R,H:k,N:I,U:L,B:H,F:z},j=t.litHtmlPolyfillSupport;j?.(N,R),(t.litHtmlVersions??=[]).push(\"3.3.1\");const B=(t,i,s)=>{const e=s?.renderBefore??i;let h=e._$litPart$;if(void 0===h){const t=s?.renderBefore??null;e._$litPart$=h=new R(i.insertBefore(l(),t),t,void 0,s??{})}return h._$AI(t),h};export{Z as _$LH,x as html,w as mathml,T as noChange,E as nothing,B as render,b as svg};\n//# sourceMappingURL=lit-html.js.map\n","import{ReactiveElement as t}from\"@lit/reactive-element\";export*from\"@lit/reactive-element\";import{render as e,noChange as r}from\"lit-html\";export*from\"lit-html\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const s=globalThis;class i extends t{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const t=super.createRenderRoot();return this.renderOptions.renderBefore??=t.firstChild,t}update(t){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=e(r,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return r}}i._$litElement$=!0,i[\"finalized\"]=!0,s.litElementHydrateSupport?.({LitElement:i});const o=s.litElementPolyfillSupport;o?.({LitElement:i});const n={_$AK:(t,e,r)=>{t._$AK(e,r)},_$AL:t=>t._$AL};(s.litElementVersions??=[]).push(\"4.2.1\");export{i as LitElement,n as _$LE};\n//# sourceMappingURL=lit-element.js.map\n","export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { jwtDecode } from 'jwt-decode';\n\n/**\n * Dynamic Form Builder Web Component\n * Fetches JSON schema and form data, then renders a dynamic form\n *\n * @element form-builder\n *\n * @attr {string} fbms-base-url - Base URL of the form builder microservice\n * @attr {string} fbms-form-fname - Form name to fetch\n * @attr {string} oidc-url - OpenID Connect URL for authentication\n * @attr {string} styles - Optional custom CSS styles\n */\nclass FormBuilder extends LitElement {\n static properties = {\n fbmsBaseUrl: { type: String, attribute: 'fbms-base-url' },\n fbmsFormFname: { type: String, attribute: 'fbms-form-fname' },\n oidcUrl: { type: String, attribute: 'oidc-url' },\n customStyles: { type: String, attribute: 'styles' },\n\n // Internal state\n schema: { type: Object, state: true },\n _formData: { type: Object, state: true },\n uiSchema: { type: Object, state: true },\n fbmsFormVersion: { type: String, state: true },\n loading: { type: Boolean, state: true },\n submitting: { type: Boolean, state: true },\n error: { type: String, state: true },\n token: { type: String, state: true },\n decoded: { type: Object, state: true },\n submitSuccess: { type: Boolean, state: true },\n validationFailed: { type: Boolean, state: true },\n initialFormData: { type: Object, state: true },\n hasChanges: { type: Boolean, state: true },\n submissionStatus: { type: Object, state: true },\n formCompleted: { type: Boolean, state: true },\n submissionError: { type: String, state: true },\n };\n\n static styles = css`\n :host {\n display: block;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n }\n\n .container {\n max-width: 800px;\n margin: 0 auto;\n padding: 20px;\n }\n\n .loading {\n text-align: center;\n padding: 40px;\n color: #666;\n }\n\n .error {\n background-color: #fee;\n border: 1px solid #fcc;\n border-radius: 4px;\n padding: 15px;\n margin: 20px 0;\n color: #c00;\n }\n\n form {\n display: flex;\n flex-direction: column;\n gap: 20px;\n }\n\n .form-group {\n display: flex;\n flex-direction: column;\n gap: 4px;\n margin: 14px 0px;\n }\n\n .nested-object {\n margin-left: 20px;\n padding-left: 20px;\n border-left: 2px solid #e0e0e0;\n margin-top: 10px;\n }\n\n .nested-object-title {\n font-weight: 600;\n color: #333;\n margin-bottom: 10px;\n }\n\n .nested-object-description {\n font-size: 0.875rem;\n color: #666;\n margin-bottom: 15px;\n }\n\n label {\n font-weight: 500;\n color: #333;\n }\n\n .required::after {\n content: ' *';\n color: #c00;\n }\n\n .description {\n font-size: 0.875rem;\n color: #666;\n margin-top: 4px;\n }\n\n input[type='text'],\n input[type='email'],\n input[type='number'],\n input[type='date'],\n input[type='tel'],\n textarea,\n select {\n padding: 8px 12px;\n border: 1px solid #ccc;\n border-radius: 4px;\n font-size: 1rem;\n font-family: inherit;\n width: 100%;\n box-sizing: border-box;\n }\n\n input:focus,\n textarea:focus,\n select:focus {\n outline: none;\n border-color: #0066cc;\n box-shadow: 0 0 0 3px rgba(0, 102, 204, 0.1);\n }\n\n select[multiple] {\n min-height: 120px;\n padding: 4px;\n }\n\n select[multiple] option {\n padding: 4px 8px;\n }\n\n textarea {\n min-height: 100px;\n resize: vertical;\n }\n\n input[type='checkbox'],\n input[type='radio'] {\n margin-right: 8px;\n }\n\n fieldset {\n border: none;\n padding: 0;\n margin: 0;\n min-width: 0; /* Fix for some browsers */\n }\n\n legend {\n font-weight: 700;\n color: #333;\n padding: 0;\n margin-bottom: 8px;\n font-size: 1rem;\n }\n\n .checkbox-group,\n .radio-group {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .checkbox-item,\n .radio-item {\n display: flex;\n align-items: center;\n }\n\n .checkbox-group.inline,\n .radio-group.inline {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 16px;\n }\n\n .checkbox-group.inline .checkbox-item,\n .radio-group.inline .radio-item {\n margin-right: 0;\n }\n\n .error-message {\n color: #c00;\n font-size: 0.875rem;\n margin-top: 4px;\n }\n\n .buttons {\n display: flex;\n gap: 12px;\n margin-top: 20px;\n }\n\n button {\n padding: 10px 20px;\n border: none;\n border-radius: 4px;\n font-size: 1rem;\n cursor: pointer;\n font-family: inherit;\n transition: background-color 0.2s;\n }\n\n button[type='submit'] {\n background-color: #0066cc;\n color: white;\n }\n\n button[type='submit']:hover {\n background-color: #0052a3;\n }\n\n button[type='button'] {\n background-color: #c0c0c0;\n color: #333;\n }\n\n button[type='button']:hover {\n background-color: #e0e0e0;\n }\n\n button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .spinner {\n display: inline-block;\n width: 1em;\n height: 1em;\n border: 2px solid rgba(255, 255, 255, 0.3);\n border-radius: 50%;\n border-top-color: white;\n animation: spin 0.8s linear infinite;\n margin-right: 8px;\n vertical-align: middle;\n }\n\n @keyframes spin {\n to {\n transform: rotate(360deg);\n }\n }\n\n .button-content {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .status-message {\n padding: 12px 16px;\n border-radius: 4px;\n margin-bottom: 20px;\n font-weight: 500;\n }\n\n .status-message.success {\n background-color: #d4edda;\n border: 1px solid #c3e6cb;\n color: #155724;\n }\n\n .status-message.validation-error {\n background-color: #fff3cd;\n border: 1px solid #ffeaa7;\n color: #856404;\n }\n\n .status-message.error {\n background-color: #f8d7da;\n border: 1px solid #f5c6cb;\n color: #721c24;\n }\n\n .status-message ul {\n margin: 8px 0 0 0;\n padding-left: 20px;\n }\n\n .status-message li {\n margin: 4px 0;\n }\n\n form.submitting input,\n form.submitting textarea,\n form.submitting select,\n form.submitting button:not([type='submit']) {\n opacity: 0.6;\n pointer-events: none;\n cursor: not-allowed;\n }\n\n .info-only {\n padding: 20px 0;\n }\n\n .info-only p {\n line-height: 1.6;\n color: #333;\n }\n\n .info-label {\n font-weight: 500;\n color: #333;\n display: block;\n }\n `;\n\n // Getter and setter for formData\n get formData() {\n return this._formData;\n }\n\n set formData(value) {\n const oldValue = this._formData;\n this._formData = value;\n this.requestUpdate('formData', oldValue);\n this.updateStateFlags();\n }\n\n /**\n * Get custom error message from schema if available\n * Follows the pattern: schema.properties.fieldName.messages.ruleName\n * For nested fields: schema.properties.parent.properties.child.messages.ruleName\n * Returns null if field, messages, or rule doesn't exist\n */\n getCustomErrorMessage(fieldPath, ruleName) {\n const pathParts = fieldPath.split('.');\n let current = this.schema;\n\n // Navigate to the field schema\n for (const part of pathParts) {\n current = current?.properties?.[part];\n if (!current) return null;\n }\n\n // Check for custom message\n return current?.messages?.[ruleName] ?? null;\n }\n\n constructor() {\n super();\n this.loading = true;\n this.submitting = false;\n this.error = null;\n this.schema = null;\n this._formData = {};\n this.uiSchema = null;\n this.fbmsFormVersion = null;\n this.token = null;\n this.decoded = { sub: 'unknown' };\n this.fieldErrors = {};\n this.submitSuccess = false;\n this.validationFailed = false;\n this.initialFormData = {};\n this.hasChanges = false;\n this.submissionStatus = null;\n this.formCompleted = false;\n this.submissionError = null;\n }\n\n async connectedCallback() {\n super.connectedCallback();\n await this.initialize();\n }\n\n async initialize() {\n try {\n this.loading = true;\n this.error = null;\n\n // Fetch OIDC token if URL provided\n if (this.oidcUrl) {\n await this.fetchToken();\n }\n\n // Fetch form schema and data\n await Promise.all([this.fetchSchema(), this.fetchFormData()]);\n\n this.loading = false;\n } catch (err) {\n this.error = err.message || 'Failed to initialize form';\n this.loading = false;\n }\n }\n\n /**\n * Deep clone an object, handling Dates and other types\n * Uses structuredClone if available, otherwise falls back to manual recursive\n */\n deepClone(obj) {\n if (obj === null || obj === undefined) return obj;\n\n // Use structuredClone if available (modern browsers)\n if (typeof structuredClone === 'function') {\n try {\n return structuredClone(obj);\n } catch (err) {\n console.warn('structuredClone failed, falling back to manual clone:', err);\n }\n }\n\n // Fallback: manual deep clone handling common types\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => this.deepClone(item));\n }\n\n if (typeof obj === 'object') {\n const cloned = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = this.deepClone(obj[key]);\n }\n }\n return cloned;\n }\n\n // Primitives\n return obj;\n }\n\n /**\n * Deep equality check, handling Dates and other types\n */\n deepEqual(obj1, obj2) {\n if (obj1 === obj2) return true;\n\n if (obj1 === null || obj2 === null) return false;\n if (obj1 === undefined || obj2 === undefined) return false;\n\n if (obj1 instanceof Date && obj2 instanceof Date) {\n return obj1.getTime() === obj2.getTime();\n }\n\n // If only one is a Date, they are not equal\n if (obj1 instanceof Date || obj2 instanceof Date) {\n return false;\n }\n\n if (Array.isArray(obj1) && Array.isArray(obj2)) {\n if (obj1.length !== obj2.length) return false;\n return obj1.every((item, index) => this.deepEqual(item, obj2[index]));\n }\n\n if (typeof obj1 === 'object' && typeof obj2 === 'object') {\n const keys1 = Object.keys(obj1);\n const keys2 = Object.keys(obj2);\n\n if (keys1.length !== keys2.length) return false;\n\n return keys1.every((key) => this.deepEqual(obj1[key], obj2[key]));\n }\n\n return false;\n }\n\n async fetchToken() {\n try {\n const response = await fetch(this.oidcUrl, {\n credentials: 'include',\n });\n\n if (!response.ok) {\n throw new Error('Failed to authenticate');\n }\n\n const data = await response.text();\n this.token = data;\n try {\n this.decoded = jwtDecode(this.token);\n } catch (_err) {\n // Only need this to get the name, so warn\n console.warn('Security Token failed to decode -- setting user to unknown');\n this.decoded = { sub: 'unknown' };\n }\n } catch (err) {\n console.error('Token fetch error:', err);\n throw new Error('Authentication failed');\n }\n }\n\n async fetchSchema() {\n const url = `${this.fbmsBaseUrl}/api/v1/forms/${this.fbmsFormFname}`;\n const headers = {\n 'content-type': 'application/jwt',\n };\n\n if (this.token) {\n headers['Authorization'] = `Bearer ${this.token}`;\n }\n\n const response = await fetch(url, {\n credentials: 'same-origin',\n headers,\n });\n\n if (!response.ok) {\n throw new Error(`Failed to fetch schema: ${response.statusText}`);\n }\n\n const data = await response.json();\n this.fbmsFormVersion = data.version;\n this.schema = data.schema || data;\n this.uiSchema = data.metadata;\n }\n\n async fetchFormData() {\n const url = `${this.fbmsBaseUrl}/api/v1/submissions/${this.fbmsFormFname}?safarifix=${Math.random()}`;\n const headers = {\n 'content-type': 'application/jwt',\n };\n\n if (this.token) {\n headers['Authorization'] = `Bearer ${this.token}`;\n }\n\n try {\n const response = await fetch(url, {\n credentials: 'same-origin',\n headers,\n });\n\n if (response.ok) {\n const payload = await response.json();\n this._formData = payload?.answers ?? {}; // Use private property\n this.initialFormData = this.deepClone(this._formData); // Use deepClone\n } else {\n this._formData = {};\n this.initialFormData = {};\n }\n this.hasChanges = false;\n this.requestUpdate();\n } catch (err) {\n // Non-critical error\n console.warn('Could not fetch form data:', err);\n this._formData = {};\n this.initialFormData = {};\n this.hasChanges = false;\n this.requestUpdate();\n }\n }\n\n updateStateFlags() {\n // Clear status messages when user makes changes\n this.submitSuccess = false;\n this.validationFailed = false;\n this.submissionError = null;\n\n // Check if form data has changed from initial state\n this.hasChanges = !this.deepEqual(this.formData, this.initialFormData);\n }\n\n /**\n * Get nested value from formData using dot notation path\n * e.g., \"contact_information.email\" => formData.contact_information.email\n */\n getNestedValue(path) {\n if (!path || typeof path !== 'string') return undefined;\n\n const parts = path.split('.').filter((part) => part.length > 0);\n if (parts.length === 0) return undefined;\n\n let value = this.formData;\n for (const part of parts) {\n value = value?.[part];\n }\n return value;\n }\n\n /**\n * Sanitize a string for use as an HTML ID\n * Replaces spaces and special characters with hyphens and collapses consecutive hyphens\n * Ensures the ID starts with a letter by adding a prefix if necessary\n */\n sanitizeId(str) {\n if (typeof str !== 'string') {\n str = String(str ?? '');\n }\n\n // Replace invalid characters and collapse multiple hyphens\n let sanitized = str.replace(/[^a-zA-Z0-9-_.]/g, '-').replace(/-+/g, '-');\n\n // Trim leading/trailing hyphens that may have been introduced\n sanitized = sanitized.replace(/^-+/, '').replace(/-+$/, '');\n\n // Ensure we have some content\n if (!sanitized) {\n sanitized = 'id';\n }\n\n // Ensure the ID starts with a letter\n if (!/^[A-Za-z]/.test(sanitized)) {\n sanitized = 'id-' + sanitized;\n }\n\n return sanitized;\n }\n\n /**\n * Set nested value in formData using dot notation path\n */\n setNestedValue(path, value) {\n if (!path || typeof path !== 'string') return;\n\n const parts = path.split('.').filter((part) => part.length > 0);\n if (parts.length === 0) return;\n\n const newData = { ...this.formData };\n let current = newData;\n\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n const existing = current[part];\n // Note: Arrays are not currently supported in schemas, but we preserve them\n // to maintain data integrity. Setting properties on arrays may produce unexpected results.\n if (Array.isArray(existing)) {\n current[part] = [...existing];\n } else if (!existing || typeof existing !== 'object') {\n current[part] = {};\n } else {\n current[part] = { ...existing };\n }\n current = current[part];\n }\n\n current[parts[parts.length - 1]] = value;\n this.formData = newData;\n }\n\n /**\n * Get the schema object at a given path\n * e.g., \"contact_information\" => schema.properties.contact_information\n */\n getSchemaAtPath(path) {\n if (!path) return this.schema; // Handle empty string/null/undefined\n\n const parts = path.split('.').filter((part) => part.length > 0);\n if (parts.length === 0) return this.schema; // All segments were empty\n\n let schema = this.schema;\n\n for (const part of parts) {\n schema = schema.properties?.[part];\n if (!schema) return null;\n }\n\n return schema;\n }\n\n handleInputChange(fieldPath, event) {\n const { type, value, checked } = event.target;\n this.setNestedValue(fieldPath, type === 'checkbox' ? checked : value);\n\n // Clear field error on change\n if (this.fieldErrors[fieldPath]) {\n this.fieldErrors = { ...this.fieldErrors };\n delete this.fieldErrors[fieldPath];\n }\n\n this.updateStateFlags();\n }\n\n handleArrayChange(fieldPath, index, event) {\n const currentArray = this.getNestedValue(fieldPath) || [];\n const newArray = [...currentArray];\n newArray[index] = event.target.value;\n this.setNestedValue(fieldPath, newArray);\n\n this.updateStateFlags();\n }\n\n handleMultiSelectChange(fieldPath, event) {\n const selectedOptions = Array.from(event.target.selectedOptions);\n const values = selectedOptions.map((option) => option.value);\n\n this.setNestedValue(fieldPath, values);\n\n // Clear field error on change\n if (this.fieldErrors[fieldPath]) {\n this.fieldErrors = { ...this.fieldErrors };\n delete this.fieldErrors[fieldPath];\n }\n\n this.updateStateFlags();\n }\n\n handleCheckboxArrayChange(fieldPath, optionValue, event) {\n const { checked } = event.target;\n const currentArray = this.getNestedValue(fieldPath) || [];\n\n let newArray;\n if (checked) {\n // Add to array if not already present\n newArray = currentArray.includes(optionValue) ? currentArray : [...currentArray, optionValue];\n } else {\n // Remove from array\n newArray = currentArray.filter((v) => v !== optionValue);\n }\n\n this.setNestedValue(fieldPath, newArray);\n\n // Clear field error on change\n if (this.fieldErrors[fieldPath]) {\n this.fieldErrors = { ...this.fieldErrors };\n delete this.fieldErrors[fieldPath];\n }\n\n this.updateStateFlags();\n }\n\n /**\n * Recursively validate form fields including nested objects\n */\n validateFormFields(properties, required = [], basePath = '', depth = 0) {\n const MAX_DEPTH = 10;\n if (depth > MAX_DEPTH) {\n console.warn(`Schema nesting exceeds maximum depth of ${MAX_DEPTH} at path: ${basePath}`);\n return {};\n }\n\n const errors = {};\n\n // Check required fields\n required.forEach((fieldName) => {\n const fieldPath = basePath ? `${basePath}.${fieldName}` : fieldName;\n const value = this.getNestedValue(fieldPath);\n if (value === undefined || value === null || value === '') {\n const customMsg = this.getCustomErrorMessage(fieldPath, 'required');\n errors[fieldPath] = customMsg || 'This field is required';\n }\n });\n\n // Type validation\n Object.entries(properties).forEach(([fieldName, fieldSchema]) => {\n const fieldPath = basePath ? `${basePath}.${fieldName}` : fieldName;\n const value = this.getNestedValue(fieldPath);\n\n // Handle nested objects recursively\n if (fieldSchema.type === 'object' && fieldSchema.properties) {\n const nestedErrors = this.validateFormFields(\n fieldSchema.properties,\n fieldSchema.required || [],\n fieldPath,\n depth + 1\n );\n Object.assign(errors, nestedErrors);\n return;\n }\n\n if (value !== undefined && value !== null && value !== '') {\n // Email validation\n if (fieldSchema.format === 'email') {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (!emailRegex.test(value)) {\n // Support both 'format' (generic) and 'email' (specific) custom message keys\n const customMsg =\n this.getCustomErrorMessage(fieldPath, 'format') ||\n this.getCustomErrorMessage(fieldPath, 'email');\n errors[fieldPath] = customMsg || 'Invalid email address';\n }\n }\n\n // Pattern validation\n if (fieldSchema.pattern) {\n const regex = new RegExp(fieldSchema.pattern);\n if (!regex.test(value)) {\n const customMsg = this.getCustomErrorMessage(fieldPath, 'pattern');\n errors[fieldPath] = customMsg || 'Invalid format';\n }\n }\n\n // Number validation\n if (fieldSchema.type === 'number' || fieldSchema.type === 'integer') {\n const num = Number(value);\n if (isNaN(num)) {\n const customMsg = this.getCustomErrorMessage(fieldPath, 'type');\n errors[fieldPath] = customMsg || 'Must be a number';\n } else {\n if (fieldSchema.minimum !== undefined && num < fieldSchema.minimum) {\n const customMsg = this.getCustomErrorMessage(fieldPath, 'minimum');\n errors[fieldPath] = customMsg || `Must be at least ${fieldSchema.minimum}`;\n }\n if (fieldSchema.maximum !== undefined && num > fieldSchema.maximum) {\n const customMsg = this.getCustomErrorMessage(fieldPath, 'maximum');\n errors[fieldPath] = customMsg || `Must be at most ${fieldSchema.maximum}`;\n }\n }\n }\n\n // String length validation\n if (fieldSchema.type === 'string') {\n if (fieldSchema.minLength && value.length < fieldSchema.minLength) {\n const customMsg = this.getCustomErrorMessage(fieldPath, 'minLength');\n errors[fieldPath] = customMsg || `Must be at least ${fieldSchema.minLength} characters`;\n }\n if (fieldSchema.maxLength && value.length > fieldSchema.maxLength) {\n const customMsg = this.getCustomErrorMessage(fieldPath, 'maxLength');\n errors[fieldPath] = customMsg || `Must be at most ${fieldSchema.maxLength} characters`;\n }\n }\n }\n });\n\n return errors;\n }\n\n validateForm() {\n const { properties = {}, required = [] } = this.schema;\n this.fieldErrors = this.validateFormFields(properties, required);\n return Object.keys(this.fieldErrors).length === 0;\n }\n\n async handleSubmit(event) {\n event.preventDefault();\n\n // Clear previous status messages\n this.submitSuccess = false;\n this.validationFailed = false;\n if (!this.validateForm()) {\n this.validationFailed = true;\n await this.updateComplete; // Wait for render to complete\n\n // Scroll to validation warning banner at top of form\n const validationWarning = this.shadowRoot.querySelector('.status-message.validation-error');\n if (validationWarning) {\n validationWarning.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n return;\n }\n\n // Prevent double-submission\n if (this.submitting) {\n return;\n }\n\n await this.submitWithRetry(false);\n }\n\n async submitWithRetry(isRetry = false) {\n try {\n // Only set submitting on the first call, not on retry\n if (!isRetry) {\n this.submitting = true;\n }\n this.submissionError = null;\n this.submissionStatus = null; // Clear previous messages\n\n const body = {\n username: this.decoded.sub,\n formFname: this.fbmsFormFname,\n formVersion: this.fbmsFormVersion,\n timestamp: Date.now(),\n answers: this.formData,\n };\n\n const url = `${this.fbmsBaseUrl}/api/v1/submissions/${this.fbmsFormFname}`;\n const headers = {\n 'content-type': 'application/json',\n };\n\n if (this.token) {\n headers['Authorization'] = `Bearer ${this.token}`;\n }\n\n const response = await fetch(url, {\n method: 'POST',\n credentials: 'same-origin',\n headers,\n body: JSON.stringify(body),\n });\n\n // Try to parse response body for messages (even on error)\n let responseData = null;\n try {\n responseData = await response.json();\n this.submissionStatus = responseData;\n } catch (jsonErr) {\n // Response might not be JSON\n console.warn('Could not parse response as JSON:', jsonErr);\n }\n\n // Handle 403 - token may be stale\n if (response.status === 403 && !isRetry) {\n console.warn('Received 403, attempting to refresh token and retry...');\n\n // Re-fetch token if OIDC URL is configured\n if (this.oidcUrl) {\n try {\n await this.fetchToken();\n console.warn('Token refreshed successfully, retrying submission...');\n\n // Retry once with new token (submitting flag stays true)\n return await this.submitWithRetry(true);\n } catch (tokenError) {\n console.error('Failed to refresh token:', tokenError);\n // Fall through to handle the original 403 error\n throw new Error('Authentication failed: Unable to refresh token');\n }\n } else {\n console.warn('OIDC URL is not configured; cannot refresh token. Skipping retry.');\n // Fall through to handle the 403 error normally\n }\n }\n\n if (!response.ok) {\n // Provide specific error for 403 after retry\n if (response.status === 403 && isRetry) {\n throw new Error(\n 'Authorization failed: Access denied even after token refresh. You may not have permission to submit this form.'\n );\n }\n\n // Use server error message if available\n const errorMessage =\n responseData?.messageHeader ||\n responseData?.message ||\n `Failed to submit form: ${response.statusText}`;\n throw new Error(errorMessage);\n }\n\n // Check for form forwarding header (safely handle missing headers object)\n const formForward = response.headers?.get ? response.headers.get('x-fbms-formforward') : null;\n if (formForward) {\n // eslint-disable-next-line no-console\n console.info(`Form submitted successfully. Forwarding to next form: ${formForward}`);\n this.fbmsFormFname = formForward;\n\n // Keep success state and messages visible for the forwarded form\n this.submitSuccess = true;\n // Note: submissionStatus is preserved to show server messages on the next form\n this.formCompleted = false;\n\n // Re-initialize with the new form\n this.loading = true;\n try {\n await this.initialize();\n return; // Exit early, don't show success message for intermediate form\n // Note: finally block will set submitting = false\n } catch (forwardingError) {\n console.error('Failed to load forwarded form:', forwardingError);\n this.loading = false;\n this.submissionError =\n forwardingError?.message || 'Form was submitted, but loading the next form failed.';\n }\n }\n\n // Dispatch success event\n this.dispatchEvent(\n new CustomEvent('form-submit-success', {\n detail: { data: body },\n bubbles: true,\n composed: true,\n })\n );\n\n // No form forward - this is the final form completion\n this.formCompleted = true;\n this.submitSuccess = true;\n this.submissionError = null;\n this.initialFormData = this.deepClone(this.formData);\n this.hasChanges = false;\n\n await this.updateComplete;\n\n // Scroll to success message\n const successMsg = this.shadowRoot.querySelector('.status-message.success');\n if (successMsg) {\n successMsg.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n } catch (err) {\n this.submissionError = err.message || 'Failed to submit form';\n\n this.dispatchEvent(\n new CustomEvent('form-submit-error', {\n detail: { error: err.message },\n bubbles: true,\n composed: true,\n })\n );\n\n // Scroll to error message at top of form\n await this.updateComplete;\n const errorMsg = this.shadowRoot.querySelector('.status-message.error');\n if (errorMsg) {\n errorMsg.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n } finally {\n this.submitting = false;\n }\n }\n\n handleReset() {\n this.formData = {};\n this.fieldErrors = {};\n this.requestUpdate();\n }\n\n /**\n * Render a field - can be a simple input or a nested object\n */\n renderField(fieldName, fieldSchema, basePath = '', depth = 0) {\n const MAX_DEPTH = 10;\n if (depth > MAX_DEPTH) {\n console.warn(`Schema nesting exceeds maximum depth of ${MAX_DEPTH}`);\n return html`<div class=\"error\">Schema too deeply nested</div>`;\n }\n\n const fieldPath = basePath ? `${basePath}.${fieldName}` : fieldName;\n\n // Handle nested objects with properties\n if (fieldSchema.type === 'object' && fieldSchema.properties) {\n return this.renderNestedObject(fieldName, fieldSchema, basePath, depth);\n }\n\n // Single-value enum - render as informational text only (title serves as the message)\n if (fieldSchema.enum && fieldSchema.enum.length === 1) {\n return html`\n <div class=\"form-group\">\n <span class=\"info-label\">${fieldSchema.title || fieldName}</span>\n ${fieldSchema.description\n ? html`<span class=\"description\">${fieldSchema.description}</span>`\n : ''}\n </div>\n `;\n }\n\n // Regular field\n const value = this.getNestedValue(fieldPath);\n const error = this.fieldErrors[fieldPath];\n // For nested fields, check the parent schema's required array\n const parentSchema = basePath ? this.getSchemaAtPath(basePath) : this.schema;\n const required = parentSchema?.required?.includes(fieldName) ?? false;\n const uiSchemaPath = fieldPath.split('.');\n let uiOptions = this.uiSchema;\n for (const part of uiSchemaPath) {\n uiOptions = uiOptions?.[part];\n }\n uiOptions = uiOptions || {};\n\n const widget = uiOptions['ui:widget'];\n const isGroupedInput = widget === 'radio' || widget === 'checkboxes';\n\n return html`\n <div class=\"form-group\">\n ${!isGroupedInput\n ? html`\n <label class=\"${required ? 'required' : ''}\" for=\"${fieldPath}\">\n ${fieldSchema.title || fieldName}\n </label>\n `\n : ''}\n ${fieldSchema.description && !isGroupedInput\n ? html` <span class=\"description\">${fieldSchema.description}</span> `\n : ''}\n ${this.renderInput(fieldPath, fieldSchema, value, uiOptions)}\n ${error ? html` <span class=\"error-message\">${error}</span> ` : ''}\n </div>\n `;\n }\n\n /**\n * Render a nested object with its own properties\n */\n renderNestedObject(fieldName, fieldSchema, basePath = '', depth = 0) {\n const fieldPath = basePath ? `${basePath}.${fieldName}` : fieldName;\n\n return html`\n <div class=\"nested-object\">\n ${fieldSchema.title\n ? html`<div class=\"nested-object-title\">${fieldSchema.title}</div>`\n : ''}\n ${fieldSchema.description\n ? html`<div class=\"nested-object-description\">${fieldSchema.description}</div>`\n : ''}\n ${Object.entries(fieldSchema.properties).map(([nestedFieldName, nestedFieldSchema]) =>\n this.renderField(nestedFieldName, nestedFieldSchema, fieldPath, depth + 1)\n )}\n </div>\n `;\n }\n\n renderInput(fieldPath, fieldSchema, value, uiOptions) {\n const { type, enum: enumValues, format, items } = fieldSchema;\n const widget = uiOptions['ui:widget'];\n const isInline = uiOptions['ui:options']?.inline;\n\n // Single-value enum - no input needed, title/label already displays the message\n if (enumValues && enumValues.length === 1) {\n return html``;\n }\n\n // Array of enums with checkboxes widget - render as checkboxes\n if (type === 'array' && items?.enum && widget === 'checkboxes') {\n const selectedValues = Array.isArray(value) ? value : [];\n const containerClass = isInline ? 'checkbox-group inline' : 'checkbox-group';\n\n // Extract basePath and fieldName from fieldPath\n const pathParts = fieldPath.split('.');\n const fieldName = pathParts[pathParts.length - 1];\n const basePath = pathParts.slice(0, -1).join('.');\n\n const parentSchema = basePath ? this.getSchemaAtPath(basePath) : this.schema;\n const isRequired = parentSchema?.required?.includes(fieldName) ?? false;\n\n return html`\n <fieldset class=\"${containerClass}\">\n <legend class=\"${isRequired ? 'required' : ''}\">${fieldSchema.title || fieldName}</legend>\n ${fieldSchema.description\n ? html`<span class=\"description\">${fieldSchema.description}</span>`\n : ''}\n ${items.enum.map((opt) => {\n const sanitizedId = this.sanitizeId(`${fieldPath}-${opt}`);\n return html`\n <div class=\"checkbox-item\">\n <input\n type=\"checkbox\"\n id=\"${sanitizedId}\"\n name=\"${fieldPath}\"\n value=\"${opt}\"\n .checked=\"${selectedValues.includes(opt)}\"\n @change=\"${(e) => this.handleCheckboxArrayChange(fieldPath, opt, e)}\"\n />\n <label for=\"${sanitizedId}\">${opt}</label>\n </div>\n `;\n })}\n </fieldset>\n `;\n }\n\n // Array of enums without widget - render as multi-select dropdown (default)\n if (type === 'array' && items?.enum) {\n const selectedValues = Array.isArray(value) ? value : [];\n\n return html`\n <select\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n multiple\n size=\"5\"\n @change=\"${(e) => this.handleMultiSelectChange(fieldPath, e)}\"\n >\n ${items.enum.map(\n (opt) => html`\n <option value=\"${opt}\" ?selected=\"${selectedValues.includes(opt)}\">${opt}</option>\n `\n )}\n </select>\n `;\n }\n\n // Enum with radio widget - render as radio buttons\n if (enumValues && widget === 'radio') {\n const containerClass = isInline ? 'radio-group inline' : 'radio-group';\n\n // Extract basePath and fieldName from fieldPath\n const pathParts = fieldPath.split('.');\n const fieldName = pathParts[pathParts.length - 1];\n const basePath = pathParts.slice(0, -1).join('.');\n\n const parentSchema = basePath ? this.getSchemaAtPath(basePath) : this.schema;\n const isRequired = parentSchema?.required?.includes(fieldName) ?? false;\n\n return html`\n <fieldset class=\"${containerClass}\">\n <legend class=\"${isRequired ? 'required' : ''}\">${fieldSchema.title || fieldName}</legend>\n ${fieldSchema.description\n ? html`<span class=\"description\">${fieldSchema.description}</span>`\n : ''}\n ${enumValues.map((opt) => {\n const sanitizedId = this.sanitizeId(`${fieldPath}-${opt}`);\n return html`\n <div class=\"radio-item\">\n <input\n type=\"radio\"\n id=\"${sanitizedId}\"\n name=\"${fieldPath}\"\n value=\"${opt}\"\n .checked=\"${value === opt}\"\n @change=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n />\n <label for=\"${sanitizedId}\">${opt}</label>\n </div>\n `;\n })}\n </fieldset>\n `;\n }\n\n // Enum - render as select (default)\n if (enumValues) {\n return html`\n <select\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .value=\"${value || ''}\"\n @change=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n >\n <option value=\"\">-- Select --</option>\n ${enumValues.map(\n (opt) => html` <option value=\"${opt}\" ?selected=\"${value === opt}\">${opt}</option> `\n )}\n </select>\n `;\n }\n\n // Boolean - render as checkbox\n if (type === 'boolean') {\n return html`\n <div class=\"checkbox-item\">\n <input\n type=\"checkbox\"\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .checked=\"${!!value}\"\n @change=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n />\n <label for=\"${fieldPath}\">${fieldSchema.title || fieldPath.split('.').pop()}</label>\n </div>\n `;\n }\n\n // String with format\n if (type === 'string') {\n if (format === 'email') {\n return html`\n <input\n type=\"email\"\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .value=\"${value || ''}\"\n @input=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n />\n `;\n }\n\n if (format === 'date') {\n return html`\n <input\n type=\"date\"\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .value=\"${value || ''}\"\n @input=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n />\n `;\n }\n\n if (uiOptions['ui:widget'] === 'textarea') {\n return html`\n <textarea\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .value=\"${value || ''}\"\n @input=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n ></textarea>\n `;\n }\n\n // Default text input\n return html`\n <input\n type=\"text\"\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .value=\"${value || ''}\"\n @input=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n />\n `;\n }\n\n // Number\n if (type === 'number' || type === 'integer') {\n return html`\n <input\n type=\"number\"\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .value=\"${value || ''}\"\n step=\"${type === 'integer' ? '1' : 'any'}\"\n @input=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n />\n `;\n }\n\n // Fallback\n return html`\n <input\n type=\"text\"\n id=\"${fieldPath}\"\n name=\"${fieldPath}\"\n .value=\"${value || ''}\"\n @input=\"${(e) => this.handleInputChange(fieldPath, e)}\"\n />\n `;\n }\n\n render() {\n if (this.error) {\n return html`\n <div class=\"container\">\n <div class=\"error\"><strong>Error:</strong> ${this.error}</div>\n </div>\n `;\n }\n\n if (this.loading) {\n return html`\n <div class=\"container\">\n <div class=\"loading\">Loading form...</div>\n </div>\n `;\n }\n\n if (!this.schema || !this.schema.properties) {\n return html`\n <div class=\"container\">\n <div class=\"error\">Invalid form schema</div>\n </div>\n `;\n }\n\n // NEW: Success-only view when form is completed\n if (this.formCompleted) {\n return html`\n ${this.customStyles\n ? html`<style>\n ${this.customStyles}\n </style>`\n : ''}\n\n <div class=\"container\">\n <div class=\"status-message success\">\n <h2>✓ Form submitted successfully!</h2>\n ${this.submissionStatus?.messages?.length > 0\n ? html`\n <ul>\n ${this.submissionStatus.messages.map((msg) => html`<li>${msg}</li>`)}\n </ul>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n // Regular form view (rest of existing render code)\n const hasFields = Object.keys(this.schema.properties).length > 0;\n\n return html`\n ${this.customStyles\n ? html`<style>\n ${this.customStyles}\n </style>`\n : ''}\n\n <div class=\"container\">\n ${this.submitSuccess\n ? html`\n <div class=\"status-message success\">\n ✓ Your form was successfully submitted.\n ${this.submissionStatus?.messages?.length > 0\n ? html`\n <ul>\n ${this.submissionStatus.messages.map((msg) => html`<li>${msg}</li>`)}\n </ul>\n `\n : ''}\n </div>\n `\n : ''}\n ${hasFields\n ? html`\n <form @submit=\"${this.handleSubmit}\" class=\"${this.submitting ? 'submitting' : ''}\">\n ${this.schema.title ? html`<h2>${this.schema.title}</h2>` : ''}\n ${this.schema.description ? html`<p>${this.schema.description}</p>` : ''}\n ${this.validationFailed\n ? html`\n <div class=\"status-message validation-error\">\n ⚠ Please correct the errors below before submitting.\n </div>\n `\n : ''}\n ${this.submissionError\n ? html`\n <div class=\"status-message error\">\n <strong>Error:</strong> ${this.submissionError}\n ${this.submissionStatus?.messages?.length > 0\n ? html`\n <ul>\n ${this.submissionStatus.messages.map(\n (msg) => html`<li>${msg}</li>`\n )}\n </ul>\n `\n : ''}\n </div>\n `\n : ''}\n ${Object.entries(this.schema.properties).map(([fieldName, fieldSchema]) =>\n this.renderField(fieldName, fieldSchema)\n )}\n\n <div class=\"buttons\">\n <button type=\"submit\" ?disabled=\"${this.submitting || !this.hasChanges}\">\n <span class=\"button-content\">\n ${this.submitting ? html`<span class=\"spinner\"></span>` : ''}\n ${this.submitting ? 'Submitting...' : 'Submit'}\n </span>\n </button>\n <button type=\"button\" @click=\"${this.handleReset}\" ?disabled=\"${this.submitting}\">\n Reset\n </button>\n </div>\n </form>\n `\n : html`\n <div class=\"info-only\">\n ${this.schema.title ? html`<h2>${this.schema.title}</h2>` : ''}\n ${this.schema.description ? html`<p>${this.schema.description}</p>` : ''}\n </div>\n `}\n </div>\n `;\n }\n}\n\ncustomElements.define('form-builder', FormBuilder);\n"],"names":["t","globalThis","e","ShadowRoot","ShadyCSS","nativeShadow","Document","prototype","CSSStyleSheet","s","Symbol","o","WeakMap","n$2","constructor","this","_$cssResult$","Error","cssText","styleSheet","length","get","replaceSync","set","toString","i","reduce","n","c","cssRules","r","is","defineProperty","getOwnPropertyDescriptor","h","getOwnPropertyNames","getOwnPropertySymbols","getPrototypeOf","Object","a","trustedTypes","l","emptyScript","p","reactiveElementPolyfillSupport","d","u","toAttribute","Boolean","Array","JSON","stringify","fromAttribute","Number","parse","f","b","attribute","type","String","converter","reflect","useDefault","hasChanged","metadata","litPropertyMetadata","HTMLElement","addInitializer","_$Ei","push","observedAttributes","finalize","_$Eh","keys","createProperty","state","hasOwnProperty","create","wrapped","elementProperties","noAccessor","getPropertyDescriptor","call","requestUpdate","configurable","enumerable","getPropertyOptions","Map","finalized","properties","_$Eu","elementStyles","finalizeStyles","styles","isArray","Set","flat","reverse","unshift","toLowerCase","super","_$Ep","isUpdatePending","hasUpdated","_$Em","_$Ev","_$ES","Promise","enableUpdating","_$AL","_$E_","forEach","addController","_$EO","add","renderRoot","isConnected","hostConnected","removeController","delete","size","createRenderRoot","shadowRoot","attachShadow","shadowRootOptions","adoptedStyleSheets","map","document","createElement","litNonce","setAttribute","textContent","appendChild","connectedCallback","disconnectedCallback","hostDisconnected","attributeChangedCallback","_$AK","_$ET","removeAttribute","_$Ej","hasAttribute","C","_$EP","has","_$Eq","reject","scheduleUpdate","performUpdate","shouldUpdate","willUpdate","hostUpdate","update","_$EM","_$AE","hostUpdated","firstUpdated","updated","updateComplete","getUpdateComplete","y","mode","ReactiveElement","reactiveElementVersions","createPolicy","createHTML","Math","random","toFixed","slice","createComment","v","_","m","RegExp","g","$","x","_$litType$","strings","values","T","for","E","A","createTreeWalker","P","V","lastIndex","exec","test","startsWith","N","parts","el","currentNode","content","firstChild","replaceWith","childNodes","nextNode","nodeType","hasAttributes","getAttributeNames","endsWith","getAttribute","split","index","name","ctor","H","I","L","k","tagName","append","data","indexOf","innerHTML","S","_$Co","_$Cl","_$litDirective$","_$AO","_$AT","_$AS","M","_$AV","_$AN","_$AD","_$AM","parentNode","_$AU","creationScope","importNode","R","nextSibling","z","_$AI","_$Cv","_$AH","_$AA","_$AB","options","startNode","endNode","_$AR","iterator","O","insertBefore","createTextNode","_$AC","_$AP","remove","setConnected","element","fill","j","arguments","toggleAttribute","capture","once","passive","removeEventListener","addEventListener","handleEvent","host","litHtmlPolyfillSupport","litHtmlVersions","renderOptions","_$Do","renderBefore","render","_$litPart$","_$litElement$","litElementHydrateSupport","LitElement","litElementPolyfillSupport","litElementVersions","InvalidTokenError","base64UrlDecode","str","output","replace","decodeURIComponent","atob","code","charCodeAt","toUpperCase","b64DecodeUnicode","err","FormBuilder","static","fbmsBaseUrl","fbmsFormFname","oidcUrl","customStyles","schema","_formData","uiSchema","fbmsFormVersion","loading","submitting","error","token","decoded","submitSuccess","validationFailed","initialFormData","hasChanges","submissionStatus","formCompleted","submissionError","css","formData","value","oldValue","updateStateFlags","getCustomErrorMessage","fieldPath","ruleName","pathParts","current","part","messages","sub","fieldErrors","initialize","fetchToken","all","fetchSchema","fetchFormData","message","deepClone","obj","structuredClone","console","warn","Date","getTime","item","cloned","key","deepEqual","obj1","obj2","undefined","every","keys1","keys2","response","fetch","credentials","ok","text","pos","header","jwtDecode","_err","url","headers","statusText","json","version","payload","answers","getNestedValue","path","filter","sanitizeId","sanitized","setNestedValue","newData","existing","getSchemaAtPath","handleInputChange","event","checked","target","handleArrayChange","newArray","handleMultiSelectChange","from","selectedOptions","option","handleCheckboxArrayChange","optionValue","currentArray","includes","validateFormFields","required","basePath","depth","errors","fieldName","customMsg","entries","fieldSchema","nestedErrors","assign","format","pattern","num","isNaN","minimum","maximum","minLength","maxLength","validateForm","handleSubmit","preventDefault","validationWarning","querySelector","scrollIntoView","behavior","block","submitWithRetry","isRetry","body","username","formFname","formVersion","timestamp","now","method","responseData","jsonErr","status","tokenError","errorMessage","messageHeader","formForward","info","forwardingError","dispatchEvent","CustomEvent","detail","bubbles","composed","successMsg","errorMsg","handleReset","renderField","html","renderNestedObject","enum","title","description","parentSchema","uiSchemaPath","uiOptions","widget","isGroupedInput","renderInput","nestedFieldName","nestedFieldSchema","enumValues","items","isInline","inline","selectedValues","containerClass","join","isRequired","opt","sanitizedId","pop","msg","hasFields","customElements","define"],"mappings":";;;;;AAKA,MAAMA,EAAEC,WAAWC,EAAEF,EAAEG,kBAAa,IAASH,EAAEI,UAAUJ,EAAEI,SAASC,eAAe,uBAAuBC,SAASC,WAAW,YAAYC,cAAcD,UAAUE,EAAEC,SAASC,EAAE,IAAIC,QAAO,IAAAC,EAAC,MAAQ,WAAAC,CAAYd,EAAEE,EAAES,GAAG,GAAGI,KAAKC,cAAa,EAAGL,IAAIF,EAAE,MAAMQ,MAAM,qEAAqEF,KAAKG,QAAQlB,EAAEe,KAAKf,EAAEE,CAAC,CAAC,cAAIiB,GAAa,IAAInB,EAAEe,KAAKJ,EAAE,MAAMF,EAAEM,KAAKf,EAAE,GAAGE,QAAG,IAASF,EAAE,CAAC,MAAME,OAAE,IAASO,GAAG,IAAIA,EAAEW,OAAOlB,IAAIF,EAAEW,EAAEU,IAAIZ,SAAI,IAAST,KAAKe,KAAKJ,EAAEX,EAAE,IAAIQ,eAAec,YAAYP,KAAKG,SAAShB,GAAGS,EAAEY,IAAId,EAAET,GAAG,CAAC,OAAOA,CAAC,CAAC,QAAAwB,GAAW,OAAOT,KAAKG,OAAO,GAAE,MAAqDO,EAAE,CAACzB,KAAKE,KAAK,MAAMS,EAAE,IAAIX,EAAEoB,OAAOpB,EAAE,GAAGE,EAAEwB,QAASxB,EAAEO,EAAEE,IAAIT,EAAE,CAACF,IAAI,IAAG,IAAKA,EAAEgB,aAAa,OAAOhB,EAAEkB,QAAQ,GAAG,iBAAiBlB,EAAE,OAAOA,EAAE,MAAMiB,MAAM,mEAAmEjB,EAAE,uFAAwF,EAArP,CAAuPS,GAAGT,EAAEW,EAAE,GAAIX,EAAE,IAAI,OAAO,IAAI2B,EAAEhB,EAAEX,EAAES,IAA2PmB,EAAE1B,EAAEF,GAAGA,EAAEA,GAAGA,aAAaQ,cAAc,CAACR,IAAI,IAAIE,EAAE,GAAG,IAAI,MAAMO,KAAKT,EAAE6B,SAAS3B,GAAGO,EAAES,QAAQ,MAAztBlB,IAAG,IAAI2B,EAAE,iBAAiB3B,EAAEA,EAAEA,EAAE,QAAG,EAAOS,GAAsrBqB,CAAE5B,EAAG,EAAjE,CAAmEF,GAAGA,GCAlzC+B,GAAGN,EAAEO,eAAe9B,EAAE+B,yBAAyBC,EAAEC,oBAAoBL,EAAEM,sBAAsBzB,EAAE0B,eAAeV,GAAGW,OAAOC,EAAEtC,WAAW2B,EAAEW,EAAEC,aAAaC,EAAEb,EAAEA,EAAEc,YAAY,GAAGC,EAAEJ,EAAEK,+BAA+BC,EAAE,CAAC7C,EAAES,IAAIT,EAAE8C,EAAE,CAAC,WAAAC,CAAY/C,EAAES,GAAG,OAAOA,GAAG,KAAKuC,QAAQhD,EAAEA,EAAEyC,EAAE,KAAK,MAAM,KAAKH,OAAO,KAAKW,MAAMjD,EAAE,MAAMA,EAAEA,EAAEkD,KAAKC,UAAUnD,GAAG,OAAOA,CAAC,EAAE,aAAAoD,CAAcpD,EAAES,GAAG,IAAIgB,EAAEzB,EAAE,OAAOS,GAAG,KAAKuC,QAAQvB,EAAE,OAAOzB,EAAE,MAAM,KAAKqD,OAAO5B,EAAE,OAAOzB,EAAE,KAAKqD,OAAOrD,GAAG,MAAM,KAAKsC,OAAO,KAAKW,MAAM,IAAIxB,EAAEyB,KAAKI,MAAMtD,EAAE,CAAC,MAAMA,GAAGyB,EAAE,IAAI,EAAE,OAAOA,CAAC,GAAG8B,EAAE,CAACvD,EAAES,KAAKgB,EAAEzB,EAAES,GAAG+C,EAAE,CAACC,WAAU,EAAGC,KAAKC,OAAOC,UAAUd,EAAEe,SAAQ,EAAGC,YAAW,EAAGC,WAAWR;;;;;GAAG7C,OAAOsD,WAAWtD,OAAO,YAAY6B,EAAE0B,sBAAsB,IAAIrD,cAAQ,cAAgBsD,YAAY,qBAAOC,CAAenE,GAAGe,KAAKqD,QAAQrD,KAAK0B,IAAI,IAAI4B,KAAKrE,EAAE,CAAC,6BAAWsE,GAAqB,OAAOvD,KAAKwD,WAAWxD,KAAKyD,MAAM,IAAIzD,KAAKyD,KAAKC,OAAO,CAAC,qBAAOC,CAAe1E,EAAES,EAAE+C,GAAG,GAAG/C,EAAEkE,QAAQlE,EAAEgD,WAAU,GAAI1C,KAAKqD,OAAOrD,KAAKR,UAAUqE,eAAe5E,MAAMS,EAAE6B,OAAOuC,OAAOpE,IAAIqE,SAAQ,GAAI/D,KAAKgE,kBAAkBxD,IAAIvB,EAAES,IAAIA,EAAEuE,WAAW,CAAC,MAAMvD,EAAEf,SAASwB,EAAEnB,KAAKkE,sBAAsBjF,EAAEyB,EAAEhB,QAAG,IAASyB,GAAGhC,EAAEa,KAAKR,UAAUP,EAAEkC,EAAE,CAAC,CAAC,4BAAO+C,CAAsBjF,EAAES,EAAEgB,GAAG,MAAMJ,IAAInB,EAAEqB,IAAIO,GAAGI,EAAEnB,KAAKR,UAAUP,IAAI,CAAC,GAAAqB,GAAM,OAAON,KAAKN,EAAE,EAAE,GAAAc,CAAIvB,GAAGe,KAAKN,GAAGT,CAAC,GAAG,MAAM,CAACqB,IAAInB,EAAE,GAAAqB,CAAId,GAAG,MAAMyB,EAAEhC,GAAGgF,KAAKnE,MAAMe,GAAGoD,KAAKnE,KAAKN,GAAGM,KAAKoE,cAAcnF,EAAEkC,EAAET,EAAE,EAAE2D,cAAa,EAAGC,YAAW,EAAG,CAAC,yBAAOC,CAAmBtF,GAAG,OAAOe,KAAKgE,kBAAkB1D,IAAIrB,IAAIwD,CAAC,CAAC,WAAOY,GAAO,GAAGrD,KAAK6D,eAAe/B,EAAE,sBAAsB,OAAO,MAAM7C,EAAE2B,EAAEZ,MAAMf,EAAEuE,gBAAW,IAASvE,EAAEyC,IAAI1B,KAAK0B,EAAE,IAAIzC,EAAEyC,IAAI1B,KAAKgE,kBAAkB,IAAIQ,IAAIvF,EAAE+E,kBAAkB,CAAC,eAAOR,GAAW,GAAGxD,KAAK6D,eAAe/B,EAAE,cAAc,OAAO,GAAG9B,KAAKyE,WAAU,EAAGzE,KAAKqD,OAAOrD,KAAK6D,eAAe/B,EAAE,eAAe,CAAC,MAAM7C,EAAEe,KAAK0E,WAAWhF,EAAE,IAAIqB,EAAE9B,MAAMW,EAAEX,IAAI,IAAI,MAAMyB,KAAKhB,EAAEM,KAAK2D,eAAejD,EAAEzB,EAAEyB,GAAG,CAAC,MAAMzB,EAAEe,KAAKL,OAAOsD,UAAU,GAAG,OAAOhE,EAAE,CAAC,MAAMS,EAAEwD,oBAAoB5C,IAAIrB,GAAG,QAAG,IAASS,EAAE,IAAI,MAAMT,EAAEyB,KAAKhB,EAAEM,KAAKgE,kBAAkBxD,IAAIvB,EAAEyB,EAAE,CAACV,KAAKyD,KAAK,IAAIe,IAAI,IAAI,MAAMvF,EAAES,KAAKM,KAAKgE,kBAAkB,CAAC,MAAMtD,EAAEV,KAAK2E,KAAK1F,EAAES,QAAG,IAASgB,GAAGV,KAAKyD,KAAKjD,IAAIE,EAAEzB,EAAE,CAACe,KAAK4E,cAAc5E,KAAK6E,eAAe7E,KAAK8E,OAAO,CAAC,qBAAOD,CAAenF,GAAG,MAAMgB,EAAE,GAAG,GAAGwB,MAAM6C,QAAQrF,GAAG,CAAC,MAAMP,EAAE,IAAI6F,IAAItF,EAAEuF,KAAK,KAAKC,WAAW,IAAI,MAAMxF,KAAKP,EAAEuB,EAAEyE,QAAQlG,EAAES,GAAG,WAAM,IAASA,GAAGgB,EAAE4C,KAAKrE,EAAES,IAAI,OAAOgB,CAAC,CAAC,WAAOiE,CAAK1F,EAAES,GAAG,MAAMgB,EAAEhB,EAAEgD,UAAU,OAAM,IAAKhC,OAAE,EAAO,iBAAiBA,EAAEA,EAAE,iBAAiBzB,EAAEA,EAAEmG,mBAAc,CAAM,CAAC,WAAArF,GAAcsF,QAAQrF,KAAKsF,UAAK,EAAOtF,KAAKuF,iBAAgB,EAAGvF,KAAKwF,YAAW,EAAGxF,KAAKyF,KAAK,KAAKzF,KAAK0F,MAAM,CAAC,IAAAA,GAAO1F,KAAK2F,KAAK,IAAIC,QAAS3G,GAAGe,KAAK6F,eAAe5G,GAAIe,KAAK8F,KAAK,IAAItB,IAAIxE,KAAK+F,OAAO/F,KAAKoE,gBAAgBpE,KAAKD,YAAY2B,GAAGsE,QAAS/G,GAAGA,EAAEe,MAAO,CAAC,aAAAiG,CAAchH,IAAIe,KAAKkG,OAAO,IAAIlB,KAAKmB,IAAIlH,QAAG,IAASe,KAAKoG,YAAYpG,KAAKqG,aAAapH,EAAEqH,iBAAiB,CAAC,gBAAAC,CAAiBtH,GAAGe,KAAKkG,MAAMM,OAAOvH,EAAE,CAAC,IAAA8G,GAAO,MAAM9G,EAAE,IAAIuF,IAAI9E,EAAEM,KAAKD,YAAYiE,kBAAkB,IAAI,MAAMtD,KAAKhB,EAAEgE,OAAO1D,KAAK6D,eAAenD,KAAKzB,EAAEuB,IAAIE,EAAEV,KAAKU,WAAWV,KAAKU,IAAIzB,EAAEwH,KAAK,IAAIzG,KAAKsF,KAAKrG,EAAE,CAAC,gBAAAyH,GAAmB,MAAMzH,EAAEe,KAAK2G,YAAY3G,KAAK4G,aAAa5G,KAAKD,YAAY8G,mBAAmB,MDA7lE,EAACnH,EAAEE,KAAK,GAAGT,EAAEO,EAAEoH,mBAAmBlH,EAAEmH,IAAK9H,GAAGA,aAAaQ,cAAcR,EAAEA,EAAEmB,iBAAkB,IAAI,MAAMjB,KAAKS,EAAE,CAAC,MAAMA,EAAEoH,SAASC,cAAc,SAASrG,EAAE3B,EAAEiI,cAAS,IAAStG,GAAGhB,EAAEuH,aAAa,QAAQvG,GAAGhB,EAAEwH,YAAYjI,EAAEgB,QAAQT,EAAE2H,YAAYzH,EAAE,GCAk3DF,CAAET,EAAEe,KAAKD,YAAY6E,eAAe3F,CAAC,CAAC,iBAAAqI,GAAoBtH,KAAKoG,aAAapG,KAAK0G,mBAAmB1G,KAAK6F,gBAAe,GAAI7F,KAAKkG,MAAMF,QAAS/G,GAAGA,EAAEqH,kBAAmB,CAAC,cAAAT,CAAe5G,GAAG,CAAC,oBAAAsI,GAAuBvH,KAAKkG,MAAMF,QAAS/G,GAAGA,EAAEuI,qBAAsB,CAAC,wBAAAC,CAAyBxI,EAAES,EAAEgB,GAAGV,KAAK0H,KAAKzI,EAAEyB,EAAE,CAAC,IAAAiH,CAAK1I,EAAES,GAAG,MAAMgB,EAAEV,KAAKD,YAAYiE,kBAAkB1D,IAAIrB,GAAGE,EAAEa,KAAKD,YAAY4E,KAAK1F,EAAEyB,GAAG,QAAG,IAASvB,IAAG,IAAKuB,EAAEoC,QAAQ,CAAC,MAAM3B,QAAG,IAAST,EAAEmC,WAAWb,YAAYtB,EAAEmC,UAAUd,GAAGC,YAAYtC,EAAEgB,EAAEiC,MAAM3C,KAAKyF,KAAKxG,EAAE,MAAMkC,EAAEnB,KAAK4H,gBAAgBzI,GAAGa,KAAKmH,aAAahI,EAAEgC,GAAGnB,KAAKyF,KAAK,IAAI,CAAC,CAAC,IAAAiC,CAAKzI,EAAES,GAAG,MAAMgB,EAAEV,KAAKD,YAAYZ,EAAEuB,EAAE+C,KAAKnD,IAAIrB,GAAG,QAAG,IAASE,GAAGa,KAAKyF,OAAOtG,EAAE,CAAC,MAAMF,EAAEyB,EAAE6D,mBAAmBpF,GAAGgC,EAAE,mBAAmBlC,EAAE4D,UAAU,CAACR,cAAcpD,EAAE4D,gBAAW,IAAS5D,EAAE4D,WAAWR,cAAcpD,EAAE4D,UAAUd,EAAE/B,KAAKyF,KAAKtG,EAAE,MAAM4B,EAAEI,EAAEkB,cAAc3C,EAAET,EAAE0D,MAAM3C,KAAKb,GAAG4B,GAAGf,KAAK6H,MAAMvH,IAAInB,IAAI4B,EAAEf,KAAKyF,KAAK,IAAI,CAAC,CAAC,aAAArB,CAAcnF,EAAES,EAAEgB,GAAG,QAAG,IAASzB,EAAE,CAAC,MAAME,EAAEa,KAAKD,YAAYoB,EAAEnB,KAAKf,GAAG,GAAGyB,IAAIvB,EAAEoF,mBAAmBtF,MAAMyB,EAAEsC,YAAYR,GAAGrB,EAAEzB,IAAIgB,EAAEqC,YAAYrC,EAAEoC,SAAS3B,IAAInB,KAAK6H,MAAMvH,IAAIrB,KAAKe,KAAK8H,aAAa3I,EAAEwF,KAAK1F,EAAEyB,KAAK,OAAOV,KAAK+H,EAAE9I,EAAES,EAAEgB,EAAE,EAAC,IAAKV,KAAKuF,kBAAkBvF,KAAK2F,KAAK3F,KAAKgI,OAAO,CAAC,CAAAD,CAAE9I,EAAES,GAAGqD,WAAWrC,EAAEoC,QAAQ3D,EAAE4E,QAAQ5C,GAAGJ,GAAGL,KAAKV,KAAK6H,OAAO,IAAIrD,KAAKyD,IAAIhJ,KAAKe,KAAK6H,KAAKrH,IAAIvB,EAAE8B,GAAGrB,GAAGM,KAAKf,KAAI,IAAKkC,QAAG,IAASJ,KAAKf,KAAK8F,KAAKmC,IAAIhJ,KAAKe,KAAKwF,YAAY9E,IAAIhB,OAAE,GAAQM,KAAK8F,KAAKtF,IAAIvB,EAAES,KAAI,IAAKP,GAAGa,KAAKyF,OAAOxG,IAAIe,KAAKkI,OAAO,IAAIlD,KAAKmB,IAAIlH,GAAG,CAAC,UAAM+I,GAAOhI,KAAKuF,iBAAgB,EAAG,UAAUvF,KAAK2F,IAAI,CAAC,MAAM1G,GAAG2G,QAAQuC,OAAOlJ,EAAE,CAAC,MAAMA,EAAEe,KAAKoI,iBAAiB,OAAO,MAAMnJ,SAASA,GAAGe,KAAKuF,eAAe,CAAC,cAAA6C,GAAiB,OAAOpI,KAAKqI,eAAe,CAAC,aAAAA,GAAgB,IAAIrI,KAAKuF,gBAAgB,OAAO,IAAIvF,KAAKwF,WAAW,CAAC,GAAGxF,KAAKoG,aAAapG,KAAK0G,mBAAmB1G,KAAKsF,KAAK,CAAC,IAAI,MAAMrG,EAAES,KAAKM,KAAKsF,KAAKtF,KAAKf,GAAGS,EAAEM,KAAKsF,UAAK,CAAM,CAAC,MAAMrG,EAAEe,KAAKD,YAAYiE,kBAAkB,GAAG/E,EAAEwH,KAAK,EAAE,IAAI,MAAM/G,EAAEgB,KAAKzB,EAAE,CAAC,MAAM8E,QAAQ9E,GAAGyB,EAAEvB,EAAEa,KAAKN,IAAG,IAAKT,GAAGe,KAAK8F,KAAKmC,IAAIvI,SAAI,IAASP,GAAGa,KAAK+H,EAAErI,OAAE,EAAOgB,EAAEvB,EAAE,CAAC,CAAC,IAAIF,GAAE,EAAG,MAAMS,EAAEM,KAAK8F,KAAK,IAAI7G,EAAEe,KAAKsI,aAAa5I,GAAGT,GAAGe,KAAKuI,WAAW7I,GAAGM,KAAKkG,MAAMF,QAAS/G,GAAGA,EAAEuJ,gBAAiBxI,KAAKyI,OAAO/I,IAAIM,KAAK0I,MAAM,CAAC,MAAMhJ,GAAG,MAAMT,GAAE,EAAGe,KAAK0I,OAAOhJ,CAAC,CAACT,GAAGe,KAAK2I,KAAKjJ,EAAE,CAAC,UAAA6I,CAAWtJ,GAAG,CAAC,IAAA0J,CAAK1J,GAAGe,KAAKkG,MAAMF,QAAS/G,GAAGA,EAAE2J,iBAAkB5I,KAAKwF,aAAaxF,KAAKwF,YAAW,EAAGxF,KAAK6I,aAAa5J,IAAIe,KAAK8I,QAAQ7J,EAAE,CAAC,IAAAyJ,GAAO1I,KAAK8F,KAAK,IAAItB,IAAIxE,KAAKuF,iBAAgB,CAAE,CAAC,kBAAIwD,GAAiB,OAAO/I,KAAKgJ,mBAAmB,CAAC,iBAAAA,GAAoB,OAAOhJ,KAAK2F,IAAI,CAAC,YAAA2C,CAAarJ,GAAG,OAAM,CAAE,CAAC,MAAAwJ,CAAOxJ,GAAGe,KAAKkI,OAAOlI,KAAKkI,KAAKlC,QAAS/G,GAAGe,KAAK2H,KAAK1I,EAAEe,KAAKf,KAAMe,KAAK0I,MAAM,CAAC,OAAAI,CAAQ7J,GAAG,CAAC,YAAA4J,CAAa5J,GAAG,GAAEgK,EAAErE,cAAc,GAAGqE,EAAEpC,kBAAkB,CAACqC,KAAK,QAAQD,EAAEnH,EAAE,sBAAsB,IAAI0C,IAAIyE,EAAEnH,EAAE,cAAc,IAAI0C,IAAI5C,IAAI,CAACuH,gBAAgBF,KAAKzH,EAAE4H,0BAA0B,IAAI9F,KAAK;;;;;;ACAjxL,MAACrE,EAAEC,WAAWwB,EAAEzB,EAAEwC,aAAa/B,EAAEgB,EAAEA,EAAE2I,aAAa,WAAW,CAACC,WAAWrK,GAAGA,SAAI,EAAOE,EAAE,QAAQgC,EAAE,OAAOoI,KAAKC,SAASC,QAAQ,GAAGC,MAAM,MAAM9J,EAAE,IAAIuB,EAAEP,EAAE,IAAIhB,KAAKmB,EAAEiG,SAAStF,EAAE,IAAIX,EAAE4I,cAAc,IAAI9I,EAAE5B,GAAG,OAAOA,GAAG,iBAAiBA,GAAG,mBAAmBA,EAAEuC,EAAEU,MAAM6C,QAA2DjD,EAAE,cAAcU,EAAE,sDAAsDoH,EAAE,OAAOC,EAAE,KAAKC,EAAEC,OAAO,KAAKjI,sBAAsBA,MAAMA,uCAAuC,KAAKF,EAAE,KAAKoI,EAAE,KAAKC,EAAE,qCAAwFC,EAAjDjL,IAAG,CAACyB,KAAKhB,KAAC,CAAKyK,WAAWlL,EAAEmL,QAAQ1J,EAAE2J,OAAO3K,IAAMuJ,CAAE,GAAiBqB,EAAE3K,OAAO4K,IAAI,gBAAgBC,EAAE7K,OAAO4K,IAAI,eAAeE,EAAE,IAAI5K,QAAQkI,EAAEhH,EAAE2J,iBAAiB3J,EAAE,KAAK,SAAS4J,EAAE1L,EAAEyB,GAAG,IAAIc,EAAEvC,KAAKA,EAAE4E,eAAe,OAAO,MAAM3D,MAAM,kCAAkC,YAAO,IAASR,EAAEA,EAAE4J,WAAW5I,GAAGA,CAAC,CAAC,MAAMkK,EAAE,CAAC3L,EAAEyB,KAAK,MAAMhB,EAAET,EAAEoB,OAAO,EAAET,EAAE,GAAG,IAAImB,EAAEW,EAAE,IAAIhB,EAAE,QAAQ,IAAIA,EAAE,SAAS,GAAGG,EAAE2B,EAAE,IAAI,IAAI9B,EAAE,EAAEA,EAAEhB,EAAEgB,IAAI,CAAC,MAAMhB,EAAET,EAAEyB,GAAG,IAAIc,EAAEO,EAAED,KAAKmH,EAAE,EAAE,KAAKA,EAAEvJ,EAAEW,SAASQ,EAAEgK,UAAU5B,EAAElH,EAAElB,EAAEiK,KAAKpL,GAAG,OAAOqC,IAAIkH,EAAEpI,EAAEgK,UAAUhK,IAAI2B,EAAE,QAAQT,EAAE,GAAGlB,EAAE+I,OAAE,IAAS7H,EAAE,GAAGlB,EAAEgJ,OAAE,IAAS9H,EAAE,IAAIkI,EAAEc,KAAKhJ,EAAE,MAAMhB,EAAEgJ,OAAO,KAAKhI,EAAE,GAAG,MAAMlB,EAAEiJ,QAAG,IAAS/H,EAAE,KAAKlB,EAAEiJ,GAAGjJ,IAAIiJ,EAAE,MAAM/H,EAAE,IAAIlB,EAAEE,GAAGyB,EAAEV,GAAE,QAAI,IAASC,EAAE,GAAGD,MAAMA,EAAEjB,EAAEgK,UAAU9I,EAAE,GAAG1B,OAAOmB,EAAEO,EAAE,GAAGlB,OAAE,IAASkB,EAAE,GAAG+H,EAAE,MAAM/H,EAAE,GAAGiI,EAAEpI,GAAGf,IAAImJ,GAAGnJ,IAAIe,EAAEf,EAAEiJ,EAAEjJ,IAAI+I,GAAG/I,IAAIgJ,EAAEhJ,EAAE2B,GAAG3B,EAAEiJ,EAAE/I,OAAE,GAAQ,MAAMmJ,EAAErJ,IAAIiJ,GAAG7K,EAAEyB,EAAE,GAAGsK,WAAW,MAAM,IAAI,GAAGtJ,GAAGb,IAAI2B,EAAE9C,EAAEkB,EAAEkB,GAAG,GAAGlC,EAAE0D,KAAK9B,GAAG9B,EAAEgK,MAAM,EAAE5H,GAAG3C,EAAEO,EAAEgK,MAAM5H,GAAGX,EAAE+I,GAAGxK,EAAEyB,QAAQW,EAAEpB,EAAEwJ,EAAE,CAAC,MAAM,CAACS,EAAE1L,EAAEyC,GAAGzC,EAAES,IAAI,QAAQ,IAAIgB,EAAE,SAAS,IAAIA,EAAE,UAAU,KAAKd,IAAI,MAAMqL,EAAE,WAAAlL,EAAaqK,QAAQnL,EAAEkL,WAAWzK,GAAGkB,GAAG,IAAIG,EAAEf,KAAKkL,MAAM,GAAG,IAAIrK,EAAE,EAAEW,EAAE,EAAE,MAAMO,EAAE9C,EAAEoB,OAAO,EAAEyB,EAAE9B,KAAKkL,OAAO1I,EAAEoH,GAAGgB,EAAE3L,EAAES,GAAG,GAAGM,KAAKmL,GAAGF,EAAEhE,cAAczE,EAAE5B,GAAGmH,EAAEqD,YAAYpL,KAAKmL,GAAGE,QAAQ,IAAI3L,GAAG,IAAIA,EAAE,CAAC,MAAMT,EAAEe,KAAKmL,GAAGE,QAAQC,WAAWrM,EAAEsM,eAAetM,EAAEuM,WAAW,CAAC,KAAK,QAAQzK,EAAEgH,EAAE0D,aAAa3J,EAAEzB,OAAO0B,GAAG,CAAC,GAAG,IAAIhB,EAAE2K,SAAS,CAAC,GAAG3K,EAAE4K,gBAAgB,IAAI,MAAM1M,KAAK8B,EAAE6K,oBAAoB,GAAG3M,EAAE4M,SAAS1M,GAAG,CAAC,MAAMuB,EAAEkJ,EAAEpI,KAAK9B,EAAEqB,EAAE+K,aAAa7M,GAAG8M,MAAM5K,GAAGhC,EAAE,eAAe2L,KAAKpK,GAAGoB,EAAEwB,KAAK,CAACX,KAAK,EAAEqJ,MAAMnL,EAAEoL,KAAK9M,EAAE,GAAGiL,QAAQ1K,EAAEwM,KAAK,MAAM/M,EAAE,GAAGgN,EAAE,MAAMhN,EAAE,GAAGiN,GAAE,MAAMjN,EAAE,GAAGkN,GAAEC,IAAIvL,EAAE6G,gBAAgB3I,EAAE,MAAMA,EAAE+L,WAAW7J,KAAKW,EAAEwB,KAAK,CAACX,KAAK,EAAEqJ,MAAMnL,IAAIE,EAAE6G,gBAAgB3I,IAAI,GAAGgL,EAAEc,KAAKhK,EAAEwL,SAAS,CAAC,MAAMtN,EAAE8B,EAAEqG,YAAY2E,MAAM5K,GAAGzB,EAAET,EAAEoB,OAAO,EAAE,GAAGX,EAAE,EAAE,CAACqB,EAAEqG,YAAY1G,EAAEA,EAAEiB,YAAY,GAAG,IAAI,IAAIjB,EAAE,EAAEA,EAAEhB,EAAEgB,IAAIK,EAAEyL,OAAOvN,EAAEyB,GAAGgB,KAAKqG,EAAE0D,WAAW3J,EAAEwB,KAAK,CAACX,KAAK,EAAEqJ,QAAQnL,IAAIE,EAAEyL,OAAOvN,EAAES,GAAGgC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAIX,EAAE2K,SAAS,GAAG3K,EAAE0L,OAAO7M,EAAEkC,EAAEwB,KAAK,CAACX,KAAK,EAAEqJ,MAAMnL,QAAQ,CAAC,IAAI5B,GAAE,EAAG,MAAK,KAAMA,EAAE8B,EAAE0L,KAAKC,QAAQvL,EAAElC,EAAE,KAAK6C,EAAEwB,KAAK,CAACX,KAAK,EAAEqJ,MAAMnL,IAAI5B,GAAGkC,EAAEd,OAAO,CAAC,CAACQ,GAAG,CAAC,CAAC,oBAAOoG,CAAchI,EAAEyB,GAAG,MAAMhB,EAAEqB,EAAEkG,cAAc,YAAY,OAAOvH,EAAEiN,UAAU1N,EAAES,CAAC,EAAE,SAASkN,EAAE3N,EAAEyB,EAAEhB,EAAET,EAAEE,GAAG,GAAGuB,IAAI4J,EAAE,OAAO5J,EAAE,IAAIS,OAAE,IAAShC,EAAEO,EAAEmN,OAAO1N,GAAGO,EAAEoN,KAAK,MAAMlN,EAAEiB,EAAEH,QAAG,EAAOA,EAAEqM,gBAAgB,OAAO5L,GAAGpB,cAAcH,IAAIuB,GAAG6L,QAAO,QAAI,IAASpN,EAAEuB,OAAE,GAAQA,EAAE,IAAIvB,EAAEX,GAAGkC,EAAE8L,KAAKhO,EAAES,EAAEP,SAAI,IAASA,GAAGO,EAAEmN,OAAO,IAAI1N,GAAGgC,EAAEzB,EAAEoN,KAAK3L,QAAG,IAASA,IAAIT,EAAEkM,EAAE3N,EAAEkC,EAAE+L,KAAKjO,EAAEyB,EAAE2J,QAAQlJ,EAAEhC,IAAIuB,CAAC,CAAC,MAAMyM,EAAE,WAAApN,CAAYd,EAAEyB,GAAGV,KAAKoN,KAAK,GAAGpN,KAAKqN,UAAK,EAAOrN,KAAKsN,KAAKrO,EAAEe,KAAKuN,KAAK7M,CAAC,CAAC,cAAI8M,GAAa,OAAOxN,KAAKuN,KAAKC,UAAU,CAAC,QAAIC,GAAO,OAAOzN,KAAKuN,KAAKE,IAAI,CAAC,CAAA1L,CAAE9C,GAAG,MAAMkM,IAAIE,QAAQ3K,GAAGwK,MAAMxL,GAAGM,KAAKsN,KAAKnO,GAAGF,GAAGyO,eAAe3M,GAAG4M,WAAWjN,GAAE,GAAIqH,EAAEqD,YAAYjM,EAAE,IAAIgC,EAAE4G,EAAE0D,WAAW7L,EAAE,EAAEgB,EAAE,EAAEc,EAAEhC,EAAE,GAAG,UAAK,IAASgC,GAAG,CAAC,GAAG9B,IAAI8B,EAAEsK,MAAM,CAAC,IAAItL,EAAE,IAAIgB,EAAEiB,KAAKjC,EAAE,IAAIkN,EAAEzM,EAAEA,EAAE0M,YAAY7N,KAAKf,GAAG,IAAIyC,EAAEiB,KAAKjC,EAAE,IAAIgB,EAAEwK,KAAK/K,EAAEO,EAAEuK,KAAKvK,EAAE0I,QAAQpK,KAAKf,GAAG,IAAIyC,EAAEiB,OAAOjC,EAAE,IAAIoN,GAAE3M,EAAEnB,KAAKf,IAAIe,KAAKoN,KAAK9J,KAAK5C,GAAGgB,EAAEhC,IAAIkB,EAAE,CAAChB,IAAI8B,GAAGsK,QAAQ7K,EAAE4G,EAAE0D,WAAW7L,IAAI,CAAC,OAAOmI,EAAEqD,YAAYrK,EAAE5B,CAAC,CAAC,CAAAyC,CAAE3C,GAAG,IAAIyB,EAAE,EAAE,IAAI,MAAMhB,KAAKM,KAAKoN,UAAK,IAAS1N,SAAI,IAASA,EAAE0K,SAAS1K,EAAEqO,KAAK9O,EAAES,EAAEgB,GAAGA,GAAGhB,EAAE0K,QAAQ/J,OAAO,GAAGX,EAAEqO,KAAK9O,EAAEyB,KAAKA,GAAG,EAAE,MAAMkN,EAAE,QAAIH,GAAO,OAAOzN,KAAKuN,MAAME,MAAMzN,KAAKgO,IAAI,CAAC,WAAAjO,CAAYd,EAAEyB,EAAEhB,EAAEP,GAAGa,KAAK2C,KAAK,EAAE3C,KAAKiO,KAAKzD,EAAExK,KAAKqN,UAAK,EAAOrN,KAAKkO,KAAKjP,EAAEe,KAAKmO,KAAKzN,EAAEV,KAAKuN,KAAK7N,EAAEM,KAAKoO,QAAQjP,EAAEa,KAAKgO,KAAK7O,GAAGkH,cAAa,CAAE,CAAC,cAAImH,GAAa,IAAIvO,EAAEe,KAAKkO,KAAKV,WAAW,MAAM9M,EAAEV,KAAKuN,KAAK,YAAO,IAAS7M,GAAG,KAAKzB,GAAGyM,WAAWzM,EAAEyB,EAAE8M,YAAYvO,CAAC,CAAC,aAAIoP,GAAY,OAAOrO,KAAKkO,IAAI,CAAC,WAAII,GAAU,OAAOtO,KAAKmO,IAAI,CAAC,IAAAJ,CAAK9O,EAAEyB,EAAEV,MAAMf,EAAE2N,EAAE5M,KAAKf,EAAEyB,GAAGG,EAAE5B,GAAGA,IAAIuL,GAAG,MAAMvL,GAAG,KAAKA,GAAGe,KAAKiO,OAAOzD,GAAGxK,KAAKuO,OAAOvO,KAAKiO,KAAKzD,GAAGvL,IAAIe,KAAKiO,MAAMhP,IAAIqL,GAAGtK,KAAK6J,EAAE5K,QAAG,IAASA,EAAEkL,WAAWnK,KAAKiK,EAAEhL,QAAG,IAASA,EAAEyM,SAAS1L,KAAKsK,EAAErL,GAA1zHA,IAAGuC,EAAEvC,IAAI,mBAAmBA,IAAIU,OAAO6O,UAAsxHzM,CAAE9C,GAAGe,KAAKsM,EAAErN,GAAGe,KAAK6J,EAAE5K,EAAE,CAAC,CAAAwP,CAAExP,GAAG,OAAOe,KAAKkO,KAAKV,WAAWkB,aAAazP,EAAEe,KAAKmO,KAAK,CAAC,CAAA7D,CAAErL,GAAGe,KAAKiO,OAAOhP,IAAIe,KAAKuO,OAAOvO,KAAKiO,KAAKjO,KAAKyO,EAAExP,GAAG,CAAC,CAAA4K,CAAE5K,GAAGe,KAAKiO,OAAOzD,GAAG3J,EAAEb,KAAKiO,MAAMjO,KAAKkO,KAAKL,YAAYpB,KAAKxN,EAAEe,KAAKsK,EAAEvJ,EAAE4N,eAAe1P,IAAIe,KAAKiO,KAAKhP,CAAC,CAAC,CAAAgL,CAAEhL,GAAG,MAAMoL,OAAO3J,EAAEyJ,WAAWzK,GAAGT,EAAEE,EAAE,iBAAiBO,EAAEM,KAAK4O,KAAK3P,SAAI,IAASS,EAAEyL,KAAKzL,EAAEyL,GAAGF,EAAEhE,cAAc0D,EAAEjL,EAAEyB,EAAEzB,EAAEyB,EAAE,IAAInB,KAAKoO,UAAU1O,GAAG,GAAGM,KAAKiO,MAAMX,OAAOnO,EAAEa,KAAKiO,KAAKrM,EAAElB,OAAO,CAAC,MAAMzB,EAAE,IAAIkO,EAAEhO,EAAEa,MAAMN,EAAET,EAAE8C,EAAE/B,KAAKoO,SAASnP,EAAE2C,EAAElB,GAAGV,KAAKsK,EAAE5K,GAAGM,KAAKiO,KAAKhP,CAAC,CAAC,CAAC,IAAA2P,CAAK3P,GAAG,IAAIyB,EAAE+J,EAAEnK,IAAIrB,EAAEmL,SAAS,YAAO,IAAS1J,GAAG+J,EAAEjK,IAAIvB,EAAEmL,QAAQ1J,EAAE,IAAIuK,EAAEhM,IAAIyB,CAAC,CAAC,CAAA4L,CAAErN,GAAGuC,EAAExB,KAAKiO,QAAQjO,KAAKiO,KAAK,GAAGjO,KAAKuO,QAAQ,MAAM7N,EAAEV,KAAKiO,KAAK,IAAIvO,EAAEP,EAAE,EAAE,IAAI,MAAMgC,KAAKlC,EAAEE,IAAIuB,EAAEL,OAAOK,EAAE4C,KAAK5D,EAAE,IAAIkO,EAAE5N,KAAKyO,EAAE/M,KAAK1B,KAAKyO,EAAE/M,KAAK1B,KAAKA,KAAKoO,UAAU1O,EAAEgB,EAAEvB,GAAGO,EAAEqO,KAAK5M,GAAGhC,IAAIA,EAAEuB,EAAEL,SAASL,KAAKuO,KAAK7O,GAAGA,EAAEyO,KAAKN,YAAY1O,GAAGuB,EAAEL,OAAOlB,EAAE,CAAC,IAAAoP,CAAKtP,EAAEe,KAAKkO,KAAKL,YAAYnN,GAAG,IAAIV,KAAK6O,QAAO,GAAG,EAAGnO,GAAGzB,IAAIe,KAAKmO,MAAM,CAAC,MAAMzN,EAAEzB,EAAE4O,YAAY5O,EAAE6P,SAAS7P,EAAEyB,CAAC,CAAC,CAAC,YAAAqO,CAAa9P,QAAG,IAASe,KAAKuN,OAAOvN,KAAKgO,KAAK/O,EAAEe,KAAK6O,OAAO5P,GAAG,EAAE,MAAMqN,EAAE,WAAIC,GAAU,OAAOvM,KAAKgP,QAAQzC,OAAO,CAAC,QAAIkB,GAAO,OAAOzN,KAAKuN,KAAKE,IAAI,CAAC,WAAA1N,CAAYd,EAAEyB,EAAEhB,EAAEP,EAAEgC,GAAGnB,KAAK2C,KAAK,EAAE3C,KAAKiO,KAAKzD,EAAExK,KAAKqN,UAAK,EAAOrN,KAAKgP,QAAQ/P,EAAEe,KAAKiM,KAAKvL,EAAEV,KAAKuN,KAAKpO,EAAEa,KAAKoO,QAAQjN,EAAEzB,EAAEW,OAAO,GAAG,KAAKX,EAAE,IAAI,KAAKA,EAAE,IAAIM,KAAKiO,KAAK/L,MAAMxC,EAAEW,OAAO,GAAG4O,KAAK,IAAIrM,QAAQ5C,KAAKoK,QAAQ1K,GAAGM,KAAKiO,KAAKzD,CAAC,CAAC,IAAAuD,CAAK9O,EAAEyB,EAAEV,KAAKN,EAAEP,GAAG,MAAMgC,EAAEnB,KAAKoK,QAAQ,IAAIxK,GAAE,EAAG,QAAG,IAASuB,EAAElC,EAAE2N,EAAE5M,KAAKf,EAAEyB,EAAE,GAAGd,GAAGiB,EAAE5B,IAAIA,IAAIe,KAAKiO,MAAMhP,IAAIqL,EAAE1K,IAAII,KAAKiO,KAAKhP,OAAO,CAAC,MAAME,EAAEF,EAAE,IAAI2B,EAAEG,EAAE,IAAI9B,EAAEkC,EAAE,GAAGP,EAAE,EAAEA,EAAEO,EAAEd,OAAO,EAAEO,IAAIG,EAAE6L,EAAE5M,KAAKb,EAAEO,EAAEkB,GAAGF,EAAEE,GAAGG,IAAIuJ,IAAIvJ,EAAEf,KAAKiO,KAAKrN,IAAIhB,KAAKiB,EAAEE,IAAIA,IAAIf,KAAKiO,KAAKrN,GAAGG,IAAIyJ,EAAEvL,EAAEuL,EAAEvL,IAAIuL,IAAIvL,IAAI8B,GAAG,IAAII,EAAEP,EAAE,IAAIZ,KAAKiO,KAAKrN,GAAGG,CAAC,CAACnB,IAAIT,GAAGa,KAAKkP,EAAEjQ,EAAE,CAAC,CAAAiQ,CAAEjQ,GAAGA,IAAIuL,EAAExK,KAAKgP,QAAQpH,gBAAgB5H,KAAKiM,MAAMjM,KAAKgP,QAAQ7H,aAAanH,KAAKiM,KAAKhN,GAAG,GAAG,EAAE,MAAMkN,UAAUG,EAAE,WAAAvM,GAAcsF,SAAS8J,WAAWnP,KAAK2C,KAAK,CAAC,CAAC,CAAAuM,CAAEjQ,GAAGe,KAAKgP,QAAQhP,KAAKiM,MAAMhN,IAAIuL,OAAE,EAAOvL,CAAC,EAAE,MAAMmN,WAAUE,EAAE,WAAAvM,GAAcsF,SAAS8J,WAAWnP,KAAK2C,KAAK,CAAC,CAAC,CAAAuM,CAAEjQ,GAAGe,KAAKgP,QAAQI,gBAAgBpP,KAAKiM,OAAOhN,GAAGA,IAAIuL,EAAE,EAAE,MAAM6B,WAAUC,EAAE,WAAAvM,CAAYd,EAAEyB,EAAEhB,EAAEP,EAAEgC,GAAGkE,MAAMpG,EAAEyB,EAAEhB,EAAEP,EAAEgC,GAAGnB,KAAK2C,KAAK,CAAC,CAAC,IAAAoL,CAAK9O,EAAEyB,EAAEV,MAAM,IAAIf,EAAE2N,EAAE5M,KAAKf,EAAEyB,EAAE,IAAI8J,KAAKF,EAAE,OAAO,MAAM5K,EAAEM,KAAKiO,KAAK9O,EAAEF,IAAIuL,GAAG9K,IAAI8K,GAAGvL,EAAEoQ,UAAU3P,EAAE2P,SAASpQ,EAAEqQ,OAAO5P,EAAE4P,MAAMrQ,EAAEsQ,UAAU7P,EAAE6P,QAAQpO,EAAElC,IAAIuL,IAAI9K,IAAI8K,GAAGrL,GAAGA,GAAGa,KAAKgP,QAAQQ,oBAAoBxP,KAAKiM,KAAKjM,KAAKN,GAAGyB,GAAGnB,KAAKgP,QAAQS,iBAAiBzP,KAAKiM,KAAKjM,KAAKf,GAAGe,KAAKiO,KAAKhP,CAAC,CAAC,WAAAyQ,CAAYzQ,GAAG,mBAAmBe,KAAKiO,KAAKjO,KAAKiO,KAAK9J,KAAKnE,KAAKoO,SAASuB,MAAM3P,KAAKgP,QAAQ/P,GAAGe,KAAKiO,KAAKyB,YAAYzQ,EAAE,EAAE,MAAM6O,GAAE,WAAA/N,CAAYd,EAAEyB,EAAEhB,GAAGM,KAAKgP,QAAQ/P,EAAEe,KAAK2C,KAAK,EAAE3C,KAAKqN,UAAK,EAAOrN,KAAKuN,KAAK7M,EAAEV,KAAKoO,QAAQ1O,CAAC,CAAC,QAAI+N,GAAO,OAAOzN,KAAKuN,KAAKE,IAAI,CAAC,IAAAM,CAAK9O,GAAG2N,EAAE5M,KAAKf,EAAE,EAAO,MAA6DiQ,GAAEjQ,EAAE2Q,uBAAuBV,KAAIjE,EAAE2C,IAAI3O,EAAE4Q,kBAAkB,IAAIvM,KAAK,SAAS,MCAvuN5D,GAAER;;;;;GAAW,MAAMwB,WAAUzB,EAAE,WAAAc,GAAcsF,SAAS8J,WAAWnP,KAAK8P,cAAc,CAACH,KAAK3P,MAAMA,KAAK+P,UAAK,CAAM,CAAC,gBAAArJ,GAAmB,MAAMzH,EAAEoG,MAAMqB,mBAAmB,OAAO1G,KAAK8P,cAAcE,eAAe/Q,EAAEqM,WAAWrM,CAAC,CAAC,MAAAwJ,CAAOxJ,GAAG,MAAM8B,EAAEf,KAAKiQ,SAASjQ,KAAKwF,aAAaxF,KAAK8P,cAAczJ,YAAYrG,KAAKqG,aAAahB,MAAMoD,OAAOxJ,GAAGe,KAAK+P,KDA05M,EAAC9Q,EAAEyB,EAAEhB,KAAK,MAAMP,EAAEO,GAAGsQ,cAActP,EAAE,IAAIS,EAAEhC,EAAE+Q,WAAW,QAAG,IAAS/O,EAAE,CAAC,MAAMlC,EAAES,GAAGsQ,cAAc,KAAK7Q,EAAE+Q,WAAW/O,EAAE,IAAIyM,EAAElN,EAAEgO,aAAahN,IAAIzC,GAAGA,OAAE,EAAOS,GAAG,CAAA,EAAG,CAAC,OAAOyB,EAAE4M,KAAK9O,GAAGkC,GCAtkNhC,CAAE4B,EAAEf,KAAKoG,WAAWpG,KAAK8P,cAAc,CAAC,iBAAAxI,GAAoBjC,MAAMiC,oBAAoBtH,KAAK+P,MAAMhB,cAAa,EAAG,CAAC,oBAAAxH,GAAuBlC,MAAMkC,uBAAuBvH,KAAK+P,MAAMhB,cAAa,EAAG,CAAC,MAAAkB,GAAS,OAAOlP,CAAC,EAAEL,GAAEyP,eAAc,EAAGzP,GAAa,WAAE,EAAGhB,GAAE0Q,2BAA2B,CAACC,WAAW3P,KAAI,MAAMd,GAAEF,GAAE4Q,0BAA0B1Q,KAAI,CAACyQ,WAAW3P,MAA0DhB,GAAE6Q,qBAAqB,IAAIjN,KAAK,SCLjxB,MAAMkN,WAA0BtQ,OAYvC,SAASuQ,GAAgBC,GACrB,IAAIC,EAASD,EAAIE,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAClD,OAAQD,EAAOtQ,OAAS,GACpB,KAAK,EACD,MACJ,KAAK,EACDsQ,GAAU,KACV,MACJ,KAAK,EACDA,GAAU,IACV,MACJ,QACI,MAAM,IAAIzQ,MAAM,8CAExB,IACI,OAxBR,SAA0BwQ,GACtB,OAAOG,mBAAmBC,KAAKJ,GAAKE,QAAQ,OAAQ,CAAC9G,EAAGlI,KACpD,IAAImP,EAAOnP,EAAEoP,WAAW,GAAGvQ,SAAS,IAAIwQ,cAIxC,OAHIF,EAAK1Q,OAAS,IACd0Q,EAAO,IAAMA,GAEV,IAAMA,IAErB,CAgBeG,CAAiBP,EAC5B,CACA,MAAOQ,GACH,OAAOL,KAAKH,EAChB,CACJ,CA9BAH,GAAkBhR,UAAUyM,KAAO,oBCYnC,MAAMmF,WAAoBf,GACxBgB,kBAAoB,CAClBC,YAAa,CAAE3O,KAAMC,OAAQF,UAAW,iBACxC6O,cAAe,CAAE5O,KAAMC,OAAQF,UAAW,mBAC1C8O,QAAS,CAAE7O,KAAMC,OAAQF,UAAW,YACpC+O,aAAc,CAAE9O,KAAMC,OAAQF,UAAW,UAGzCgP,OAAQ,CAAE/O,KAAMpB,OAAQqC,OAAO,GAC/B+N,UAAW,CAAEhP,KAAMpB,OAAQqC,OAAO,GAClCgO,SAAU,CAAEjP,KAAMpB,OAAQqC,OAAO,GACjCiO,gBAAiB,CAAElP,KAAMC,OAAQgB,OAAO,GACxCkO,QAAS,CAAEnP,KAAMV,QAAS2B,OAAO,GACjCmO,WAAY,CAAEpP,KAAMV,QAAS2B,OAAO,GACpCoO,MAAO,CAAErP,KAAMC,OAAQgB,OAAO,GAC9BqO,MAAO,CAAEtP,KAAMC,OAAQgB,OAAO,GAC9BsO,QAAS,CAAEvP,KAAMpB,OAAQqC,OAAO,GAChCuO,cAAe,CAAExP,KAAMV,QAAS2B,OAAO,GACvCwO,iBAAkB,CAAEzP,KAAMV,QAAS2B,OAAO,GAC1CyO,gBAAiB,CAAE1P,KAAMpB,OAAQqC,OAAO,GACxC0O,WAAY,CAAE3P,KAAMV,QAAS2B,OAAO,GACpC2O,iBAAkB,CAAE5P,KAAMpB,OAAQqC,OAAO,GACzC4O,cAAe,CAAE7P,KAAMV,QAAS2B,OAAO,GACvC6O,gBAAiB,CAAE9P,KAAMC,OAAQgB,OAAO,IAG1CyN,cAAgBqB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgSnB,YAAIC,GACF,OAAO3S,KAAK2R,SACd,CAEA,YAAIgB,CAASC,GACX,MAAMC,EAAW7S,KAAK2R,UACtB3R,KAAK2R,UAAYiB,EACjB5S,KAAKoE,cAAc,WAAYyO,GAC/B7S,KAAK8S,kBACP,CAQA,qBAAAC,CAAsBC,EAAWC,GAC/B,MAAMC,EAAYF,EAAUjH,MAAM,KAClC,IAAIoH,EAAUnT,KAAK0R,OAGnB,IAAK,MAAM0B,KAAQF,EAEjB,GADAC,EAAUA,GAASzO,aAAa0O,IAC3BD,EAAS,OAAO,KAIvB,OAAOA,GAASE,WAAWJ,IAAa,IAC1C,CAEA,WAAAlT,GACEsF,QACArF,KAAK8R,SAAU,EACf9R,KAAK+R,YAAa,EAClB/R,KAAKgS,MAAQ,KACbhS,KAAK0R,OAAS,KACd1R,KAAK2R,UAAY,CAAA,EACjB3R,KAAK4R,SAAW,KAChB5R,KAAK6R,gBAAkB,KACvB7R,KAAKiS,MAAQ,KACbjS,KAAKkS,QAAU,CAAEoB,IAAK,WACtBtT,KAAKuT,YAAc,CAAA,EACnBvT,KAAKmS,eAAgB,EACrBnS,KAAKoS,kBAAmB,EACxBpS,KAAKqS,gBAAkB,CAAA,EACvBrS,KAAKsS,YAAa,EAClBtS,KAAKuS,iBAAmB,KACxBvS,KAAKwS,eAAgB,EACrBxS,KAAKyS,gBAAkB,IACzB,CAEA,uBAAMnL,GACJjC,MAAMiC,0BACAtH,KAAKwT,YACb,CAEA,gBAAMA,GACJ,IACExT,KAAK8R,SAAU,EACf9R,KAAKgS,MAAQ,KAGThS,KAAKwR,eACDxR,KAAKyT,mBAIP7N,QAAQ8N,IAAI,CAAC1T,KAAK2T,cAAe3T,KAAK4T,kBAE5C5T,KAAK8R,SAAU,CACjB,CAAE,MAAOX,GACPnR,KAAKgS,MAAQb,EAAI0C,SAAW,4BAC5B7T,KAAK8R,SAAU,CACjB,CACF,CAMA,SAAAgC,CAAUC,GACR,GAAIA,QAAmC,OAAOA,EAG9C,GAA+B,mBAApBC,gBACT,IACE,OAAOA,gBAAgBD,EACzB,CAAE,MAAO5C,GACP8C,QAAQC,KAAK,wDAAyD/C,EACxE,CAIF,GAAI4C,aAAeI,KACjB,OAAO,IAAIA,KAAKJ,EAAIK,WAGtB,GAAIlS,MAAM6C,QAAQgP,GAChB,OAAOA,EAAIhN,IAAKsN,GAASrU,KAAK8T,UAAUO,IAG1C,GAAmB,iBAARN,EAAkB,CAC3B,MAAMO,EAAS,CAAA,EACf,IAAK,MAAMC,KAAOR,EACZxS,OAAO/B,UAAUqE,eAAeM,KAAK4P,EAAKQ,KAC5CD,EAAOC,GAAOvU,KAAK8T,UAAUC,EAAIQ,KAGrC,OAAOD,CACT,CAGA,OAAOP,CACT,CAKA,SAAAS,CAAUC,EAAMC,GACd,GAAID,IAASC,EAAM,OAAO,EAE1B,GAAa,OAATD,GAA0B,OAATC,EAAe,OAAO,EAC3C,QAAaC,IAATF,QAA+BE,IAATD,EAAoB,OAAO,EAErD,GAAID,aAAgBN,MAAQO,aAAgBP,KAC1C,OAAOM,EAAKL,YAAcM,EAAKN,UAIjC,GAAIK,aAAgBN,MAAQO,aAAgBP,KAC1C,OAAO,EAGT,GAAIjS,MAAM6C,QAAQ0P,IAASvS,MAAM6C,QAAQ2P,GACvC,OAAID,EAAKpU,SAAWqU,EAAKrU,QAClBoU,EAAKG,MAAM,CAACP,EAAMrI,IAAUhM,KAAKwU,UAAUH,EAAMK,EAAK1I,KAG/D,GAAoB,iBAATyI,GAAqC,iBAATC,EAAmB,CACxD,MAAMG,EAAQtT,OAAOmC,KAAK+Q,GACpBK,EAAQvT,OAAOmC,KAAKgR,GAE1B,OAAIG,EAAMxU,SAAWyU,EAAMzU,QAEpBwU,EAAMD,MAAOL,GAAQvU,KAAKwU,UAAUC,EAAKF,GAAMG,EAAKH,IAC7D,CAEA,OAAO,CACT,CAEA,gBAAMd,GACJ,IACE,MAAMsB,QAAiBC,MAAMhV,KAAKwR,QAAS,CACzCyD,YAAa,YAGf,IAAKF,EAASG,GACZ,MAAM,IAAIhV,MAAM,0BAGlB,MAAMuM,QAAasI,EAASI,OAC5BnV,KAAKiS,MAAQxF,EACb,IACEzM,KAAKkS,QD3cN,SAAmBD,EAAO7D,GAC7B,GAAqB,iBAAV6D,EACP,MAAM,IAAIzB,GAAkB,6CAEhCpC,IAAYA,EAAU,IACtB,MAAMgH,GAAyB,IAAnBhH,EAAQiH,OAAkB,EAAI,EACpCjC,EAAOnB,EAAMlG,MAAM,KAAKqJ,GAC9B,GAAoB,iBAAThC,EACP,MAAM,IAAI5C,GAAkB,0CAA0C4E,EAAM,KAEhF,IAAIlD,EACJ,IACIA,EAAUzB,GAAgB2C,EAC9B,CACA,MAAOjU,GACH,MAAM,IAAIqR,GAAkB,qDAAqD4E,EAAM,MAAMjW,EAAE0U,WACnG,CACA,IACI,OAAO1R,KAAKI,MAAM2P,EACtB,CACA,MAAO/S,GACH,MAAM,IAAIqR,GAAkB,mDAAmD4E,EAAM,MAAMjW,EAAE0U,WACjG,CACJ,CCobuByB,CAAUtV,KAAKiS,MAChC,CAAE,MAAOsD,GAEPtB,QAAQC,KAAK,8DACblU,KAAKkS,QAAU,CAAEoB,IAAK,UACxB,CACF,CAAE,MAAOnC,GAEP,MADA8C,QAAQjC,MAAM,qBAAsBb,GAC9B,IAAIjR,MAAM,wBAClB,CACF,CAEA,iBAAMyT,GACJ,MAAM6B,EAAM,GAAGxV,KAAKsR,4BAA4BtR,KAAKuR,gBAC/CkE,EAAU,CACd,eAAgB,mBAGdzV,KAAKiS,QACPwD,EAAuB,cAAI,UAAUzV,KAAKiS,SAG5C,MAAM8C,QAAiBC,MAAMQ,EAAK,CAChCP,YAAa,cACbQ,YAGF,IAAKV,EAASG,GACZ,MAAM,IAAIhV,MAAM,2BAA2B6U,EAASW,cAGtD,MAAMjJ,QAAasI,EAASY,OAC5B3V,KAAK6R,gBAAkBpF,EAAKmJ,QAC5B5V,KAAK0R,OAASjF,EAAKiF,QAAUjF,EAC7BzM,KAAK4R,SAAWnF,EAAKxJ,QACvB,CAEA,mBAAM2Q,GACJ,MAAM4B,EAAM,GAAGxV,KAAKsR,kCAAkCtR,KAAKuR,2BAA2BhI,KAAKC,WACrFiM,EAAU,CACd,eAAgB,mBAGdzV,KAAKiS,QACPwD,EAAuB,cAAI,UAAUzV,KAAKiS,SAG5C,IACE,MAAM8C,QAAiBC,MAAMQ,EAAK,CAChCP,YAAa,cACbQ,YAGF,GAAIV,EAASG,GAAI,CACf,MAAMW,QAAgBd,EAASY,OAC/B3V,KAAK2R,UAAYkE,GAASC,SAAW,CAAA,EACrC9V,KAAKqS,gBAAkBrS,KAAK8T,UAAU9T,KAAK2R,UAC7C,MACE3R,KAAK2R,UAAY,CAAA,EACjB3R,KAAKqS,gBAAkB,CAAA,EAEzBrS,KAAKsS,YAAa,EAClBtS,KAAKoE,eACP,CAAE,MAAO+M,GAEP8C,QAAQC,KAAK,6BAA8B/C,GAC3CnR,KAAK2R,UAAY,CAAA,EACjB3R,KAAKqS,gBAAkB,CAAA,EACvBrS,KAAKsS,YAAa,EAClBtS,KAAKoE,eACP,CACF,CAEA,gBAAA0O,GAEE9S,KAAKmS,eAAgB,EACrBnS,KAAKoS,kBAAmB,EACxBpS,KAAKyS,gBAAkB,KAGvBzS,KAAKsS,YAActS,KAAKwU,UAAUxU,KAAK2S,SAAU3S,KAAKqS,gBACxD,CAMA,cAAA0D,CAAeC,GACb,IAAKA,GAAwB,iBAATA,EAAmB,OAEvC,MAAM9K,EAAQ8K,EAAKjK,MAAM,KAAKkK,OAAQ7C,GAASA,EAAK/S,OAAS,GAC7D,GAAqB,IAAjB6K,EAAM7K,OAAc,OAExB,IAAIuS,EAAQ5S,KAAK2S,SACjB,IAAK,MAAMS,KAAQlI,EACjB0H,EAAQA,IAAQQ,GAElB,OAAOR,CACT,CAOA,UAAAsD,CAAWxF,GACU,iBAARA,IACTA,EAAM9N,OAAO8N,GAAO,KAItB,IAAIyF,EAAYzF,EAAIE,QAAQ,mBAAoB,KAAKA,QAAQ,MAAO,KAepE,OAZAuF,EAAYA,EAAUvF,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAGnDuF,IACHA,EAAY,MAIT,YAAYpL,KAAKoL,KACpBA,EAAY,MAAQA,GAGfA,CACT,CAKA,cAAAC,CAAeJ,EAAMpD,GACnB,IAAKoD,GAAwB,iBAATA,EAAmB,OAEvC,MAAM9K,EAAQ8K,EAAKjK,MAAM,KAAKkK,OAAQ7C,GAASA,EAAK/S,OAAS,GAC7D,GAAqB,IAAjB6K,EAAM7K,OAAc,OAExB,MAAMgW,EAAU,IAAKrW,KAAK2S,UAC1B,IAAIQ,EAAUkD,EAEd,IAAK,IAAI3V,EAAI,EAAGA,EAAIwK,EAAM7K,OAAS,EAAGK,IAAK,CACzC,MAAM0S,EAAOlI,EAAMxK,GACb4V,EAAWnD,EAAQC,GAGrBlR,MAAM6C,QAAQuR,GAChBnD,EAAQC,GAAQ,IAAIkD,GAIpBnD,EAAQC,GAHEkD,GAAgC,iBAAbA,EAGb,IAAKA,GAFL,CAAA,EAIlBnD,EAAUA,EAAQC,EACpB,CAEAD,EAAQjI,EAAMA,EAAM7K,OAAS,IAAMuS,EACnC5S,KAAK2S,SAAW0D,CAClB,CAMA,eAAAE,CAAgBP,GACd,IAAKA,EAAM,OAAOhW,KAAK0R,OAEvB,MAAMxG,EAAQ8K,EAAKjK,MAAM,KAAKkK,OAAQ7C,GAASA,EAAK/S,OAAS,GAC7D,GAAqB,IAAjB6K,EAAM7K,OAAc,OAAOL,KAAK0R,OAEpC,IAAIA,EAAS1R,KAAK0R,OAElB,IAAK,MAAM0B,KAAQlI,EAEjB,GADAwG,EAASA,EAAOhN,aAAa0O,IACxB1B,EAAQ,OAAO,KAGtB,OAAOA,CACT,CAEA,iBAAA8E,CAAkBxD,EAAWyD,GAC3B,MAAM9T,KAAEA,EAAIiQ,MAAEA,EAAK8D,QAAEA,GAAYD,EAAME,OACvC3W,KAAKoW,eAAepD,EAAoB,aAATrQ,EAAsB+T,EAAU9D,GAG3D5S,KAAKuT,YAAYP,KACnBhT,KAAKuT,YAAc,IAAKvT,KAAKuT,oBACtBvT,KAAKuT,YAAYP,IAG1BhT,KAAK8S,kBACP,CAEA,iBAAA8D,CAAkB5D,EAAWhH,EAAOyK,GAClC,MACMI,EAAW,IADI7W,KAAK+V,eAAe/C,IAAc,IAEvD6D,EAAS7K,GAASyK,EAAME,OAAO/D,MAC/B5S,KAAKoW,eAAepD,EAAW6D,GAE/B7W,KAAK8S,kBACP,CAEA,uBAAAgE,CAAwB9D,EAAWyD,GACjC,MACMpM,EADkBnI,MAAM6U,KAAKN,EAAME,OAAOK,iBACjBjQ,IAAKkQ,GAAWA,EAAOrE,OAEtD5S,KAAKoW,eAAepD,EAAW3I,GAG3BrK,KAAKuT,YAAYP,KACnBhT,KAAKuT,YAAc,IAAKvT,KAAKuT,oBACtBvT,KAAKuT,YAAYP,IAG1BhT,KAAK8S,kBACP,CAEA,yBAAAoE,CAA0BlE,EAAWmE,EAAaV,GAChD,MAAMC,QAAEA,GAAYD,EAAME,OACpBS,EAAepX,KAAK+V,eAAe/C,IAAc,GAEvD,IAAI6D,EAGFA,EAFEH,EAESU,EAAaC,SAASF,GAAeC,EAAe,IAAIA,EAAcD,GAGtEC,EAAanB,OAAQrM,GAAMA,IAAMuN,GAG9CnX,KAAKoW,eAAepD,EAAW6D,GAG3B7W,KAAKuT,YAAYP,KACnBhT,KAAKuT,YAAc,IAAKvT,KAAKuT,oBACtBvT,KAAKuT,YAAYP,IAG1BhT,KAAK8S,kBACP,CAKA,kBAAAwE,CAAmB5S,EAAY6S,EAAW,GAAIC,EAAW,GAAIC,EAAQ,GAEnE,GAAIA,EADc,GAGhB,OADAxD,QAAQC,KAAK,uDAAiEsD,KACvE,CAAA,EAGT,MAAME,EAAS,CAAA,EAmFf,OAhFAH,EAASvR,QAAS2R,IAChB,MAAM3E,EAAYwE,EAAW,GAAGA,KAAYG,IAAcA,EACpD/E,EAAQ5S,KAAK+V,eAAe/C,GAClC,GAAIJ,SAAmD,KAAVA,EAAc,CACzD,MAAMgF,EAAY5X,KAAK+S,sBAAsBC,EAAW,YACxD0E,EAAO1E,GAAa4E,GAAa,wBACnC,IAIFrW,OAAOsW,QAAQnT,GAAYsB,QAAQ,EAAE2R,EAAWG,MAC9C,MAAM9E,EAAYwE,EAAW,GAAGA,KAAYG,IAAcA,EACpD/E,EAAQ5S,KAAK+V,eAAe/C,GAGlC,GAAyB,WAArB8E,EAAYnV,MAAqBmV,EAAYpT,WAAY,CAC3D,MAAMqT,EAAe/X,KAAKsX,mBACxBQ,EAAYpT,WACZoT,EAAYP,UAAY,GACxBvE,EACAyE,EAAQ,GAGV,YADAlW,OAAOyW,OAAON,EAAQK,EAExB,CAEA,GAAInF,SAAmD,KAAVA,EAAc,CAEzD,GAA2B,UAAvBkF,EAAYG,OAAoB,CAElC,IADmB,6BACHlN,KAAK6H,GAAQ,CAE3B,MAAMgF,EACJ5X,KAAK+S,sBAAsBC,EAAW,WACtChT,KAAK+S,sBAAsBC,EAAW,SACxC0E,EAAO1E,GAAa4E,GAAa,uBACnC,CACF,CAGA,GAAIE,EAAYI,QAAS,CAEvB,IADc,IAAInO,OAAO+N,EAAYI,SAC1BnN,KAAK6H,GAAQ,CACtB,MAAMgF,EAAY5X,KAAK+S,sBAAsBC,EAAW,WACxD0E,EAAO1E,GAAa4E,GAAa,gBACnC,CACF,CAGA,GAAyB,WAArBE,EAAYnV,MAA0C,YAArBmV,EAAYnV,KAAoB,CACnE,MAAMwV,EAAM7V,OAAOsQ,GACnB,GAAIwF,MAAMD,GAAM,CACd,MAAMP,EAAY5X,KAAK+S,sBAAsBC,EAAW,QACxD0E,EAAO1E,GAAa4E,GAAa,kBACnC,KAAO,CACL,QAA4BjD,IAAxBmD,EAAYO,SAAyBF,EAAML,EAAYO,QAAS,CAClE,MAAMT,EAAY5X,KAAK+S,sBAAsBC,EAAW,WACxD0E,EAAO1E,GAAa4E,GAAa,oBAAoBE,EAAYO,SACnE,CACA,QAA4B1D,IAAxBmD,EAAYQ,SAAyBH,EAAML,EAAYQ,QAAS,CAClE,MAAMV,EAAY5X,KAAK+S,sBAAsBC,EAAW,WACxD0E,EAAO1E,GAAa4E,GAAa,mBAAmBE,EAAYQ,SAClE,CACF,CACF,CAGA,GAAyB,WAArBR,EAAYnV,KAAmB,CACjC,GAAImV,EAAYS,WAAa3F,EAAMvS,OAASyX,EAAYS,UAAW,CACjE,MAAMX,EAAY5X,KAAK+S,sBAAsBC,EAAW,aACxD0E,EAAO1E,GAAa4E,GAAa,oBAAoBE,EAAYS,sBACnE,CACA,GAAIT,EAAYU,WAAa5F,EAAMvS,OAASyX,EAAYU,UAAW,CACjE,MAAMZ,EAAY5X,KAAK+S,sBAAsBC,EAAW,aACxD0E,EAAO1E,GAAa4E,GAAa,mBAAmBE,EAAYU,sBAClE,CACF,CACF,IAGKd,CACT,CAEA,YAAAe,GACE,MAAM/T,WAAEA,EAAa,CAAA,EAAE6S,SAAEA,EAAW,IAAOvX,KAAK0R,OAEhD,OADA1R,KAAKuT,YAAcvT,KAAKsX,mBAAmB5S,EAAY6S,GACP,IAAzChW,OAAOmC,KAAK1D,KAAKuT,aAAalT,MACvC,CAEA,kBAAMqY,CAAajC,GAMjB,GALAA,EAAMkC,iBAGN3Y,KAAKmS,eAAgB,EACrBnS,KAAKoS,kBAAmB,GACnBpS,KAAKyY,eAAgB,CACxBzY,KAAKoS,kBAAmB,QAClBpS,KAAK+I,eAGX,MAAM6P,EAAoB5Y,KAAK2G,WAAWkS,cAAc,oCAIxD,YAHID,GACFA,EAAkBE,eAAe,CAAEC,SAAU,SAAUC,MAAO,UAGlE,CAGIhZ,KAAK+R,kBAIH/R,KAAKiZ,iBAAgB,EAC7B,CAEA,qBAAMA,CAAgBC,GAAU,GAC9B,IAEOA,IACHlZ,KAAK+R,YAAa,GAEpB/R,KAAKyS,gBAAkB,KACvBzS,KAAKuS,iBAAmB,KAExB,MAAM4G,EAAO,CACXC,SAAUpZ,KAAKkS,QAAQoB,IACvB+F,UAAWrZ,KAAKuR,cAChB+H,YAAatZ,KAAK6R,gBAClB0H,UAAWpF,KAAKqF,MAChB1D,QAAS9V,KAAK2S,UAGV6C,EAAM,GAAGxV,KAAKsR,kCAAkCtR,KAAKuR,gBACrDkE,EAAU,CACd,eAAgB,oBAGdzV,KAAKiS,QACPwD,EAAuB,cAAI,UAAUzV,KAAKiS,SAG5C,MAAM8C,QAAiBC,MAAMQ,EAAK,CAChCiE,OAAQ,OACRxE,YAAa,cACbQ,UACA0D,KAAMhX,KAAKC,UAAU+W,KAIvB,IAAIO,EAAe,KACnB,IACEA,QAAqB3E,EAASY,OAC9B3V,KAAKuS,iBAAmBmH,CAC1B,CAAE,MAAOC,GAEP1F,QAAQC,KAAK,oCAAqCyF,EACpD,CAGA,GAAwB,MAApB5E,EAAS6E,SAAmBV,EAI9B,GAHAjF,QAAQC,KAAK,0DAGTlU,KAAKwR,QACP,IAKE,aAJMxR,KAAKyT,aACXQ,QAAQC,KAAK,8DAGAlU,KAAKiZ,iBAAgB,EACpC,CAAE,MAAOY,GAGP,MAFA5F,QAAQjC,MAAM,2BAA4B6H,GAEpC,IAAI3Z,MAAM,iDAClB,MAEA+T,QAAQC,KAAK,qEAKjB,IAAKa,EAASG,GAAI,CAEhB,GAAwB,MAApBH,EAAS6E,QAAkBV,EAC7B,MAAM,IAAIhZ,MACR,kHAKJ,MAAM4Z,EACJJ,GAAcK,eACdL,GAAc7F,SACd,0BAA0BkB,EAASW,aACrC,MAAM,IAAIxV,MAAM4Z,EAClB,CAGA,MAAME,EAAcjF,EAASU,SAASnV,IAAMyU,EAASU,QAAQnV,IAAI,sBAAwB,KACzF,GAAI0Z,EAAa,CAEf/F,QAAQgG,KAAK,yDAAyDD,KACtEha,KAAKuR,cAAgByI,EAGrBha,KAAKmS,eAAgB,EAErBnS,KAAKwS,eAAgB,EAGrBxS,KAAK8R,SAAU,EACf,IAEE,kBADM9R,KAAKwT,YAGb,CAAE,MAAO0G,GACPjG,QAAQjC,MAAM,iCAAkCkI,GAChDla,KAAK8R,SAAU,EACf9R,KAAKyS,gBACHyH,GAAiBrG,SAAW,uDAChC,CACF,CAGA7T,KAAKma,cACH,IAAIC,YAAY,sBAAuB,CACrCC,OAAQ,CAAE5N,KAAM0M,GAChBmB,SAAS,EACTC,UAAU,KAKdva,KAAKwS,eAAgB,EACrBxS,KAAKmS,eAAgB,EACrBnS,KAAKyS,gBAAkB,KACvBzS,KAAKqS,gBAAkBrS,KAAK8T,UAAU9T,KAAK2S,UAC3C3S,KAAKsS,YAAa,QAEZtS,KAAK+I,eAGX,MAAMyR,EAAaxa,KAAK2G,WAAWkS,cAAc,2BAC7C2B,GACFA,EAAW1B,eAAe,CAAEC,SAAU,SAAUC,MAAO,SAE3D,CAAE,MAAO7H,GACPnR,KAAKyS,gBAAkBtB,EAAI0C,SAAW,wBAEtC7T,KAAKma,cACH,IAAIC,YAAY,oBAAqB,CACnCC,OAAQ,CAAErI,MAAOb,EAAI0C,SACrByG,SAAS,EACTC,UAAU,WAKRva,KAAK+I,eACX,MAAM0R,EAAWza,KAAK2G,WAAWkS,cAAc,yBAC3C4B,GACFA,EAAS3B,eAAe,CAAEC,SAAU,SAAUC,MAAO,SAEzD,CAAC,QACChZ,KAAK+R,YAAa,CACpB,CACF,CAEA,WAAA2I,GACE1a,KAAK2S,SAAW,CAAA,EAChB3S,KAAKuT,YAAc,CAAA,EACnBvT,KAAKoE,eACP,CAKA,WAAAuW,CAAYhD,EAAWG,EAAaN,EAAW,GAAIC,EAAQ,GAEzD,GAAIA,EADc,GAGhB,OADAxD,QAAQC,KAAK,8CACN0G,CAAI,oDAGb,MAAM5H,EAAYwE,EAAW,GAAGA,KAAYG,IAAcA,EAG1D,GAAyB,WAArBG,EAAYnV,MAAqBmV,EAAYpT,WAC/C,OAAO1E,KAAK6a,mBAAmBlD,EAAWG,EAAaN,EAAUC,GAInE,GAAIK,EAAYgD,MAAoC,IAA5BhD,EAAYgD,KAAKza,OACvC,OAAOua,CAAI;;qCAEoB9C,EAAYiD,OAASpD;YAC9CG,EAAYkD,YACVJ,CAAI,6BAA6B9C,EAAYkD,qBAC7C;;QAMV,MAAMpI,EAAQ5S,KAAK+V,eAAe/C,GAC5BhB,EAAQhS,KAAKuT,YAAYP,GAEzBiI,EAAezD,EAAWxX,KAAKuW,gBAAgBiB,GAAYxX,KAAK0R,OAChE6F,EAAW0D,GAAc1D,UAAUF,SAASM,KAAc,EAC1DuD,EAAelI,EAAUjH,MAAM,KACrC,IAAIoP,EAAYnb,KAAK4R,SACrB,IAAK,MAAMwB,KAAQ8H,EACjBC,EAAYA,IAAY/H,GAE1B+H,EAAYA,GAAa,CAAA,EAEzB,MAAMC,EAASD,EAAU,aACnBE,EAA4B,UAAXD,GAAiC,eAAXA,EAE7C,OAAOR,CAAI;;UAEJS,EAMC,GALAT,CAAI;8BACcrD,EAAW,WAAa,YAAYvE;kBAChD8E,EAAYiD,OAASpD;;;UAI7BG,EAAYkD,cAAgBK,EAC1BT,CAAI,8BAA8B9C,EAAYkD,sBAC9C;UACFhb,KAAKsb,YAAYtI,EAAW8E,EAAalF,EAAOuI;UAChDnJ,EAAQ4I,CAAI,gCAAgC5I,YAAkB;;KAGtE,CAKA,kBAAA6I,CAAmBlD,EAAWG,EAAaN,EAAW,GAAIC,EAAQ,GAChE,MAAMzE,EAAYwE,EAAW,GAAGA,KAAYG,IAAcA,EAE1D,OAAOiD,CAAI;;UAEL9C,EAAYiD,MACVH,CAAI,oCAAoC9C,EAAYiD,cACpD;UACFjD,EAAYkD,YACVJ,CAAI,0CAA0C9C,EAAYkD,oBAC1D;UACFzZ,OAAOsW,QAAQC,EAAYpT,YAAYqC,IAAI,EAAEwU,EAAiBC,KAC9Dxb,KAAK2a,YAAYY,EAAiBC,EAAmBxI,EAAWyE,EAAQ;;KAIhF,CAEA,WAAA6D,CAAYtI,EAAW8E,EAAalF,EAAOuI,GACzC,MAAMxY,KAAEA,EAAMmY,KAAMW,EAAUxD,OAAEA,EAAMyD,MAAEA,GAAU5D,EAC5CsD,EAASD,EAAU,aACnBQ,EAAWR,EAAU,eAAeS,OAG1C,GAAIH,GAAoC,IAAtBA,EAAWpb,OAC3B,OAAOua,CAAI,GAIb,GAAa,UAATjY,GAAoB+Y,GAAOZ,MAAmB,eAAXM,EAAyB,CAC9D,MAAMS,EAAiB3Z,MAAM6C,QAAQ6N,GAASA,EAAQ,GAChDkJ,EAAiBH,EAAW,wBAA0B,iBAGtDzI,EAAYF,EAAUjH,MAAM,KAC5B4L,EAAYzE,EAAUA,EAAU7S,OAAS,GACzCmX,EAAWtE,EAAUxJ,MAAM,MAAOqS,KAAK,KAEvCd,EAAezD,EAAWxX,KAAKuW,gBAAgBiB,GAAYxX,KAAK0R,OAChEsK,EAAaf,GAAc1D,UAAUF,SAASM,KAAc,EAElE,OAAOiD,CAAI;2BACUkB;2BACAE,EAAa,WAAa,OAAOlE,EAAYiD,OAASpD;YACrEG,EAAYkD,YACVJ,CAAI,6BAA6B9C,EAAYkD,qBAC7C;YACFU,EAAMZ,KAAK/T,IAAKkV,IAChB,MAAMC,EAAclc,KAAKkW,WAAW,GAAGlD,KAAaiJ,KACpD,OAAOrB,CAAI;;;;wBAICsB;0BACElJ;2BACCiJ;8BACGJ,EAAexE,SAAS4E;6BACxB9c,GAAMa,KAAKkX,0BAA0BlE,EAAWiJ,EAAK9c;;8BAErD+c,MAAgBD;;;;OAM1C,CAGA,GAAa,UAATtZ,GAAoB+Y,GAAOZ,KAAM,CACnC,MAAMe,EAAiB3Z,MAAM6C,QAAQ6N,GAASA,EAAQ,GAEtD,OAAOgI,CAAI;;gBAED5H;kBACEA;;;qBAGI7T,GAAMa,KAAK8W,wBAAwB9D,EAAW7T;;YAExDuc,EAAMZ,KAAK/T,IACVkV,GAAQrB,CAAI;+BACMqB,iBAAmBJ,EAAexE,SAAS4E,OAASA;;;OAK/E,CAGA,GAAIR,GAAyB,UAAXL,EAAoB,CACpC,MAAMU,EAAiBH,EAAW,qBAAuB,cAGnDzI,EAAYF,EAAUjH,MAAM,KAC5B4L,EAAYzE,EAAUA,EAAU7S,OAAS,GACzCmX,EAAWtE,EAAUxJ,MAAM,MAAOqS,KAAK,KAEvCd,EAAezD,EAAWxX,KAAKuW,gBAAgBiB,GAAYxX,KAAK0R,OAChEsK,EAAaf,GAAc1D,UAAUF,SAASM,KAAc,EAElE,OAAOiD,CAAI;2BACUkB;2BACAE,EAAa,WAAa,OAAOlE,EAAYiD,OAASpD;YACrEG,EAAYkD,YACVJ,CAAI,6BAA6B9C,EAAYkD,qBAC7C;YACFS,EAAW1U,IAAKkV,IAChB,MAAMC,EAAclc,KAAKkW,WAAW,GAAGlD,KAAaiJ,KACpD,OAAOrB,CAAI;;;;wBAICsB;0BACElJ;2BACCiJ;8BACGrJ,IAAUqJ;6BACV9c,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;8BAExC+c,MAAgBD;;;;OAM1C,CAGA,OAAIR,EACKb,CAAI;;gBAED5H;kBACEA;oBACEJ,GAAS;qBACPzT,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;;YAGlDsc,EAAW1U,IACVkV,GAAQrB,CAAI,mBAAmBqB,iBAAmBrJ,IAAUqJ,MAAQA;;QAOhE,YAATtZ,EACKiY,CAAI;;;;kBAIC5H;oBACEA;0BACMJ;uBACFzT,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;wBAExC6T,MAAc8E,EAAYiD,OAAS/H,EAAUjH,MAAM,KAAKoQ;;QAM/D,WAATxZ,EACa,UAAXsV,EACK2C,CAAI;;;kBAGD5H;oBACEA;sBACEJ,GAAS;sBACRzT,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;UAK1C,SAAX8Y,EACK2C,CAAI;;;kBAGD5H;oBACEA;sBACEJ,GAAS;sBACRzT,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;UAK1B,aAA3Bgc,EAAU,aACLP,CAAI;;kBAED5H;oBACEA;sBACEJ,GAAS;sBACRzT,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;UAMlDyb,CAAI;;;gBAGD5H;kBACEA;oBACEJ,GAAS;oBACRzT,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;QAM5C,WAATwD,GAA8B,YAATA,EAChBiY,CAAI;;;gBAGD5H;kBACEA;oBACEJ,GAAS;kBACF,YAATjQ,EAAqB,IAAM;oBACxBxD,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;QAMlDyb,CAAI;;;cAGD5H;gBACEA;kBACEJ,GAAS;kBACRzT,GAAMa,KAAKwW,kBAAkBxD,EAAW7T;;KAGzD,CAEA,MAAA8Q,GACE,GAAIjQ,KAAKgS,MACP,OAAO4I,CAAI;;uDAEsC5a,KAAKgS;;QAKxD,GAAIhS,KAAK8R,QACP,OAAO8I,CAAI;;;;QAOb,IAAK5a,KAAK0R,SAAW1R,KAAK0R,OAAOhN,WAC/B,OAAOkW,CAAI;;;;QAQb,GAAI5a,KAAKwS,cACP,OAAOoI,CAAI;UACP5a,KAAKyR,aACHmJ,CAAI;gBACA5a,KAAKyR;sBAET;;;;;cAKEzR,KAAKuS,kBAAkBc,UAAUhT,OAAS,EACxCua,CAAI;;sBAEE5a,KAAKuS,iBAAiBc,SAAStM,IAAKqV,GAAQxB,CAAI,OAAOwB;;kBAG7D;;;QAOZ,MAAMC,EAAY9a,OAAOmC,KAAK1D,KAAK0R,OAAOhN,YAAYrE,OAAS,EAE/D,OAAOua,CAAI;QACP5a,KAAKyR,aACHmJ,CAAI;cACA5a,KAAKyR;oBAET;;;UAGAzR,KAAKmS,cACHyI,CAAI;;;kBAGE5a,KAAKuS,kBAAkBc,UAAUhT,OAAS,EACxCua,CAAI;;0BAEE5a,KAAKuS,iBAAiBc,SAAStM,IAAKqV,GAAQxB,CAAI,OAAOwB;;sBAG7D;;cAGR;UACFC,EACEzB,CAAI;+BACe5a,KAAK0Y,wBAAwB1Y,KAAK+R,WAAa,aAAe;kBAC3E/R,KAAK0R,OAAOqJ,MAAQH,CAAI,OAAO5a,KAAK0R,OAAOqJ,aAAe;kBAC1D/a,KAAK0R,OAAOsJ,YAAcJ,CAAI,MAAM5a,KAAK0R,OAAOsJ,kBAAoB;kBACpEhb,KAAKoS,iBACHwI,CAAI;;;;sBAKJ;kBACF5a,KAAKyS,gBACHmI,CAAI;;kDAE0B5a,KAAKyS;0BAC7BzS,KAAKuS,kBAAkBc,UAAUhT,OAAS,EACxCua,CAAI;;kCAEE5a,KAAKuS,iBAAiBc,SAAStM,IAC9BqV,GAAQxB,CAAI,OAAOwB;;8BAI1B;;sBAGR;kBACF7a,OAAOsW,QAAQ7X,KAAK0R,OAAOhN,YAAYqC,IAAI,EAAE4Q,EAAWG,KACxD9X,KAAK2a,YAAYhD,EAAWG;;;qDAIO9X,KAAK+R,aAAe/R,KAAKsS;;wBAEtDtS,KAAK+R,WAAa6I,CAAI,gCAAkC;wBACxD5a,KAAK+R,WAAa,gBAAkB;;;kDAGV/R,KAAK0a,2BAA2B1a,KAAK+R;;;;;cAM3E6I,CAAI;;kBAEE5a,KAAK0R,OAAOqJ,MAAQH,CAAI,OAAO5a,KAAK0R,OAAOqJ,aAAe;kBAC1D/a,KAAK0R,OAAOsJ,YAAcJ,CAAI,MAAM5a,KAAK0R,OAAOsJ,kBAAoB;;;;KAKpF,EAGFsB,eAAeC,OAAO,eAAgBnL","x_google_ignoreList":[0,1,2,3,4]}
|
package/package.json
CHANGED
|
@@ -1,65 +1,75 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uportal/form-builder",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
},
|
|
3
|
+
"version": "2.1.0",
|
|
4
|
+
"description": "Create html input forms on the fly using Lit",
|
|
5
|
+
"main": "dist/form-builder.js",
|
|
6
|
+
"module": "dist/form-builder.js",
|
|
7
|
+
"type": "module",
|
|
9
8
|
"files": [
|
|
10
|
-
"
|
|
9
|
+
"dist",
|
|
11
10
|
"src"
|
|
12
11
|
],
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "rollup -c",
|
|
14
|
+
"dev": "rollup -c -w",
|
|
15
|
+
"serve": "wds --node-resolve --open --watch",
|
|
16
|
+
"test": "wtr --coverage",
|
|
17
|
+
"test:watch": "wtr --watch",
|
|
18
|
+
"test:ci": "wtr --coverage",
|
|
19
|
+
"lint": "eslint .",
|
|
20
|
+
"lint:fix": "eslint --fix .",
|
|
21
|
+
"lint:check": "prettier --check 'src/**/*.{js,css}' 'test/**/*.{js,html}' '*.{json,md}'",
|
|
22
|
+
"format": "prettier --write 'src/**/*.{js,css}' 'test/**/*.{js,html}' '*.{json,md}'",
|
|
23
|
+
"prepare": "husky",
|
|
24
|
+
"pre-commit": "lint-staged"
|
|
17
25
|
},
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
26
|
+
"lint-staged": {
|
|
27
|
+
"*.js": [
|
|
28
|
+
"prettier --write",
|
|
29
|
+
"eslint --fix"
|
|
30
|
+
],
|
|
31
|
+
"*.{json,md,css,html}": [
|
|
32
|
+
"prettier --write"
|
|
33
|
+
]
|
|
21
34
|
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"web-components",
|
|
37
|
+
"lit",
|
|
38
|
+
"form-builder",
|
|
39
|
+
"json-schema",
|
|
40
|
+
"uportal",
|
|
41
|
+
"dynamic-forms"
|
|
42
|
+
],
|
|
43
|
+
"author": "",
|
|
44
|
+
"license": "Apache-2.0",
|
|
22
45
|
"dependencies": {
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"@uportal/open-id-connect": "^1.8.0",
|
|
26
|
-
"bootstrap": "^4.3.1",
|
|
27
|
-
"lodash.get": "^4.4.2",
|
|
28
|
-
"prop-types": "^15.6.1",
|
|
29
|
-
"react": "^16.4.2",
|
|
30
|
-
"react-dom": "^16.4.2",
|
|
31
|
-
"react-jsonschema-form": "1.2.1",
|
|
32
|
-
"regenerator-runtime": "^0.13.0"
|
|
46
|
+
"jwt-decode": "^4.0.0",
|
|
47
|
+
"lit": "^3.0.0"
|
|
33
48
|
},
|
|
34
49
|
"devDependencies": {
|
|
35
|
-
"@
|
|
36
|
-
"@
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"test": "
|
|
45
|
-
"
|
|
50
|
+
"@eslint/css": "^0.14.1",
|
|
51
|
+
"@eslint/js": "^9.39.2",
|
|
52
|
+
"@eslint/json": "^0.14.0",
|
|
53
|
+
"@eslint/markdown": "^7.5.1",
|
|
54
|
+
"@open-wc/testing": "^4.0.0",
|
|
55
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
56
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
57
|
+
"@web/dev-server": "^0.4.1",
|
|
58
|
+
"@web/test-runner": "^0.20.2",
|
|
59
|
+
"@web/test-runner-playwright": "^0.11.0",
|
|
60
|
+
"eslint": "^9.39.2",
|
|
61
|
+
"globals": "^16.5.0",
|
|
62
|
+
"husky": "^9.1.7",
|
|
63
|
+
"lint-staged": "^16.2.7",
|
|
64
|
+
"prettier": "^3.2.4",
|
|
65
|
+
"rollup": "^4.9.5",
|
|
66
|
+
"rollup-plugin-summary": "^3.0.1",
|
|
67
|
+
"rollup-plugin-visualizer": "^6.0.5",
|
|
68
|
+
"sinon": "^21.0.0"
|
|
46
69
|
},
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
|
|
50
|
-
"group:all",
|
|
51
|
-
":rebaseStalePrs",
|
|
52
|
-
":preserveSemverRanges",
|
|
53
|
-
":semanticPrefixChore",
|
|
54
|
-
":ignoreUnstable",
|
|
55
|
-
":renovatePrefix"
|
|
56
|
-
]
|
|
70
|
+
"repository": {
|
|
71
|
+
"type": "git",
|
|
72
|
+
"url": "https://github.com/uPortal-contrib/form-builder.git"
|
|
57
73
|
},
|
|
58
|
-
"
|
|
59
|
-
">0.2%",
|
|
60
|
-
"not dead",
|
|
61
|
-
"not ie < 11",
|
|
62
|
-
"Edge",
|
|
63
|
-
"not op_mini all"
|
|
64
|
-
]
|
|
74
|
+
"customElements": "custom-elements.json"
|
|
65
75
|
}
|