@decaf-ts/for-fabric 0.1.40 → 0.1.41

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.
@@ -1,2 +1,2 @@
1
- var t,e;t=this,e=function(t,e,r,a,i,n,o,s,c){"use strict";class l extends a.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class d extends a.ObserverHandler{constructor(t=[i.OperationKeys.CREATE,i.OperationKeys.UPDATE,i.OperationKeys.DELETE,i.BulkCrudOperationKeys.CREATE_ALL,i.BulkCrudOperationKeys.UPDATE_ALL,i.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,r,...i){const{log:n,ctx:o}=a.Adapter.logCtx(i,this.updateObservers),{stub:s}=o,[c,l]=i,d="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){n.debug(`Emitting ${e} event`);const t=((t,e,r)=>{const a=[t,e];return r&&a.push(r),a.join("_")})(d,e,c);s.setEvent(t,Buffer.from(JSON.stringify({id:r})))}else s.setEvent(e,Buffer.from(JSON.stringify(l)))}}class u extends a.Repository{constructor(t,e,r){super(t,e),this.trackedEvents=r,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async createAllPrefix(t,...e){const n=await a.Context.args(i.OperationKeys.CREATE,this.class,e,this.adapter,this._overrides||{}),o=n.context.logger.for(this.createAllPrefix),s=n.context.get("ignoreHandlers"),c=n.context.get("ignoreValidation");if(!t.length)return[t,...n.args];const l=r.Model.sequenceFor(t[0]);o.info("Sequence options: "+JSON.stringify(l));let d=[];if(l.type?(l.name||(l.name=r.Model.sequenceName(t[0],"pk")),d=await(await this.adapter.Sequence(l)).range(t.length,...n.args),o.info("Sequence ids: "+d)):d=t.map((t,e)=>{if(void 0===t[this.pk])throw new i.InternalError("Primary key is not defined for model in position "+e);return t[this.pk]}),t=await Promise.all(t.map(async(t,e)=>(t=new this.class(t),l.type&&(t[this.pk]="String"!==l.type||l.generated?d[e]:""+t[this.pk]),o.info("Creating model "+JSON.stringify(t)),s||await i.enforceDBDecorators(this,n.context,t,i.OperationKeys.CREATE,i.OperationKeys.ON),t))),!c){const e=n.context.get("ignoredValidationProperties")||[],r=await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...e)))),a=i.reduceErrorsToPrint(r);if(a)throw new i.ValidationError(a)}return[t,...n.args]}async paginateBy(t,e,i={offset:1,limit:10},...n){let{offset:o,bookmark:s,limit:c}=i;if(!o&&!s)throw new a.QueryError("PaginateBy needs a page or a bookmark");const l=await a.Context.args(a.PreparedStatementKeys.PAGE_BY,this.class,n,this.adapter,this._overrides||{}),{log:d,ctxArgs:u}=this.logCtx(l.args,this.paginateBy);let p;if(d.verbose(`paginating ${r.Model.tableName(this.class)} with page size ${c}`),s)p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().where(this.attr(r.Model.pk(this.class)).gt(s)).orderBy([t,e]).paginate(c,...u),o=1;else{if(!o)throw new a.QueryError("PaginateBy needs a page or a bookmark");p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([t,e]).paginate(c,...u)}const g=await p.page(o,...u);return p.serialize(g)}async statement(t,...e){if(!a.Repository.statements(this,t))throw new a.QueryError("Invalid prepared statement requested "+t);const r=await a.Context.args(a.PersistenceKeys.STATEMENT,this.class,e,this.adapter,this._overrides||{});r.context.logger&&r.context.logger.info(`Repo statement: ${t} + ${e}`);const{log:n,ctxArgs:o}=this.logCtx(r.args,this.statement);let s;n.verbose(`Executing prepared statement ${t} with args ${o}`);try{s=await this[t](...o)}catch(e){if(e instanceof i.BaseError)throw e;throw new i.InternalError(`Failed to execute prepared statement ${t} with args ${o}: ${e}`)}return s}ObserverHandler(){return new d}async updateObservers(t,e,r,...a){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,r,...a)}}class p extends e.CouchDBStatement{constructor(t){super(t)}async raw(t,...e){const{ctx:a}=this.logCtx(e,this.raw),n=await this.adapter.raw(t,!0,a),s=r.Model.pk(this.fromSelector),c=o.Metadata.get(this.fromSelector,o.Metadata.key(i.DBKeys.ID,s))?.type;return this.selectSelector?n:n.map(t=>this.processRecord(t,s,c,a))}build(){const t={};t[e.CouchDBKeys.TABLE]={},t[e.CouchDBKeys.TABLE]=r.Model.tableName(this.fromSelector);const i={selector:t};if(this.selectSelector&&(i.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(a.Condition.and(this.whereCondition,a.Condition.attribute(e.CouchDBKeys.TABLE).eq(i.selector[e.CouchDBKeys.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(e.CouchDBGroupOperator).indexOf(r[0]))switch(r[0]){case e.CouchDBGroupOperator.AND:t[e.CouchDBGroupOperator.AND]=[...Object.values(t[e.CouchDBGroupOperator.AND]).reduce((t,r)=>{const a=Object.keys(r);if(1!==a.length)throw Error("Too many keys in query selector. should be one");const i=a[0];return i===e.CouchDBGroupOperator.AND?t.push(...r[i]):t.push(r),t},[])],i.selector=t;break;case e.CouchDBGroupOperator.OR:{const r={};r[e.CouchDBGroupOperator.AND]=[t,...Object.entries(i.selector).map(([t,e])=>{const r={};return r[t]=e,r})],i.selector=r;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{i.selector[t],i.selector[t]=e})}if(this.orderBySelector){i.sort=i.sort||[],i.selector=i.selector||{};const[t,r]=this.orderBySelector,a={};a[t]=r,i.sort.push(a),i.selector[t]||(i.selector[t]={},i.selector[t][e.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(i.limit=this.limitSelector),this.offsetSelector&&(i.skip=this.offsetSelector),i}}var g,h;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by",t.TRANSACTION_ID="transaction-id"})(g||(g={})),(t=>{t.X509="X.509"})(h||(h={}));const y="hlf-fabric";class m extends r.JSONSerializer{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t,e=!0){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t,e)))}preSerialize(t,e=!0){const a=Object.assign({},t);let i;try{i=o.Metadata.modelName(t.constructor)}catch(t){i=void 0}function n(t){return"object"!=typeof t?t:Array.isArray(t)?t.map(n):this.preSerialize(t)}return e&&(a[r.ModelKeys.ANCHOR]=i||t.constructor.name),r.Model.relations(t).forEach(t=>{a[t]=n.call(this,a[t])}),a}}class w extends s.MiniLogger{constructor(t,e,r){super(t,e),this.logger=r?r.logging.getLogger(t):new s.MiniLogger(t,e)}log(t,e,r){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[t])return;let a;switch(t){case s.LogLevel.info:a=this.logger.info;break;case s.LogLevel.verbose:a=this.logger.verbose;break;case s.LogLevel.debug:a=this.logger.debug;break;case s.LogLevel.error:a=this.logger.error;break;case s.LogLevel.silly:a=this.logger.silly;break;default:throw new i.InternalError("Invalid log level")}a.call(this.logger,this.createLog(t,e,r))}}s.Logging.setFactory((t,e,r)=>new w(t||w.name,e||{},r));class f extends a.Sequence{constructor(t,e){super(t,e)}async current(...t){const e=(await a.Context.args(i.OperationKeys.READ,a.SequenceModel,t,this.adapter)).context,{name:r,startWith:n}=this.options;try{const t=await this.repo.read(r,e);return this.parse(t.current)}catch(t){if(t instanceof i.NotFoundError){if(void 0===n)throw new i.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(n)}catch(t){throw new i.InternalError(`Failed to parse initial value for sequence ${n}: ${t}`)}}throw new i.InternalError(`Failed to retrieve current value for sequence ${r}: ${t}`)}}async increment(t,e,r){const{type:n,incrementBy:o,name:s}=this.options;let c;const l=e||o;if(l%o!==0)throw new i.InternalError("Value to increment does not consider the incrementBy setting: "+o);switch("function"==typeof n&&n?.name?n.name:n){case Number.name:c=this.parse(t)+l;break;case BigInt.name:c=this.parse(t)+BigInt(l);break;case String.name:c=this.parse(t);break;case"serial":c=a.Serial.instance.generate(t);break;case"uuid":c=a.UUID.instance.generate(t);break;default:throw new i.InternalError("Should never happen")}let d;try{d=await this.repo.update(new a.SequenceModel({id:s,current:c}),r)}catch(o){if(!(o instanceof i.NotFoundError))throw o;try{d=await this.repo.create(new a.SequenceModel({id:s,current:c}),r)}catch(a){if(!(a instanceof i.ConflictError)||"uuid"!==n)throw a;return this.increment(t,e,r)}}return d.current}async next(...t){const e=await a.Context.args(i.OperationKeys.UPDATE,a.SequenceModel,t,this.adapter),{context:r,args:n}=e,o=await this.current(...n);return this.increment(o,void 0,r)}async range(t,...e){const r=await a.Context.args(i.OperationKeys.UPDATE,a.SequenceModel,e,this.adapter),{context:n,args:o}=r,s=await this.current(...o),c=this.parse(this.options.incrementBy),l=await this.increment(s,this.parse(t)*c,n),d=[];for(let e=1;t>=e;e++)d.push(s+c*this.parse(e));if("uuid"===this.options.type||"serial"===this.options.type)throw new a.UnsupportedError(`type ${this.options.type} is currently not suppported for this adapter`);const u="function"==typeof this.options.type&&this.options.type?.name?this.options.type.name:this.options.type;if(d[d.length-1]!==l&&"String"!==u)throw new i.InternalError("Miscalculation of range");return d}}class _ extends e.CouchDBPaginator{constructor(t,e,r,a){super(t,e,r,a)}prepare(t){const e=Object.assign({},t);return e.limit&&(this.limit=e.limit),e.limit=this.size,e}async page(t=1,...e){const{ctxArgs:n,ctx:s}=this.adapter.logCtx(e,this.page);if(this.isPreparedStatement())return this.pagePrepared(t,...n);const c=Object.assign({},this.statement);if(!this._recordCount||!this._totalPages){this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...c,limit:void 0},!0,s)||[];if(this._recordCount=t.length,this._recordCount>0){const t=c?.limit||this.size;this._totalPages=Math.ceil(this._recordCount/t)}}if(this.validatePage(t),1!==t){if(!this._bookmark)throw new a.PagingError("No bookmark. Did you start in the first page?");c.bookmark=this._bookmark}const l=await this.adapter.raw(c,!1,s);if(!this.clazz)throw new a.PagingError("No statement target defined");const d=r.Model.pk(this.clazz),u=o.Metadata.get(this.clazz,o.Metadata.key(i.DBKeys.ID,d))?.type,p=c.fields&&c.fields.length?l:l.map(t=>this.adapter.revert(t,this.clazz,a.Sequence.parseValue(u,t[d]),void 0,s)),g=c.sort?.[0]||a.OrderDirection.DSC;return this._bookmark=p[g===a.OrderDirection.ASC?p.length-1:0][d],this._currentPage=t,p}}async function x(t,e,r,i){try{const e=t.get("identity");i[r]=e.getID()}catch(t){throw new a.UnsupportedError("No User found in context. Please provide a user in the context")}}class b extends e.CouchDBAdapter{getClient(){throw new a.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new m}repository(){return u}Paginator(t,e,r){return new _(this,t,e,r)}async Sequence(t){return new f(t,this)}constructor(t,e){super(t,y,e),this.Context=l}for(t,...e){return super.for(t,...e)}async create(t,e,a,...i){const{ctx:n,log:o,stub:s}=this.logCtx(i,this.create);o.info("in ADAPTER create with args "+i);const c=r.Model.tableName(t);try{o.info(`adding entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);a=await this.putState(t,a,n)}catch(t){throw this.parseError(t)}return a}async read(t,e,...a){const{ctx:i,log:n,stub:o}=this.logCtx(a,this.read);n.info("in ADAPTER read with args "+a);const s=r.Model.tableName(t);let c;try{const t=o.createCompositeKey(s,[e+""]);c=await this.readState(t,i)}catch(t){throw this.parseError(t)}return c}async update(t,e,a,...i){const{ctx:n,log:o,stub:s}=this.logCtx(i,this.update),c=r.Model.tableName(t);try{o.verbose(`updating entry to ${c} table with pk ${e}`);const t=s.createCompositeKey(c,[e+""]);a=await this.putState(t,a,n)}catch(t){throw this.parseError(t)}return a}async delete(t,e,...a){const{ctx:i,log:n,ctxArgs:o,stub:s}=this.logCtx(a,this.delete),c=r.Model.tableName(t);let l;try{const r=s.createCompositeKey(c,[e+""]);l=await this.read(t,e,...o),n.verbose(`deleting entry with pk ${e} from ${c} table`),await this.deleteState(r,i)}catch(t){throw this.parseError(t)}return l}async deleteState(t,e){const{stub:r}=this.logCtx([e],this.deleteState);await r.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(t=>t.name);return new Proxy(this,{get:(r,a,n)=>e.includes(a)?new Proxy(r[a],{async apply(e,r,n){switch(a){case"putState":{const[e,r,a]=n;return await e.putPrivateData(t,r.toString(),a),a}case"deleteState":{const[e,r]=n;return e.deletePrivateData(t,r)}case"readState":{const[e,r]=n;return e.getPrivateData(t,r)}case"queryResult":{const[e,r]=n;return e.getPrivateDataQueryResult(t,r)}case"queryResultPaginated":{const[e,r,a,i]=n,o=await e.getPrivateDataQueryResult(t,r),s=[];let c=0,l=!i,d=null;for(;;){const t=await o.next();if(t.value&&t.value.value.toString()){const e=t.value.key,r=t.value.value.toString("utf8");if(!l){e===i?.toString()&&(l=!0);continue}if(s.push({Key:e,Record:JSON.parse(r)}),d=e,c++,c>=a)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(t.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new i.InternalError("Unsupported method override "+a)}}}):Reflect.get(r,a,n)})}async putState(t,e,r){let a;const{stub:n,log:o}=this.logCtx([r],this.putState);try{a=Buffer.from(b.serializer.serialize(e,!1))}catch(e){throw new i.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}const s=r.get("segregated");return s?await n.putPrivateData(s,t.toString(),a):await n.putState(t.toString(),a),o.silly(`state stored${s?` in ${s} collection`:""} under id ${t}`),e}async readState(t,e){let r;const{stub:a,log:n}=this.logCtx([e],this.readState);let o;const s=e.get("segregated");if(o=s?(await a.getPrivateData(s,t.toString())).toString():(await a.getState(t.toString())).toString(),!o)throw new i.NotFoundError(`Record with id ${t}${s?` in ${s} collection`:""} not found`);n.silly(`state retrieved from${s?` ${s} collection`:""} under id ${t}`);try{r=b.serializer.deserialize(o.toString())}catch(t){throw new i.SerializationError("Failed to parse record: "+t)}return r}async queryResult(t,e,...r){const{ctx:a}=this.logCtx(r,this.readState);let i;const n=a.get("segregated");return i=n?await t.getPrivateDataQueryResult(n,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),i}async queryResultPaginated(t,e,r=250,a,...i){const{ctx:n}=this.logCtx(i,this.readState);let o;const s=n.get("segregated");return s?(e.selector={...e.selector,_id:a?{$gt:a.toString()}:{$gte:""}},o={iterator:await t.getPrivateDataQueryResult(s,JSON.stringify(e)),metadata:{fetchedRecordsCount:r,bookmark:""}}):o=await t.getQueryResultWithPagination(JSON.stringify(e),r,a?.toString()),o}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});let r=t.pop();for(const a of t)r=Object.assign({},e(r),e(a));return r}decode(t){return b.textDecoder.decode(t)}async flags(t,e,r,a,...i){const n={stub:a.stub,segregated:!1};return Object.assign(n,a instanceof l?{logger:a.logger,identity:a.identity,correlationId:a.stub.getTxID()}:{identity:a.clientIdentity,logger:new w(this,void 0,a),correlationId:a.stub.getTxID()}),await super.flags(t,e,n,...i)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,r=!1){const a=[];let i=await e.next();for(;!i.done;){if(i.value&&i.value.value.toString()){let e={};if(t.debug(i.value.value.toString("utf8")),r){e.TxId=i.value.txId,e.Timestamp=i.value.timestamp;try{e.Value=JSON.parse(i.value.value.toString("utf8"))}catch(r){t.error(r),e.Value=i.value.value.toString("utf8")}}else try{e=JSON.parse(i.value.value.toString("utf8"))}catch(r){t.error(r),e=i.value.value.toString("utf8")}a.push(e)}i=await e.next()}return t.debug(`Closing iterator after ${a.length} results`),e.close(),a}async raw(t,e=!0,...r){const{log:a,stub:i,ctx:n}=this.logCtx(r,this.raw),{skip:o,limit:s}=t;let c;s||o?(delete t.limit,delete t.skip,a.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),c=(await this.queryResultPaginated(i,t,s||250,o?.toString(),n)).iterator):(a.debug("Retrieving iterator"),c=await this.queryResult(i,t,n)),a.debug("Iterator acquired");const l=await this.resultIterator(a,c);return a.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new p(this)}async createAll(t,e,a,...n){if(e.length!==a.length)throw new i.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(n,this.createAll),c=r.Model.tableName(t);return o.debug(`Creating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.create(t,e,a[r],...s)))}async updateAll(t,e,a,...n){if(e.length!==a.length)throw new i.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(n,this.updateAll),c=r.Model.tableName(t);return o.debug(`Updating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.update(t,e,a[r],...s)))}prepare(t,...e){const{log:a}=this.logCtx(e,this.prepare),n=r.Model.tableName(t.constructor),o=r.Model.pk(t.constructor),s=r.Model.segregate(t),c=Object.entries(s.model).reduce((e,[a,n])=>{if(void 0===n)return e;const o=r.Model.columnName(t,a);if(this.isReserved(o))throw new i.InternalError(`Property name ${o} is reserved`);return e[o]=n,e},{});return a.silly(`Preparing record for ${n} table with pk ${t[o]}`),{record:c,id:t[o],transient:s.transient}}revert(t,e,a,n,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[r.Model.pk(e)]=a;const l="string"==typeof e?r.Model.build(c,e):new e(c);s.silly(`Rebuilding model ${l.constructor.name} id ${a}`);const d=Object.keys(l).reduce((e,a)=>(e[a]=t[r.Model.columnName(e,a)],e),l);return n&&(s.debug("re-adding transient properties: "+Object.keys(n).join(", ")),Object.entries(n).forEach(([t,e])=>{if(t in d&&void 0!==d[t])throw new i.InternalError(`Transient property ${t} already exists on model ${l.constructor.name}. should be impossible`);d[t]=e})),d}createPrefix(t,a,i,...n){const{ctxArgs:o}=this.logCtx(n,this.createPrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,i),[t,a,s,...o]}updatePrefix(t,a,i,...n){const{ctxArgs:o}=this.logCtx(n,this.updatePrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,i),[t,a,s,...o]}createAllPrefix(t,a,n,...o){if(a.length!==n.length)throw new i.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,i)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,n[i]),o});return[t,a,c,s]}updateAllPrefix(t,a,n,...o){if(a.length!==n.length)throw new i.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,i)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,n[i]),o});return[t,a,c,s]}parseError(t,e){return b.parseError(e||t)}logCtx(t,e){return b.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new i.InternalError("No context provided");const r=t.pop();if(!(r instanceof a.Context))throw new i.InternalError("No context provided");if(t.filter(t=>t instanceof a.Context).length>1)throw Error("here");const n=this?r.logger.for(this).for(e):r.logger.clear().for(this).for(e);return{ctx:r,log:e?n.for(e):n,stub:r.stub,identity:r.identity,ctxArgs:[...t,r]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(i.NotFoundError.name)?new i.NotFoundError(t):e.includes(i.ConflictError.name)?new i.ConflictError(t):e.includes(i.BadRequestError.name)?new i.BadRequestError(t):e.includes(a.QueryError.name)?new a.QueryError(t):e.includes(a.PagingError.name)?new a.PagingError(t):e.includes(a.UnsupportedError.name)?new a.UnsupportedError(t):e.includes(a.MigrationError.name)?new a.MigrationError(t):e.includes(a.ObserverError.name)?new a.ObserverError(t):e.includes(a.AuthorizationError.name)?new a.AuthorizationError(t):e.includes(a.ForbiddenError.name)?new a.ForbiddenError(t):e.includes(a.ConnectionError.name)?new a.ConnectionError(t):e.includes(i.SerializationError.name)?new i.SerializationError(t):new i.InternalError(t)}static decoration(){super.decoration(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.CREATED_BY).define(i.onCreate(x),o.propMetadata(a.PersistenceKeys.CREATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.UPDATED_BY).define(i.onCreateUpdate(x),o.propMetadata(a.PersistenceKeys.UPDATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.COLUMN).extend(n.Property()).apply(),o.Decoration.flavouredAs(y).for(r.ValidationKeys.DATE).extend(()=>(t,e)=>{n.Property(e,"string:date")(t,e)}),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.TABLE).extend(t=>{const e=[];let r="function"==typeof t?o.Metadata.constr(t):o.Metadata.constr(t.constructor);for(;r&&r!==Object&&r.prototype;)e.push(r),r=Object.getPrototypeOf(r);for(;e.length>0;){const t=e.pop();n.Object()(t)}return n.Object()(t)}).apply()}}b.decoration(),a.Adapter.setCurrent(y);class C extends r.JSONSerializer{constructor(){super()}preSerialize(t){const e=Object.assign({},t);let a;try{a=o.Metadata.modelName(t.constructor)}catch(t){a=void 0}e[r.ModelKeys.ANCHOR]=a||t.constructor.name;const i=function t(e){const r=this;return"object"!=typeof e?e:Array.isArray(e)?e.map(e=>t.call(r,e)):this.preSerialize.call(this,e)}.bind(this);return r.Model.relations(t).forEach(t=>{e[t]=i(e[t])}),e}deserialize(t){const e=JSON.parse(t),a=e[r.ModelKeys.ANCHOR];if(!a)throw Error("Could not find class reference in serialized model");return r.Model.build(e,a)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}n.Object()(Date);class S extends n.Contract{static{this.adapter=new b}static{this.serializer=new C}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=a.Repository.forModel(e)}async listBy(t,e,r,...a){const{ctxArgs:i,log:n}=await this.logCtx([...a,t],this.listBy);return n.info(`Running listBy key ${e}, order ${r} and args ${i}`),this.repo.listBy(e,r,...i)}async paginateBy(t,e,r,a={offset:1,limit:10},...i){const{ctxArgs:n,log:o}=await this.logCtx([...i,t],this.paginateBy);return o.info(`Running paginateBy key ${e}, order ${r} with size ${a.limit} and args ${n}`),this.repo.paginateBy(e,r,a,...n)}async findOneBy(t,e,r,...a){const{ctxArgs:i,log:n}=await this.logCtx([...a,t],this.findOneBy);return n.info(`Running findOneBy key ${e}, value: ${r} with args ${i}`),this.repo.findOneBy(e,r,...i)}async statement(t,e,...r){const{ctxArgs:a,log:i}=await this.logCtx([...r,t],this.statement);return i.info(`Running statement ${e} with args ${a}`),this.repo.statement(e,...a)}async create(t,e,...a){const{log:i,ctxArgs:n}=await this.logCtx([...a,t],this.create);i.info("CONTRACT CREATE, "+n),"string"==typeof e&&(e=this.deserialize(e)),i.info("Creating model: "+JSON.stringify(e));const o=this.getTransientData(t);return i.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.create(e,...n)}async read(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.read);return a.info(`reading entry with pk ${e} `),this.repo.read(e,...i)}getTransientData(t){const e=t.stub.getTransient();let r={};return e.has(this.repo.tableName)&&(r=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),r}async update(t,e,...a){const{log:i,ctxArgs:n}=await this.logCtx([...a,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),i.info("Updating model: "+JSON.stringify(e));const o=this.getTransientData(t);return i.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.update(e,...n)}async delete(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.delete);return a.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...i)}async deleteAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...a)}async readAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...a)}async updateAll(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...i)}async query(t,e,r,i=a.OrderDirection.ASC,n,o,...s){const{ctxArgs:c}=await this.logCtx([...s,t],this.query);return this.repo.query(e,r,i,n,o,...c)}async raw(t,e,r,...a){const{ctxArgs:i}=await this.logCtx([...a,t],this.raw);return S.adapter.raw(e,r,...i)}serialize(t){return S.serializer.serialize(t)}deserialize(t){return S.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...i)}async logCtx(t,e){return S.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new i.InternalError("No context provided");const r=t.pop();if(r instanceof l)return{ctx:r,log:r.logger.clear().for(this).for(e),ctxArgs:[...t,r],stub:r.stub,identity:r.identity};if(!(r instanceof n.Context))throw new i.InternalError("No valid context provided");const a={correlationId:r.stub.getTxID()},o=await S.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case i.OperationKeys.CREATE:case i.OperationKeys.READ:case i.OperationKeys.UPDATE:case i.OperationKeys.DELETE:case i.BulkCrudOperationKeys.CREATE_ALL:case i.BulkCrudOperationKeys.READ_ALL:case i.BulkCrudOperationKeys.UPDATE_ALL:case i.BulkCrudOperationKeys.DELETE_ALL:}return e.name})(),a,this.clazz,r),s=this?o.logger.for(this).for(e):o.logger.clear().for(this).for(e);return{ctx:o,log:s,stub:o.stub,identity:o.identity,ctxArgs:[...t,o]}}}class E extends S{constructor(t,e){super(t,e)}async create(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.create);r.info("Creating model: "+e);const i=this.deserialize(e);r.info("Model deserialized: "+JSON.stringify(i));const n=await super.create(a,i);return this.serialize(n)}async read(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.read);return r.info("Reading id: "+e),this.serialize(await super.read(a,e))}async update(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.update);return r.info("Updating model: "+e),this.serialize(await super.update(a,e))}async delete(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.delete);return r.info("Deleting id: "+e),this.serialize(await super.delete(a,e))}async deleteAll(t,e){const r=JSON.parse(e),{log:a,ctx:i}=await this.logCtx([t],this.deleteAll);return a.info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(i,r)).map(t=>this.serialize(t)))}async readAll(t,e){const r=JSON.parse(e),{log:a,ctx:i}=await this.logCtx([t],this.readAll);return a.info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(i,r)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.updateAll),i=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return r.info(`Updating ${i.length} entries to the table`),JSON.stringify((await super.updateAll(a,i)).map(t=>this.serialize(t)))}async statement(t,e,r){const{ctx:a,log:n}=await this.logCtx([t],this.statement);try{r=JSON.parse(r)}catch(t){throw new i.SerializationError("Invalid args: "+t)}if(!Array.isArray(r))throw new i.SerializationError(`Invalid args: ${JSON.stringify(r)}. must be an array`);return n.info("calling prepared statement "+e),n.info("with args "+r),JSON.stringify(await super.statement(a,e,...r))}async listBy(t,e,r){const{ctx:a,log:i}=await this.logCtx([t],this.listBy);return i.info(`Executing listBy with key ${e} and order ${r}`),JSON.stringify(await super.listBy(a,e,r))}async paginateBy(t,e,r,a,...n){const{ctx:o,log:s}=await this.logCtx([...n,t],this.paginateBy);try{a=JSON.parse(a)}catch(t){throw new i.SerializationError("Failed to deserialize paginateBy reference: "+t)}return s.info(`Executing paginateBy with key ${e} and order ${r}`),JSON.stringify(await super.paginateBy(o,e,r,a,...n))}async findOneBy(t,e,r,...a){const{ctx:i,log:n}=await this.logCtx([...a,t],this.findOneBy);return n.info(`Executing findOneBy with key ${e} and value ${r}`),JSON.stringify(await super.findOneBy(i,e,r,...a))}async query(t,e,r,n,o,s){const{ctx:c,log:l}=await this.logCtx([t],this.query);let d;l.info(`Executing query orderedBy ${r} and order ${n}`);try{d=a.Condition.from(JSON.parse(e))}catch(t){throw new i.SerializationError("Invalid condition: "+t)}return l.info("Condition: "+JSON.stringify(d)),JSON.stringify(await super.query(c,d,r,n,o,s))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:r}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(r))}async createAll(t,e){const{log:r}=await this.logCtx([t],this.createAll),a=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));r.info(`Adding ${a.length} entries to the table`);const i=await super.createAll(t,a);return JSON.stringify(i.map(t=>this.serialize(t)))}}c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"create",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"read",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"update",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"delete",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"deleteAll",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"readAll",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"updateAll",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String]),c.__metadata("design:returntype",Promise)],E.prototype,"statement",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String]),c.__metadata("design:returntype",Promise)],E.prototype,"listBy",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String,String,l]),c.__metadata("design:returntype",Promise)],E.prototype,"paginateBy",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String,String]),c.__metadata("design:returntype",Promise)],E.prototype,"findOneBy",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],E.prototype,"init",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],E.prototype,"healthcheck",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],E.prototype,"createAll",null);class A extends i.InternalError{constructor(t){super(t,A.name)}}class v extends i.InternalError{constructor(t){super(t,v.name)}}class O extends i.InternalError{constructor(t){super(t,O.name)}}class k extends i.BaseError{constructor(t){super(k.name,t,409)}}function N(t,e){const r=t+e;if(t!==r-e||e!==r-t)throw new A(`Addition overflow: ${t} + ${e}`);return r}function T(t,e){const r=t-e;if(t!==r+e||e!==t-r)throw new A(`Subtraction overflow: ${t} - ${e}`);return r}let P=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],P.prototype,"name",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],P.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],P.prototype,"symbol",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],P.prototype,"decimals",void 0),P=c.__decorate([a.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],P);let z=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],z.prototype,"id",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],z.prototype,"token",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],z.prototype,"balance",void 0),c.__decorate([a.column(),c.__metadata("design:type",String)],z.prototype,"captive",void 0),z=c.__decorate([a.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],z);let B=class extends a.BaseModel{constructor(t){super(t)}};function R(){return function(t,e,r){const n=r.value;return r.value=async function(...t){const r=t[0],o=r.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(r);if(0==c.length)throw new i.NotFoundError("No tokens avaialble");if(c.length>1)throw new i.NotFoundError("To many token available : "+c.length);if(c[0].owner!=o)throw new a.AuthorizationError(`User not authorized to run ${e} on the token`);return await n.apply(this,t)},r}}var D;c.__decorate([a.pk({type:"String"}),a.column(),r.required(),c.__metadata("design:type",String)],B.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],B.prototype,"spender",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],B.prototype,"value",void 0),B=c.__decorate([a.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],B),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(D||(D={}));class I extends S{constructor(t){super(t,z),I.adapter=I.adapter||new b,this.walletRepository=u.forModel(z,I.adapter.alias),this.tokenRepository=u.forModel(P,I.adapter.alias),this.allowanceRepository=u.forModel(B,I.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.walletRepository.select(),a=await r.execute(e);if(0==a.length)throw new i.NotFoundError(`The token ${this.getName()} does not exist`);let n=0;return a.forEach(t=>{n+=t.balance}),n}async BalanceOf(t,e){const{ctx:r}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(r),(await this.walletRepository.read(e,r)).balance}async Transfer(t,e,r){const{ctx:a}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(a);const n=a.identity.getID();if(!await this._transfer(n,e,r,a))throw new i.InternalError("Failed to transfer");return!0}async TransferFrom(t,e,r,a){const{ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const o=n.identity.getID(),s=await this._getAllowance(e,o,n);if(!s||0>s.value)throw new O(`spender ${o} has no allowance from ${e}`);const c=s.value;if(a>c)throw new v("The spender does not have enough allowance to spend.");const l=T(c,a),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,n),!await this._transfer(e,r,a,n))throw new i.InternalError("Failed to transfer");return!0}async _transfer(t,e,r,n){const o=n.logger;if(t===e)throw new a.AuthorizationError("cannot transfer to and from same client account");if(0>r)throw new v("transfer amount cannot be negative");const s=await this.walletRepository.read(t,n),c=s.balance;if(r>c)throw new v(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(e,n)}catch(t){if(!(t instanceof i.BaseError))throw new i.InternalError(t);if(404!==t.code)throw new i.InternalError(t.message);l=new z({id:e,balance:0,token:await this.TokenName(n)}),d=!0}const u=l.balance,p=T(c,r),g=N(u,r),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,n);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,n):await this.walletRepository.update(y,n);const m={from:t,to:e,value:r};return this.repo.refresh(P,D.TRANSFER,"",m,n).catch(t=>o.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,r){const{ctx:a,ctxArgs:i}=await this.logCtx([t],this.Approve);await this.CheckInitialized(a);const n=a.identity.getID();let o=await this._getAllowance(n,e,a);if((await this.walletRepository.read(n,...i)).balance<r)throw new v(`client account ${n} has insufficient funds.`);o?(o.value=r,await this.allowanceRepository.update(o,...i)):(o=new B({owner:n,spender:e,value:r}),await this.allowanceRepository.create(o,...i));const s={owner:n,spender:e,value:r};return this.repo.refresh(P,D.APPROVAL,"",s,a),!0}async Allowance(t,e,r){const{ctx:a}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(a);const i=await this._getAllowance(e,r,a);if(!i)throw new O(`spender ${r} has no allowance from ${e}`);return i.value}async _getAllowance(t,e,r){const i=a.Condition.and(a.Condition.attribute("owner").eq(t),a.Condition.attribute("spender").eq(e)),n=await this.allowanceRepository.select().where(i).execute(r);return n?.[0]}async Initialize(t,e){const{ctx:r}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(r)).length>0)throw new a.AuthorizationError("contract options are already set, client is not authorized to change them");return e.owner=r.identity.getID(),await this.tokenRepository.create(e,r),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new k("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:r}=await this.logCtx([t],this.Mint);await this.CheckInitialized(r);const a=r.identity.getID();if(0>=e)throw new i.ValidationError("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(a,r);const t=N(n.balance,e),i=Object.assign({},n,{balance:t});await this.walletRepository.update(i,r)}catch(n){if(!(n instanceof i.BaseError))throw new i.InternalError(n);if(404!==n.code)throw new i.InternalError(n.message);{const i=new z({id:a,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(i,r)}}const o={from:"0x0",to:a,value:e};this.repo.ObserverHandler().updateObservers(P,D.TRANSFER,"",o,r)}async Burn(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.Burn);await this.CheckInitialized(a);const i=a.identity.getID(),n=await this.walletRepository.read(i,a),o=n.balance;if(e>o)throw new v("Minter has insufficient funds.");const s=T(o,e),c=Object.assign({},n,{balance:s});await this.walletRepository.update(c,a),r.info(e+" tokens were burned");const l={from:i,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(P,D.TRANSFER,"",l,a)}async BurnFrom(t,e,r){const{log:a,ctx:i}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(i);const n=await this.walletRepository.read(e,i),o=n.balance;if(r>o)throw new v(e+" has insufficient funds.");const s=T(o,r),c=Object.assign({},n,{balance:s});await this.walletRepository.update(c,i),a.info(`${r} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(P,D.TRANSFER,"",l,i)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=e.identity.getID(),a=await this.walletRepository.read(r,e);if(!a)throw new v(`The account ${r} does not exist`);return a.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"TokenName",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"Symbol",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"Decimals",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"TotalSupply",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],I.prototype,"BalanceOf",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,Number]),c.__metadata("design:returntype",Promise)],I.prototype,"Transfer",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],I.prototype,"TransferFrom",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,Number]),c.__metadata("design:returntype",Promise)],I.prototype,"Approve",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String]),c.__metadata("design:returntype",Promise)],I.prototype,"Allowance",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,P]),c.__metadata("design:returntype",Promise)],I.prototype,"Initialize",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"CheckInitialized",null),c.__decorate([R(),n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,Number]),c.__metadata("design:returntype",Promise)],I.prototype,"Mint",null),c.__decorate([R(),n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,Number]),c.__metadata("design:returntype",Promise)],I.prototype,"Burn",null),c.__decorate([R(),n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,Number]),c.__metadata("design:returntype",Promise)],I.prototype,"BurnFrom",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"ClientAccountBalance",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],I.prototype,"ClientAccountID",null);const $=[I],F="##VERSION##",M="##PACKAGE##";o.Metadata.registerLibrary(M,F),t.ContractLogger=w,t.FabricContractAdapter=b,t.FabricContractContext=l,t.FabricContractPaginator=_,t.FabricContractRepository=u,t.FabricContractRepositoryObservableHandler=d,t.FabricContractSequence=f,t.FabricCrudContract=S,t.FabricStatement=p,t.PACKAGE_NAME=M,t.SerializedCrudContract=E,t.VERSION=F,t.contracts=$,t.createdByOnFabricCreateUpdate=x,t.pkFabricOnCreate=async function(t,e,a,n){if(!e.type||n[a])return;let o;e.name||(e.name=r.Model.sequenceName(n,"pk"));try{o=await this.adapter.Sequence(e)}catch(t){throw new i.InternalError(`Failed to instantiate Sequence ${e.name}: ${t}`)}const s=await o.next(t);Object.defineProperty(n,a,{enumerable:!0,writable:!1,configurable:!0,value:s})}},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/decoration"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/core","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/decoration","@decaf-ts/logging","tslib"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-fabric"]={},t.decafTsForCouchdb,t.decafTsDecoratorValidation,t.decafTsCore,t.decafTsDbDecorators,t.fabricContractApi,t.decafTsDecoration,t.decafTsLogging,t.tslib);
1
+ var t,e;t=this,e=function(t,e,r,a,i,n,o,s,c){"use strict";class l extends a.Context{constructor(){super()}get stub(){return this.get("stub")}get timestamp(){return this.stub.getDateTimestamp()}get identity(){return this.get("identity")}toString(){return"fabric ctx"+(this.stub?" with stub":"without stub")}}class d extends a.ObserverHandler{constructor(t=[i.OperationKeys.CREATE,i.OperationKeys.UPDATE,i.OperationKeys.DELETE,i.BulkCrudOperationKeys.CREATE_ALL,i.BulkCrudOperationKeys.UPDATE_ALL,i.BulkCrudOperationKeys.DELETE_ALL]){super(),this.supportedEvents=t}async updateObservers(t,e,r,...i){const{log:n,ctx:o}=a.Adapter.logCtx(i,this.updateObservers),{stub:s}=o,[c,l]=i,d="string"==typeof t?t:t.name;if(-1!==this.supportedEvents.indexOf(e)){n.debug(`Emitting ${e} event`);const t=((t,e,r)=>{const a=[t,e];return r&&a.push(r),a.join("_")})(d,e,c);s.setEvent(t,Buffer.from(JSON.stringify({id:r})))}else s.setEvent(e,Buffer.from(JSON.stringify(l)))}}class u extends a.Repository{constructor(t,e,r){super(t,e),this.trackedEvents=r,this._overrides=Object.assign({},super._overrides,{ignoreValidation:!1,ignoreHandlers:!1,allowRawStatements:!0,forcePrepareSimpleQueries:!1,forcePrepareComplexQueries:!1})}async createAllPrefix(t,...e){const n=await a.Context.args(i.OperationKeys.CREATE,this.class,e,this.adapter,this._overrides||{}),o=n.context.logger.for(this.createAllPrefix),s=n.context.get("ignoreHandlers"),c=n.context.get("ignoreValidation");if(!t.length)return[t,...n.args];const l=r.Model.sequenceFor(t[0]);o.info("Sequence options: "+JSON.stringify(l));let d=[];if(l.type?(l.name||(l.name=r.Model.sequenceName(t[0],"pk")),d=await(await this.adapter.Sequence(l)).range(t.length,...n.args),o.info("Sequence ids: "+d)):d=t.map((t,e)=>{if(void 0===t[this.pk])throw new i.InternalError("Primary key is not defined for model in position "+e);return t[this.pk]}),t=await Promise.all(t.map(async(t,e)=>(t=new this.class(t),l.type&&(t[this.pk]="String"!==l.type||l.generated?d[e]:""+t[this.pk]),o.info("Creating model "+JSON.stringify(t)),s||await i.enforceDBDecorators(this,n.context,t,i.OperationKeys.CREATE,i.OperationKeys.ON),t))),!c){const e=n.context.get("ignoredValidationProperties")||[],r=await Promise.all(t.map(t=>Promise.resolve(t.hasErrors(...e)))),a=i.reduceErrorsToPrint(r);if(a)throw new i.ValidationError(a)}return[t,...n.args]}async paginateBy(t,e,i={offset:1,limit:10},...n){let{offset:o,bookmark:s,limit:c}=i;if(!o&&!s)throw new a.QueryError("PaginateBy needs a page or a bookmark");const l=await a.Context.args(a.PreparedStatementKeys.PAGE_BY,this.class,n,this.adapter,this._overrides||{}),{log:d,ctxArgs:u}=this.logCtx(l.args,this.paginateBy);let p;if(d.verbose(`paginating ${r.Model.tableName(this.class)} with page size ${c}`),s)p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().where(this.attr(r.Model.pk(this.class)).gt(s)).orderBy([t,e]).paginate(c,...u),o=1;else{if(!o)throw new a.QueryError("PaginateBy needs a page or a bookmark");p=await this.override({forcePrepareComplexQueries:!1,forcePrepareSimpleQueries:!1}).select().orderBy([t,e]).paginate(c,...u)}const g=await p.page(o,...u);return p.serialize(g)}async statement(t,...e){if(!a.Repository.statements(this,t))throw new a.QueryError("Invalid prepared statement requested "+t);const r=await a.Context.args(a.PersistenceKeys.STATEMENT,this.class,e,this.adapter,this._overrides||{});r.context.logger&&r.context.logger.info(`Repo statement: ${t} + ${e}`);const{log:n,ctxArgs:o}=this.logCtx(r.args,this.statement);let s;n.verbose(`Executing prepared statement ${t} with args ${o}`);try{s=await this[t](...o)}catch(e){if(e instanceof i.BaseError)throw e;throw new i.InternalError(`Failed to execute prepared statement ${t} with args ${o}: ${e}`)}return s}ObserverHandler(){return new d}async updateObservers(t,e,r,...a){if(!this.trackedEvents||-1!==this.trackedEvents.indexOf(e))return await super.updateObservers(t,e,r,...a)}}class p extends e.CouchDBStatement{constructor(t){super(t)}async raw(t,...e){const{ctx:a}=this.logCtx(e,this.raw),n=await this.adapter.raw(t,!0,a),s=r.Model.pk(this.fromSelector),c=o.Metadata.get(this.fromSelector,o.Metadata.key(i.DBKeys.ID,s))?.type;return this.selectSelector?n:n.map(t=>this.processRecord(t,s,c,a))}build(){const t={};t[e.CouchDBKeys.TABLE]={},t[e.CouchDBKeys.TABLE]=r.Model.tableName(this.fromSelector);const i={selector:t};if(this.selectSelector&&(i.fields=this.selectSelector),this.whereCondition){const t=this.parseCondition(a.Condition.and(this.whereCondition,a.Condition.attribute(e.CouchDBKeys.TABLE).eq(i.selector[e.CouchDBKeys.TABLE]))).selector,r=Object.keys(t);if(1===r.length&&-1!==Object.values(e.CouchDBGroupOperator).indexOf(r[0]))switch(r[0]){case e.CouchDBGroupOperator.AND:t[e.CouchDBGroupOperator.AND]=[...Object.values(t[e.CouchDBGroupOperator.AND]).reduce((t,r)=>{const a=Object.keys(r);if(1!==a.length)throw Error("Too many keys in query selector. should be one");const i=a[0];return i===e.CouchDBGroupOperator.AND?t.push(...r[i]):t.push(r),t},[])],i.selector=t;break;case e.CouchDBGroupOperator.OR:{const r={};r[e.CouchDBGroupOperator.AND]=[t,...Object.entries(i.selector).map(([t,e])=>{const r={};return r[t]=e,r})],i.selector=r;break}default:throw Error("This should be impossible")}else Object.entries(t).forEach(([t,e])=>{i.selector[t],i.selector[t]=e})}if(this.orderBySelector){i.sort=i.sort||[],i.selector=i.selector||{};const[t,r]=this.orderBySelector,a={};a[t]=r,i.sort.push(a),i.selector[t]||(i.selector[t]={},i.selector[t][e.CouchDBOperator.BIGGER]=null)}return this.limitSelector&&(i.limit=this.limitSelector),this.offsetSelector&&(i.skip=this.offsetSelector),i}}var g,h;(t=>{t.PRIVATE="private",t.SHARED="shared",t.FABRIC="fabric.",t.OWNEDBY="owned-by",t.TRANSACTION_ID="transaction-id"})(g||(g={})),(t=>{t.X509="X.509"})(h||(h={}));const y="hlf-fabric";class m extends r.JSONSerializer{constructor(){super()}deserialize(t,e){return JSON.parse(t)}serialize(t,e=!0){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t,e)))}preSerialize(t,e=!0){const a=Object.assign({},t);let i;try{i=o.Metadata.modelName(t.constructor)}catch(t){i=void 0}function n(t){return"object"!=typeof t?t:Array.isArray(t)?t.map(n):this.preSerialize(t)}return e&&(a[r.ModelKeys.ANCHOR]=i||t.constructor.name),r.Model.relations(t).forEach(t=>{a[t]=n.call(this,a[t])}),a}}class w extends s.MiniLogger{constructor(t,e,r){super(t,e),this.logger=r?r.logging.getLogger(t):new s.MiniLogger(t,e)}log(t,e,r){if(s.NumericLogLevels[this.config("level")]<s.NumericLogLevels[t])return;let a;switch(t){case s.LogLevel.info:a=this.logger.info;break;case s.LogLevel.verbose:a=this.logger.verbose;break;case s.LogLevel.debug:a=this.logger.debug;break;case s.LogLevel.error:a=this.logger.error;break;case s.LogLevel.silly:a=this.logger.silly;break;default:throw new i.InternalError("Invalid log level")}a.call(this.logger,this.createLog(t,e,r))}}s.Logging.setFactory((t,e,r)=>new w(t||w.name,e||{},r));class f extends a.Sequence{constructor(t,e){super(t,e)}async current(...t){const e=(await a.Context.args(i.OperationKeys.READ,a.SequenceModel,t,this.adapter)).context,{name:r,startWith:n}=this.options;try{const t=await this.repo.read(r,e);return this.parse(t.current)}catch(t){if(t instanceof i.NotFoundError){if(void 0===n)throw new i.InternalError("Starting value is not defined for a non existing sequence");try{return this.parse(n)}catch(t){throw new i.InternalError(`Failed to parse initial value for sequence ${n}: ${t}`)}}throw new i.InternalError(`Failed to retrieve current value for sequence ${r}: ${t}`)}}async increment(t,e,r){const{type:n,incrementBy:o,name:s}=this.options;let c;const l=e||o;if(l%o!==0)throw new i.InternalError("Value to increment does not consider the incrementBy setting: "+o);switch("function"==typeof n&&n?.name?n.name:n){case Number.name:c=this.parse(t)+l;break;case BigInt.name:c=this.parse(t)+BigInt(l);break;case String.name:c=this.parse(t);break;case"serial":c=a.Serial.instance.generate(t);break;case"uuid":c=a.UUID.instance.generate(t);break;default:throw new i.InternalError("Should never happen")}let d;try{d=await this.repo.update(new a.SequenceModel({id:s,current:c}),r)}catch(o){if(!(o instanceof i.NotFoundError))throw o;try{d=await this.repo.create(new a.SequenceModel({id:s,current:c}),r)}catch(a){if(!(a instanceof i.ConflictError)||"uuid"!==n)throw a;return this.increment(t,e,r)}}return d.current}async next(...t){const e=await a.Context.args(i.OperationKeys.UPDATE,a.SequenceModel,t,this.adapter),{context:r,args:n}=e,o=await this.current(...n);return this.increment(o,void 0,r)}async range(t,...e){const r=await a.Context.args(i.OperationKeys.UPDATE,a.SequenceModel,e,this.adapter),{context:n,args:o}=r,s=await this.current(...o),c=this.parse(this.options.incrementBy),l=await this.increment(s,this.parse(t)*c,n),d=[];for(let e=1;t>=e;e++)d.push(s+c*this.parse(e));if("uuid"===this.options.type||"serial"===this.options.type)throw new a.UnsupportedError(`type ${this.options.type} is currently not suppported for this adapter`);const u="function"==typeof this.options.type&&this.options.type?.name?this.options.type.name:this.options.type;if(d[d.length-1]!==l&&"String"!==u)throw new i.InternalError("Miscalculation of range");return d}}class _ extends e.CouchDBPaginator{constructor(t,e,r,a){super(t,e,r,a)}prepare(t){const e=Object.assign({},t);return e.limit&&(this.limit=e.limit),e.limit=this.size,e}async page(t=1,...e){const{ctxArgs:n,ctx:s}=this.adapter.logCtx(e,this.page);if(this.isPreparedStatement())return this.pagePrepared(t,...n);const c=Object.assign({},this.statement);if(!this._recordCount||!this._totalPages){this._totalPages=this._recordCount=0;const t=await this.adapter.raw({...c,limit:void 0},!0,s)||[];if(this._recordCount=t.length,this._recordCount>0){const t=c?.limit||this.size;this._totalPages=Math.ceil(this._recordCount/t)}}if(this.validatePage(t),1!==t){if(!this._bookmark)throw new a.PagingError("No bookmark. Did you start in the first page?");c.bookmark=this._bookmark}const l=await this.adapter.raw(c,!1,s);if(!this.clazz)throw new a.PagingError("No statement target defined");const d=r.Model.pk(this.clazz),u=o.Metadata.get(this.clazz,o.Metadata.key(i.DBKeys.ID,d))?.type,p=c.fields&&c.fields.length?l:l.map(t=>this.adapter.revert(t,this.clazz,a.Sequence.parseValue(u,t[d]),void 0,s)),g=c.sort?.[0]||a.OrderDirection.DSC;return this._bookmark=p[g===a.OrderDirection.ASC?p.length-1:0][d],this._currentPage=t,p}}class x extends i.InternalError{constructor(t){super(t,x.name)}}class b extends i.InternalError{constructor(t){super(t,b.name)}}class C extends i.InternalError{constructor(t){super(t,C.name)}}class S extends i.InternalError{constructor(t){super(t,S.name,500)}}class E extends i.BaseError{constructor(t){super(E.name,t,409)}}async function A(t,e,r,i){try{const e=t.get("identity");i[r]=e.getID()}catch(t){throw new a.UnsupportedError("No User found in context. Please provide a user in the context")}}class v extends e.CouchDBAdapter{getClient(){throw new a.UnsupportedError("Client is not supported in Fabric contracts")}static{this.textDecoder=new TextDecoder("utf8")}static{this.serializer=new m}repository(){return u}Paginator(t,e,r){return new _(this,t,e,r)}async Sequence(t){return new f(t,this)}constructor(t,e){super(t,y,e),this.Context=l}for(t,...e){return super.for(t,...e)}async create(t,e,a,...i){const{ctx:n,log:o}=this.logCtx(i,this.create);o.info("in ADAPTER create with args "+i);const s=r.Model.tableName(t);try{o.info(`adding entry to ${s} table with pk ${e}`);const t=n.stub.createCompositeKey(s,[e+""]);a=await this.putState(t,a,n)}catch(t){throw this.parseError(t)}return a}async read(t,e,...a){const{ctx:i,log:n}=this.logCtx(a,this.read);n.info("in ADAPTER read with args "+a);const o=r.Model.tableName(t);let s;try{const t=i.stub.createCompositeKey(o,[e+""]);s=await this.readState(t,i)}catch(t){throw this.parseError(t)}return s}async update(t,e,a,...i){const{ctx:n,log:o}=this.logCtx(i,this.update),s=r.Model.tableName(t);try{o.verbose(`updating entry to ${s} table with pk ${e}`);const t=n.stub.createCompositeKey(s,[e+""]);a=await this.putState(t,a,n)}catch(t){throw this.parseError(t)}return a}async delete(t,e,...a){const{ctx:i,log:n,ctxArgs:o}=this.logCtx(a,this.delete),s=r.Model.tableName(t);let c;try{const r=i.stub.createCompositeKey(s,[e+""]);c=await this.read(t,e,...o),n.verbose(`deleting entry with pk ${e} from ${s} table`),await this.deleteState(r,i)}catch(t){throw this.parseError(t)}return c}async deleteState(t,e){const{ctx:r}=this.logCtx([e],this.deleteState);await r.stub.deleteState(t)}forPrivate(t){const e=[this.putState,this.readState,this.deleteState,this.queryResult,this.queryResultPaginated].map(t=>t.name);return new Proxy(this,{get:(r,a,n)=>e.includes(a)?new Proxy(r[a],{async apply(e,r,n){switch(a){case"putState":{const[e,r,a]=n;return await e.putPrivateData(t,r.toString(),a),a}case"deleteState":{const[e,r]=n;return e.deletePrivateData(t,r)}case"readState":{const[e,r]=n;return e.getPrivateData(t,r)}case"queryResult":{const[e,r]=n;return e.getPrivateDataQueryResult(t,r)}case"queryResultPaginated":{const[e,r,a,i]=n,o=await e.getPrivateDataQueryResult(t,r),s=[];let c=0,l=!i,d=null;for(;;){const t=await o.next();if(t.value&&t.value.value.toString()){const e=t.value.key,r=t.value.value.toString("utf8");if(!l){e===i?.toString()&&(l=!0);continue}if(s.push({Key:e,Record:JSON.parse(r)}),d=e,c++,c>=a)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:d}}}if(t.done)return await o.close(),{iterator:s,metadata:{fetchedRecordsCount:s.length,bookmark:""}}}}default:throw new i.InternalError("Unsupported method override "+a)}}}):Reflect.get(r,a,n)})}async putState(t,e,r){let a;const{log:n}=this.logCtx([r],this.putState);try{a=Buffer.from(v.serializer.serialize(e,!1))}catch(e){throw new i.SerializationError(`Failed to serialize record with id ${t}: ${e}`)}const o=r.get("segregated");return o?await r.stub.putPrivateData(o,t.toString(),a):await r.stub.putState(t.toString(),a),n.silly(`state stored${o?` in ${o} collection`:""} under id ${t}`),e}async readState(t,e){let r;const{log:a}=this.logCtx([e],this.readState);let n;const o=e.get("segregated");if(n=o?(await e.stub.getPrivateData(o,t.toString())).toString():(await e.stub.getState(t.toString())).toString(),!n)throw new i.NotFoundError(`Record with id ${t}${o?` in ${o} collection`:""} not found`);a.silly(`state retrieved from${o?` ${o} collection`:""} under id ${t}`);try{r=v.serializer.deserialize(n.toString())}catch(t){throw new i.SerializationError("Failed to parse record: "+t)}return r}async queryResult(t,e,...r){const{ctx:a}=this.logCtx(r,this.readState);let i;const n=a.get("segregated");return i=n?await a.stub.getPrivateDataQueryResult(n,JSON.stringify(e)):await t.getQueryResult(JSON.stringify(e)),i}async queryResultPaginated(t,e,r=250,a,...i){const{ctx:n}=this.logCtx(i,this.readState);let o;const s=n.get("segregated");return s?(e.selector={...e.selector,_id:a?{$gt:a.toString()}:{$gte:""}},o={iterator:await t.getPrivateDataQueryResult(s,JSON.stringify(e)),metadata:{fetchedRecordsCount:r,bookmark:""}}):o=await t.getQueryResultWithPagination(JSON.stringify(e),r,a?.toString()),o}mergeModels(t){const e=t=>Object.entries(t).reduce((t,[e,r])=>(void 0!==r&&(t[e]=r),t),{});let r=t.pop();for(const a of t)r=Object.assign({},e(r),e(a));return r}decode(t){return v.textDecoder.decode(t)}async flags(t,e,r,a,...i){const n={stub:a.stub,segregated:!1};return Object.assign(n,a instanceof l?{logger:a.logger,identity:a.identity,correlationId:a.stub.getTxID()}:{identity:a.clientIdentity,logger:new w(this,void 0,a),correlationId:a.stub.getTxID()}),await super.flags(t,e,n,...i)}index(t){return Promise.resolve(void 0)}async resultIterator(t,e,r=!1){const a=[];let i=await e.next();for(;!i.done;){if(i.value&&i.value.value.toString()){let e={};if(t.debug(i.value.value.toString("utf8")),r){e.TxId=i.value.txId,e.Timestamp=i.value.timestamp;try{e.Value=JSON.parse(i.value.value.toString("utf8"))}catch(r){t.error(r),e.Value=i.value.value.toString("utf8")}}else try{e=JSON.parse(i.value.value.toString("utf8"))}catch(r){t.error(r),e=i.value.value.toString("utf8")}a.push(e)}i=await e.next()}return t.debug(`Closing iterator after ${a.length} results`),e.close(),a}async raw(t,e=!0,...r){const{log:a,stub:i,ctx:n}=this.logCtx(r,this.raw),{skip:o,limit:s}=t;let c;s||o?(delete t.limit,delete t.skip,a.debug(`Retrieving paginated iterator: limit: ${s}/ skip: ${o}`),c=(await this.queryResultPaginated(i,t,s||250,o?.toString(),n)).iterator):(a.debug("Retrieving iterator"),c=await this.queryResult(i,t,n)),a.debug("Iterator acquired");const l=await this.resultIterator(a,c);return a.debug(`returning ${Array.isArray(l)?l.length:1} results`),l}Statement(){return new p(this)}async createAll(t,e,a,...n){if(e.length!==a.length)throw new i.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(n,this.createAll),c=r.Model.tableName(t);return o.debug(`Creating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.create(t,e,a[r],...s)))}async updateAll(t,e,a,...n){if(e.length!==a.length)throw new i.InternalError("Ids and models must have the same length");const{log:o,ctxArgs:s}=this.logCtx(n,this.updateAll),c=r.Model.tableName(t);return o.debug(`Updating ${e.length} entries ${c} table`),Promise.all(e.map((e,r)=>this.update(t,e,a[r],...s)))}prepare(t,...e){const{log:a}=this.logCtx(e,this.prepare),n=r.Model.tableName(t.constructor),o=r.Model.pk(t.constructor),s=r.Model.segregate(t),c=Object.entries(s.model).reduce((e,[a,n])=>{if(void 0===n)return e;const o=r.Model.columnName(t,a);if(this.isReserved(o))throw new i.InternalError(`Property name ${o} is reserved`);return e[o]=n,e},{});return a.silly(`Preparing record for ${n} table with pk ${t[o]}`),{record:c,id:t[o],transient:s.transient}}revert(t,e,a,n,...o){const{log:s}=this.logCtx(o,this.revert),c={};c[r.Model.pk(e)]=a;const l="string"==typeof e?r.Model.build(c,e):new e(c);s.silly(`Rebuilding model ${l.constructor.name} id ${a}`);const d=Object.keys(l).reduce((e,a)=>(e[a]=t[r.Model.columnName(e,a)],e),l);return n&&(s.debug("re-adding transient properties: "+Object.keys(n).join(", ")),Object.entries(n).forEach(([t,e])=>{if(t in d&&void 0!==d[t])throw new i.InternalError(`Transient property ${t} already exists on model ${l.constructor.name}. should be impossible`);d[t]=e})),d}createPrefix(t,a,i,...n){const{ctxArgs:o}=this.logCtx(n,this.createPrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,i),[t,a,s,...o]}updatePrefix(t,a,i,...n){const{ctxArgs:o}=this.logCtx(n,this.updatePrefix),s={};return s[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(s,i),[t,a,s,...o]}createAllPrefix(t,a,n,...o){if(a.length!==n.length)throw new i.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,i)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,n[i]),o});return[t,a,c,s]}updateAllPrefix(t,a,n,...o){if(a.length!==n.length)throw new i.InternalError("Ids and models must have the same length");const s=o.pop(),c=a.map((a,i)=>{const o={};return o[e.CouchDBKeys.TABLE]=r.Model.tableName(t),Object.assign(o,n[i]),o});return[t,a,c,s]}parseError(t,e){return v.parseError(e||t)}logCtx(t,e){return v.logCtx.call(this,t,e)}static logCtx(t,e){if(1>t.length)throw new i.InternalError("No context provided");const r=t.pop();if(!(r instanceof a.Context))throw new i.InternalError("No context provided");if(t.filter(t=>t instanceof a.Context).length>1)throw Error("here");const n=this?r.logger.for(this).for(e):r.logger.clear().for(this).for(e);return{ctx:r,log:e?n.for(e):n,stub:r.stub,identity:r.identity,ctxArgs:[...t,r]}}static parseError(t){const e="string"==typeof t?t:t.message;return e.includes(i.NotFoundError.name)?new i.NotFoundError(t):e.includes(i.ConflictError.name)?new i.ConflictError(t):e.includes(i.BadRequestError.name)?new i.BadRequestError(t):e.includes(a.QueryError.name)?new a.QueryError(t):e.includes(a.PagingError.name)?new a.PagingError(t):e.includes(a.UnsupportedError.name)?new a.UnsupportedError(t):e.includes(a.MigrationError.name)?new a.MigrationError(t):e.includes(a.ObserverError.name)?new a.ObserverError(t):e.includes(a.AuthorizationError.name)?new a.AuthorizationError(t):e.includes(a.ForbiddenError.name)?new a.ForbiddenError(t):e.includes(a.ConnectionError.name)?new a.ConnectionError(t):e.includes(i.SerializationError.name)?new i.SerializationError(t):e.includes("no ledger context")?new S("No context found. this can be caused by debugging: "+e):new i.InternalError(t)}static decoration(){super.decoration(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.CREATED_BY).define(i.onCreate(A),o.propMetadata(a.PersistenceKeys.CREATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.UPDATED_BY).define(i.onCreateUpdate(A),o.propMetadata(a.PersistenceKeys.UPDATED_BY,{})).apply(),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.COLUMN).extend(n.Property()).apply(),o.Decoration.flavouredAs(y).for(r.ValidationKeys.DATE).extend(()=>(t,e)=>{n.Property(e,"string:date")(t,e)}),o.Decoration.flavouredAs(y).for(a.PersistenceKeys.TABLE).extend(t=>{const e=[];let r="function"==typeof t?o.Metadata.constr(t):o.Metadata.constr(t.constructor);for(;r&&r!==Object&&r.prototype;)e.push(r),r=Object.getPrototypeOf(r);for(;e.length>0;){const t=e.pop();n.Object()(t)}return n.Object()(t)}).apply()}}v.decoration(),a.Adapter.setCurrent(y);class O extends r.JSONSerializer{constructor(){super()}preSerialize(t){const e=Object.assign({},t);let a;try{a=o.Metadata.modelName(t.constructor)}catch(t){a=void 0}e[r.ModelKeys.ANCHOR]=a||t.constructor.name;const i=function t(e){const r=this;return"object"!=typeof e?e:Array.isArray(e)?e.map(e=>t.call(r,e)):this.preSerialize.call(this,e)}.bind(this);return r.Model.relations(t).forEach(t=>{e[t]=i(e[t])}),e}deserialize(t){const e=JSON.parse(t),a=e[r.ModelKeys.ANCHOR];if(!a)throw Error("Could not find class reference in serialized model");return r.Model.build(e,a)}serialize(t){return require("json-stringify-deterministic")(require("sort-keys-recursive")(this.preSerialize(t)))}}n.Object()(Date);class k extends n.Contract{static{this.adapter=new v}static{this.serializer=new O}constructor(t,e){super(t),this.clazz=e,this.initialized=!1,this.repo=a.Repository.forModel(e)}async listBy(t,e,r,...a){const{ctxArgs:i,log:n}=await this.logCtx([...a,t],this.listBy);return n.info(`Running listBy key ${e}, order ${r} and args ${i}`),this.repo.listBy(e,r,...i)}async paginateBy(t,e,r,a={offset:1,limit:10},...i){const{ctxArgs:n,log:o}=await this.logCtx([...i,t],this.paginateBy);return o.info(`Running paginateBy key ${e}, order ${r} with size ${a.limit} and args ${n}`),this.repo.paginateBy(e,r,a,...n)}async findOneBy(t,e,r,...a){const{ctxArgs:i,log:n}=await this.logCtx([...a,t],this.findOneBy);return n.info(`Running findOneBy key ${e}, value: ${r} with args ${i}`),this.repo.findOneBy(e,r,...i)}async statement(t,e,...r){const{ctxArgs:a,log:i}=await this.logCtx([...r,t],this.statement);return i.info(`Running statement ${e} with args ${a}`),this.repo.statement(e,...a)}async create(t,e,...a){const{log:i,ctxArgs:n}=await this.logCtx([...a,t],this.create);i.info("CONTRACT CREATE, "+n),"string"==typeof e&&(e=this.deserialize(e)),i.info("Creating model: "+JSON.stringify(e));const o=this.getTransientData(t);return i.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.create(e,...n)}async read(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.read);return a.info(`reading entry with pk ${e} `),this.repo.read(e,...i)}getTransientData(t){const e=t.stub.getTransient();let r={};return e.has(this.repo.tableName)&&(r=JSON.parse(e.get(this.repo.tableName)?.toString("utf8"))),r}async update(t,e,...a){const{log:i,ctxArgs:n}=await this.logCtx([...a,t],this.update);"string"==typeof e&&(e=this.deserialize(e)),i.info("Updating model: "+JSON.stringify(e));const o=this.getTransientData(t);return i.info("Merging transient data..."),e=r.Model.merge(e,o,this.clazz),this.repo.update(e,...n)}async delete(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.delete);return a.info(`deleting entry with pk ${e} `),this.repo.delete(e+"",...i)}async deleteAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.deleteAll(e,...a)}async readAll(t,e,...r){const{ctxArgs:a}=await this.logCtx([...r,t],this.readAll);return"string"==typeof e&&(e=JSON.parse(e)),this.repo.readAll(e,...a)}async updateAll(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.updateAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`updating ${e.length} entries to the table`),this.repo.updateAll(e,...i)}async query(t,e,r,i=a.OrderDirection.ASC,n,o,...s){const{ctxArgs:c}=await this.logCtx([...s,t],this.query);return this.repo.query(e,r,i,n,o,...c)}async raw(t,e,r,...a){const{ctxArgs:i}=await this.logCtx([...a,t],this.raw);return k.adapter.raw(e,r,...i)}serialize(t){return k.serializer.serialize(t)}deserialize(t){return k.serializer.deserialize(t)}async init(t){const{log:e}=await this.logCtx([t],this.init);e.info(`Running contract ${this.getName()} initialization...`),this.initialized=!0,e.info("Contract initialization completed.")}async healthcheck(t){const{log:e}=await this.logCtx([t],this.healthcheck);return e.info(`Running Healthcheck: ${this.initialized}...`),{healthcheck:this.initialized}}async createAll(t,e,...r){const{log:a,ctxArgs:i}=await this.logCtx([...r,t],this.createAll);return"string"==typeof e&&(e=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t))),a.info(`adding ${e.length} entries to the table`),this.repo.createAll(e,...i)}async logCtx(t,e){return k.logCtx.bind(this)(t,e)}static async logCtx(t,e){if(1>t.length)throw new i.InternalError("No context provided");const r=t.pop();if(r instanceof l)return{ctx:r,log:r.logger.clear().for(this).for(e),ctxArgs:[...t,r],stub:r.stub,identity:r.identity};if(!(r instanceof n.Context))throw new i.InternalError("No valid context provided");const a={correlationId:r.stub.getTxID()},o=await k.adapter.context((()=>{if("string"==typeof e)return e;switch(e.name){case i.OperationKeys.CREATE:case i.OperationKeys.READ:case i.OperationKeys.UPDATE:case i.OperationKeys.DELETE:case i.BulkCrudOperationKeys.CREATE_ALL:case i.BulkCrudOperationKeys.READ_ALL:case i.BulkCrudOperationKeys.UPDATE_ALL:case i.BulkCrudOperationKeys.DELETE_ALL:}return e.name})(),a,this.clazz,r),s=this?o.logger.for(this).for(e):o.logger.clear().for(this).for(e);return{ctx:o,log:s,stub:o.stub,identity:o.identity,ctxArgs:[...t,o]}}}class N extends k{constructor(t,e){super(t,e)}async create(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.create);r.info("Creating model: "+e);const i=this.deserialize(e);r.info("Model deserialized: "+JSON.stringify(i));const n=await super.create(a,i);return this.serialize(n)}async read(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.read);return r.info("Reading id: "+e),this.serialize(await super.read(a,e))}async update(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.update);return r.info("Updating model: "+e),this.serialize(await super.update(a,e))}async delete(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.delete);return r.info("Deleting id: "+e),this.serialize(await super.delete(a,e))}async deleteAll(t,e){const r=JSON.parse(e),{log:a,ctx:i}=await this.logCtx([t],this.deleteAll);return a.info(`deleting ${r.length} entries from the table`),JSON.stringify((await super.deleteAll(i,r)).map(t=>this.serialize(t)))}async readAll(t,e){const r=JSON.parse(e),{log:a,ctx:i}=await this.logCtx([t],this.readAll);return a.info(`reading ${r.length} entries from the table`),JSON.stringify((await super.readAll(i,r)).map(t=>this.serialize(t)))}async updateAll(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.updateAll),i=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));return r.info(`Updating ${i.length} entries to the table`),JSON.stringify((await super.updateAll(a,i)).map(t=>this.serialize(t)))}async statement(t,e,r){const{ctx:a,log:n}=await this.logCtx([t],this.statement);try{r=JSON.parse(r)}catch(t){throw new i.SerializationError("Invalid args: "+t)}if(!Array.isArray(r))throw new i.SerializationError(`Invalid args: ${JSON.stringify(r)}. must be an array`);return n.info("calling prepared statement "+e),n.info("with args "+r),JSON.stringify(await super.statement(a,e,...r))}async listBy(t,e,r){const{ctx:a,log:i}=await this.logCtx([t],this.listBy);return i.info(`Executing listBy with key ${e} and order ${r}`),JSON.stringify(await super.listBy(a,e,r))}async paginateBy(t,e,r,a,...n){const{ctx:o,log:s}=await this.logCtx([...n,t],this.paginateBy);try{a=JSON.parse(a)}catch(t){throw new i.SerializationError("Failed to deserialize paginateBy reference: "+t)}return s.info(`Executing paginateBy with key ${e} and order ${r}`),JSON.stringify(await super.paginateBy(o,e,r,a,...n))}async findOneBy(t,e,r,...a){const{ctx:i,log:n}=await this.logCtx([...a,t],this.findOneBy);return n.info(`Executing findOneBy with key ${e} and value ${r}`),JSON.stringify(await super.findOneBy(i,e,r,...a))}async query(t,e,r,n,o,s){const{ctx:c,log:l}=await this.logCtx([t],this.query);let d;l.info(`Executing query orderedBy ${r} and order ${n}`);try{d=a.Condition.from(JSON.parse(e))}catch(t){throw new i.SerializationError("Invalid condition: "+t)}return l.info("Condition: "+JSON.stringify(d)),JSON.stringify(await super.query(c,d,r,n,o,s))}async init(t){await super.init(t)}async healthcheck(t){const{log:e,ctx:r}=await this.logCtx([t],this.updateAll);return e.debug(`Running Healthcheck: ${this.initialized}...`),JSON.stringify(await super.healthcheck(r))}async createAll(t,e){const{log:r}=await this.logCtx([t],this.createAll),a=JSON.parse(e).map(t=>this.deserialize(t)).map(t=>new this.clazz(t));r.info(`Adding ${a.length} entries to the table`);const i=await super.createAll(t,a);return JSON.stringify(i.map(t=>this.serialize(t)))}}function T(t,e){const r=t+e;if(t!==r-e||e!==r-t)throw new x(`Addition overflow: ${t} + ${e}`);return r}function P(t,e){const r=t-e;if(t!==r+e||e!==t-r)throw new x(`Subtraction overflow: ${t} - ${e}`);return r}c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"create",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"read",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"update",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"delete",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"deleteAll",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"readAll",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"updateAll",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"statement",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"listBy",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String,String,l]),c.__metadata("design:returntype",Promise)],N.prototype,"paginateBy",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String,String]),c.__metadata("design:returntype",Promise)],N.prototype,"findOneBy",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],N.prototype,"init",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],N.prototype,"healthcheck",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],N.prototype,"createAll",null);let z=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],z.prototype,"name",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],z.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],z.prototype,"symbol",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],z.prototype,"decimals",void 0),z=c.__decorate([a.table("erc20_tokens"),r.model(),c.__metadata("design:paramtypes",[Object])],z);let B=class extends a.BaseModel{constructor(t){super(t)}};c.__decorate([a.pk({type:"String"}),c.__metadata("design:type",String)],B.prototype,"id",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],B.prototype,"token",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],B.prototype,"balance",void 0),c.__decorate([a.column(),c.__metadata("design:type",String)],B.prototype,"captive",void 0),B=c.__decorate([a.table("erc20_wallets"),r.model(),c.__metadata("design:paramtypes",[Object])],B);let R=class extends a.BaseModel{constructor(t){super(t)}};function D(){return function(t,e,r){const n=r.value;return r.value=async function(...t){const r=t[0],o=r.clientIdentity.getID(),s=await this.tokenRepository.select(),c=await s.execute(r);if(0==c.length)throw new i.NotFoundError("No tokens avaialble");if(c.length>1)throw new i.NotFoundError("To many token available : "+c.length);if(c[0].owner!=o)throw new a.AuthorizationError(`User not authorized to run ${e} on the token`);return await n.apply(this,t)},r}}var I;c.__decorate([a.pk({type:"String"}),a.column(),r.required(),c.__metadata("design:type",String)],R.prototype,"owner",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",String)],R.prototype,"spender",void 0),c.__decorate([a.column(),r.required(),c.__metadata("design:type",Number)],R.prototype,"value",void 0),R=c.__decorate([a.table("erc20_allowances"),r.model(),c.__metadata("design:paramtypes",[Object])],R),(t=>{t.TRANSFER="Transfer",t.APPROVAL="Approval"})(I||(I={}));class $ extends k{constructor(t){super(t,B),$.adapter=$.adapter||new v,this.walletRepository=u.forModel(B,$.adapter.alias),this.tokenRepository=u.forModel(z,$.adapter.alias),this.allowanceRepository=u.forModel(R,$.adapter.alias)}async TokenName(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].name}async Symbol(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].symbol}async Decimals(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.tokenRepository.select();return(await r.execute(e))[0].decimals}async TotalSupply(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=this.walletRepository.select(),a=await r.execute(e);if(0==a.length)throw new i.NotFoundError(`The token ${this.getName()} does not exist`);let n=0;return a.forEach(t=>{n+=t.balance}),n}async BalanceOf(t,e){const{ctx:r}=await this.logCtx([t],this.TokenName);return await this.CheckInitialized(r),(await this.walletRepository.read(e,r)).balance}async Transfer(t,e,r){const{ctx:a}=await this.logCtx([t],this.Transfer);await this.CheckInitialized(a);const n=a.identity.getID();if(!await this._transfer(n,e,r,a))throw new i.InternalError("Failed to transfer");return!0}async TransferFrom(t,e,r,a){const{ctx:n}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(n);const o=n.identity.getID(),s=await this._getAllowance(e,o,n);if(!s||0>s.value)throw new C(`spender ${o} has no allowance from ${e}`);const c=s.value;if(a>c)throw new b("The spender does not have enough allowance to spend.");const l=P(c,a),d=Object.assign({},s,{value:l});if(await this.allowanceRepository.update(d,n),!await this._transfer(e,r,a,n))throw new i.InternalError("Failed to transfer");return!0}async _transfer(t,e,r,n){const o=n.logger;if(t===e)throw new a.AuthorizationError("cannot transfer to and from same client account");if(0>r)throw new b("transfer amount cannot be negative");const s=await this.walletRepository.read(t,n),c=s.balance;if(r>c)throw new b(`client account ${t} has insufficient funds.`);let l,d=!1;try{l=await this.walletRepository.read(e,n)}catch(t){if(!(t instanceof i.BaseError))throw new i.InternalError(t);if(404!==t.code)throw new i.InternalError(t.message);l=new B({id:e,balance:0,token:await this.TokenName(n)}),d=!0}const u=l.balance,p=P(c,r),g=T(u,r),h=Object.assign({},s,{balance:p});await this.walletRepository.update(h,n);const y=Object.assign({},l,{balance:g});d?await this.walletRepository.create(y,n):await this.walletRepository.update(y,n);const m={from:t,to:e,value:r};return this.repo.refresh(z,I.TRANSFER,"",m,n).catch(t=>o.error("Failed to notify transfer: "+t)),!0}async Approve(t,e,r){const{ctx:a,ctxArgs:i}=await this.logCtx([t],this.Approve);await this.CheckInitialized(a);const n=a.identity.getID();let o=await this._getAllowance(n,e,a);if((await this.walletRepository.read(n,...i)).balance<r)throw new b(`client account ${n} has insufficient funds.`);o?(o.value=r,await this.allowanceRepository.update(o,...i)):(o=new R({owner:n,spender:e,value:r}),await this.allowanceRepository.create(o,...i));const s={owner:n,spender:e,value:r};return this.repo.refresh(z,I.APPROVAL,"",s,a),!0}async Allowance(t,e,r){const{ctx:a}=await this.logCtx([t],this.Allowance);await this.CheckInitialized(a);const i=await this._getAllowance(e,r,a);if(!i)throw new C(`spender ${r} has no allowance from ${e}`);return i.value}async _getAllowance(t,e,r){const i=a.Condition.and(a.Condition.attribute("owner").eq(t),a.Condition.attribute("spender").eq(e)),n=await this.allowanceRepository.select().where(i).execute(r);return n?.[0]}async Initialize(t,e){const{ctx:r}=await this.logCtx([t],this.Initialize);if((await this.tokenRepository.select().execute(r)).length>0)throw new a.AuthorizationError("contract options are already set, client is not authorized to change them");return e.owner=r.identity.getID(),await this.tokenRepository.create(e,r),!0}async CheckInitialized(t){const{ctx:e}=await this.logCtx([t],this.CheckInitialized);if(0==(await this.tokenRepository.select().execute(e)).length)throw new E("contract options need to be set before calling any function, call Initialize() to initialize contract")}async Mint(t,e){const{ctx:r}=await this.logCtx([t],this.Mint);await this.CheckInitialized(r);const a=r.identity.getID();if(0>=e)throw new i.ValidationError("mint amount must be a positive integer");let n;try{n=await this.walletRepository.read(a,r);const t=T(n.balance,e),i=Object.assign({},n,{balance:t});await this.walletRepository.update(i,r)}catch(n){if(!(n instanceof i.BaseError))throw new i.InternalError(n);if(404!==n.code)throw new i.InternalError(n.message);{const i=new B({id:a,balance:e,token:await this.TokenName(t)});await this.walletRepository.create(i,r)}}const o={from:"0x0",to:a,value:e};this.repo.ObserverHandler().updateObservers(z,I.TRANSFER,"",o,r)}async Burn(t,e){const{log:r,ctx:a}=await this.logCtx([t],this.Burn);await this.CheckInitialized(a);const i=a.identity.getID(),n=await this.walletRepository.read(i,a),o=n.balance;if(e>o)throw new b("Minter has insufficient funds.");const s=P(o,e),c=Object.assign({},n,{balance:s});await this.walletRepository.update(c,a),r.info(e+" tokens were burned");const l={from:i,to:"0x0",value:e};this.repo.ObserverHandler().updateObservers(z,I.TRANSFER,"",l,a)}async BurnFrom(t,e,r){const{log:a,ctx:i}=await this.logCtx([t],this.BurnFrom);await this.CheckInitialized(i);const n=await this.walletRepository.read(e,i),o=n.balance;if(r>o)throw new b(e+" has insufficient funds.");const s=P(o,r),c=Object.assign({},n,{balance:s});await this.walletRepository.update(c,i),a.info(`${r} tokens were burned from ${e}`);const l={from:e,to:"0x0",value:r};this.repo.ObserverHandler().updateObservers(z,I.TRANSFER,"",l,i)}async ClientAccountBalance(t){const{ctx:e}=await this.logCtx([t],this.TokenName);await this.CheckInitialized(e);const r=e.identity.getID(),a=await this.walletRepository.read(r,e);if(!a)throw new b(`The account ${r} does not exist`);return a.balance}async ClientAccountID(t){const{ctx:e}=await this.logCtx([t],this.ClientAccountID);return await this.CheckInitialized(e),e.identity.getID()}}c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],$.prototype,"TokenName",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],$.prototype,"Symbol",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],$.prototype,"Decimals",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],$.prototype,"TotalSupply",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String]),c.__metadata("design:returntype",Promise)],$.prototype,"BalanceOf",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,Number]),c.__metadata("design:returntype",Promise)],$.prototype,"Transfer",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String,Number]),c.__metadata("design:returntype",Promise)],$.prototype,"TransferFrom",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,Number]),c.__metadata("design:returntype",Promise)],$.prototype,"Approve",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,String]),c.__metadata("design:returntype",Promise)],$.prototype,"Allowance",null),c.__decorate([n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,z]),c.__metadata("design:returntype",Promise)],$.prototype,"Initialize",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],$.prototype,"CheckInitialized",null),c.__decorate([D(),n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,Number]),c.__metadata("design:returntype",Promise)],$.prototype,"Mint",null),c.__decorate([D(),n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,Number]),c.__metadata("design:returntype",Promise)],$.prototype,"Burn",null),c.__decorate([D(),n.Transaction(),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context,String,Number]),c.__metadata("design:returntype",Promise)],$.prototype,"BurnFrom",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],$.prototype,"ClientAccountBalance",null),c.__decorate([n.Transaction(!1),c.__metadata("design:type",Function),c.__metadata("design:paramtypes",[n.Context]),c.__metadata("design:returntype",Promise)],$.prototype,"ClientAccountID",null);const F=[$],M="##VERSION##",q="##PACKAGE##";o.Metadata.registerLibrary(q,M),t.ContractLogger=w,t.FabricContractAdapter=v,t.FabricContractContext=l,t.FabricContractPaginator=_,t.FabricContractRepository=u,t.FabricContractRepositoryObservableHandler=d,t.FabricContractSequence=f,t.FabricCrudContract=k,t.FabricStatement=p,t.PACKAGE_NAME=q,t.SerializedCrudContract=N,t.VERSION=M,t.contracts=F,t.createdByOnFabricCreateUpdate=A,t.pkFabricOnCreate=async function(t,e,a,n){if(!e.type||n[a])return;let o;e.name||(e.name=r.Model.sequenceName(n,"pk"));try{o=await this.adapter.Sequence(e)}catch(t){throw new i.InternalError(`Failed to instantiate Sequence ${e.name}: ${t}`)}const s=await o.next(t);Object.defineProperty(n,a,{enumerable:!0,writable:!1,configurable:!0,value:s})}},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/for-couchdb"),require("@decaf-ts/decorator-validation"),require("@decaf-ts/core"),require("@decaf-ts/db-decorators"),require("fabric-contract-api"),require("@decaf-ts/decoration"),require("@decaf-ts/logging"),require("tslib")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/for-couchdb","@decaf-ts/decorator-validation","@decaf-ts/core","@decaf-ts/db-decorators","fabric-contract-api","@decaf-ts/decoration","@decaf-ts/logging","tslib"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["for-fabric"]={},t.decafTsForCouchdb,t.decafTsDecoratorValidation,t.decafTsCore,t.decafTsDbDecorators,t.fabricContractApi,t.decafTsDecoration,t.decafTsLogging,t.tslib);
2
2
  //# sourceMappingURL=for-fabric.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/logging.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractPaginator.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/errors.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","Object","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","createAllPrefix","models","contextArgs","class","context","logger","for","ignoreValidate","length","opts","Model","sequenceFor","info","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","paginateBy","key","order","ref","offset","limit","bookmark","QueryError","PreparedStatementKeys","PAGE_BY","ctxArgs","paginator","verbose","tableName","override","select","where","attr","gt","orderBy","paginate","paged","page","serialize","statement","statements","PersistenceKeys","STATEMENT","result","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","offsetSelector","skip","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","parse","model","putAnchor","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","undefined","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","silly","createLog","Logging","setFactory","object","FabricContractSequence","options","current","READ","SequenceModel","startWith","sequence","repo","read","NotFoundError","increment","count","incrementBy","next","toIncrementBy","Number","BigInt","String","Serial","instance","generate","UUID","seq","update","create","ConflictError","argz","UnsupportedError","typeName","FabricContractPaginator","CouchDBPaginator","size","prepare","rawStatement","isPreparedStatement","pagePrepared","_recordCount","_totalPages","Math","ceil","validatePage","_bookmark","PagingError","docs","d","revert","parseValue","direction","OrderDirection","DSC","ASC","_currentPage","createdByOnFabricCreateUpdate","data","user","getID","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","Paginator","scope","alias","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","res","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","done","Reflect","SerializationError","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","index","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","updateAll","split","segregate","mappedProp","columnName","isReserved","record","transient","ob","createPrefix","updatePrefix","records","updateAllPrefix","reason","filter","a","clear","message","BadRequestError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","Property","ValidationKeys","DATE","chain","constr","prototype","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","self","o","bind","deserialization","className","Date","FabricCrudContract","Contract","initialized","forModel","listBy","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","getName","healthcheck","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","__decorate","Transaction","__metadata","OverflowError","BalanceError","AllowanceError","NotInitializedError","add","b","c","sub","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","contracts","VERSION","PACKAGE_NAME","registerLibrary","defineProperty","enumerable","writable","configurable"],"mappings":"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"}
1
+ {"version":3,"file":"for-fabric.cjs","sources":["../src/contracts/ContractContext.ts","../src/contracts/FabricContractRepositoryObservableHandler.ts","../src/shared/events.ts","../src/contracts/FabricContractRepository.ts","../src/contracts/FabricContractStatement.ts","../src/shared/constants.ts","../src/shared/SimpleDeterministicSerializer.ts","../src/contracts/logging.ts","../src/contracts/FabricContractSequence.ts","../src/contracts/FabricContractPaginator.ts","../src/shared/errors.ts","../src/contracts/ContractAdapter.ts","../src/shared/DeterministicSerializer.ts","../src/contracts/crud/crud-contract.ts","../src/contracts/crud/serialized-crud-contract.ts","../src/shared/math.ts","../src/contracts/erc20/models.ts","../src/shared/decorators.ts","../src/shared/erc20/erc20-constants.ts","../src/contracts/erc20/erc20contract.ts","../src/contracts/erc20/index.ts","../src/version.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["FabricContractContext","Context","constructor","super","stub","this","get","timestamp","getDateTimestamp","identity","toString","FabricContractRepositoryObservableHandler","ObserverHandler","supportedEvents","OperationKeys","CREATE","UPDATE","DELETE","BulkCrudOperationKeys","CREATE_ALL","UPDATE_ALL","DELETE_ALL","updateObservers","clazz","event","id","args","log","ctx","Adapter","logCtx","owner","payload","table","name","indexOf","debug","eventName","params","push","join","generateFabricEventName","setEvent","Buffer","from","JSON","stringify","FabricContractRepository","Repository","adapter","trackedEvents","_overrides","Object","assign","ignoreValidation","ignoreHandlers","allowRawStatements","forcePrepareSimpleQueries","forcePrepareComplexQueries","createAllPrefix","models","contextArgs","class","context","logger","for","ignoreValidate","length","opts","Model","sequenceFor","info","ids","type","sequenceName","Sequence","range","map","m","i","pk","InternalError","Promise","all","async","generated","enforceDBDecorators","ON","ignoredProps","errors","resolve","hasErrors","errorMessages","reduceErrorsToPrint","ValidationError","paginateBy","key","order","ref","offset","limit","bookmark","QueryError","PreparedStatementKeys","PAGE_BY","ctxArgs","paginator","verbose","tableName","override","select","where","attr","gt","orderBy","paginate","paged","page","serialize","statement","statements","PersistenceKeys","STATEMENT","result","e","BaseError","FabricStatement","CouchDBStatement","raw","rawInput","results","pkAttr","fromSelector","Metadata","DBKeys","ID","selectSelector","r","processRecord","build","selectors","CouchDBKeys","TABLE","query","selector","fields","whereCondition","condition","parseCondition","Condition","and","attribute","eq","selectorKeys","keys","values","CouchDBGroupOperator","AND","reduce","accum","val","Error","k","OR","s","entries","forEach","orderBySelector","sort","value","rec","CouchDBOperator","BIGGER","limitSelector","offsetSelector","skip","FabricModelKeys","IdentityType","FabricFlavour","SimpleDeterministicSerializer","JSONSerializer","deserialize","str","parse","model","putAnchor","require","sortKeysRecursive","preSerialize","toSerialize","metadata","modelName","error","undefined","obj","Array","isArray","ModelKeys","ANCHOR","relations","call","ContractLogger","MiniLogger","conf","logging","getLogger","level","msg","stack","NumericLogLevels","config","method","LogLevel","silly","createLog","Logging","setFactory","object","FabricContractSequence","options","current","READ","SequenceModel","startWith","sequence","repo","read","NotFoundError","increment","count","incrementBy","next","toIncrementBy","Number","BigInt","String","Serial","instance","generate","UUID","seq","update","create","ConflictError","argz","UnsupportedError","typeName","FabricContractPaginator","CouchDBPaginator","size","prepare","rawStatement","isPreparedStatement","pagePrepared","_recordCount","_totalPages","Math","ceil","validatePage","_bookmark","PagingError","docs","d","revert","parseValue","direction","OrderDirection","DSC","ASC","_currentPage","OverflowError","BalanceError","AllowanceError","MissingContextError","NotInitializedError","createdByOnFabricCreateUpdate","data","user","getID","FabricContractAdapter","CouchDBAdapter","getClient","textDecoder","TextDecoder","serializer","repository","Paginator","scope","alias","composedKey","createCompositeKey","putState","parseError","readState","delete","deleteState","forPrivate","collection","toOverride","queryResult","queryResultPaginated","fn","Proxy","target","prop","receiver","includes","apply","thisArg","argsList","putPrivateData","deletePrivateData","getPrivateData","getPrivateDataQueryResult","iterator","reachedBookmark","lastKey","res","recordKey","recordValue","Key","Record","close","fetchedRecordsCount","done","Reflect","SerializationError","getState","getQueryResult","_id","$gt","$gte","getQueryResultWithPagination","mergeModels","extract","finalModel","pop","decode","buffer","flags","operation","baseFlags","segregated","correlationId","getTxID","clientIdentity","index","resultIterator","isHistory","allResults","jsonRes","TxId","txId","Timestamp","Value","err","docsOnly","Statement","createAll","tableLabel","updateAll","split","segregate","mappedProp","columnName","isReserved","record","transient","ob","createPrefix","updatePrefix","records","updateAllPrefix","reason","filter","a","clear","message","BadRequestError","MigrationError","ObserverError","AuthorizationError","ForbiddenError","ConnectionError","decoration","Decoration","flavouredAs","CREATED_BY","define","onCreate","propMetadata","UPDATED_BY","onCreateUpdate","COLUMN","extend","FabricProperty","Property","ValidationKeys","DATE","chain","constr","prototype","getPrototypeOf","FabricObject","setCurrent","DeterministicSerializer","self","o","bind","deserialization","className","Date","FabricCrudContract","Contract","initialized","forModel","listBy","findOneBy","getTransientData","merge","transientMap","getTransient","has","deleteAll","readAll","init","getName","healthcheck","Ctx","overrides","READ_ALL","getOp","SerializedCrudContract","parsedKeys","modelList","cond","add","b","c","sub","__decorate","Transaction","__metadata","ERC20Token","BaseModel","column","required","ERC20Wallet","Allowance","Owner","propertyKey","descriptor","originalMethod","acountId","tokens","execute","ERC20Events","FabricERC20Contract","walletRepository","tokenRepository","allowanceRepository","TokenName","CheckInitialized","Symbol","symbol","Decimals","decimals","TotalSupply","wallets","total","wallet","balance","BalanceOf","Transfer","to","_transfer","TransferFrom","BurnFrom","spender","allowance","_getAllowance","currentAllowance","updatedAllowance","newAllowance","fromWallet","fromBalance","toWallet","newToWallet","code","token","toBalance","fromUpdatedBalance","toUpdatedBalance","updatedFromWallet","updatedToWallet","transferEvent","refresh","TRANSFER","catch","Approve","approvalEvent","APPROVAL","allowanceCondition","Initialize","Mint","amount","minter","minterWallet","updatedBalance","updatedminter","newWallet","Burn","currentBalance","account","accountWallet","updatedaccount","ClientAccountBalance","clientAccountID","clientWallet","ClientAccountID","contracts","VERSION","PACKAGE_NAME","registerLibrary","defineProperty","enumerable","writable","configurable"],"mappings":"0DAkCM,MAAOA,UAA8BC,EAAAA,QAKzC,WAAAC,GACEC,OACD,CAOD,QAAIC,GACF,OAAOC,KAAKC,IAAI,OACjB,CAOD,aAAaC,GACX,OAAOF,KAAKD,KAAKI,kBAClB,CAOD,YAAIC,GACF,OAAOJ,KAAKC,IAAI,WACjB,CAEQ,QAAAI,GACP,MAAO,cAAaL,KAAKD,KAAO,aAAe,eAChD,EC1BG,MAAOO,UAAkDC,EAAAA,gBAM7D,WAAAV,CACUW,EAIF,CACJC,EAAAA,cAAcC,OACdD,EAAAA,cAAcE,OACdF,EAAAA,cAAcG,OACdC,EAAAA,sBAAsBC,WACtBD,EAAAA,sBAAsBE,WACtBF,EAAAA,sBAAsBG,aAGxBlB,QAbQE,KAAeQ,gBAAfA,CAcT,CAeQ,qBAAMS,CACbC,EACAC,EACAC,KACGC,GAEH,MAAMC,IAAEA,EAAGC,IAAEA,GAAQC,EAAAA,QAAQC,OAC3BJ,EACArB,KAAKiB,kBAEDlB,KAAEA,GAASwB,GACVG,EAAOC,GAAWN,EACnBO,EAAyB,iBAAVV,EAAqBA,EAAQA,EAAMW,KACxD,IAA6C,IAAzC7B,KAAKQ,gBAAgBsB,QAAQX,GAAe,CAC9CG,EAAIS,MAAM,YAAYZ,WACtB,MAAMa,ICpFVJ,EACAT,EACAO,KAEA,MAAMO,EAAS,CAACL,EAAOT,GAEvB,OADIO,GAAOO,EAAOC,KAAKR,GAChBO,EAAOE,KAAK,IACrB,ED6EwBC,CAAwBR,EAAOT,EAAOO,GACxD3B,EAAKsC,SAASL,EAAWM,OAAOC,KAAKC,KAAKC,UAAU,CAAErB,GAAIA,KAC3D,MACCrB,EAAKsC,SAASlB,EAAOmB,OAAOC,KAAKC,KAAKC,UAAUd,IAEnD,EERG,MAAOe,UAAkDC,EAAAA,WAY7D,WAAA9C,CACE+C,EACA1B,EACU2B,GAEV/C,MAAM8C,EAAS1B,GAFLlB,KAAa6C,cAAbA,EAXO7C,KAAU8C,WAAGC,OAAOC,OAAO,CAAA,EAAIlD,MAAkB,WAAG,CACrEmD,kBAAkB,EAClBC,gBAAgB,EAChBC,oBAAoB,EACpBC,2BAA2B,EAC3BC,4BAA4B,GAS7B,CAEkB,qBAAMC,CACvBC,KACGlC,GAEH,MAAMmC,QAAoB5D,EAAOA,QAACyB,KAChCZ,EAAaA,cAACC,OACdV,KAAKyD,MACLpC,EACArB,KAAK4C,QACL5C,KAAK8C,YAAc,CAAE,GAEjBxB,EAAMkC,EAAYE,QAAQC,OAAOC,IAAI5D,KAAKsD,iBAC1CJ,EAAiBM,EAAYE,QAAQzD,IAAI,kBACzC4D,EAAiBL,EAAYE,QAAQzD,IAAI,oBAC/C,IAAKsD,EAAOO,OAAQ,MAAO,CAACP,KAAWC,EAAYnC,MACnD,MAAM0C,EAAOC,EAAAA,MAAMC,YAAYV,EAAO,IACtCjC,EAAI4C,KAAK,qBAAqB1B,KAAKC,UAAUsB,IAC7C,IAAII,EAAgD,GA2CpD,GA1CIJ,EAAKK,MACFL,EAAKlC,OAAMkC,EAAKlC,KAAOmC,QAAMK,aAAad,EAAO,GAAI,OAC1DY,cACQnE,KAAK4C,QAAQ0B,SAASP,IAC5BQ,MAAMhB,EAAOO,UAAWN,EAAYnC,MACtCC,EAAI4C,KAAK,iBAAiBC,IAE1BA,EAAMZ,EAAOiB,IAAI,CAACC,EAAGC,KACnB,QAA0B,IAAfD,EAAEzE,KAAK2E,IAChB,MAAM,IAAIC,EAAAA,cACR,oDAAoDF,GAExD,OAAOD,EAAEzE,KAAK2E,MAIlBpB,QAAesB,QAAQC,IACrBvB,EAAOiB,IAAIO,MAAON,EAAGC,KACnBD,EAAI,IAAIzE,KAAKyD,MAAMgB,GACfV,EAAKK,OACPK,EAAEzE,KAAK2E,IACS,WAAdZ,EAAKK,MAEDL,EAAKiB,UADLb,EAAIO,GAGF,GAAGD,EAAEzE,KAAK2E,KAIpBrD,EAAI4C,KAAK,kBAAkB1B,KAAKC,UAAUgC,IACrCvB,SACG+B,EAAmBA,oBACvBjF,KACAwD,EAAYE,QACZe,EACAhE,EAAAA,cAAcC,OACdD,gBAAcyE,IAEXT,MAINZ,EAAgB,CACnB,MAAMsB,EACJ3B,EAAYE,QAAQzD,IAAI,gCAAkC,GAEtDmF,QAAeP,QAAQC,IAC3BvB,EAAOiB,IAAKC,GAAMI,QAAQQ,QAAQZ,EAAEa,aAAaH,MAG7CI,EAAgBC,sBAAoBJ,GAE1C,GAAIG,EAAe,MAAM,IAAIE,EAAAA,gBAAgBF,EAC9C,CACD,MAAO,CAAChC,KAAWC,EAAYnC,KAChC,CAEQ,gBAAMqE,CACbC,EACAC,EACAC,EAA+C,CAC7CC,OAAQ,EACRC,MAAO,OAEN1E,GAGH,IAAIyE,OAAEA,EAAME,SAAEA,EAAQD,MAAEA,GAAUF,EAClC,IAAKC,IAAWE,EACd,MAAM,IAAIC,EAAUA,WAAC,yCACvB,MAAMzC,QAAoB5D,EAAOA,QAACyB,KAChC6E,EAAqBA,sBAACC,QACtBnG,KAAKyD,MACLpC,EACArB,KAAK4C,QACL5C,KAAK8C,YAAc,CAAE,IAEjBxB,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAO+B,EAAYnC,KAAMrB,KAAK0F,YAK5D,IAAIW,EACJ,GALA/E,EAAIgF,QACF,cAActC,EAAKA,MAACuC,UAAUvG,KAAKyD,yBAAyBsC,KAI1DC,EACFK,QAAkBrG,KAAKwG,SAAS,CAC9BnD,4BAA4B,EAC5BD,2BAA2B,IAE1BqD,SACAC,MAAM1G,KAAK2G,KAAK3C,EAAAA,MAAMW,GAAG3E,KAAKyD,QAAQmD,GAAGZ,IACzCa,QAAQ,CAAClB,EAAKC,IACdkB,SAASf,KAAoBK,GAChCN,EAAS,MACJ,KAAIA,EAST,MAAM,IAAIG,EAAUA,WAAC,yCARrBI,QAAkBrG,KAAKwG,SAAS,CAC9BnD,4BAA4B,EAC5BD,2BAA2B,IAE1BqD,SACAI,QAAQ,CAAClB,EAAKC,IACdkB,SAASf,KAAoBK,EAGjC,CACD,MAAMW,QAAcV,EAAUW,KAAKlB,KAAWM,GAC9C,OAAOC,EAAUY,UAAUF,EAC5B,CAEQ,eAAMG,CACbrF,KACGR,GAEH,IAAKsB,EAAUA,WAACwE,WAAWnH,KAAM6B,GAC/B,MAAM,IAAIoE,EAAAA,WAAW,wCAAwCpE,GAC/D,MAAM2B,QAAoB5D,EAAOA,QAACyB,KAChC+F,EAAeA,gBAACC,UAChBrH,KAAKyD,MACLpC,EACArB,KAAK4C,QACL5C,KAAK8C,YAAc,CAAE,GAEnBU,EAAYE,QAAQC,QACtBH,EAAYE,QAAQC,OAAOO,KAAK,mBAAmBrC,OAAUR,KAE/D,MAAMC,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAO+B,EAAYnC,KAAMrB,KAAKkH,WAG5D,IAAII,EAFJhG,EAAIgF,QAAQ,gCAAgCzE,eAAkBuE,KAG9D,IACEkB,QAAgBtH,KAAa6B,MAASuE,EACvC,CAAC,MAAOmB,GACP,GAAIA,aAAaC,EAASA,UAAE,MAAMD,EAClC,MAAM,IAAI3C,EAAAA,cACR,wCAAwC/C,eAAkBuE,MAAYmB,IAEzE,CAED,OAAOD,CACR,CAOQ,eAAA/G,GACP,OAAO,IAAID,CACZ,CAYQ,qBAAMW,CACbW,EACAT,EACAC,KACGC,GAEH,IAAKrB,KAAK6C,gBAAwD,IAAvC7C,KAAK6C,cAAcf,QAAQX,GACpD,aAAarB,MAAMmB,gBAAgBW,EAAOT,EAAOC,KAAOC,EAC3D,ECnQG,MAAOoG,UAA4CC,EAAAA,iBAKvD,WAAA7H,CAAY+C,GACV9C,MAAM8C,EACP,CAEQ,SAAM+E,CAAOC,KAAyBvG,GAC7C,MAAME,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAK2H,KAEjCE,QAAuB7H,KAAK4C,QAAQ+E,IAAIC,GAAU,EAAMrG,GAExDuG,EAAS9D,EAAKA,MAACW,GAAG3E,KAAK+H,cACvB3D,EAAO4D,EAAQA,SAAC/H,IACpBD,KAAK+H,aACLC,EAAAA,SAASrC,IAAIsC,EAAMA,OAACC,GAAIJ,KACvB1D,KAEH,OAAKpE,KAAKmI,eAEHN,EADEA,EAAQrD,IAAK4D,GAAMpI,KAAKqI,cAAcD,EAAGN,EAAQ1D,EAAM7C,GAEjE,CAEQ,KAAA+G,GACP,MAAMC,EAA2B,CAAA,EACjCA,EAAUC,EAAWA,YAACC,OAAS,GAC/BF,EAAUC,EAAWA,YAACC,OAASzE,EAAKA,MAACuC,UAAUvG,KAAK+H,cACpD,MAAMW,EAAoB,CAAEC,SAAUJ,GAGtC,GAFIvI,KAAKmI,iBAAgBO,EAAME,OAAS5I,KAAKmI,gBAEzCnI,KAAK6I,eAAgB,CACvB,MAAMC,EAA2B9I,KAAK+I,eACpCC,EAAAA,UAAUC,IACRjJ,KAAK6I,eACLG,EAAAA,UAAUE,UAAaV,EAAWA,YAACC,OAAkBU,GACnDT,EAAMC,SAASH,EAAWA,YAACC,UAG/BE,SACIS,EAAerG,OAAOsG,KAAKP,GACjC,GAC0B,IAAxBM,EAAatF,SACqD,IAAlEf,OAAOuG,OAAOC,EAAAA,sBAAsBzH,QAAQsH,EAAa,IAEzD,OAAQA,EAAa,IACnB,KAAKG,EAAoBA,qBAACC,IACxBV,EAAUS,EAAAA,qBAAqBC,KAAO,IACjCzG,OAAOuG,OACRR,EAAUS,EAAoBA,qBAACC,MAC/BC,OAAO,CAACC,EAAwBC,KAChC,MAAMN,EAAOtG,OAAOsG,KAAKM,GACzB,GAAoB,IAAhBN,EAAKvF,OACP,MAAU8F,MACR,kDAEJ,MAAMC,EAAIR,EAAK,GAIf,OAHIQ,IAAMN,EAAAA,qBAAqBC,IAC7BE,EAAMxH,QAASyH,EAAIE,IAChBH,EAAMxH,KAAKyH,GACTD,GACN,KAELhB,EAAMC,SAAWG,EACjB,MACF,KAAKS,EAAAA,qBAAqBO,GAAI,CAC5B,MAAMC,EAAsB,CAAA,EAC5BA,EAAER,EAAAA,qBAAqBC,KAAO,CAC5BV,KACG/F,OAAOiH,QAAQtB,EAAMC,UAAUnE,IAAI,EAAEmB,EAAKgE,MAC3C,MAAMrC,EAA2B,CAAA,EAEjC,OADAA,EAAO3B,GAAOgE,EACPrC,KAGXoB,EAAMC,SAAWoB,EACjB,KACD,CACD,QACE,MAAUH,MAAM,kCAGpB7G,OAAOiH,QAAQlB,GAAWmB,QAAQ,EAAEtE,EAAKgE,MACnCjB,EAAMC,SAAShD,GAInB+C,EAAMC,SAAShD,GAAOgE,GAG3B,CAED,GAAI3J,KAAKkK,gBAAiB,CACxBxB,EAAMyB,KAAOzB,EAAMyB,MAAQ,GAC3BzB,EAAMC,SAAWD,EAAMC,UAAa,CAAA,EACpC,MAAOA,EAAUyB,GAASpK,KAAKkK,gBAIzBG,EAAW,CAAA,EACjBA,EAAI1B,GAAYyB,EACf1B,EAAMyB,KAAejI,KAAKmI,GACtB3B,EAAMC,SAASA,KAClBD,EAAMC,SAASA,GAAY,GAC1BD,EAAMC,SAASA,GAA4B2B,EAAAA,gBAAgBC,QAC1D,KAEL,CAMD,OAJIvK,KAAKwK,gBAAe9B,EAAM3C,MAAQ/F,KAAKwK,eAEvCxK,KAAKyK,iBAAgB/B,EAAMgC,KAAO1K,KAAKyK,gBAEpC/B,CACR,ECpJH,IAAYiC,EAgBAC,EAhBZ,CAAYD,IAEVA,EAAA,QAAA,UACAA,EAAA,OAAA,SAEAA,EAAA,OAAA,UACAA,EAAA,QAAA,WACAA,EAAA,eAAA,gBACD,EARD,CAAYA,IAAAA,EAQX,CAAA,IAQD,CAAYC,IAEVA,EAAA,KAAA,OACD,EAHD,CAAYA,IAAAA,EAGX,CAAA,IAQM,MAAMC,EAAgB,aC3BvB,MAAOC,UAEHC,EAAAA,eACR,WAAAlL,GACEC,OACD,CAGQ,WAAAkL,CAAYC,EAAa1E,GAyBhC,OAxBwB/D,KAAK0I,MAAMD,EAyBpC,CAEQ,SAAAhE,CAAUkE,EAAUC,GAAY,GAMvC,OAJkBC,QAAQ,+BAInB5I,CAFmB4I,QAAQ,sBAEjBC,CADQtL,KAAKuL,aAAaJ,EAAOC,IAEnD,CAEkB,YAAAG,CAAaJ,EAAUC,GAAqB,GAG7D,MAAMI,EAAmCzI,OAAOC,OAAO,CAAE,EAAEmI,GAC3D,IAAIM,EACJ,IACEA,EAAWzD,EAAAA,SAAS0D,UAAUP,EAAMtL,YAErC,CAAC,MAAO8L,GACPF,OAAWG,CACZ,CAID,SAASL,EAEPM,GAEA,MAAmB,iBAARA,EAAyBA,EAChCC,MAAMC,QAAQF,GAAaA,EAAIrH,IAAI+G,GAChCvL,KAAKuL,aAAaM,EAC1B,CAID,OAdIT,IACFI,EAAYQ,EAASA,UAACC,QAAUR,GAAYN,EAAMtL,YAAYgC,MAUhEmC,EAAAA,MAAMkI,UAAUf,GAAOlB,QAAS7B,IAC9BoD,EAAYpD,GAAKmD,EAAaY,KAAKnM,KAAMwL,EAAYpD,MAEhDoD,CACR,ECnCG,MAAOY,UAAuBC,EAAAA,WAMlC,WAAAxM,CACE6D,EACA4I,EACA/K,GAEAzB,MAAM4D,EAAS4I,GAKbtM,KAAK2D,OAHFpC,EAGWA,EAAIgL,QAAQC,UAAU9I,GAFtB,IAAI2I,EAAUA,WAAC3I,EAAS4I,EAIzC,CAUkB,GAAAhL,CACjBmL,EACAC,EACAC,GAEA,GACEC,mBAAiB5M,KAAK6M,OAAO,UAC7BD,EAAAA,iBAAiBH,GAEjB,OAEF,IAAIK,EACJ,OAAQL,GACN,KAAKM,EAAQA,SAAC7I,KACZ4I,EAAS9M,KAAK2D,OAAOO,KACrB,MACF,KAAK6I,EAAQA,SAACzG,QACZwG,EAAS9M,KAAK2D,OAAO2C,QACrB,MACF,KAAKyG,EAAQA,SAAChL,MACZ+K,EAAS9M,KAAK2D,OAAO5B,MACrB,MACF,KAAKgL,EAAQA,SAACpB,MACZmB,EAAS9M,KAAK2D,OAAOgI,MACrB,MACF,KAAKoB,EAAQA,SAACC,MACZF,EAAS9M,KAAK2D,OAAOqJ,MACrB,MACF,QACE,MAAM,IAAIpI,EAAAA,cAAc,qBAE5BkI,EAAOX,KAAKnM,KAAK2D,OAAQ3D,KAAKiN,UAAUR,EAAOC,EAAKC,GACrD,EA0BHO,EAAAA,QAAQC,WAbuB,CAC7BC,EACAP,EACAtL,IAEO,IAAI6K,EACTgB,GAAUhB,EAAevK,KACzBgL,GAAU,CAAA,EACVtL,IC5DE,MAAO8L,UAA+B/I,EAAAA,SAK1C,WAAAzE,CAAYyN,EAA0B1K,GACpC9C,MAAMwN,EAAS1K,EAChB,CAQQ,aAAM2K,IACVlM,GAEH,MAMME,SANoB3B,UAAQyB,KAChCZ,EAAaA,cAAC+M,KACdC,EAAAA,cACApM,EACArB,KAAK4C,UAEiBc,SAClB7B,KAAEA,EAAI6L,UAAEA,GAAc1N,KAAKsN,QACjC,IACE,MAAMK,QAAgC3N,KAAK4N,KAAKC,KAAKhM,EAAgBN,GACrE,OAAOvB,KAAKkL,MAAMyC,EAASJ,QAC5B,CAAC,MAAOhG,GACP,GAAIA,aAAauG,EAAAA,cAAe,CAC9B,QAAyB,IAAdJ,EACT,MAAM,IAAI9I,EAAAA,cACR,6DAEJ,IACE,OAAO5E,KAAKkL,MAAMwC,EACnB,CAAC,MAAOnG,GACP,MAAM,IAAI3C,EAAaA,cACrB,8CAA8C8I,MAAcnG,IAE/D,CACF,CACD,MAAM,IAAI3C,EAAaA,cACrB,iDAAiD/C,MAAS0F,IAE7D,CACF,CAUkB,eAAMwG,CACvBR,EACAS,EACAzM,GAEA,MAAM6C,KAAEA,EAAI6J,YAAEA,EAAWpM,KAAEA,GAAS7B,KAAKsN,QACzC,IAAIY,EACJ,MAAMC,EAAgBH,GAASC,EAC/B,GAAIE,EAAgBF,IAAgB,EAClC,MAAM,IAAIrJ,EAAAA,cACR,iEAAiEqJ,GAMrE,OAHkB,mBAAT7J,GAAwBA,GAAcvC,KACxCuC,EAAavC,KACduC,GAEJ,KAAKgK,OAAOvM,KACVqM,EAAQlO,KAAKkL,MAAMqC,GAAsBY,EACzC,MACF,KAAKE,OAAOxM,KACVqM,EAAQlO,KAAKkL,MAAMqC,GAAsBc,OAAOF,GAChD,MACF,KAAKG,OAAOzM,KACVqM,EAAOlO,KAAKkL,MAAMqC,GAClB,MACF,IAAK,SACHW,EAAOK,EAAAA,OAAOC,SAASC,SAASlB,GAChC,MACF,IAAK,OACHW,EAAOQ,EAAAA,KAAKF,SAASC,SAASlB,GAC9B,MACF,QACE,MAAM,IAAI3I,EAAAA,cAAc,uBAE5B,IAAI+J,EAIJ,IACEA,QAAY3O,KAAK4N,KAAKgB,OACpB,IAAInB,EAAaA,cAAC,CAAErM,GAAIS,EAAM0L,QAASW,IACvC3M,EAEH,CAAC,MAAOgG,GACP,KAAMA,aAAauG,EAAAA,eACjB,MAAMvG,EAER,IACEoH,QAAY3O,KAAK4N,KAAKiB,OACpB,IAAIpB,EAAaA,cAAC,CAAErM,GAAIS,EAAM0L,QAASW,IACvC3M,EAEH,CAAC,MAAOgG,GACP,KAAMA,aAAauH,kBAA2B,SAAT1K,EAAiB,MAAMmD,EAC5D,OAAOvH,KAAK+N,UAAUR,EAASS,EAAOzM,EACvC,CACF,CAED,OAAOoN,EAAIpB,OACZ,CAQQ,UAAMW,IACVa,GAEH,MAAMvL,QAAoB5D,UAAQyB,KAChCZ,EAAaA,cAACE,OACd8M,EAAAA,cACAsB,EACA/O,KAAK4C,UAEDc,QAAEA,EAAOrC,KAAEA,GAASmC,EACpB+J,QAAgBvN,KAAKuN,WAAWlM,GACtC,OAAOrB,KAAK+N,UAAUR,OAAS3B,EAAWlI,EAC3C,CAUQ,WAAMa,CACbyJ,KACGe,GAEH,MAAMvL,QAAoB5D,UAAQyB,KAChCZ,EAAaA,cAACE,OACd8M,EAAAA,cACAsB,EACA/O,KAAK4C,UAEDc,QAAEA,EAAOrC,KAAEA,GAASmC,EACpB+J,QAAiBvN,KAAKuN,WAAWlM,GACjC4M,EAAcjO,KAAKkL,MACvBlL,KAAKsN,QAAQW,aAETC,QAAuClO,KAAK+N,UAChDR,EACCvN,KAAKkL,MAAM8C,GAAoBC,EAChCvK,GAEIa,EAAsC,GAC5C,IAAK,IAAIG,EAAY,EAAQsJ,GAALtJ,EAAYA,IAClCH,EAAMrC,KAAKqL,EAAUU,EAAejO,KAAKkL,MAAMxG,IAGjD,GAA0B,SAAtB1E,KAAKsN,QAAQlJ,MAAyC,WAAtBpE,KAAKsN,QAAQlJ,KAC/C,MAAM,IAAI4K,EAAAA,iBACR,QAAQhP,KAAKsN,QAAQlJ,qDAEzB,MAAM6K,EACyB,mBAAtBjP,KAAKsN,QAAQlJ,MACnBpE,KAAKsN,QAAQlJ,MAAcvC,KACvB7B,KAAKsN,QAAQlJ,KAAavC,KAC3B7B,KAAKsN,QAAQlJ,KAEnB,GAAIG,EAAMA,EAAMT,OAAS,KAAOoK,GAAqB,WAAbe,EACtC,MAAM,IAAIrK,EAAAA,cAAc,2BAC1B,OAAOL,CACR,ECvNG,MAAO2K,UAGHC,EAAAA,iBASR,WAAAtP,CACE+C,EACA8F,EACA0G,EACAlO,GAEApB,MAAM8C,EAAS8F,EAAO0G,EAAMlO,EAC7B,CAQkB,OAAAmO,CAAQC,GACzB,MAAM5G,EAAoB3F,OAAOC,OAAO,CAAE,EAAEsM,GAK5C,OAJI5G,EAAM3C,QAAO/F,KAAK+F,MAAQ2C,EAAM3C,OAEpC2C,EAAM3C,MAAQ/F,KAAKoP,KAEZ1G,CACR,CA6DQ,UAAM1B,CACbA,EAAe,KACZ3F,GAEH,MAAM+E,QAAEA,EAAO7E,IAAEA,GAAQvB,KAAK4C,QAAgB,OAAEvB,EAAMrB,KAAKgH,MAC3D,GAAIhH,KAAKuP,sBAAuB,OAAOvP,KAAKwP,aAAaxI,KAASZ,GAClE,MAAMc,EAAYnE,OAAOC,OAAO,CAAA,EAAIhD,KAAKkH,WAEzC,IAAKlH,KAAKyP,eAAiBzP,KAAK0P,YAAa,CAC3C1P,KAAK0P,YAAc1P,KAAKyP,aAAe,EACvC,MAAM5H,QACG7H,KAAK4C,QAAQ+E,IAClB,IAAKT,EAAWnB,WAAO6F,IACvB,EACArK,IACI,GAER,GADAvB,KAAKyP,aAAe5H,EAAQ/D,OACxB9D,KAAKyP,aAAe,EAAG,CACzB,MAAML,EAAOlI,GAAWnB,OAAS/F,KAAKoP,KACtCpP,KAAK0P,YAAcC,KAAKC,KAAK5P,KAAKyP,aAAeL,EAClD,CACF,CAID,GAFApP,KAAK6P,aAAa7I,GAEL,IAATA,EAAY,CACd,IAAKhH,KAAK8P,UACR,MAAM,IAAIC,EAAAA,YAAY,iDACxB7I,EAAoB,SAAIlH,KAAK8P,SAC9B,CACD,MAAME,QAAqBhQ,KAAK4C,QAAQ+E,IAAIT,GAAW,EAAO3F,GAE9D,IAAKvB,KAAKkB,MAAO,MAAM,IAAI6O,EAAAA,YAAY,+BACvC,MAAM3O,EAAK4C,EAAKA,MAACW,GAAG3E,KAAKkB,OACnBkD,EAAO4D,EAAQA,SAAC/H,IACpBD,KAAKkB,MACL8G,EAAAA,SAASrC,IAAIsC,EAAMA,OAACC,GAAI9G,KACvBgD,KACGyD,EACJX,EAAU0B,QAAU1B,EAAU0B,OAAO9E,OACjCkM,EACAA,EAAKxL,IAAKyL,GACDjQ,KAAK4C,QAAQsN,OAClBD,EACAjQ,KAAKkB,MACLoD,EAAAA,SAAS6L,WAAW/L,EAAM6L,EAAE7O,SAC5BwK,EACArK,IAGJ6O,EAAYlJ,EAAUiD,OAAO,IAAMkG,EAAcA,eAACC,IAIxD,OAHAtQ,KAAK8P,UACHjI,EAAQuI,IAAcC,EAAcA,eAACE,IAAM1I,EAAQ/D,OAAS,EAAI,GAAG1C,GACrEpB,KAAKwQ,aAAexJ,EACba,CACR,EC3KG,MAAO4I,UAAsB7L,EAAAA,cACjC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAK+D,EAAc5O,KAC1B,EAaG,MAAO6O,UAAqB9L,EAAAA,cAChC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAKgE,EAAa7O,KACzB,EAaG,MAAO8O,UAAuB/L,EAAAA,cAClC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAKiE,EAAe9O,KAC3B,EA2CG,MAAO+O,UAA4BhM,EAAAA,cACvC,WAAA/E,CAAY6M,GACV5M,MAAM4M,EAAKkE,EAAoB/O,KAAM,IACtC,EAsCG,MAAOgP,UAA4BrJ,EAAAA,UACvC,WAAA3H,CAAY6M,GACV5M,MAAM+Q,EAAoBhP,KAAM6K,EAAK,IACtC,ECzCI3H,eAAe+L,EAMpBpN,EACAqN,EACApL,EACAwF,GAEA,IACE,MAAM6F,EAAOtN,EAAQzD,IAAI,YACzBkL,EAAMxF,GAAOqL,EAAKC,OAEnB,CAAC,MAAO1J,GACP,MAAM,IAAIyH,EAAAA,iBACR,iEAEH,CACH,CA2GM,MAAOkC,UAA8BC,EAAAA,eAKtB,SAAAC,GACjB,MAAM,IAAIpC,EAAAA,iBAAiB,8CAC5B,QAIchP,KAAAqR,YAAc,IAAIC,YAAY,OAAQ,QAE3BtR,KAAAuR,WAAa,IAAIzG,CAAgC,CAelE,UAAA0G,GAMP,OAAO9O,CACR,CAEQ,SAAA+O,CACP/I,EACA0G,EACAlO,GAEA,OAAO,IAAIgO,EAAwBlP,KAAM0I,EAAO0G,EAAMlO,EACvD,CAQQ,cAAMoD,CAASgJ,GACtB,OAAO,IAAID,EAAuBC,EAAStN,KAC5C,CAQD,WAAAH,CAAY6R,EAAaC,GACvB7R,MAAM4R,EAAO7G,EAAe8G,GA3CF3R,KAAOJ,QACjCD,CA2CD,CAEQ,IAAIkN,KAAyBxL,GACpC,OAAOvB,MAAM8D,IAAIiJ,KAAWxL,EAC7B,CAYQ,YAAMwN,CACb3N,EACAE,EACA+J,KACG9J,GAEH,MAAME,IAAEA,EAAGD,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAK6O,QAC5CvN,EAAI4C,KAAK,+BAA+B7C,GACxC,MAAMkF,EAAYvC,EAAAA,MAAMuC,UAAUrF,GAClC,IACEI,EAAI4C,KAAK,mBAAmBqC,mBAA2BnF,KACvD,MAAMwQ,EAAcrQ,EAAIxB,KAAK8R,mBAAmBtL,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAK8R,SAASF,EAAazG,EAAO5J,EACjD,CAAC,MAAOgG,GACP,MAAMvH,KAAK+R,WAAWxK,EACvB,CAED,OAAO4D,CACR,CAUQ,UAAM0C,CACb3M,EACAE,KACGC,GAEH,MAAME,IAAEA,EAAGD,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAK6N,MAC5CvM,EAAI4C,KAAK,6BAA6B7C,GACtC,MAAMkF,EAAYvC,EAAAA,MAAMuC,UAAUrF,GAElC,IAAIiK,EACJ,IACE,MAAMyG,EAAcrQ,EAAIxB,KAAK8R,mBAAmBtL,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAKgS,UAAUJ,EAAarQ,EAC3C,CAAC,MAAOgG,GACP,MAAMvH,KAAK+R,WAAWxK,EACvB,CAED,OAAO4D,CACR,CAYQ,YAAMyD,CACb1N,EACAE,EACA+J,KACG9J,GAEH,MAAME,IAAEA,EAAGD,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAK4O,QACtCrI,EAAYvC,EAAAA,MAAMuC,UAAUrF,GAElC,IACEI,EAAIgF,QAAQ,qBAAqBC,mBAA2BnF,KAC5D,MAAMwQ,EAAcrQ,EAAIxB,KAAK8R,mBAAmBtL,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAK8R,SAASF,EAAazG,EAAO5J,EACjD,CAAC,MAAOgG,GACP,MAAMvH,KAAK+R,WAAWxK,EACvB,CAED,OAAO4D,CACR,CAUD,YAAM,CACJjK,EACAE,KACGC,GAEH,MAAME,IAAEA,EAAGD,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKiS,QAC/C1L,EAAYvC,EAAAA,MAAMuC,UAAUrF,GAClC,IAAIiK,EACJ,IACE,MAAMyG,EAAcrQ,EAAIxB,KAAK8R,mBAAmBtL,EAAW,CAAQnF,EAAPkN,KAC5DnD,QAAcnL,KAAK6N,KAAK3M,EAAOE,KAAOgF,GACtC9E,EAAIgF,QAAQ,0BAA0BlF,UAAWmF,iBAC3CvG,KAAKkS,YAAYN,EAAarQ,EACrC,CAAC,MAAOgG,GACP,MAAMvH,KAAK+R,WAAWxK,EACvB,CAED,OAAO4D,CACR,CAES,iBAAM+G,CAAY9Q,EAAYsC,GACtC,MAAMnC,IAAEA,GAAQvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKkS,mBACtC3Q,EAAIxB,KAAKmS,YAAY9Q,EAC5B,CAED,UAAA+Q,CAAWC,GACT,MAAMC,EAAa,CACjBrS,KAAK8R,SACL9R,KAAKgS,UACLhS,KAAKkS,YACLlS,KAAKsS,YACLtS,KAAKuS,sBACL/N,IAAKgO,GAAOA,EAAG3Q,MACjB,OAAO,IAAI4Q,MAAMzS,KAAM,CACrBC,IAAG,CAACyS,EAAQC,EAAMC,IACXP,EAAWQ,SAASF,GAElB,IAAIF,MAAOC,EAAeC,GAAO,CACtC,WAAMG,CAAMN,EAAIO,EAASC,GACvB,OAAQL,GACN,IAAK,WAAY,CACf,MAAO5S,EAAMqB,EAAI+J,GAAS6H,EAE1B,aADMjT,EAAKkT,eAAeb,EAAYhR,EAAGf,WAAY8K,GAC9CA,CACR,CACD,IAAK,cAAe,CAClB,MAAOpL,EAAMqB,GAAM4R,EACnB,OAAQjT,EAAuBmT,kBAC7Bd,EACAhR,EAEH,CACD,IAAK,YAAa,CAChB,MAAOrB,EAAMqB,GAAM4R,EACnB,OAAOjT,EAAKoT,eAAef,EAAYhR,EACxC,CACD,IAAK,cAAe,CAClB,MAAOrB,EAAM6H,GAAYoL,EACzB,OAAOjT,EAAKqT,0BAA0BhB,EAAYxK,EACnD,CACD,IAAK,uBAAwB,CAC3B,MAAO7H,EAAM6H,EAAU7B,EAAO2E,GAAQsI,EAChCK,QACJtT,EACAqT,0BAA0BhB,EAAYxK,GAClCC,EAAiB,GACvB,IAAImG,EAAQ,EACRsF,GAAkB5I,EAClB6I,EAAyB,KAE7B,OAAa,CACX,MAAMC,QAAYH,EAASnF,OAE3B,GAAIsF,EAAIpJ,OAASoJ,EAAIpJ,MAAMA,MAAM/J,WAAY,CAC3C,MAAMoT,EAAYD,EAAIpJ,MAAMzE,IACtB+N,EAAeF,EAAIpJ,MAAMA,MAAc/J,SAC3C,QAIF,IAAKiT,EAAiB,CAChBG,IAAc/I,GAAMrK,aACtBiT,GAAkB,GAEpB,QACD,CASD,GAPAzL,EAAQ3F,KAAK,CACXyR,IAAKF,EACLG,OAAQpR,KAAK0I,MAAMwI,KAErBH,EAAUE,EACVzF,IAEIA,GAASjI,EAEX,aADMsN,EAASQ,QACR,CACLR,SACExL,EACF4D,SAAU,CACRqI,oBAAqBjM,EAAQ/D,OAC7BkC,SAAUuN,GAIjB,CAED,GAAIC,EAAIO,KAEN,aADMV,EAASQ,QACR,CACLR,SACExL,EACF4D,SAAU,CACRqI,oBAAqBjM,EAAQ/D,OAC7BkC,SAAU,IAIjB,CACF,CACD,QACE,MAAM,IAAIpB,EAAaA,cACrB,+BAAsC+N,GAG7C,IAzFMqB,QAAQ/T,IAAIyS,EAAQC,EAAMC,IA6FxC,CAES,cAAMd,CACd1Q,EACA+J,EACA5J,GAEA,IAAIwP,EAEJ,MAAMzP,IAAEA,GAAQtB,KAAKyB,OAAO,CAACF,GAAMvB,KAAK8R,UACxC,IACEf,EAAOzO,OAAOC,KACZ2O,EAAsBK,WAAWtK,UAAUkE,GAAgB,GAE9D,CAAC,MAAO5D,GACP,MAAM,IAAI0M,EAAkBA,mBAC1B,sCAAsC7S,MAAOmG,IAEhD,CAED,MAAM6K,EAAa7Q,EAAItB,IAAI,cAQ3B,OAPImS,QACI7Q,EAAIxB,KAAKkT,eAAeb,EAAYhR,EAAGf,WAAY0Q,SAChDxP,EAAIxB,KAAK+R,SAAS1Q,EAAGf,WAAY0Q,GAE5CzP,EAAI0L,MACF,eAAeoF,EAAa,OAAOA,eAA0B,eAAehR,KAEvE+J,CACR,CAES,eAAM6G,CAAU5Q,EAAYG,GACpC,IAAI+F,EAEJ,MAAMhG,IAAEA,GAAQtB,KAAKyB,OAAO,CAACF,GAAMvB,KAAKgS,WACxC,IAAIwB,EACJ,MAAMpB,EAAa7Q,EAAItB,IAAI,cAO3B,GALEuT,EADEpB,SAEM7Q,EAAIxB,KAAKoT,eAAef,EAAYhR,EAAGf,aAC7CA,kBACckB,EAAIxB,KAAKmU,SAAS9S,EAAGf,aAAaA,YAE/CmT,EACH,MAAM,IAAI1F,EAAAA,cACR,kBAAkB1M,IAAKgR,EAAa,OAAOA,eAA0B,gBAEzE9Q,EAAI0L,MACF,uBAAuBoF,EAAa,IAAIA,eAA0B,eAAehR,KAEnF,IACEkG,EAAS4J,EAAsBK,WAAWvG,YAAYwI,EAAInT,WAC3D,CAAC,MAAOkH,GACP,MAAM,IAAI0M,EAAAA,mBAAmB,2BAA2B1M,EACzD,CAED,OAAOD,CACR,CAES,iBAAMgL,CACdvS,EACA6H,KACGvG,GAEH,MAAME,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAKgS,WACvC,IAAIwB,EACJ,MAAMpB,EAAa7Q,EAAItB,IAAI,cAQ3B,OANEuT,EADEpB,QACU7Q,EAAIxB,KAAKqT,0BACnBhB,EACA5P,KAAKC,UAAUmF,UAEF7H,EAAKoU,eAAe3R,KAAKC,UAAUmF,IAE7C4L,CACR,CAES,0BAAMjB,CACdxS,EACA6H,EACA7B,EAAgB,IAChB2E,KACGrJ,GAEH,MAAME,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAKgS,WACvC,IAAIwB,EACJ,MAAMpB,EAAa7Q,EAAItB,IAAI,cAwB3B,OAvBImS,GACFxK,EAASe,SAAW,IACff,EAASe,SACZyL,IAAK1J,EAAO,CAAE2J,IAAK3J,EAAKrK,YAAe,CAAEiU,KAAM,KAMjDd,EAAM,CACJH,eALetT,EAAKqT,0BACpBhB,EACA5P,KAAKC,UAAUmF,IAIf6D,SAAU,CACRqI,oBAAqB/N,EACrBC,SAAU,MAIdwN,QAAYzT,EAAKwU,6BACf/R,KAAKC,UAAUmF,GACf7B,EACA2E,GAAMrK,YAGHmT,CACR,CAES,WAAAgB,CAAY3M,GACpB,MAAM4M,EAAWtJ,GACfpI,OAAOiH,QAAQmB,GAAO1B,OAAO,CAACC,GAA6B/D,EAAKgE,WAC3C,IAARA,IAAqBD,EAAM/D,GAAOgE,GACtCD,GACN,CAAE,GAEP,IAAIgL,EAAkC7M,EAAQ8M,MAE9C,IAAK,MAAMnB,KAAO3L,EAChB6M,EAAa3R,OAAOC,OAAO,GAAIyR,EAAQC,GAAaD,EAAQjB,IAG9D,OAAOkB,CACR,CAQS,MAAAE,CAAOC,GACf,OAAO3D,EAAsBG,YAAYuD,OAAOC,EACjD,CAYkB,WAAMC,CACvBC,EACA5J,EACA2J,EACAvT,KACGF,GAEH,MAAM2T,EAAY,CAChBjV,KAAMwB,EAAIxB,KACVkV,YAAY,GAuBd,OApBElS,OAAOC,OAAOgS,EADZzT,aAAe5B,EACQ,CACvBgE,OAAQpC,EAAIoC,OACZvD,SAAUmB,EAAInB,SACd8U,cAAe3T,EAAIxB,KAAKoV,WAGD,CACvB/U,SAAUmB,EAAI6T,eACdzR,OAAQ,IAAIyI,EAAepM,UAAa4L,EAAWrK,GACnD2T,cAAe3T,EAAIxB,KAAKoV,kBAIbrV,MAAMgV,MACnBC,EACA5J,EACA6J,KACG3T,EAIN,CAUS,KAAAgU,CAAS9R,GACjB,OAAOsB,QAAQQ,aAAQuG,EACxB,CA2BS,oBAAM0J,CACdhU,EACA+R,EACAkC,GAAY,GAEZ,MAAMC,EAAa,GACnB,IAAIhC,QAA2CH,EAASnF,OACxD,MAAQsF,EAAIO,MAAM,CAChB,GAAIP,EAAIpJ,OAASoJ,EAAIpJ,MAAMA,MAAM/J,WAAY,CAC3C,IAAIoV,EAAe,CAAA,EAEnB,GADAnU,EAAIS,MAAMyR,EAAIpJ,MAAMA,MAAM/J,SAAS,SAC/BkV,EAAsC,CACxCE,EAAQC,KAAOlC,EAAIpJ,MAAMuL,KACzBF,EAAQG,UAAYpC,EAAIpJ,MAAMlK,UAC9B,IACEuV,EAAQI,MAAQrT,KAAK0I,MAAMsI,EAAIpJ,MAAMA,MAAM/J,SAAS,QACrD,CAAC,MAAOyV,GACPxU,EAAIqK,MAAMmK,GACVL,EAAQI,MAAQrC,EAAIpJ,MAAMA,MAAM/J,SAAS,OAC1C,CACF,MACC,IACEoV,EAAUjT,KAAK0I,MAAMsI,EAAIpJ,MAAMA,MAAM/J,SAAS,QAC/C,CAAC,MAAOyV,GACPxU,EAAIqK,MAAMmK,GACVL,EAAUjC,EAAIpJ,MAAMA,MAAM/J,SAAS,OACpC,CAEHmV,EAAWtT,KAAKuT,EACjB,CACDjC,QAAYH,EAASnF,MACtB,CAGD,OAFA5M,EAAIS,MAAM,0BAA0ByT,EAAW1R,kBAC/CuP,EAASQ,QACF2B,CACR,CA8BD,SAAM7N,CACJC,EAEAmO,GAAc,KACX1U,GAEH,MAAMC,IAAEA,EAAGvB,KAAEA,EAAIwB,IAAEA,GAAQvB,KAAKyB,OAAOJ,EAAMrB,KAAK2H,MAE5C+C,KAAEA,EAAI3E,MAAEA,GAAU6B,EACxB,IAAIyL,EACAtN,GAAS2E,UACJ9C,EAAgB,aAChBA,EAAe,KACtBtG,EAAIS,MACF,yCAAyCgE,YAAgB2E,KAU3D2I,SAPSrT,KAAKuS,qBACVxS,EACA6H,EACA7B,GAAS,IACR2E,GAAcrK,WACfkB,IAEgB8R,WAEpB/R,EAAIS,MAAM,uBACVsR,QAAkBrT,KAAKsS,YACrBvS,EACA6H,EACArG,IAGJD,EAAIS,MAAM,qBAEV,MAAM8F,QAAiB7H,KAAKsV,eAAehU,EAAK+R,GAIhD,OAHA/R,EAAIS,MACF,aAAa+J,MAAMC,QAAQlE,GAAWA,EAAQ/D,OAAS,aAElD+D,CACR,CAEQ,SAAAmO,GACP,OAAO,IAAIvO,EAAgBzH,KAC5B,CAEQ,eAAMiW,CACb1P,EACAnF,EACA+J,KACG9J,GAEH,GAAID,EAAG0C,SAAWqH,EAAMrH,OACtB,MAAM,IAAIc,EAAAA,cAAc,4CAC1B,MAAMtD,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKiW,WAC1CC,EAAalS,EAAAA,MAAMuC,UAAUA,GAEnC,OADAjF,EAAIS,MAAM,YAAYX,EAAG0C,kBAAkBoS,WACpCrR,QAAQC,IACb1D,EAAGoD,IAAI,CAACE,EAAGsJ,IAAUhO,KAAK6O,OAAOtI,EAAW7B,EAAGyG,EAAM6C,MAAW5H,IAEnE,CAEQ,eAAM+P,CACb5P,EACAnF,EACA+J,KACG9J,GAEH,GAAID,EAAG0C,SAAWqH,EAAMrH,OACtB,MAAM,IAAIc,EAAAA,cAAc,4CAC1B,MAAMtD,IAAEA,EAAG8E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAKmW,WAC1CD,EAAalS,EAAAA,MAAMuC,UAAUA,GAEnC,OADAjF,EAAIS,MAAM,YAAYX,EAAG0C,kBAAkBoS,WACpCrR,QAAQC,IACb1D,EAAGoD,IAAI,CAACE,EAAGsJ,IAAUhO,KAAK4O,OAAOrI,EAAW7B,EAAGyG,EAAM6C,MAAW5H,IAEnE,CAQQ,OAAAiJ,CACPlE,KACG9J,GAEH,MAAMC,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAKqP,SAEjC9I,EAAYvC,EAAKA,MAACuC,UAAU4E,EAAMtL,aAClC8E,EAAKX,EAAKA,MAACW,GAAGwG,EAAMtL,aACpBuW,EAAQpS,EAAAA,MAAMqS,UAAUlL,GACxB7D,EAASvE,OAAOiH,QAAQoM,EAAMjL,OAAO1B,OACzC,CAACC,GAA6B/D,EAAKgE,MACjC,QAAmB,IAARA,EAAqB,OAAOD,EACvC,MAAM4M,EAAatS,EAAKA,MAACuS,WAAWpL,EAAOxF,GAC3C,GAAI3F,KAAKwW,WAAWF,GAClB,MAAM,IAAI1R,EAAaA,cAAC,iBAAiB0R,iBAE3C,OADA5M,EAAM4M,GAAc3M,EACbD,GAET,CAAE,GAOJ,OAJApI,EAAI0L,MACF,wBAAwBzG,mBAA4B4E,EAAcxG,MAG7D,CACL8R,OAAQnP,EACRlG,GAAK+J,EAAcxG,GACnB+R,UAAWN,EAAMM,UAEpB,CAEQ,MAAAxG,CACPrE,EACA3K,EACAE,EACAsV,KACGrV,GAEH,MAAMC,IAAEA,GAAQtB,KAAKyB,OAAOJ,EAAMrB,KAAKkQ,QACjCyG,EAA0B,CAAA,EAEhCA,EADW3S,EAAAA,MAAMW,GAAGzD,IACDE,EACnB,MAAMqD,EACa,iBAAVvD,EAAqB8C,EAAAA,MAAMsE,MAAMqO,EAAIzV,GAAS,IAAIA,EAAMyV,GAEjErV,EAAI0L,MAAM,oBAAoBvI,EAAE5E,YAAYgC,WAAWT,KACvD,MAAMkG,EAASvE,OAAOsG,KAAK5E,GAAGgF,OAAO,CAACC,EAAU/D,KAC7C+D,EAA8B/D,GAC7BkG,EAAI7H,EAAAA,MAAMuS,WAAW7M,EAAO/D,IACvB+D,GACNjF,GAeH,OAbIiS,IACFpV,EAAIS,MACF,mCAAmCgB,OAAOsG,KAAKqN,GAAWvU,KAAK,OAEjEY,OAAOiH,QAAQ0M,GAAWzM,QAAQ,EAAEtE,EAAKgE,MACvC,GAAIhE,KAAO2B,QAAmCsE,IAAxBtE,EAAe3B,GACnC,MAAM,IAAIf,EAAaA,cACrB,sBAAsBe,6BAA+BlB,EAAE5E,YAAYgC,8BAEvEyF,EAAO3B,GAAkBgE,KAItBrC,CACR,CAEQ,YAAAsP,CACPrQ,EACAnF,EACA+J,KACG9J,GAEH,MAAM+E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAK4W,cACrCH,EAA8B,CAAA,EAIpC,OAHAA,EAAOjO,EAAWA,YAACC,OAASzE,EAAAA,MAAMuC,UAAUA,GAC5CxD,OAAOC,OAAOyT,EAAQtL,GAEf,CAAC5E,EAAWnF,EAAIqV,KAAWrQ,EAOnC,CAEQ,YAAAyQ,CACPtQ,EACAnF,EACA+J,KACG9J,GAEH,MAAM+E,QAAEA,GAAYpG,KAAKyB,OAAOJ,EAAMrB,KAAK6W,cACrCJ,EAA8B,CAAA,EAIpC,OAHAA,EAAOjO,EAAWA,YAACC,OAASzE,EAAAA,MAAMuC,UAAUA,GAC5CxD,OAAOC,OAAOyT,EAAQtL,GAEf,CAAC5E,EAAWnF,EAAIqV,KAAWrQ,EAOnC,CAEkB,eAAA9C,CACjBiD,EACApC,EACAZ,KACGlC,GAEH,GAAI8C,EAAIL,SAAWP,EAAOO,OACxB,MAAM,IAAIc,EAAAA,cAAc,4CAE1B,MAAMrD,EAA6BF,EAAKsT,MAElCmC,EAAU3S,EAAIK,IAAI,CAACpD,EAAI4M,KAC3B,MAAMyI,EAA8B,CAAA,EAGpC,OAFAA,EAAOjO,EAAWA,YAACC,OAASzE,EAAAA,MAAMuC,UAAUA,GAC5CxD,OAAOC,OAAOyT,EAAQlT,EAAOyK,IACtByI,IAET,MAAO,CAAClQ,EAAWpC,EAAK2S,EAASvV,EAClC,CAEkB,eAAAwV,CACjBxQ,EACApC,EACAZ,KACGlC,GAEH,GAAI8C,EAAIL,SAAWP,EAAOO,OACxB,MAAM,IAAIc,EAAAA,cAAc,4CAE1B,MAAMrD,EAA6BF,EAAKsT,MAElCmC,EAAU3S,EAAIK,IAAI,CAACpD,EAAI4M,KAC3B,MAAMyI,EAA8B,CAAA,EAGpC,OAFAA,EAAOjO,EAAWA,YAACC,OAASzE,EAAAA,MAAMuC,UAAUA,GAC5CxD,OAAOC,OAAOyT,EAAQlT,EAAOyK,IACtByI,IAET,MAAO,CAAClQ,EAAWpC,EAAK2S,EAASvV,EAClC,CAEQ,UAAAwQ,CACP+D,EACAkB,GAEA,OAAO9F,EAAsBa,WAAWiF,GAAUlB,EACnD,CAEQ,MAAArU,CACPJ,EACAyL,GAKA,OAAOoE,EAAsBzP,OAAO0K,KAAKnM,KAAMqB,EAAMyL,EACtD,CAkBD,aAAgBrL,CAEdJ,EACAyL,GAKA,GAAkB,EAAdzL,EAAKyC,OAAY,MAAM,IAAIc,EAAAA,cAAc,uBAC7C,MAAMrD,EAAMF,EAAKsT,MAEjB,KAAMpT,aAAe3B,WACnB,MAAM,IAAIgF,EAAAA,cAAc,uBAC1B,GAAIvD,EAAK4V,OAAQC,GAAMA,aAAatX,EAAOA,SAAEkE,OAAS,EACpD,MAAU8F,MAAM,QAClB,MAAMtI,EACJtB,KACIuB,EAAIoC,OAAOC,IAAI5D,MAAM4D,IAAIkJ,GACzBvL,EAAIoC,OAAOwT,QAAQvT,IAAI5D,MAAM4D,IAAIkJ,GAEvC,MAAO,CACLvL,IAAKA,EACLD,IAAKwL,EAAUxL,EAAIsC,IAAIkJ,GAA8CxL,EACrEvB,KAAMwB,EAAIxB,KACVK,SAAUmB,EAAInB,SACdgG,QAAS,IAAI/E,EAAME,GAEtB,CAED,iBAAgBwQ,CAAgC+D,GAO9C,MAAMpJ,EAAqB,iBAARoJ,EAAmBA,EAAMA,EAAIsB,QAChD,OAAI1K,EAAImG,SAAS/E,EAAaA,cAACjM,MAAc,IAAIiM,EAAAA,cAAcgI,GAC3DpJ,EAAImG,SAAS/D,EAAaA,cAACjN,MAAc,IAAIiN,EAAAA,cAAcgH,GAC3DpJ,EAAImG,SAASwE,EAAeA,gBAACxV,MACxB,IAAIwV,EAAAA,gBAAgBvB,GACzBpJ,EAAImG,SAAS5M,EAAUA,WAACpE,MAAc,IAAIoE,EAAAA,WAAW6P,GACrDpJ,EAAImG,SAAS9C,EAAWA,YAAClO,MAAc,IAAIkO,EAAAA,YAAY+F,GACvDpJ,EAAImG,SAAS7D,EAAgBA,iBAACnN,MACzB,IAAImN,EAAAA,iBAAiB8G,GAC1BpJ,EAAImG,SAASyE,EAAcA,eAACzV,MAAc,IAAIyV,EAAAA,eAAexB,GAC7DpJ,EAAImG,SAAS0E,EAAaA,cAAC1V,MAAc,IAAI0V,EAAAA,cAAczB,GAC3DpJ,EAAImG,SAAS2E,EAAkBA,mBAAC3V,MAC3B,IAAI2V,EAAAA,mBAAmB1B,GAC5BpJ,EAAImG,SAAS4E,EAAcA,eAAC5V,MAAc,IAAI4V,EAAAA,eAAe3B,GAC7DpJ,EAAImG,SAAS6E,EAAeA,gBAAC7V,MACxB,IAAI6V,EAAAA,gBAAgB5B,GACzBpJ,EAAImG,SAASoB,EAAkBA,mBAACpS,MAC3B,IAAIoS,EAAAA,mBAAmB6B,GAC5BpJ,EAAImG,SAAS,qBACR,IAAIjC,EACT,sDAAsDlE,GAGnD,IAAI9H,EAAAA,cAAckR,EAC1B,CASD,iBAAgB6B,GACd7X,MAAM6X,aACNC,EAAUA,WAACC,YAAYhN,GACpBjH,IAAIwD,EAAeA,gBAAC0Q,YACpBC,OACCC,EAAQA,SAAClH,GACTmH,EAAYA,aAAC7Q,kBAAgB0Q,WAAY,CAAA,IAE1ChF,QAEH8E,EAAUA,WAACC,YAAYhN,GACpBjH,IAAIwD,EAAeA,gBAAC8Q,YACpBH,OACCI,EAAcA,eAACrH,GACfmH,EAAYA,aAAC7Q,kBAAgB8Q,WAAY,CAAA,IAE1CpF,QAEH8E,EAAUA,WAACC,YAAYhN,GACpBjH,IAAIwD,EAAeA,gBAACgR,QACpBC,OAAOC,EAAcC,YACrBzF,QAEH8E,EAAUA,WAACC,YAAYhN,GACpBjH,IAAI4U,EAAcA,eAACC,MACnBJ,OAAO,IACC,CAAC3F,EAAaC,KACnB4F,EAAAA,SAAS5F,EAAM,cAAf4F,CAA8B7F,EAAQC,KAI5CiF,EAAUA,WAACC,YAAYhN,GACpBjH,IAAIwD,EAAeA,gBAACqB,OACpB4P,OAAsBxM,IACrB,MAAM6M,EAAe,GACrB,IAAInL,EACa,mBAAR1B,EACH7D,EAAQA,SAAC2Q,OAAO9M,GAChB7D,EAAAA,SAAS2Q,OAAO9M,EAAIhM,aAE1B,KAAO0N,GAAWA,IAAYxK,QAAUwK,EAAQqL,WAC9CF,EAAMxW,KAAKqL,GACXA,EAAUxK,OAAO8V,eAAetL,GAMlC,KAAOmL,EAAM5U,OAAS,GAAG,CACvB,MAAMjE,EAAc6Y,EAAM/D,MAE1BmE,EAAY/V,QAAZ+V,CAAejZ,EAChB,CAED,OAAOiZ,EAAY/V,QAAZ+V,CAAejN,EACxB,GACCiH,OACJ,EAGH5B,EAAsByG,aACtBnW,EAAAA,QAAQuX,WAAWlO,GC/oCb,MAAOmO,UAEHjO,EAAAA,eACR,WAAAlL,GACEC,OACD,CACkB,YAAAyL,CAAaJ,GAG9B,MAAMK,EAAmCzI,OAAOC,OAAO,CAAE,EAAEmI,GAC3D,IAAIM,EACJ,IACEA,EAAWzD,EAAAA,SAAS0D,UAAUP,EAAMtL,YAErC,CAAC,MAAO8L,GACPF,OAAWG,CACZ,CACDJ,EAAYQ,EAASA,UAACC,QAAUR,GAAYN,EAAMtL,YAAYgC,KAE9D,MAAM0J,EAAe,SAASA,EAE5BM,GAGA,MAAMoN,EAAOjZ,KACb,MAAmB,iBAAR6L,EAAyBA,EAChCC,MAAMC,QAAQF,GAAaA,EAAIrH,IAAK0U,GAAM3N,EAAaY,KAAK8M,EAAMC,IAC/DlZ,KAAKuL,aAAaY,KAAKnM,KAAM6L,EACtC,EAAEsN,KAAKnZ,MAKP,OAHAgE,EAAAA,MAAMkI,UAAUf,GAAOlB,QAAS7B,IAC9BoD,EAAYpD,GAAKmD,EAAaC,EAAYpD,MAErCoD,CACR,CAQQ,WAAAR,CAAYC,GACnB,MAAMmO,EAAkB5W,KAAK0I,MAAMD,GAC7BoO,EAAYD,EAAgBpN,EAASA,UAACC,QAC5C,IAAKoN,EACH,MAAUzP,MAAM,sDAElB,OADiB5F,EAAKA,MAACsE,MAAM8Q,EAAiBC,EAE/C,CAQQ,SAAApS,CAAUkE,GAGjB,OAFkBE,QAAQ,+BAEnB5I,CADmB4I,QAAQ,sBACjBC,CAAkBtL,KAAKuL,aAAaJ,IACtD,EC9DH2N,EAAAA,QAAAA,CAAeQ,MAiDT,MAAgBC,UACZC,EAAAA,gBAMSxZ,KAAA4C,QAAiC,IAAIsO,CAAwB,QAIpDlR,KAAAuR,WAAa,IAAIyH,CAA0B,CAUrE,WAAAnZ,CACEgC,EACmBX,GAEnBpB,MAAM+B,GAFa7B,KAAKkB,MAALA,EAVXlB,KAAWyZ,aAAY,EAa/BzZ,KAAK4N,KAAOjL,EAAAA,WAAW+W,SAASxY,EACjC,CAED,YAAMyY,CACJpY,EACAoE,EACAC,KACGvE,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK2Z,QAIhE,OAHArY,EAAI4C,KACF,sBAAsByB,YAAwBC,cAAkBQ,KAE3DpG,KAAK4N,KAAK+L,OACfhU,EACAC,KACGQ,EAEN,CAED,gBAAMV,CACJnE,EACAoE,EACAC,EACAC,EAAwD,CACtDC,OAAQ,EACRC,MAAO,OAEN1E,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK0F,YAIhE,OAHApE,EAAI4C,KACF,0BAA0ByB,YAAwBC,eAAoBC,EAAYE,kBAAkBK,KAE/FpG,KAAK4N,KAAKlI,WACfC,EACAC,EACAC,KACGO,EAEN,CAED,eAAMwT,CACJrY,EACAoE,EACAyE,KACG/I,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK4Z,WAIhE,OAHAtY,EAAI4C,KACF,yBAAyByB,aAAyByE,eAAmBhE,KAEhEpG,KAAK4N,KAAKgM,UAAUjU,EAAgByE,KAAUhE,EACtD,CAED,eAAMc,CACJ3F,EACAuL,KACGzL,GAEH,MAAM+E,QAAEA,EAAO9E,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKkH,WAEhE,OADA5F,EAAI4C,KAAK,qBAAqB4I,eAAoB1G,KAC3CpG,KAAK4N,KAAK1G,UAAU4F,KAAW1G,EACvC,CAUD,YAAMyI,CACJtN,EACA4J,KACG9J,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK6O,QAChEvN,EAAI4C,KAAK,oBAAoBkC,GAER,iBAAV+E,IAAoBA,EAAQnL,KAAKgL,YAAeG,IAE3D7J,EAAI4C,KAAK,mBAAmB1B,KAAKC,UAAU0I,IAE3C,MAAMuL,EAAY1W,KAAK6Z,iBAAiBtY,GAKxC,OAHAD,EAAI4C,KAAK,6BACTiH,EAAQnH,EAAKA,MAAC8V,MAAM3O,EAAOuL,EAAW1W,KAAKkB,OAEpClB,KAAK4N,KAAKiB,OAAO1D,KAAU/E,EACnC,CAUD,UAAMyH,CACJtM,EACAoE,KACGtE,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK6N,MAIhE,OAFAvM,EAAI4C,KAAK,yBAAyByB,MAE3B3F,KAAK4N,KAAKC,KAAKlI,KAAQS,EAC/B,CAES,gBAAAyT,CAAiBtY,GACzB,MAAMwY,EAAexY,EAAIxB,KAAKia,eAC9B,IAAItD,EAAiB,CAAA,EAUrB,OARIqD,EAAaE,IAAKja,KAAK4N,KAAarH,aACtCmQ,EAAYlU,KAAK0I,MACd6O,EAAa9Z,IAAKD,KAAK4N,KAAarH,YAAuBlG,SAC1D,UAKCqW,CACR,CAUD,YAAM9H,CACJrN,EACA4J,KACG9J,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK4O,QAE3C,iBAAVzD,IAAoBA,EAAQnL,KAAKgL,YAAeG,IAE3D7J,EAAI4C,KAAK,mBAAmB1B,KAAKC,UAAU0I,IAE3C,MAAMuL,EAAY1W,KAAK6Z,iBAAiBtY,GAIxC,OAFAD,EAAI4C,KAAK,6BACTiH,EAAQnH,EAAKA,MAAC8V,MAAM3O,EAAOuL,EAAW1W,KAAKkB,OACpClB,KAAK4N,KAAKgB,OAAOzD,KAAU/E,EACnC,CAUD,YAAM,CACJ7E,EACAoE,KACGtE,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKiS,QAEhE,OADA3Q,EAAI4C,KAAK,0BAA0ByB,MAC5B3F,KAAK4N,KAAKqE,OAActM,EAAP2I,MAAgBlI,EACzC,CAUD,eAAM8T,CACJ3Y,EACA8H,KACGhI,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKma,SAE3D,MADoB,iBAAT9Q,IAAmBA,EAAO7G,KAAK0I,MAAM7B,IACzCrJ,KAAK4N,KAAKsM,UAAU7Q,KAASjD,EACrC,CAUD,aAAM+T,CACJ5Y,EACA8H,KACGhI,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKma,SAE3D,MADoB,iBAAT9Q,IAAmBA,EAAO7G,KAAK0I,MAAM7B,IACzCrJ,KAAK4N,KAAKuM,QAAQ9Q,KAASjD,EACnC,CAUD,eAAM+P,CACJ5U,EACAgC,KACGlC,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKmW,WAOhE,MANsB,iBAAX5S,IACTA,EAAUf,KAAK0I,MAAM3H,GAClBiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,KAE/BnD,EAAI4C,KAAK,YAAYX,EAAOO,+BACrB9D,KAAK4N,KAAKuI,UAAU5S,KAA6B6C,EACzD,CAYD,WAAMsC,CACJhF,EACAoF,EACAjC,EACAjB,EAAiCyK,EAAcA,eAACE,IAChDxK,EACA2E,KACGrJ,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAMqC,GAAU1D,KAAK0I,OAC/D,OAAO1I,KAAK4N,KAAKlF,MACfI,EACAjC,EACAjB,EACAG,EACA2E,KACGtE,EAEN,CAWD,SAAMuB,CACJpG,EACAqG,EACAmO,KACG1U,GAEH,MAAM+E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAK2H,KAC3D,OAAO4R,EAAmB3W,QAAQ+E,IAAIC,EAAUmO,KAAa3P,EAC9D,CAES,SAAAa,CAAUkE,GAClB,OAAOoO,EAAmBhI,WAAWtK,UAAUkE,EAChD,CAES,WAAAH,CAA6BC,GACrC,OACEsO,EAAmBhI,WACnBvG,YAAYC,EACf,CAES,UAAMmP,CAAK7Y,GACnB,MAAMD,IAAEA,SAActB,KAAKyB,OAAO,CAACF,GAAMvB,KAAKoa,MAC9C9Y,EAAI4C,KAAK,oBAAoBlE,KAAKqa,+BAClCra,KAAKyZ,aAAc,EACnBnY,EAAI4C,KAAK,qCACV,CAED,iBAAMoW,CACJ/Y,GAEA,MAAMD,IAAEA,SAActB,KAAKyB,OAAO,CAACF,GAAMvB,KAAKsa,aAE9C,OADAhZ,EAAI4C,KAAK,wBAAwBlE,KAAKyZ,kBAC/B,CAAEa,YAAata,KAAKyZ,YAC5B,CAUD,eAAMxD,CACJ1U,EACAgC,KACGlC,GAEH,MAAMC,IAAEA,EAAG8E,QAAEA,SAAkBpG,KAAKyB,OAAO,IAAIJ,EAAME,GAAMvB,KAAKiW,WAQhE,MANsB,iBAAX1S,IACTA,EAAUf,KAAK0I,MAAM3H,GAClBiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,KAE/BnD,EAAI4C,KAAK,UAAUX,EAAOO,+BACnB9D,KAAK4N,KAAKqI,UAAU1S,KAA6B6C,EACzD,CAED,YAAM3E,CACJJ,EACAyL,GAOA,OAAOyM,EAAmB9X,OAAO0X,KAAKnZ,KAA/BuZ,CAAqClY,EAAMyL,EACnD,CAsBS,mBAAarL,CAErBJ,EACAyL,GAOA,GAAkB,EAAdzL,EAAKyC,OAAY,MAAM,IAAIc,EAAAA,cAAc,uBAC7C,MAAMrD,EAAMF,EAAKsT,MACjB,GAAIpT,aAAe5B,EACjB,MAAO,CACL4B,MACAD,IAAKC,EAAIoC,OAAOwT,QAAQvT,IAAI5D,MAAM4D,IAAIkJ,GACtC1G,QAAS,IAAI/E,EAAME,GACnBxB,KAAMwB,EAAIxB,KACVK,SAAUmB,EAAInB,UAGlB,KAAMmB,aAAegZ,WACnB,MAAM,IAAI3V,EAAAA,cAAc,6BAmB1B,MAAM4V,EAAY,CAChBtF,cAAe3T,EAAIxB,KAAKoV,WAEpBzR,QAAgB6V,EAAmB3W,QAAQc,QApBjD,MACE,GAAsB,iBAAXoJ,EAAqB,OAAOA,EACvC,OAAQA,EAAOjL,MACb,KAAKpB,EAAAA,cAAcC,OACnB,KAAKD,EAAAA,cAAc+M,KACnB,KAAK/M,EAAAA,cAAcE,OACnB,KAAKF,EAAAA,cAAcG,OACnB,KAAKC,EAAAA,sBAAsBC,WAC3B,KAAKD,EAAAA,sBAAsB4Z,SAC3B,KAAK5Z,EAAAA,sBAAsBE,WAC3B,KAAKF,EAAqBA,sBAACG,YAGzB,OAAO8L,EAAOjL,IAEnB,EAMC6Y,GACAF,EACAxa,KAAKkB,MACLK,GAGID,EACJtB,KACI0D,EAAQC,OAAOC,IAAI5D,MAAM4D,IAAIkJ,GAC7BpJ,EAAQC,OAAOwT,QAAQvT,IAAI5D,MAAM4D,IAAIkJ,GAE3C,MAAO,CACLvL,IAAKmC,EACLpC,IAAKA,EACLvB,KAAM2D,EAAQ3D,KACdK,SAAUsD,EAAQtD,SAClBgG,QAAS,IAAI/E,EAAMqC,GAEtB,EC5fG,MAAOiX,UAEHpB,EACR,WAAA1Z,CAAYgC,EAAcX,GACxBpB,MAAM+B,EAAMX,EACb,CAGQ,YAAM2N,CAAOnL,EAAcyH,GAClC,MAAM7J,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6O,QACvDvN,EAAI4C,KAAK,mBAAmBiH,GAE5B,MAAM1G,EAAIzE,KAAKgL,YAAeG,GAE9B7J,EAAI4C,KAAK,uBAAuB1B,KAAKC,UAAUgC,IAC/C,MAAM6C,QAAexH,MAAM+O,OAAOtN,EAAYkD,GAC9C,OAAOzE,KAAKiH,UAAUK,EACvB,CAGQ,UAAMuG,CAAKnK,EAAciC,GAChC,MAAMrE,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK6N,MAEvD,OADAvM,EAAI4C,KAAK,eAAeyB,GACjB3F,KAAKiH,gBAAiBnH,MAAM+N,KAAKtM,EAAYoE,GACrD,CAGQ,YAAMiJ,CAAOlL,EAAcyH,GAClC,MAAM7J,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK4O,QAEvD,OADAtN,EAAI4C,KAAK,mBAAmBiH,GACrBnL,KAAKiH,gBAAiBnH,MAAM8O,OAAOrN,EAAY4J,GACvD,CAGQ,YAAM,CAAOzH,EAAciC,GAClC,MAAMrE,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKiS,QAEvD,OADA3Q,EAAI4C,KAAK,gBAAgByB,GAClB3F,KAAKiH,gBAAiBnH,MAAMmS,OAAO1Q,EAAYoE,GACvD,CAGQ,eAAMuU,CAAUxW,EAAc2F,GACrC,MAAMuR,EAAuBpY,KAAK0I,MAAM7B,IAClC/H,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKka,WAIvD,OAFA5Y,EAAI4C,KAAK,YAAY0W,EAAW9W,iCAEzBtB,KAAKC,iBACF3C,MAAMoa,UAAU3Y,EAAYqZ,IAAqBpW,IACtDC,GAAMzE,KAAKiH,UAAUxC,IAG3B,CAGQ,aAAM0V,CAAQzW,EAAc2F,GACnC,MAAMuR,EAAuBpY,KAAK0I,MAAM7B,IAElC/H,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKma,SAGvD,OAFA7Y,EAAI4C,KAAK,WAAW0W,EAAW9W,iCAExBtB,KAAKC,iBACF3C,MAAMqa,QAAQ5Y,EAAYqZ,IAAqBpW,IAAKC,GAC1DzE,KAAKiH,UAAUxC,IAGpB,CAGQ,eAAM0R,CAAUzS,EAAcH,GACrC,MAAMjC,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKmW,WAEjD0E,EADiBrY,KAAK0I,MAAM3H,GAE/BiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,IAG7B,OADAnD,EAAI4C,KAAK,YAAY2W,EAAU/W,+BACxBtB,KAAKC,iBACF3C,MAAMqW,UAAU5U,EAAYsZ,IAAoBrW,IACrDC,GAAMzE,KAAKiH,UAAUxC,IAG3B,CAGc,eAAAyC,CAAUxD,EAAcoJ,EAAgBzL,GACrD,MAAME,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKkH,WACvD,IACE7F,EAAOmB,KAAK0I,MAAM7J,EACnB,CAAC,MAAOkG,GACP,MAAM,IAAI0M,EAAAA,mBAAmB,iBAAiB1M,EAC/C,CACD,IAAKuE,MAAMC,QAAQ1K,GACjB,MAAM,IAAI4S,EAAAA,mBACR,iBAAiBzR,KAAKC,UAAUpB,wBAIpC,OAFAC,EAAI4C,KAAK,8BAA8B4I,GACvCxL,EAAI4C,KAAK,aAAa7C,GACfmB,KAAKC,gBAAgB3C,MAAMoH,UAAU3F,EAAKuL,KAAWzL,GAC7D,CAGc,YAAAsY,CAAOjW,EAAciC,EAAaC,GAC/C,MAAMrE,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK2Z,QAEvD,OADArY,EAAI4C,KAAK,6BAA6ByB,eAAiBC,KAChDpD,KAAKC,gBACJ3C,MAAM6Z,OAAOpY,EAAKoE,EAAgBC,GAE3C,CAGQ,gBAAMF,CACbhC,EACAiC,EACAC,EACAC,KACGxE,GAEH,MAAME,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAMqC,GAAU1D,KAAK0F,YAChE,IACEG,EAAMrD,KAAK0I,MAAMrF,EAClB,CAAC,MAAO0B,GACP,MAAM,IAAI0M,EAAAA,mBACR,+CAA+C1M,EAElD,CAED,OADAjG,EAAI4C,KAAK,iCAAiCyB,eAAiBC,KACpDpD,KAAKC,gBACJ3C,MAAM4F,WAAWnE,EAAKoE,EAAKC,EAAcC,KAAexE,GAEjE,CAGc,eAAAuY,CACblW,EACAiC,EACAyE,KACG/I,GAEH,MAAME,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,IAAIJ,EAAMqC,GAAU1D,KAAK4Z,WAEhE,OADAtY,EAAI4C,KAAK,gCAAgCyB,eAAiByE,KACnD5H,KAAKC,gBAAgB3C,MAAM8Z,UAAUrY,EAAKoE,EAAKyE,KAAU/I,GACjE,CAGQ,WAAMqH,CACbhF,EACAoF,EACAjC,EACAjB,EACAG,EACA2E,GAEA,MAAMnJ,IAAEA,EAAGD,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK0I,OAIvD,IAAIoS,EAFJxZ,EAAI4C,KAAK,6BAA6B2C,eAAqBjB,KAG3D,IACEkV,EAAO9R,EAASA,UAACzG,KAAKC,KAAK0I,MAAMpC,GAClC,CAAC,MAAOvB,GACP,MAAM,IAAI0M,EAAAA,mBAAmB,sBAAsB1M,EACpD,CAID,OAFAjG,EAAI4C,KAAK,cAAc1B,KAAKC,UAAUqY,IAE/BtY,KAAKC,gBACJ3C,MAAM4I,MAAMnH,EAAKuZ,EAAMjU,EAASjB,EAAcG,EAAO2E,GAE9D,CAeQ,UAAM0P,CAAK7Y,SACZzB,MAAMsa,KAAK7Y,EAClB,CAGQ,iBAAM+Y,CAAY5W,GACzB,MAAMpC,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKmW,WAGvD,OAFA7U,EAAIS,MAAM,wBAAwB/B,KAAKyZ,kBAEhCjX,KAAKC,gBAAgB3C,MAAMwa,YAAY/Y,GAC/C,CAGQ,eAAM0U,CAAUvS,EAAcH,GACrC,MAAMjC,IAAEA,SAActB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKiW,WAE5C4E,EADiBrY,KAAK0I,MAAM3H,GAE/BiB,IAAKC,GAAMzE,KAAKgL,YAAYvG,IAC5BD,IAAKC,GAAM,IAAIzE,KAAKkB,MAAMuD,IAE7BnD,EAAI4C,KAAK,UAAU2W,EAAU/W,+BAE7B,MAAMwD,QAAgBxH,MAAMmW,UAAUvS,EAASmX,GAC/C,OAAOrY,KAAKC,UAAU6E,EAAO9C,IAAKC,GAAMzE,KAAKiH,UAAUxC,IACxD,ECtNa,SAAAsW,EAAI7D,EAAW8D,GAC7B,MAAMC,EAAI/D,EAAI8D,EACd,GAAI9D,IAAM+D,EAAID,GAAKA,IAAMC,EAAI/D,EAC3B,MAAM,IAAIzG,EAAc,sBAAsByG,OAAO8D,KAEvD,OAAOC,CACT,CAYgB,SAAAC,EAAIhE,EAAW8D,GAC7B,MAAMC,EAAI/D,EAAI8D,EACd,GAAI9D,IAAM+D,EAAID,GAAKA,IAAM9D,EAAI+D,EAC3B,MAAM,IAAIxK,EAAc,yBAAyByG,OAAO8D,KAE1D,OAAOC,CACT,CDViBE,EAAAA,WAAA,CADdC,uFAC8Bb,EAAG3a,QAAA0O,oDASjCqM,EAAA/B,UAAA,SAAA,MAGcuC,EAAAA,WAAA,CADdC,EAAAA,aAAY,0EACgBb,EAAG3a,QAAA0O,oDAI/BqM,EAAA/B,UAAA,OAAA,MAGcuC,EAAAA,WAAA,CADdC,uFAC8Bb,EAAG3a,QAAA0O,oDAIjCqM,EAAA/B,UAAA,SAAA,MAGcuC,EAAAA,WAAA,CADdC,uFAC8Bb,EAAG3a,QAAA0O,oDAIjCqM,EAAA/B,UAAA,SAAA,MAGcuC,EAAAA,WAAA,CADdC,uFACiCb,EAAG3a,QAAA0O,oDAWpCqM,EAAA/B,UAAA,YAAA,MAGcuC,EAAAA,WAAA,CADdC,EAAAA,aAAY,0EACmBb,EAAG3a,QAAA0O,oDAWlCqM,EAAA/B,UAAA,UAAA,MAGcuC,EAAAA,WAAA,CADdC,uFACiCb,EAAG3a,QAAA0O,oDAapCqM,EAAA/B,UAAA,YAAA,MAGcuC,EAAAA,WAAA,CADdC,EAAAA,aAAY,0EACqBb,EAAG3a,QAAA0O,OAAAA,oDAcpCqM,EAAA/B,UAAA,YAAA,MAGcuC,EAAAA,WAAA,CADdC,EAAAA,aAAY,0EACkBb,EAAG3a,QAAA0O,OAAAA,oDAMjCqM,EAAA/B,UAAA,SAAA,MAGcuC,EAAAA,WAAA,CADdC,EAAAA,aAAY,wCAEFC,EAAAA,WAAA,oBAAA,CAAAd,EAAG3a,6BAIgBD,+CAc7Bgb,EAAA/B,UAAA,aAAA,MAGcuC,EAAAA,WAAA,CADdC,EAAAA,aAAY,0EAEFb,EAAAA,QAAGjM,OAAAA,OAAAA,oDAQbqM,EAAA/B,UAAA,YAAA,MA0CcuC,EAAAA,WAAA,CADdC,uFACwBb,EAAAA,qDAExBI,EAAA/B,UAAA,OAAA,MAGcuC,EAAAA,WAAA,CADdC,EAAAA,aAAY,0EACuBb,EAAAA,qDAKnCI,EAAA/B,UAAA,cAAA,MAGcuC,EAAAA,WAAA,CADdC,uFACiCb,EAAG3a,QAAA0O,oDAWpCqM,EAAA/B,UAAA,YAAA,ME5MI,IAAM0C,EAAN,cAAyBC,YA8B9B,WAAA1b,CAAY4E,GACV3E,MAAM2E,EACP,GA1BD0W,EAAAA,WAAA,CALCxW,KAAG,CAAEP,KAAM,+CAKEkX,EAAA1C,UAAA,YAAA,GAQduC,EAAAA,WAAA,CANCK,WACAC,iDAKcH,EAAA1C,UAAA,aAAA,GAOfuC,EAAAA,WAAA,CANCK,WACAC,iDAKeH,EAAA1C,UAAA,cAAA,GAOhBuC,EAAAA,WAAA,CANCK,WACAC,iDAKiBH,EAAA1C,UAAA,gBAAA,GA5BP0C,EAAUH,aAAA,CAFtBvZ,EAAAA,MAAM,gBACNuJ,sDACYmQ,GAqDN,IAAMI,EAAN,cAA0BH,YA+B/B,WAAA1b,CAAY4E,GACV3E,MAAM2E,EACP,GA3BD0W,EAAAA,WAAA,CALCxW,KAAG,CAAEP,KAAM,+CAKAsX,EAAA9C,UAAA,UAAA,GAQZuC,EAAAA,WAAA,CANCK,WACAC,iDAKcC,EAAA9C,UAAA,aAAA,GAQfuC,EAAAA,WAAA,CANCK,WACAC,iDAKgBC,EAAA9C,UAAA,eAAA,GAOjBuC,EAAAA,WAAA,CALCK,+CAKgBE,EAAA9C,UAAA,eAAA,GA7BN8C,EAAWP,aAAA,CAFvBvZ,EAAAA,MAAM,iBACNuJ,sDACYuQ,GAmDN,IAAMC,EAAN,cAAwBJ,YA8B7B,WAAA1b,CAAY4E,GACV3E,MAAM2E,EACP,YCjHamX,IACd,OAAO,SACLlJ,EACAmJ,EACAC,GAEA,MAAMC,EAAiBD,EAAW1R,MAgClC,OA9BA0R,EAAW1R,MAAQrF,kBAEd1D,GAEH,MAAME,EAAiBF,EAAK,GACtB2a,EAAWza,EAAI6T,eAAenE,QAE9BxK,QAAgBzG,KACH,gBACjByG,SAEIwV,QAAexV,EAAOyV,QAAQ3a,GAEpC,GAAqB,GAAjB0a,EAAOnY,OACT,MAAM,IAAIgK,EAAAA,cAAc,uBAG1B,GAAImO,EAAOnY,OAAS,EAClB,MAAM,IAAIgK,EAAaA,cAAC,6BAA6BmO,EAAOnY,QAG9D,GAAImY,EAAO,GAAGva,OAASsa,EACrB,MAAM,IAAIxE,EAAkBA,mBAC1B,8BAA8BqE,kBAIlC,aAAaE,EAAejJ,MAAM9S,KAAMqB,EAC1C,EAEOya,CACT,CACF,CChFA,IAAYK,EFqIVhB,EAAAA,WAAA,CAXCxW,KAAG,CAAEP,KAAM,WAKXoX,WACAC,iDAKcE,EAAA/C,UAAA,aAAA,GAQfuC,EAAAA,WAAA,CANCK,WACAC,iDAKgBE,EAAA/C,UAAA,eAAA,GAQjBuC,EAAAA,WAAA,CANCK,WACAC,iDAKcE,EAAA/C,UAAA,aAAA,GA5BJ+C,EAASR,aAAA,CAFrBvZ,EAAAA,MAAM,oBACNuJ,sDACYwQ,GEzHb,CAAYQ,IAQVA,EAAA,SAAA,WASAA,EAAA,SAAA,UACD,EAlBD,CAAYA,IAAAA,EAkBX,CAAA,ICuBK,MAAgBC,UAA4B7C,EAOhD,WAAA1Z,CAAsBgC,GACpB/B,MAAM+B,EAAM6Z,GAEZU,EAAoBxZ,QAClBwZ,EAAoBxZ,SAAW,IAAIsO,EAErClR,KAAKqc,iBAAmB3Z,EAAyBgX,SAC/CgC,EACAU,EAAoBxZ,QAAQ+O,OAG9B3R,KAAKsc,gBAAkB5Z,EAAyBgX,SAC9C4B,EACAc,EAAoBxZ,QAAQ+O,OAG9B3R,KAAKuc,oBAAsB7Z,EAAyBgX,SAClDiC,EACAS,EAAoBxZ,QAAQ+O,MAE/B,CAGD,eAAM6K,CAAU9Y,GACd,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwc,iBAE5Cxc,KAAKyc,iBAAiBlb,GAE5B,MAAMkF,EAASzG,KAAKsc,gBAAgB7V,SAGpC,aAFqBA,EAAOyV,QAAQ3a,IAAM,GAE7BM,IACd,CASD,YAAM6a,CAAOhZ,GACX,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwc,iBAE5Cxc,KAAKyc,iBAAiBlb,GAE5B,MAAMkF,EAASzG,KAAKsc,gBAAgB7V,SAGpC,aAFqBA,EAAOyV,QAAQ3a,IAAM,GAE7Bob,MACd,CAUD,cAAMC,CAASlZ,GACb,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwc,iBAE5Cxc,KAAKyc,iBAAiBlb,GAE5B,MAAMkF,EAASzG,KAAKsc,gBAAgB7V,SAGpC,aAFqBA,EAAOyV,QAAQ3a,IAAM,GAE7Bsb,QACd,CASD,iBAAMC,CAAYpZ,GAChB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwc,iBAE5Cxc,KAAKyc,iBAAiBlb,GAE5B,MAAMkF,EAASzG,KAAKqc,iBAAiB5V,SAC/BsW,QAAgBtW,EAAOyV,QAAQ3a,GAErC,GAAsB,GAAlBwb,EAAQjZ,OACV,MAAM,IAAIgK,EAAaA,cAAC,aAAa9N,KAAKqa,4BAG5C,IAAI2C,EAAQ,EAMZ,OAJAD,EAAQ9S,QAASgT,IACfD,GAASC,EAAOC,UAGXF,CACR,CAUD,eAAMG,CAAUzZ,EAAkBhC,GAChC,MAAMH,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwc,WAMlD,aAJMxc,KAAKyc,iBAAiBlb,UAEPvB,KAAKqc,iBAAiBxO,KAAKnM,EAAOH,IAEzC2b,OACf,CAaK,cAAAE,CACJ1Z,EACA2Z,EACAjT,GAGA,MAAM7I,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKod,gBAC5Cpd,KAAKyc,iBAAiBlb,GAE5B,MAAMgB,EAAOhB,EAAInB,SAAS6Q,QAG1B,UAD2BjR,KAAKsd,UAAU/a,EAAM8a,EAAIjT,EAAO7I,GAEzD,MAAM,IAAIqD,EAAAA,cAAc,sBAG1B,OAAO,CACR,CAYK,kBAAA2Y,CACJ7Z,EACAnB,EACA8a,EACAjT,GAGA,MAAM7I,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwd,gBAC5Cxd,KAAKyc,iBAAiBlb,GAI5B,MAAMkc,EAAUlc,EAAInB,SAAS6Q,QAEvByM,QAAkB1d,KAAK2d,cAAcpb,EAAMkb,EAASlc,GAC1D,IAAKmc,GAA+B,EAAlBA,EAAUtT,MAC1B,MAAM,IAAIuG,EACR,WAAW8M,2BAAiClb,KAIhD,MAAMqb,EAAmBF,EAAUtT,MAGnC,GAAuBA,EAAnBwT,EACF,MAAM,IAAIlN,EACR,wDAKJ,MAAMmN,EAAmB3C,EAAI0C,EAAkBxT,GACzC0T,EAAe/a,OAAOC,OAAO,CAAA,EAAI0a,EAAW,CAChDtT,MAAOyT,IAOT,SAJM7d,KAAKuc,oBAAoB3N,OAAOkP,EAAcvc,UAGzBvB,KAAKsd,UAAU/a,EAAM8a,EAAIjT,EAAO7I,GAEzD,MAAM,IAAIqD,EAAAA,cAAc,sBAG1B,OAAO,CACR,CAED,eAAM0Y,CACJ/a,EACA8a,EACAjT,EACA7I,GAEA,MAAMD,EAAMC,EAAIoC,OAEhB,GAAIpB,IAAS8a,EACX,MAAM,IAAI7F,EAAAA,mBACR,mDAIJ,GAAY,EAARpN,EAEF,MAAM,IAAIsG,EAAa,sCAKzB,MAAMqN,QAAmB/d,KAAKqc,iBAAiBxO,KAAKtL,EAAMhB,GAEpDyc,EAAcD,EAAWb,QAG/B,GAAkB9S,EAAd4T,EACF,MAAM,IAAItN,EAAa,kBAAkBnO,6BAK3C,IAAI0b,EACAC,GAAuB,EAC3B,IACED,QAAiBje,KAAKqc,iBAAiBxO,KAAKwP,EAAI9b,EACjD,CAAC,MAAOgG,GACP,KAAIA,aAAaC,EAAAA,WAaf,MAAM,IAAI5C,EAAAA,cAAc2C,GAZxB,GAAe,MAAXA,EAAE4W,KASJ,MAAM,IAAIvZ,EAAaA,cAAC2C,EAAE6P,SAP1B6G,EAAW,IAAIvC,EAAY,CACzBta,GAAIic,EACJH,QAAS,EACTkB,YAAape,KAAKwc,UAAUjb,KAE9B2c,GAAc,CAOnB,CAED,MAAMG,EAAYJ,EAASf,QAGrBoB,EAAqBpD,EAAI8C,EAAa5T,GACtCmU,EAAmBxD,EAAIsD,EAAWjU,GAElCoU,EAAoBzb,OAAOC,OAAO,CAAA,EAAI+a,EAAY,CACtDb,QAASoB,UAGLte,KAAKqc,iBAAiBzN,OAAO4P,EAAmBjd,GAEtD,MAAMkd,EAAkB1b,OAAOC,OAAO,CAAA,EAAIib,EAAU,CAClDf,QAASqB,IAGPL,QACIle,KAAKqc,iBAAiBxN,OAAO4P,EAAiBld,SAE9CvB,KAAKqc,iBAAiBzN,OAAO6P,EAAiBld,GAItD,MAAMmd,EAAgB,CAAEnc,OAAM8a,KAAIjT,MAAOA,GAYzC,OAVApK,KAAK4N,KACF+Q,QACCrD,EACAa,EAAYyC,SACZ,GACAF,EACAnd,GAEDsd,MAAOtX,GAAMjG,EAAIqK,MAAM,8BAA8BpE,KAEjD,CACR,CAYK,aAAAuX,CACJpb,EACA+Z,EACArT,GAEA,MAAM7I,IAAEA,EAAG6E,QAAEA,SAAkBpG,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK8e,eAErD9e,KAAKyc,iBAAiBlb,GAE5B,MAAMG,EAAQH,EAAInB,SAAS6Q,QAE3B,IAAIyM,QAAkB1d,KAAK2d,cAAcjc,EAAO+b,EAASlc,GAIzD,UAF0BvB,KAAKqc,iBAAiBxO,KAAKnM,KAAU0E,IAE/C8W,QAAU9S,EACxB,MAAM,IAAIsG,EAAa,kBAAkBhP,6BAGvCgc,GAEFA,EAAUtT,MAAQA,QACZpK,KAAKuc,oBAAoB3N,OAAO8O,KAActX,KAEpDsX,EAAY,IAAI/B,EAAU,CACxBja,MAAOA,EACP+b,QAASA,EACTrT,MAAOA,UAGHpK,KAAKuc,oBAAoB1N,OAAO6O,KAActX,IAItD,MAAM2Y,EAAgB,CAAErd,QAAO+b,UAASrT,MAAOA,GAS/C,OARApK,KAAK4N,KAAK+Q,QACRrD,EACAa,EAAY6C,SACZ,GACAD,EACAxd,IAGK,CACR,CAWK,eAAAoa,CACJjY,EACAhC,EACA+b,GAEA,MAAMlc,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK2b,iBAE5C3b,KAAKyc,iBAAiBlb,GAE5B,MAAMmc,QAAkB1d,KAAK2d,cAAcjc,EAAO+b,EAASlc,GAE3D,IAAKmc,EACH,MAAM,IAAI/M,EACR,WAAW8M,2BAAiC/b,KAGhD,OAAOgc,EAAUtT,KAClB,CAED,mBAAMuT,CACJjc,EACA+b,EACAlc,GAEA,MAAM0d,EAAqBjW,EAAAA,UAAUC,IACnCD,EAAAA,UAAUE,UAAqB,SAASC,GAAGzH,GAC3CsH,EAASA,UAACE,UAAqB,WAAWC,GAAGsU,IAGzCC,QAAkB1d,KAAKuc,oBAC1B9V,SACAC,MAAMuY,GACN/C,QAAQ3a,GACX,OAAOmc,IAAY,EACpB,CAcD,gBAAMwB,CAAWxb,EAAkB0a,GACjC,MAAM7c,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKkf,YAGlD,UADqBlf,KAAKsc,gBAAgB7V,SAASyV,QAAQ3a,IAChDuC,OAAS,EAClB,MAAM,IAAI0T,EAAAA,mBACR,6EAQJ,OAJA4G,EAAM1c,MAAQH,EAAInB,SAAS6Q,cAErBjR,KAAKsc,gBAAgBzN,OAAOuP,EAAO7c,IAElC,CACR,CAID,sBAAMkb,CAAiB/Y,GACrB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKyc,kBAElD,GAAqB,UADAzc,KAAKsc,gBAAgB7V,SAASyV,QAAQ3a,IAChDuC,OACT,MAAM,IAAI+M,EACR,wGAGL,CAWD,UAAMsO,CAAKzb,EAAkB0b,GAC3B,MAAM7d,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKmf,YAE5Cnf,KAAKyc,iBAAiBlb,GAG5B,MAAM8d,EAAS9d,EAAInB,SAAS6Q,QAE5B,GAAc,GAAVmO,EACF,MAAM,IAAI3Z,EAAAA,gBAAgB,0CAG5B,IAAI6Z,EACJ,IACEA,QAAqBtf,KAAKqc,iBAAiBxO,KAAKwR,EAAQ9d,GAExD,MAEMge,EAAiBxE,EAFAuE,EAAapC,QAEOkC,GAErCI,EAAgBzc,OAAOC,OAAO,CAAA,EAAIsc,EAAc,CACpDpC,QAASqC,UAGLvf,KAAKqc,iBAAiBzN,OAAO4Q,EAAeje,EACnD,CAAC,MAAOgG,GACP,KAAIA,aAAaC,EAAAA,WAaf,MAAM,IAAI5C,EAAAA,cAAc2C,GAZxB,GAAe,MAAXA,EAAE4W,KASJ,MAAM,IAAIvZ,EAAaA,cAAC2C,EAAE6P,SATR,CAElB,MAAMqI,EAAY,IAAI/D,EAAY,CAChCta,GAAIie,EACJnC,QAASkC,EACThB,YAAape,KAAKwc,UAAU9Y,WAExB1D,KAAKqc,iBAAiBxN,OAAO4Q,EAAWle,EAC/C,CAMJ,CAGD,MAAMmd,EAAgB,CAAEnc,KAAM,MAAO8a,GAAIgC,EAAQjV,MAAOgV,GAEtDpf,KAAK4N,KAAKrN,kBACCU,gBACXqa,EACAa,EAAYyC,SACZ,GACAF,EACAnd,EAEH,CAWD,UAAMme,CAAKhc,EAAkB0b,GAC3B,MAAM9d,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAK0f,YAEjD1f,KAAKyc,iBAAiBlb,GAE5B,MAAM8d,EAAS9d,EAAInB,SAAS6Q,QAEtBqO,QAAqBtf,KAAKqc,iBAAiBxO,KAAKwR,EAAQ9d,GAExDoe,EAAiBL,EAAapC,QAEpC,GAAqBkC,EAAjBO,EACF,MAAM,IAAIjP,EAAa,kCAGzB,MAAM6O,EAAiBrE,EAAIyE,EAAgBP,GAErCI,EAAgBzc,OAAOC,OAAO,CAAA,EAAIsc,EAAc,CACpDpC,QAASqC,UAGLvf,KAAKqc,iBAAiBzN,OAAO4Q,EAAeje,GAElDD,EAAI4C,KAAQkb,EAAH,uBAGT,MAAMV,EAAgB,CAAEnc,KAAM8c,EAAQhC,GAAI,MAAOjT,MAAOgV,GAEtDpf,KAAK4N,KAAKrN,kBACCU,gBACXqa,EACAa,EAAYyC,SACZ,GACAF,EACAnd,EAEH,CAYK,cAAAic,CACJ9Z,EACAkc,EACAR,GAEA,MAAM9d,IAAEA,EAAGC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwd,gBAEjDxd,KAAKyc,iBAAiBlb,GAE5B,MAAMse,QAAsB7f,KAAKqc,iBAAiBxO,KAAK+R,EAASre,GAE1Doe,EAAiBE,EAAc3C,QAErC,GAAqBkC,EAAjBO,EACF,MAAM,IAAIjP,EAAgBkP,EAAH,4BAGzB,MAAML,EAAiBrE,EAAIyE,EAAgBP,GAErCU,EAAiB/c,OAAOC,OAAO,CAAA,EAAI6c,EAAe,CACtD3C,QAASqC,UAGLvf,KAAKqc,iBAAiBzN,OAAOkR,EAAgBve,GAEnDD,EAAI4C,KAAK,GAAGkb,6BAAkCQ,KAG9C,MAAMlB,EAAgB,CAAEnc,KAAMqd,EAASvC,GAAI,MAAOjT,MAAOgV,GAEvDpf,KAAK4N,KAAKrN,kBACCU,gBACXqa,EACAa,EAAYyC,SACZ,GACAF,EACAnd,EAEH,CASD,0BAAMwe,CAAqBrc,GACzB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKwc,iBAE5Cxc,KAAKyc,iBAAiBlb,GAG5B,MAAMye,EAAkBze,EAAInB,SAAS6Q,QAE/BgP,QAAqBjgB,KAAKqc,iBAAiBxO,KAAKmS,EAAiBze,GAEvE,IAAK0e,EACH,MAAM,IAAIvP,EAAa,eAAesP,oBAGxC,OAAOC,EAAa/C,OACrB,CAMD,qBAAMgD,CAAgBxc,GACpB,MAAMnC,IAAEA,SAAcvB,KAAKyB,OAAO,CAACiC,GAAU1D,KAAKkgB,iBAMlD,aAJMlgB,KAAKyc,iBAAiBlb,GAGJA,EAAInB,SAAS6Q,OAEtC,EArmBKkK,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACYxb,EAAAA,qDASxBwc,EAAAxD,UAAA,YAAA,MASKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACSxb,EAAAA,qDASrBwc,EAAAxD,UAAA,SAAA,MAUKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACWxb,EAAAA,qDASvBwc,EAAAxD,UAAA,WAAA,MASKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACcxb,EAAAA,qDAmB1Bwc,EAAAxD,UAAA,cAAA,MAUKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACYxb,EAAOA,QAAA0O,oDAQ/B8N,EAAAxD,UAAA,YAAA,MAaKuC,EAAAA,WAAA,CADLC,uFAEUxb,EAAOA,QAAA0O,OAAAF,oDAgBjBgO,EAAAxD,UAAA,WAAA,MAYKuC,EAAAA,WAAA,CADLC,uFAEUxb,EAAAA,QAAO0O,OAAAA,OAAAF,oDA4CjBgO,EAAAxD,UAAA,eAAA,MAwGKuC,EAAAA,WAAA,CADLC,uFAEUxb,EAAOA,QAAA0O,OAAAF,oDA2CjBgO,EAAAxD,UAAA,UAAA,MAWKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EAEFxb,EAAOA,QAAA0O,OAAAA,oDAgBjB8N,EAAAxD,UAAA,YAAA,MA+BKuC,EAAAA,WAAA,CADLC,qDACyBC,EAAAA,WAAA,oBAAA,CAAAzb,EAAOA,QAAS0b,+CAezCc,EAAAxD,UAAA,aAAA,MAIKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACmBxb,EAAAA,qDAQ/Bwc,EAAAxD,UAAA,mBAAA,MAWKuC,EAAAA,WAAA,CAFLS,IACAR,uFACmBxb,EAAOA,QAAAwO,oDAsD1BgO,EAAAxD,UAAA,OAAA,MAWKuC,EAAAA,WAAA,CAFLS,IACAR,uFACmBxb,EAAOA,QAAAwO,oDAoC1BgO,EAAAxD,UAAA,OAAA,MAYKuC,EAAAA,WAAA,CAFLS,IACAR,uFAEUxb,EAAOA,QAAA0O,OAAAF,oDAqCjBgO,EAAAxD,UAAA,WAAA,MASKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACuBxb,EAAAA,qDAenCwc,EAAAxD,UAAA,uBAAA,MAMKuC,EAAAA,WAAA,CADLC,EAAAA,aAAY,0EACkBxb,EAAAA,qDAQ9Bwc,EAAAxD,UAAA,kBAAA,MC/qBU,MAAAuH,EAAmB,CAAC/D,GCFpBgE,EAAU,cACVC,EAAe,cAE5BrY,EAAAA,SAASsY,gBAAgBD,EAAcD,kXV2IhCrb,eAKLrB,EACAqN,EACApL,EACAwF,GAEA,IAAK4F,EAAK3M,MAAQ+G,EAAMxF,GACtB,OAgBF,IAAIgI,EADCoD,EAAKlP,OAAMkP,EAAKlP,KAAOmC,EAAKA,MAACK,aAAa8G,EAAO,OAEtD,IACEwC,QAAkB3N,KAAK4C,QAAQ0B,SAASyM,EACzC,CAAC,MAAOxJ,GACP,MAAM,IAAI3C,EAAAA,cACR,kCAAkCmM,EAAKlP,SAAS0F,IAEnD,CAED,MAAM2G,QAAaP,EAASO,KAAKxK,GAjB/BX,OAAOwd,eAkBUpV,EAAOxF,EAlBmB,CACzC6a,YAAY,EACZC,UAAU,EACVC,cAAc,EACdtW,MAcqC8D,GAC3C"}