@drincs/pixi-vn 1.5.13 → 1.5.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -3
- package/dist/canvas.cjs +3 -2
- package/dist/canvas.d.cts +46 -105
- package/dist/canvas.d.ts +46 -105
- package/dist/canvas.mjs +3 -2
- package/dist/characters.cjs +2 -1
- package/dist/characters.mjs +2 -1
- package/dist/chunk-46QBDRUK.mjs +2 -0
- package/dist/chunk-52EK6LYW.mjs +2 -0
- package/dist/chunk-INJYRMJ3.mjs +2 -0
- package/dist/{chunk-TTRUPDAB.mjs → chunk-JJFD2BVW.mjs} +2 -1
- package/dist/chunk-JJFD2BVW.mjs.map +1 -0
- package/dist/chunk-OXRIVLY2.mjs +2 -0
- package/dist/chunk-SOFV7YZ5.mjs +2 -0
- package/dist/chunk-XZMYXKAY.mjs +2 -0
- package/dist/core.cjs +1 -0
- package/dist/core.d.cts +399 -0
- package/dist/core.d.ts +399 -0
- package/dist/core.mjs +1 -0
- package/dist/history.cjs +2 -1
- package/dist/history.d.cts +1 -1
- package/dist/history.d.ts +1 -1
- package/dist/history.mjs +2 -1
- package/dist/index.cjs +3 -2
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +9 -10
- package/dist/index.d.ts +9 -10
- package/dist/index.mjs +3 -2
- package/dist/index.mjs.map +1 -0
- package/dist/motion.cjs +2 -0
- package/dist/motion.cjs.map +1 -0
- package/dist/motion.d.cts +96 -0
- package/dist/motion.d.ts +96 -0
- package/dist/motion.mjs +2 -0
- package/dist/motion.mjs.map +1 -0
- package/dist/narration.cjs +3 -2
- package/dist/narration.mjs +3 -2
- package/dist/pixi/browser.js +170 -167
- package/dist/sound.cjs +2 -1
- package/dist/sound.mjs +2 -1
- package/dist/storage.cjs +2 -1
- package/dist/storage.mjs +2 -1
- package/dist/vite-listener.cjs +2 -1
- package/dist/vite-listener.cjs.map +1 -0
- package/dist/vite-listener.mjs +2 -1
- package/dist/vite-listener.mjs.map +1 -0
- package/dist/vite.cjs +2 -1
- package/dist/vite.cjs.map +1 -0
- package/dist/vite.mjs +2 -1
- package/dist/vite.mjs.map +1 -0
- package/package.json +27 -10
- package/dist/chunk-6GO4XVS7.mjs +0 -1
- package/dist/chunk-6IVCTY6P.mjs +0 -1
- package/dist/chunk-GNJIUFU2.mjs +0 -1
- package/dist/chunk-HVEJJGVC.mjs +0 -1
- package/dist/chunk-XDBHD3IV.mjs +0 -1
- package/dist/chunk-XSN6P5JL.mjs +0 -0
- package/dist/unifier.cjs +0 -1
- package/dist/unifier.mjs +0 -1
package/dist/history.d.cts
CHANGED
|
@@ -135,7 +135,7 @@ interface HistoryManagerInterface {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
declare class HistoryManagerStatic {
|
|
138
|
-
static _diffHistory: CachedMap<number,
|
|
138
|
+
static _diffHistory: CachedMap<number, deepDiff.Diff<GameStepState, GameStepState>[] | Difference[]>;
|
|
139
139
|
static _stepsInfoHistory: CachedMap<number, Omit<HistoryStep, "diff">>;
|
|
140
140
|
static _narrationHistory: CachedMap<number, NarrationHistory>;
|
|
141
141
|
static stepLimitSaved: number;
|
package/dist/history.d.ts
CHANGED
|
@@ -135,7 +135,7 @@ interface HistoryManagerInterface {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
declare class HistoryManagerStatic {
|
|
138
|
-
static _diffHistory: CachedMap<number,
|
|
138
|
+
static _diffHistory: CachedMap<number, deepDiff.Diff<GameStepState, GameStepState>[] | Difference[]>;
|
|
139
139
|
static _stepsInfoHistory: CachedMap<number, Omit<HistoryStep, "diff">>;
|
|
140
140
|
static _narrationHistory: CachedMap<number, NarrationHistory>;
|
|
141
141
|
static stepLimitSaved: number;
|
package/dist/history.mjs
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
import'./chunk-
|
|
1
|
+
import'./chunk-52EK6LYW.mjs';import {a}from'./chunk-INJYRMJ3.mjs';import {d,k as k$1,j}from'./chunk-46QBDRUK.mjs';import {GameUnifier}from'@drincs/pixi-vn/core';var k={Date:true,RegExp:true,String:true,Number:true};function x(d,e,r={cyclesFix:true},t=[]){let a=[],n=Array.isArray(d);for(let o in d){let s=d[o],u=n?+o:o;if(!(o in e)){a.push({type:"REMOVE",path:[u],oldValue:d[o]});continue}let p=e[o],m=typeof s=="object"&&typeof p=="object"&&Array.isArray(s)===Array.isArray(p);s&&p&&m&&!k[Object.getPrototypeOf(s)?.constructor?.name]&&(!r.cyclesFix||!t.includes(s))?a.push.apply(a,x(s,p,r,r.cyclesFix?t.concat([s]):[]).map(c=>(c.path.unshift(u),c))):s!==p&&!(Number.isNaN(s)&&Number.isNaN(p))&&!(m&&(isNaN(s)?s+""==p+"":+s==+p))&&a.push({path:[u],type:"CHANGE",value:p,oldValue:s});}let f=Array.isArray(e);for(let o in e)o in d||a.push({type:"CREATE",path:[f?+o:o],value:e[o]});return a}function D(d,e){let r=k$1(d);return e.length>1&&"type"in e[0]&&(e=e.reverse()),e.forEach(t=>{"type"in t?I(r,t):E(r,t);}),r}function I(d,e){let r=d;e.path&&e.path.length>0?e.path.forEach((t,a)=>{if(e.path&&a===e.path.length-1)switch(e.type){case "CHANGE":case "REMOVE":r[t]=e.oldValue;break;case "CREATE":Array.isArray(r)&&typeof t=="number"?r.splice(t,1):delete r[t];break}else r=r[t];}):j.warn("No path found, skipping diff",e);}function E(d,e){let r=d;e.path&&e.path.length>0?e.path.forEach((t,a)=>{if(e.path&&a===e.path.length-1){if(e.kind==="E"||e.kind==="D")r[t]=e.lhs;else if(e.kind==="N")Number.isInteger(t)?Array.isArray(r)&&r.splice(t,1):typeof t=="string"&&delete r[t];else if(e.kind==="A"){let n=e.index;e.item.kind==="N"?r[t].splice(n,1):e.item.kind==="E"||e.item.kind==="D"?r[t][n]=e.item.lhs:e.item.kind==="A"?j.warn("Nested array found, skipping diff",e):j.warn("No array found, skipping diff",e);}}else r=r[t];}):j.warn("No path found, skipping diff",e);}var g=class g{static get originalStepData(){return g._originalStepData?k$1(g._originalStepData):{path:"",storage:{},canvas:{elementAliasesOrder:[],elements:{},stage:{},tickers:{},tickersSteps:{},tickersOnPause:{},tickersToCompleteOnStepEnd:{tikersIds:[],stepAlias:[]}},sound:{soundAliasesOrder:[],soundsPlaying:{},playInStepIndex:{},filters:void 0},labelIndex:-1,openedLabels:[]}}static set originalStepData(e){g._originalStepData=k$1(e);}};d(g,"_diffHistory",new a({cacheSize:5})),d(g,"_stepsInfoHistory",new a({cacheSize:5})),d(g,"_narrationHistory",new a({cacheSize:50})),d(g,"stepLimitSaved",20),d(g,"_originalStepData");var i=g;var b=class{get stepsInfoMap(){return i._stepsInfoHistory}get diffMap(){return i._diffHistory}get narrationMap(){return i._narrationHistory}get size(){return i._stepsInfoHistory.size}get lastKey(){return this.size===0?null:Math.max(...Array.from(this.keys()))}keys(){return i._stepsInfoHistory.keys()}get(e){let r=i._narrationHistory.get(e);if(!(r&&Object.keys(r).length===1&&r.stepIndex!==void 0))return r}delete(e){i._stepsInfoHistory.delete(e),i._diffHistory.delete(e),i._narrationHistory.delete(e);}getOldGameState(e,r){if(e<=0||this.size==0)return r;let t=this.lastKey;if(typeof t!="number")return j.warn("You can't go back, there is no step to go back"),r;let a=i._diffHistory.get(t);if(a)try{let n=D(r,a);return GameUnifier.stepCounter=t,this.delete(t),this.getOldGameState(e-1,n)}catch(n){return j.error("Error applying diff",n),r}else return j.warn("No diff found for the last step, cannot go back"),r}async back(e,r={}){let{steps:t=1}=r;if(!Number.isFinite(t)){j.warn(`[back] The parameter steps must be a valid finite number, received: ${t}`);return}if(t<=0){j.warn(`[back] The parameter steps must be greater than 0, received: ${t}`);return}if(GameUnifier.runningStepsCount>0){GameUnifier.increaseBackRequest(t);return}if(i._diffHistory.size<1){j.warn("You can't go back, there is no step to go back");return}GameUnifier.runningStepsCount++;try{let a=k$1(this.getOldGameState(t,i.originalStepData));if(a){await GameUnifier.restoreGameStepState(a,GameUnifier.navigate);let n=GameUnifier.stepCounter-1,f=i._narrationHistory.get(n);if(f&&Object.keys(f).length===1&&f.stepIndex!==void 0){let o=i._stepsInfoHistory.get(n);if(o){let s=this.itemMapper({step:o});i._narrationHistory.set(o.index,s);}}}else j.error("Error going back");i.originalStepData=a;}catch(a){j.error("Error going back",a);}finally{if(GameUnifier.runningStepsCount--,GameUnifier.runningStepsCount===0&&GameUnifier.backRequestsCount!==0)return await GameUnifier.processNavigationRequests(e)}}add(e,r={}){let t=i.originalStepData,{ignoreSameStep:a}=r,n=GameUnifier.currentGameStepState;if(!a&&this.isSameStep(t,n))return;let f=this.lastKey;(async()=>{try{let s,u;if(typeof f=="number"&&(s=i._stepsInfoHistory.get(f),u=i._narrationHistory.get(f)),i._stepsInfoHistory.set(e.index,e),e.index!==0){let c=x(t,n);c?i._diffHistory.set(e.index,c):j.warn("It was not possible to create the difference between the two steps");}let p={},m=this.itemMapper({step:e},p);if(i._narrationHistory.set(e.index,m),s&&u&&typeof f=="number"){let c=this.itemMapper({...p,step:s},{});i._narrationHistory.set(f,c);}}catch(s){j.error("Error adding history step",s);}})(),i.originalStepData=n;}itemMapper(e,r){let{step:t,choiceIndexMade:a,inputValue:n,removeDialogue:f}=e,o=t.dialogue||t.dialoge;r&&t.isGlued&&(r.removeDialogue=true),f&&(o=void 0);let s=t.choices;if(r&&t.currentLabel&&t.choiceIndexMade!==void 0&&(r.choiceIndexMade=t.choiceIndexMade),t.inputValue&&r&&(r.inputValue=t.inputValue),o||s||n){let u=s?.map((p,m)=>{let c=false;return p.oneTime&&t.alreadyMadeChoices&&t.alreadyMadeChoices.includes(m)&&(c=true),{text:p.text,type:p.type,isResponse:false,hidden:c}});if(u){if(u.every(p=>p.hidden)){let p=u.find(m=>m.hidden===false);p&&(p.hidden=false);}a!==void 0&&(u[a].isResponse=true);}return {dialogue:o?{...o,character:o.character?GameUnifier.getCharacter(o.character)||o.character:void 0}:void 0,playerMadeChoice:typeof a=="number",choices:u,stepIndex:t.index,inputValue:n}}return {stepIndex:t.index}}get narrativeHistory(){let e=[];return Array.from(this.keys()).sort((t,a)=>t-a).forEach(t=>{let a=this.get(t);a&&e.push(a);}),e}get currentLabelHistory(){let e=[],r=Array.from(this.keys()).sort((s,u)=>u-s);if(r.length===0)return e;let t=r[0];if(typeof t!="number")return e;let a=i._stepsInfoHistory.get(t);if(!a)return e;let n=a.openedLabels;if(!n||!Array.isArray(n)||n.length===0)return e;let f=n[0].currentStepIndex,o=n[0].label;return r.every((s,u)=>{let p=this.get(s);if(p){if(u===0)return e.push(p),true;let m=i._stepsInfoHistory.get(s);if(!m)return true;let c=m.openedLabels;if(!c||!Array.isArray(c)||c.length===0||c[0].label!==o||c[0].currentStepIndex>=f)return false;f=c[0].currentStepIndex,e.push(p);}return true}),e.reverse()}removeNarrativeHistory(e){if(e){let r=Array.from(this.keys()).sort((t,a)=>t-a);r=r.slice(0,e),r.forEach(t=>{i._narrationHistory.delete(t),i._stepsInfoHistory.delete(t),i._diffHistory.delete(t);});}else i._stepsInfoHistory.clear(),i._diffHistory.clear(),i._narrationHistory.clear();}get canGoBack(){let e=this.lastKey;return typeof e!="number"?false:i._diffHistory.has(e)}blockGoBack(){GameUnifier.runningStepsCount===0&&i._diffHistory.clear();}isSameStep(e,r){if(e.openedLabels.length===r.openedLabels.length)try{let t=JSON.stringify(e.openedLabels),a=JSON.stringify(r.openedLabels);if(t===a&&e.path===r.path&&e.labelIndex===r.labelIndex)return !0}catch(t){return j.error("Error comparing opened labels",t),true}return false}clear(){i._stepsInfoHistory.clear(),i._diffHistory.clear(),i._narrationHistory.clear(),i._originalStepData=void 0;}get stepLimitSaved(){return i.stepLimitSaved}set stepLimitSaved(e){i.stepLimitSaved=e;}export(){let e=Array.from(this.keys()).sort((t,a)=>t-a);e.length>this.stepLimitSaved&&(e=e.slice(e.length-this.stepLimitSaved));let r=[];return e.forEach(t=>{let a=i._stepsInfoHistory.get(t);if(a){let n=i._diffHistory.get(t);r.push({...a,diff:n});}}),{stepsHistory:k$1(r),originalStepData:k$1(i._originalStepData)}}restoreNarrativeHistory(){let e=Array.from(this.keys()).sort((t,a)=>t-a),r={};e.forEach(t=>{let a=i._stepsInfoHistory.get(t);if(a){let n={...r};r={};let f=this.itemMapper({step:a,choiceIndexMade:n.choiceIndexMade,inputValue:n.inputValue,removeDialogue:n.removeDialogue},r);f&&i._narrationHistory.set(t,f);}});}async restore(e){this.clear();try{e.hasOwnProperty("stepsHistory")?(e.stepsHistory.forEach(t=>{t.diff&&i._diffHistory.set(t.index,t.diff);let a={...t,diff:void 0};i._stepsInfoHistory.set(t.index,a);}),this.restoreNarrativeHistory()):j.warn("Could not import stepsHistory data, so will be ignored"),e.hasOwnProperty("originalStepData")?i._originalStepData=e.originalStepData:j.warn("Could not import originalStepData data, so will be ignored");}catch(r){j.error("Error importing data",r);}}};var P=new b;export{i as HistoryManagerStatic,P as stepHistory};//# sourceMappingURL=history.mjs.map
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9taWNyb2RpZmYvZGlzdC9pbmRleC5qcyIsIi4uL3NyYy91dGlscy9kaWZmLXV0aWxpdHkudHMiLCIuLi9zcmMvaGlzdG9yeS9IaXN0b3J5TWFuYWdlclN0YXRpYy50cyIsIi4uL3NyYy9oaXN0b3J5L0hpc3RvcnlNYW5hZ2VyLnRzIiwiLi4vc3JjL2hpc3RvcnkvaW5kZXgudHMiXSwibmFtZXMiOlsicmljaFR5cGVzIiwiZGlmZiIsIm9iaiIsIm5ld09iaiIsIm9wdGlvbnMiLCJfc3RhY2siLCJkaWZmcyIsImlzT2JqQXJyYXkiLCJrZXkiLCJvYmpLZXkiLCJwYXRoIiwibmV3T2JqS2V5IiwiYXJlQ29tcGF0aWJsZU9iamVjdHMiLCJkaWZmZXJlbmNlIiwiaXNOZXdPYmpBcnJheSIsInJlc3RvcmVEaWZmQ2hhbmdlcyIsImRhdGEiLCJkaWZmZXJlbmNlcyIsInJlc3VsdCIsImNyZWF0ZUV4cG9ydGFibGVFbGVtZW50IiwicmVzdG9yZU1pY3JvRGlmZkNoYW5nZXMiLCJyZXN0b3JlRGVlcERpZmZDaGFuZ2VzIiwiZGF0YVRvRWRpdCIsImluZGV4IiwibG9nZ2VyIiwiX0hpc3RvcnlNYW5hZ2VyU3RhdGljIiwidmFsdWUiLCJfX3B1YmxpY0ZpZWxkIiwiQ2FjaGVkTWFwIiwiSGlzdG9yeU1hbmFnZXJTdGF0aWMiLCJIaXN0b3J5TWFuYWdlciIsInN0ZXBJbmRleCIsIml0ZW0iLCJzdGVwcyIsInJlc3RvcmVkU3RlcCIsImxhc3RLZXkiLCJHYW1lVW5pZmllciIsImUiLCJwcm9wcyIsInN0ZXBDb3VudGVyIiwiaGlzdG9yeUluZm8iLCJuYXJyYXRpdmVIaXN0b3J5Iiwib3JpZ2luYWxTdGVwRGF0YSIsImlnbm9yZVNhbWVTdGVwIiwiY3VycmVudFN0ZXBEYXRhIiwibGFzdFN0ZXBIaXN0b3J5IiwibGFzdE5hcnJhdGl2ZUhpc3RvcnkiLCJwcmV2aW91c0l0ZW0iLCJwcmV2aW91c05hcnJhdGl2ZUhpc3RvcnkiLCJzdGVwIiwiY2hvaWNlSW5kZXhNYWRlIiwiaW5wdXRWYWx1ZSIsInJlbW92ZURpYWxvZ3VlIiwiZGlhbG9ndWUiLCJyZXF1aXJlZENob2ljZXMiLCJjaG9pY2VzIiwiY2hvaWNlIiwiaGlkZGVuIiwib25seUhhdmVOb0Nob2ljZSIsImEiLCJiIiwia2V5cyIsImxhc3RJdGVtIiwib3BlbmVkTGFiZWxzIiwiY3VycmVudFN0ZXBJbmRleCIsImxhYmVsIiwiaW5mbyIsIm9wZW5lZExhYmVsc1RlbXAiLCJpdGVtc051bWJlciIsIm9yaWdpbmFsU3RhdGUiLCJuZXdTdGF0ZSIsImxhc3RTdGVwRGF0YU9wZW5lZExhYmVsc1N0cmluZyIsImhpc3RvcnlTdGVwT3BlbmVkTGFiZWxzU3RyaW5nIiwibGltaXQiLCJzdGVwc0hpc3RvcnkiLCJtb3JlSW5mbyIsInJlcyIsInN0ZXBIaXN0b3J5Il0sIm1hcHBpbmdzIjoiaUtBQUEsSUFBTUEsQ0FBQUEsQ0FBWSxDQUFFLElBQUEsQ0FBTSxJQUFBLENBQU0sTUFBQSxDQUFRLElBQUEsQ0FBTSxNQUFBLENBQVEsSUFBQSxDQUFNLE9BQVEsSUFBSyxDQUFBLENBQzFELFNBQVJDLENBQUFBLENBQXNCQyxDQUFBQSxDQUFLQyxDQUFBQSxDQUFRQyxFQUFVLENBQUUsU0FBQSxDQUFXLElBQUssQ0FBQSxDQUFHQyxDQUFBQSxDQUFTLEdBQUksQ0FDbEYsSUFBSUMsQ0FBQUEsQ0FBUSxFQUFDLENBQ1BDLENBQUFBLENBQWEsTUFBTSxPQUFBLENBQVFMLENBQUcsQ0FBQSxDQUNwQyxJQUFBLElBQVdNLENBQUFBLElBQU9OLENBQUFBLENBQUssQ0FDbkIsSUFBTU8sQ0FBQUEsQ0FBU1AsQ0FBQUEsQ0FBSU0sQ0FBRyxDQUFBLENBQ2hCRSxDQUFBQSxDQUFPSCxDQUFBQSxDQUFhLENBQUNDLENBQUFBLENBQU1BLENBQUFBLENBQ2pDLEdBQUksRUFBRUEsQ0FBQUEsSUFBT0wsQ0FBQUEsQ0FBQUEsQ0FBUyxDQUNsQkcsQ0FBQUEsQ0FBTSxJQUFBLENBQUssQ0FDUCxJQUFBLENBQU0sUUFBQSxDQUNO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Q0FBU2lDLENBQUFBLEVBQXNCLENBQ3BDQSxDQUFBQSxDQUFLLElBQUEsRUFDTHBCLENBQUFBLENBQXFCLGFBQWEsR0FBQSxDQUFJb0IsQ0FBQUEsQ0FBSyxLQUFBLENBQU9BLENBQUFBLENBQUssSUFBSSxDQUFBLENBRS9ELElBQUlpQixDQUFBQSxDQUFPLENBQUUsR0FBR2pCLENBQUFBLENBQU0sSUFBQSxDQUFNLEtBQUEsQ0FBVSxFQUN0Q3BCLENBQUFBLENBQXFCLGlCQUFBLENBQWtCLEdBQUEsQ0FBSW9CLENBQUFBLENBQUssS0FBQSxDQUFPaUIsQ0FBSSxFQUMvRCxDQUFDLENBQUEsQ0FDRCxJQUFBLENBQUssdUJBQUEsRUFBd0IsRUFFN0IxQyxDQUFBQSxDQUFPLElBQUEsQ0FBSyx3REFBd0QsQ0FBQSxDQUVwRVIsQ0FBQUEsQ0FBSyxjQUFBLENBQWUsa0JBQWtCLENBQUEsQ0FDdENhLENBQUFBLENBQXFCLGtCQUFxQmIsQ0FBQUEsQ0FBMEIsZ0JBQUEsQ0FFcEVRLENBQUFBLENBQU8sSUFBQSxDQUFLLDREQUE0RCxFQUVoRixPQUFTYSxDQUFBQSxDQUFHLENBQ1JiLENBQUFBLENBQU8sS0FBQSxDQUFNLHNCQUFBLENBQXdCYSxDQUFDLEVBQzFDLENBQ0osQ0FDSixDQUFBLENDOWJBLElBQU13QyxDQUFBQSxDQUF1QyxJQUFJL0MiLCJmaWxlIjoiaGlzdG9yeS5tanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCByaWNoVHlwZXMgPSB7IERhdGU6IHRydWUsIFJlZ0V4cDogdHJ1ZSwgU3RyaW5nOiB0cnVlLCBOdW1iZXI6IHRydWUgfTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRpZmYob2JqLCBuZXdPYmosIG9wdGlvbnMgPSB7IGN5Y2xlc0ZpeDogdHJ1ZSB9LCBfc3RhY2sgPSBbXSkge1xuICAgIGxldCBkaWZmcyA9IFtdO1xuICAgIGNvbnN0IGlzT2JqQXJyYXkgPSBBcnJheS5pc0FycmF5KG9iaik7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gb2JqKSB7XG4gICAgICAgIGNvbnN0IG9iaktleSA9IG9ialtrZXldO1xuICAgICAgICBjb25zdCBwYXRoID0gaXNPYmpBcnJheSA/ICtrZXkgOiBrZXk7XG4gICAgICAgIGlmICghKGtleSBpbiBuZXdPYmopKSB7XG4gICAgICAgICAgICBkaWZmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcIlJFTU9WRVwiLFxuICAgICAgICAgICAgICAgIHBhdGg6IFtwYXRoXSxcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZTogb2JqW2tleV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld09iaktleSA9IG5ld09ialtrZXldO1xuICAgICAgICBjb25zdCBhcmVDb21wYXRpYmxlT2JqZWN0cyA9IHR5cGVvZiBvYmpLZXkgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiBuZXdPYmpLZXkgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIEFycmF5LmlzQXJyYXkob2JqS2V5KSA9PT0gQXJyYXkuaXNBcnJheShuZXdPYmpLZXkpO1xuICAgICAgICBpZiAob2JqS2V5ICYmXG4gICAgICAgICAgICBuZXdPYmpLZXkgJiZcbiAgICAgICAgICAgIGFyZUNvbXBhdGlibGVPYmplY3RzICYmXG4gICAgICAgICAgICAhcmljaFR5cGVzW09iamVjdC5nZXRQcm90b3R5cGVPZihvYmpLZXkpPy5jb25zdHJ1Y3Rvcj8ubmFtZV0gJiZcbiAgICAgICAgICAgICghb3B0aW9ucy5jeWNsZXNGaXggfHwgIV9zdGFjay5pbmNsdWRlcyhvYmpLZXkpKSkge1xuICAgICAgICAgICAgZGlmZnMucHVzaC5hcHBseShkaWZmcywgZGlmZihvYmpLZXksIG5ld09iaktleSwgb3B0aW9ucywgb3B0aW9ucy5jeWNsZXNGaXggPyBfc3RhY2suY29uY2F0KFtvYmpLZXldKSA6IFtdKS5tYXAoKGRpZmZlcmVuY2UpID0+IHtcbiAgICAgICAgICAgICAgICBkaWZmZXJlbmNlLnBhdGgudW5zaGlmdChwYXRoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlmZmVyZW5jZTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChvYmpLZXkgIT09IG5ld09iaktleSAmJlxuICAgICAgICAgICAgLy8gdHJlYXQgTmFOIHZhbHVlcyBhcyBlcXVpdmFsZW50XG4gICAgICAgICAgICAhKE51bWJlci5pc05hTihvYmpLZXkpICYmIE51bWJlci5pc05hTihuZXdPYmpLZXkpKSAmJlxuICAgICAgICAgICAgIShhcmVDb21wYXRpYmxlT2JqZWN0cyAmJlxuICAgICAgICAgICAgICAgIChpc05hTihvYmpLZXkpXG4gICAgICAgICAgICAgICAgICAgID8gb2JqS2V5ICsgXCJcIiA9PT0gbmV3T2JqS2V5ICsgXCJcIlxuICAgICAgICAgICAgICAgICAgICA6ICtvYmpLZXkgPT09ICtuZXdPYmpLZXkpKSkge1xuICAgICAgICAgICAgZGlmZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgcGF0aDogW3BhdGhdLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiQ0hBTkdFXCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG5ld09iaktleSxcbiAgICAgICAgICAgICAgICBvbGRWYWx1ZTogb2JqS2V5LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgaXNOZXdPYmpBcnJheSA9IEFycmF5LmlzQXJyYXkobmV3T2JqKTtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBuZXdPYmopIHtcbiAgICAgICAgaWYgKCEoa2V5IGluIG9iaikpIHtcbiAgICAgICAgICAgIGRpZmZzLnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiQ1JFQVRFXCIsXG4gICAgICAgICAgICAgICAgcGF0aDogW2lzTmV3T2JqQXJyYXkgPyAra2V5IDoga2V5XSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogbmV3T2JqW2tleV0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlmZnM7XG59XG4iLCJpbXBvcnQgZGVlcERpZmYgZnJvbSBcImRlZXAtZGlmZlwiO1xuaW1wb3J0IHsgRGlmZmVyZW5jZSB9IGZyb20gXCJtaWNyb2RpZmZcIjtcbmltcG9ydCB7IGNyZWF0ZUV4cG9ydGFibGVFbGVtZW50IH0gZnJvbSBcIi4vZXhwb3J0LXV0aWxpdHlcIjtcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuL2xvZy11dGlsaXR5XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN0b3JlRGlmZkNoYW5nZXM8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4oXG4gICAgZGF0YTogVCxcbiAgICBkaWZmZXJlbmNlczogZGVlcERpZmYuRGlmZjxULCBUPltdIHwgRGlmZmVyZW5jZVtdXG4pOiBUIHtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlRXhwb3J0YWJsZUVsZW1lbnQoZGF0YSk7XG4gICAgaWYgKGRpZmZlcmVuY2VzLmxlbmd0aCA+IDEgJiYgXCJ0eXBlXCIgaW4gZGlmZmVyZW5jZXNbMF0pIHtcbiAgICAgICAgZGlmZmVyZW5jZXMgPSBkaWZmZXJlbmNlcy5yZXZlcnNlKCk7XG4gICAgfVxuICAgIGRpZmZlcmVuY2VzLmZvckVhY2goKGRpZmYpID0+IHtcbiAgICAgICAgaWYgKFwidHlwZVwiIGluIGRpZmYpIHtcbiAgICAgICAgICAgIHJlc3RvcmVNaWNyb0RpZmZDaGFuZ2VzPFQ+KHJlc3VsdCwgZGlmZik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN0b3JlRGVlcERpZmZDaGFuZ2VzPFQ+KHJlc3VsdCwgZGlmZik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiByZXN0b3JlTWljcm9EaWZmQ2hhbmdlczxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PihyZXN1bHQ6IFQsIGRpZmY6IERpZmZlcmVuY2UpIHtcbiAgICBsZXQgZGF0YVRvRWRpdDogYW55ID0gcmVzdWx0O1xuICAgIGlmIChkaWZmLnBhdGggJiYgZGlmZi5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZGlmZi5wYXRoLmZvckVhY2goKHBhdGgsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoZGlmZi5wYXRoICYmIGluZGV4ID09PSBkaWZmLnBhdGgubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZGlmZi50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJDSEFOR0VcIjpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIlJFTU9WRVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVRvRWRpdFtwYXRoXSA9IGRpZmYub2xkVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcIkNSRUFURVwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgcGF0aCBpcyBhIG51bWJlciwgZGF0YVRvRWRpdCBpcyBhbiBhcnJheVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVRvRWRpdCkgJiYgdHlwZW9mIHBhdGggPT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVG9FZGl0LnNwbGljZShwYXRoLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHBhdGggaXMgYSBzdHJpbmcsIGRhdGFUb0VkaXQgaXMgYW4gb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUga2V5IGZyb20gb2JqZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFUb0VkaXRbcGF0aF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGFUb0VkaXQgPSBkYXRhVG9FZGl0W3BhdGhdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBsb2dnZXIud2FybihcIk5vIHBhdGggZm91bmQsIHNraXBwaW5nIGRpZmZcIiwgZGlmZik7XG4gICAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIFRoaXMgaXMgdGhlIG9sZCBpbXBsZW1lbnRhdGlvbi4gd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuXG4gKi9cbmZ1bmN0aW9uIHJlc3RvcmVEZWVwRGlmZkNoYW5nZXM8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4ocmVzdWx0OiBULCBkaWZmOiBkZWVwRGlmZi5EaWZmPFQsIFQ+KSB7XG4gICAgbGV0IGRhdGFUb0VkaXQ6IGFueSA9IHJlc3VsdDtcbiAgICBpZiAoZGlmZi5wYXRoICYmIGRpZmYucGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGRpZmYucGF0aC5mb3JFYWNoKChwYXRoLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKGRpZmYucGF0aCAmJiBpbmRleCA9PT0gZGlmZi5wYXRoLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGlmZi5raW5kID09PSBcIkVcIiB8fCBkaWZmLmtpbmQgPT09IFwiRFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUb0VkaXRbcGF0aF0gPSBkaWZmLmxocztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRpZmYua2luZCA9PT0gXCJOXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgcGF0aCBpcyBhIG51bWJlciwgZGF0YVRvRWRpdCBpcyBhbiBhcnJheVxuICAgICAgICAgICAgICAgICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihwYXRoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGluZGV4IGZyb20gYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFUb0VkaXQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVRvRWRpdC5zcGxpY2UocGF0aCwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgcGF0aCBpcyBhIHN0cmluZywgZGF0YVRvRWRpdCBpcyBhbiBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHBhdGggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBrZXkgZnJvbSBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhVG9FZGl0W3BhdGhdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmLmtpbmQgPT09IFwiQVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IGRpZmYuaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkaWZmLml0ZW0ua2luZCA9PT0gXCJOXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBpbmRleCBmcm9tIGFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0YVRvRWRpdFtwYXRoXSBhcyBhbnlbXSkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmLml0ZW0ua2luZCA9PT0gXCJFXCIgfHwgZGlmZi5pdGVtLmtpbmQgPT09IFwiRFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlZGl0IGluZGV4IGluIGFycmF5XG4gICAgICAgICAgICAgICAgICAgICAgICAoZGF0YVRvRWRpdFtwYXRoXSBhcyBhbnlbXSlbaW5kZXhdID0gZGlmZi5pdGVtLmxocztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmLml0ZW0ua2luZCA9PT0gXCJBXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiTmVzdGVkIGFycmF5IGZvdW5kLCBza2lwcGluZyBkaWZmXCIsIGRpZmYpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJObyBhcnJheSBmb3VuZCwgc2tpcHBpbmcgZGlmZlwiLCBkaWZmKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGF0YVRvRWRpdCA9IGRhdGFUb0VkaXRbcGF0aF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci53YXJuKFwiTm8gcGF0aCBmb3VuZCwgc2tpcHBpbmcgZGlmZlwiLCBkaWZmKTtcbiAgICB9XG59XG4iLCJpbXBvcnQgeyBHYW1lU3RlcFN0YXRlIH0gZnJvbSBcIkBkcmluY3MvcGl4aS12blwiO1xuaW1wb3J0IGRlZXBEaWZmIGZyb20gXCJkZWVwLWRpZmZcIjtcbmltcG9ydCB7IERpZmZlcmVuY2UgfSBmcm9tIFwibWljcm9kaWZmXCI7XG5pbXBvcnQgeyBDYWNoZWRNYXAgfSBmcm9tIFwiLi4vY2xhc3Nlc1wiO1xuaW1wb3J0IHsgSGlzdG9yeVN0ZXAsIE5hcnJhdGlvbkhpc3RvcnkgfSBmcm9tIFwiLi4vbmFycmF0aW9uXCI7XG5pbXBvcnQgeyBjcmVhdGVFeHBvcnRhYmxlRWxlbWVudCB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIaXN0b3J5TWFuYWdlclN0YXRpYyB7XG4gICAgc3RhdGljIF9kaWZmSGlzdG9yeSA9IG5ldyBDYWNoZWRNYXA8bnVtYmVyLCBkZWVwRGlmZi5EaWZmPEdhbWVTdGVwU3RhdGUsIEdhbWVTdGVwU3RhdGU+W10gfCBEaWZmZXJlbmNlW10+KHtcbiAgICAgICAgY2FjaGVTaXplOiA1LFxuICAgIH0pO1xuICAgIHN0YXRpYyBfc3RlcHNJbmZvSGlzdG9yeSA9IG5ldyBDYWNoZWRNYXA8bnVtYmVyLCBPbWl0PEhpc3RvcnlTdGVwLCBcImRpZmZcIj4+KHsgY2FjaGVTaXplOiA1IH0pO1xuICAgIHN0YXRpYyBfbmFycmF0aW9uSGlzdG9yeSA9IG5ldyBDYWNoZWRNYXA8bnVtYmVyLCBOYXJyYXRpb25IaXN0b3J5Pih7IGNhY2hlU2l6ZTogNTAgfSk7XG4gICAgc3RhdGljIHN0ZXBMaW1pdFNhdmVkOiBudW1iZXIgPSAyMDtcbiAgICBzdGF0aWMgX29yaWdpbmFsU3RlcERhdGE6IEdhbWVTdGVwU3RhdGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgc3RhdGljIGdldCBvcmlnaW5hbFN0ZXBEYXRhKCk6IEdhbWVTdGVwU3RhdGUge1xuICAgICAgICBpZiAoIUhpc3RvcnlNYW5hZ2VyU3RhdGljLl9vcmlnaW5hbFN0ZXBEYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHBhdGg6IFwiXCIsXG4gICAgICAgICAgICAgICAgc3RvcmFnZToge30sXG4gICAgICAgICAgICAgICAgY2FudmFzOiB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnRBbGlhc2VzT3JkZXI6IFtdLFxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50czoge30sXG4gICAgICAgICAgICAgICAgICAgIHN0YWdlOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgdGlja2Vyczoge30sXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcnNTdGVwczoge30sXG4gICAgICAgICAgICAgICAgICAgIHRpY2tlcnNPblBhdXNlOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgdGlja2Vyc1RvQ29tcGxldGVPblN0ZXBFbmQ6IHsgdGlrZXJzSWRzOiBbXSwgc3RlcEFsaWFzOiBbXSB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc291bmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgc291bmRBbGlhc2VzT3JkZXI6IFtdLFxuICAgICAgICAgICAgICAgICAgICBzb3VuZHNQbGF5aW5nOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgcGxheUluU3RlcEluZGV4OiB7fSxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbGFiZWxJbmRleDogLTEsXG4gICAgICAgICAgICAgICAgb3BlbmVkTGFiZWxzOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNyZWF0ZUV4cG9ydGFibGVFbGVtZW50KEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9vcmlnaW5hbFN0ZXBEYXRhKTtcbiAgICB9XG4gICAgc3RhdGljIHNldCBvcmlnaW5hbFN0ZXBEYXRhKHZhbHVlOiBHYW1lU3RlcFN0YXRlKSB7XG4gICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9vcmlnaW5hbFN0ZXBEYXRhID0gY3JlYXRlRXhwb3J0YWJsZUVsZW1lbnQodmFsdWUpO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IEdhbWVTdGVwU3RhdGUsIEhpc3RvcnlJbmZvIH0gZnJvbSBcIkBkcmluY3MvcGl4aS12blwiO1xuaW1wb3J0IHsgR2FtZVVuaWZpZXIgfSBmcm9tIFwiQGRyaW5jcy9waXhpLXZuL2NvcmVcIjtcbmltcG9ydCBkaWZmIGZyb20gXCJtaWNyb2RpZmZcIjtcbmltcG9ydCB7IEhpc3RvcnlDaG9pY2VNZW51T3B0aW9uLCBIaXN0b3J5U3RlcCwgTmFycmF0aW9uSGlzdG9yeSwgU3RlcExhYmVsUHJvcHNUeXBlIH0gZnJvbSBcIi4uL25hcnJhdGlvblwiO1xuaW1wb3J0IHsgU3RvcmFnZUVsZW1lbnRUeXBlIH0gZnJvbSBcIi4uL3N0b3JhZ2UvdHlwZXMvU3RvcmFnZUVsZW1lbnRUeXBlXCI7XG5pbXBvcnQgeyBjcmVhdGVFeHBvcnRhYmxlRWxlbWVudCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgcmVzdG9yZURpZmZDaGFuZ2VzIH0gZnJvbSBcIi4uL3V0aWxzL2RpZmYtdXRpbGl0eVwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4uL3V0aWxzL2xvZy11dGlsaXR5XCI7XG5pbXBvcnQgSGlzdG9yeU1hbmFnZXJTdGF0aWMgZnJvbSBcIi4vSGlzdG9yeU1hbmFnZXJTdGF0aWNcIjtcbmltcG9ydCBIaXN0b3J5R2FtZVN0YXRlIGZyb20gXCIuL2ludGVyZmFjZXMvSGlzdG9yeUdhbWVTdGF0ZVwiO1xuaW1wb3J0IEhpc3RvcnlNYW5hZ2VySW50ZXJmYWNlIGZyb20gXCIuL2ludGVyZmFjZXMvSGlzdG9yeU1hbmFnZXJJbnRlcmZhY2VcIjtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIGEgY2xhc3MgdGhhdCBtYW5hZ2VzIHRoZSBzdGVwcyBhbmQgbGFiZWxzIG9mIHRoZSBnYW1lLlxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIaXN0b3J5TWFuYWdlciBpbXBsZW1lbnRzIEhpc3RvcnlNYW5hZ2VySW50ZXJmYWNlIHtcbiAgICBnZXQgc3RlcHNJbmZvTWFwKCkge1xuICAgICAgICByZXR1cm4gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX3N0ZXBzSW5mb0hpc3Rvcnk7XG4gICAgfVxuICAgIGdldCBkaWZmTWFwKCkge1xuICAgICAgICByZXR1cm4gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX2RpZmZIaXN0b3J5O1xuICAgIH1cbiAgICBnZXQgbmFycmF0aW9uTWFwKCkge1xuICAgICAgICByZXR1cm4gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX25hcnJhdGlvbkhpc3Rvcnk7XG4gICAgfVxuICAgIGdldCBzaXplKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBIaXN0b3J5TWFuYWdlclN0YXRpYy5fc3RlcHNJbmZvSGlzdG9yeS5zaXplO1xuICAgIH1cbiAgICBnZXQgbGFzdEtleSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KC4uLkFycmF5LmZyb20odGhpcy5rZXlzKCkpKTtcbiAgICB9XG4gICAga2V5cygpIHtcbiAgICAgICAgcmV0dXJuIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9zdGVwc0luZm9IaXN0b3J5LmtleXMoKTtcbiAgICB9XG4gICAgZ2V0KHN0ZXBJbmRleDogbnVtYmVyKTogTmFycmF0aW9uSGlzdG9yeSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBIaXN0b3J5TWFuYWdlclN0YXRpYy5fbmFycmF0aW9uSGlzdG9yeS5nZXQoc3RlcEluZGV4KTtcbiAgICAgICAgaWYgKGl0ZW0gJiYgT2JqZWN0LmtleXMoaXRlbSkubGVuZ3RoID09PSAxICYmIGl0ZW0uc3RlcEluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIGRlbGV0ZShzdGVwSW5kZXg6IG51bWJlcikge1xuICAgICAgICBIaXN0b3J5TWFuYWdlclN0YXRpYy5fc3RlcHNJbmZvSGlzdG9yeS5kZWxldGUoc3RlcEluZGV4KTtcbiAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX2RpZmZIaXN0b3J5LmRlbGV0ZShzdGVwSW5kZXgpO1xuICAgICAgICBIaXN0b3J5TWFuYWdlclN0YXRpYy5fbmFycmF0aW9uSGlzdG9yeS5kZWxldGUoc3RlcEluZGV4KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBnZXRPbGRHYW1lU3RhdGUoc3RlcHM6IG51bWJlciwgcmVzdG9yZWRTdGVwOiBHYW1lU3RlcFN0YXRlKTogR2FtZVN0ZXBTdGF0ZSB7XG4gICAgICAgIGlmIChzdGVwcyA8PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdG9yZWRTdGVwO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnNpemUgPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3RvcmVkU3RlcDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0S2V5ID0gdGhpcy5sYXN0S2V5O1xuICAgICAgICBpZiAodHlwZW9mIGxhc3RLZXkgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIGxvZ2dlci53YXJuKFwiWW91IGNhbid0IGdvIGJhY2ssIHRoZXJlIGlzIG5vIHN0ZXAgdG8gZ28gYmFja1wiKTtcbiAgICAgICAgICAgIHJldHVybiByZXN0b3JlZFN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlmZiA9IEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9kaWZmSGlzdG9yeS5nZXQobGFzdEtleSk7XG4gICAgICAgIGlmIChkaWZmKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSByZXN0b3JlRGlmZkNoYW5nZXMocmVzdG9yZWRTdGVwLCBkaWZmKTtcbiAgICAgICAgICAgICAgICBHYW1lVW5pZmllci5zdGVwQ291bnRlciA9IGxhc3RLZXk7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGUobGFzdEtleSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T2xkR2FtZVN0YXRlKHN0ZXBzIC0gMSwgcmVzdWx0KTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJFcnJvciBhcHBseWluZyBkaWZmXCIsIGUpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXN0b3JlZFN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihcIk5vIGRpZmYgZm91bmQgZm9yIHRoZSBsYXN0IHN0ZXAsIGNhbm5vdCBnbyBiYWNrXCIpO1xuICAgICAgICAgICAgcmV0dXJuIHJlc3RvcmVkU3RlcDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgYXN5bmMgYmFjayhwcm9wczogU3RlcExhYmVsUHJvcHNUeXBlLCBvcHRpb25zOiB7IHN0ZXBzPzogbnVtYmVyIH0gPSB7fSkge1xuICAgICAgICBjb25zdCB7IHN0ZXBzID0gMSB9ID0gb3B0aW9ucztcbiAgICAgICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoc3RlcHMpKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihgW2JhY2tdIFRoZSBwYXJhbWV0ZXIgc3RlcHMgbXVzdCBiZSBhIHZhbGlkIGZpbml0ZSBudW1iZXIsIHJlY2VpdmVkOiAke3N0ZXBzfWApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGVwcyA8PSAwKSB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihgW2JhY2tdIFRoZSBwYXJhbWV0ZXIgc3RlcHMgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCwgcmVjZWl2ZWQ6ICR7c3RlcHN9YCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEdhbWVVbmlmaWVyLnJ1bm5pbmdTdGVwc0NvdW50ID4gMCkge1xuICAgICAgICAgICAgR2FtZVVuaWZpZXIuaW5jcmVhc2VCYWNrUmVxdWVzdChzdGVwcyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9kaWZmSGlzdG9yeS5zaXplIDwgMSkge1xuICAgICAgICAgICAgbG9nZ2VyLndhcm4oXCJZb3UgY2FuJ3QgZ28gYmFjaywgdGhlcmUgaXMgbm8gc3RlcCB0byBnbyBiYWNrXCIpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIEdhbWVVbmlmaWVyLnJ1bm5pbmdTdGVwc0NvdW50Kys7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgcmVzdG9yZWRTdGVwID0gY3JlYXRlRXhwb3J0YWJsZUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRPbGRHYW1lU3RhdGUoc3RlcHMsIEhpc3RvcnlNYW5hZ2VyU3RhdGljLm9yaWdpbmFsU3RlcERhdGEpLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmIChyZXN0b3JlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBHYW1lVW5pZmllci5yZXN0b3JlR2FtZVN0ZXBTdGF0ZShyZXN0b3JlZFN0ZXAsIEdhbWVVbmlmaWVyLm5hdmlnYXRlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGVwQ291bnRlciA9IEdhbWVVbmlmaWVyLnN0ZXBDb3VudGVyIC0gMTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtID0gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX25hcnJhdGlvbkhpc3RvcnkuZ2V0KHN0ZXBDb3VudGVyKTtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbSAmJiBPYmplY3Qua2V5cyhpdGVtKS5sZW5ndGggPT09IDEgJiYgaXRlbS5zdGVwSW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBoaXN0b3J5SW5mbyA9IEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9zdGVwc0luZm9IaXN0b3J5LmdldChzdGVwQ291bnRlcik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoaXN0b3J5SW5mbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFycmF0aXZlSGlzdG9yeSA9IHRoaXMuaXRlbU1hcHBlcih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogaGlzdG9yeUluZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9uYXJyYXRpb25IaXN0b3J5LnNldChoaXN0b3J5SW5mby5pbmRleCwgbmFycmF0aXZlSGlzdG9yeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkVycm9yIGdvaW5nIGJhY2tcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBIaXN0b3J5TWFuYWdlclN0YXRpYy5vcmlnaW5hbFN0ZXBEYXRhID0gcmVzdG9yZWRTdGVwO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoXCJFcnJvciBnb2luZyBiYWNrXCIsIGUpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgR2FtZVVuaWZpZXIucnVubmluZ1N0ZXBzQ291bnQtLTtcbiAgICAgICAgICAgIGlmIChHYW1lVW5pZmllci5ydW5uaW5nU3RlcHNDb3VudCA9PT0gMCAmJiBHYW1lVW5pZmllci5iYWNrUmVxdWVzdHNDb3VudCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCBHYW1lVW5pZmllci5wcm9jZXNzTmF2aWdhdGlvblJlcXVlc3RzKHByb3BzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBhZGQoXG4gICAgICAgIGhpc3RvcnlJbmZvOiBIaXN0b3J5SW5mbyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgaWdub3JlU2FtZVN0ZXA/OiBib29sZWFuO1xuICAgICAgICB9ID0ge30sXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsU3RlcERhdGEgPSBIaXN0b3J5TWFuYWdlclN0YXRpYy5vcmlnaW5hbFN0ZXBEYXRhO1xuICAgICAgICBjb25zdCB7IGlnbm9yZVNhbWVTdGVwIH0gPSBvcHRpb25zO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcERhdGE6IEdhbWVTdGVwU3RhdGUgPSBHYW1lVW5pZmllci5jdXJyZW50R2FtZVN0ZXBTdGF0ZTtcbiAgICAgICAgaWYgKCFpZ25vcmVTYW1lU3RlcCAmJiB0aGlzLmlzU2FtZVN0ZXAob3JpZ2luYWxTdGVwRGF0YSwgY3VycmVudFN0ZXBEYXRhKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3RLZXkgPSB0aGlzLmxhc3RLZXk7XG4gICAgICAgIGNvbnN0IGFzeW5jRnVuY3Rpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBsYXN0U3RlcEhpc3Rvcnk6IE9taXQ8SGlzdG9yeVN0ZXAsIFwiZGlmZlwiPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBsZXQgbGFzdE5hcnJhdGl2ZUhpc3Rvcnk6IE5hcnJhdGlvbkhpc3RvcnkgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsYXN0S2V5ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGxhc3RTdGVwSGlzdG9yeSA9IEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9zdGVwc0luZm9IaXN0b3J5LmdldChsYXN0S2V5KTtcbiAgICAgICAgICAgICAgICAgICAgbGFzdE5hcnJhdGl2ZUhpc3RvcnkgPSBIaXN0b3J5TWFuYWdlclN0YXRpYy5fbmFycmF0aW9uSGlzdG9yeS5nZXQobGFzdEtleSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX3N0ZXBzSW5mb0hpc3Rvcnkuc2V0KGhpc3RvcnlJbmZvLmluZGV4LCBoaXN0b3J5SW5mbyk7XG4gICAgICAgICAgICAgICAgaWYgKGhpc3RvcnlJbmZvLmluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0gZGlmZihvcmlnaW5hbFN0ZXBEYXRhLCBjdXJyZW50U3RlcERhdGEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX2RpZmZIaXN0b3J5LnNldChoaXN0b3J5SW5mby5pbmRleCwgZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIud2FybihcIkl0IHdhcyBub3QgcG9zc2libGUgdG8gY3JlYXRlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBzdGVwc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNJdGVtID0ge307XG4gICAgICAgICAgICAgICAgY29uc3QgbmFycmF0aXZlSGlzdG9yeSA9IHRoaXMuaXRlbU1hcHBlcihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogaGlzdG9yeUluZm8sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzSXRlbSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9uYXJyYXRpb25IaXN0b3J5LnNldChoaXN0b3J5SW5mby5pbmRleCwgbmFycmF0aXZlSGlzdG9yeSk7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3RTdGVwSGlzdG9yeSAmJiBsYXN0TmFycmF0aXZlSGlzdG9yeSAmJiB0eXBlb2YgbGFzdEtleSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c05hcnJhdGl2ZUhpc3RvcnkgPSB0aGlzLml0ZW1NYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldmlvdXNJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA6IGxhc3RTdGVwSGlzdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX25hcnJhdGlvbkhpc3Rvcnkuc2V0KGxhc3RLZXksIHByZXZpb3VzTmFycmF0aXZlSGlzdG9yeSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkVycm9yIGFkZGluZyBoaXN0b3J5IHN0ZXBcIiwgZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGFzeW5jRnVuY3Rpb24oKTtcbiAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMub3JpZ2luYWxTdGVwRGF0YSA9IGN1cnJlbnRTdGVwRGF0YTtcbiAgICB9XG4gICAgaXRlbU1hcHBlcihcbiAgICAgICAgaXRlbToge1xuICAgICAgICAgICAgc3RlcDogT21pdDxIaXN0b3J5U3RlcCwgXCJkaWZmXCI+O1xuICAgICAgICAgICAgY2hvaWNlSW5kZXhNYWRlPzogbnVtYmVyO1xuICAgICAgICAgICAgaW5wdXRWYWx1ZT86IFN0b3JhZ2VFbGVtZW50VHlwZTtcbiAgICAgICAgICAgIHJlbW92ZURpYWxvZ3VlPzogYm9vbGVhbjtcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmlvdXNJdGVtPzogeyBjaG9pY2VJbmRleE1hZGU/OiBudW1iZXI7IGlucHV0VmFsdWU/OiBTdG9yYWdlRWxlbWVudFR5cGU7IHJlbW92ZURpYWxvZ3VlPzogYm9vbGVhbiB9LFxuICAgICk6IE5hcnJhdGlvbkhpc3Rvcnkge1xuICAgICAgICBjb25zdCB7IHN0ZXAsIGNob2ljZUluZGV4TWFkZSwgaW5wdXRWYWx1ZSwgcmVtb3ZlRGlhbG9ndWUgfSA9IGl0ZW07XG4gICAgICAgIGxldCBkaWFsb2d1ZSA9IHN0ZXAuZGlhbG9ndWUgfHwgc3RlcC5kaWFsb2dlO1xuICAgICAgICBpZiAocHJldmlvdXNJdGVtICYmIHN0ZXAuaXNHbHVlZCkge1xuICAgICAgICAgICAgcHJldmlvdXNJdGVtLnJlbW92ZURpYWxvZ3VlID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVtb3ZlRGlhbG9ndWUpIHtcbiAgICAgICAgICAgIGRpYWxvZ3VlID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXF1aXJlZENob2ljZXMgPSBzdGVwLmNob2ljZXM7XG4gICAgICAgIGlmIChwcmV2aW91c0l0ZW0gJiYgc3RlcC5jdXJyZW50TGFiZWwpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNob2ljZUluZGV4TWFkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcHJldmlvdXNJdGVtLmNob2ljZUluZGV4TWFkZSA9IHN0ZXAuY2hvaWNlSW5kZXhNYWRlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGVwLmlucHV0VmFsdWUgJiYgcHJldmlvdXNJdGVtKSB7XG4gICAgICAgICAgICBwcmV2aW91c0l0ZW0uaW5wdXRWYWx1ZSA9IHN0ZXAuaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGlhbG9ndWUgfHwgcmVxdWlyZWRDaG9pY2VzIHx8IGlucHV0VmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBjaG9pY2VzOiBIaXN0b3J5Q2hvaWNlTWVudU9wdGlvbltdIHwgdW5kZWZpbmVkID0gcmVxdWlyZWRDaG9pY2VzPy5tYXAoKGNob2ljZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgaGlkZGVuOiBib29sZWFuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKGNob2ljZS5vbmVUaW1lICYmIHN0ZXAuYWxyZWFkeU1hZGVDaG9pY2VzICYmIHN0ZXAuYWxyZWFkeU1hZGVDaG9pY2VzLmluY2x1ZGVzKGluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICBoaWRkZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICB0ZXh0OiBjaG9pY2UudGV4dCxcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogY2hvaWNlLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGlzUmVzcG9uc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBoaWRkZW46IGhpZGRlbixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY2hvaWNlcykge1xuICAgICAgICAgICAgICAgIC8vIGlmIGFsbCBjaG9pY2VzIGFyZSBoaWRkZW4gZmluZCBvbmx5SGF2ZU5vQ2hvaWNlXG4gICAgICAgICAgICAgICAgaWYgKGNob2ljZXMuZXZlcnkoKGNob2ljZSkgPT4gY2hvaWNlLmhpZGRlbikpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IG9ubHlIYXZlTm9DaG9pY2UgPSBjaG9pY2VzLmZpbmQoKGNob2ljZSkgPT4gY2hvaWNlLmhpZGRlbiA9PT0gZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICBpZiAob25seUhhdmVOb0Nob2ljZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25seUhhdmVOb0Nob2ljZS5oaWRkZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2hvaWNlSW5kZXhNYWRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hvaWNlc1tjaG9pY2VJbmRleE1hZGVdLmlzUmVzcG9uc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgZGlhbG9ndWU6IGRpYWxvZ3VlXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5kaWFsb2d1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyOiBkaWFsb2d1ZS5jaGFyYWN0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gR2FtZVVuaWZpZXIuZ2V0Q2hhcmFjdGVyKGRpYWxvZ3VlLmNoYXJhY3RlcikgfHwgZGlhbG9ndWUuY2hhcmFjdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHBsYXllck1hZGVDaG9pY2U6IHR5cGVvZiBjaG9pY2VJbmRleE1hZGUgPT09IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgY2hvaWNlczogY2hvaWNlcyxcbiAgICAgICAgICAgICAgICBzdGVwSW5kZXg6IHN0ZXAuaW5kZXgsXG4gICAgICAgICAgICAgICAgaW5wdXRWYWx1ZTogaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0ZXBJbmRleDogc3RlcC5pbmRleCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZ2V0IG5hcnJhdGl2ZUhpc3RvcnkoKTogTmFycmF0aW9uSGlzdG9yeVtdIHtcbiAgICAgICAgY29uc3QgcmVzdWx0OiBOYXJyYXRpb25IaXN0b3J5W10gPSBbXTtcbiAgICAgICAgY29uc3Qga2V5cyA9IEFycmF5LmZyb20odGhpcy5rZXlzKCkpLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldChrZXkpO1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGdldCBjdXJyZW50TGFiZWxIaXN0b3J5KCk6IE5hcnJhdGlvbkhpc3RvcnlbXSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogTmFycmF0aW9uSGlzdG9yeVtdID0gW107XG4gICAgICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKHRoaXMua2V5cygpKS5zb3J0KChhLCBiKSA9PiBiIC0gYSk7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBsYXN0S2V5ID0ga2V5c1swXTtcbiAgICAgICAgaWYgKHR5cGVvZiBsYXN0S2V5ICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGxhc3RJdGVtID0gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX3N0ZXBzSW5mb0hpc3RvcnkuZ2V0KGxhc3RLZXkpO1xuICAgICAgICBpZiAoIWxhc3RJdGVtKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wZW5lZExhYmVscyA9IGxhc3RJdGVtLm9wZW5lZExhYmVscztcbiAgICAgICAgaWYgKCFvcGVuZWRMYWJlbHMgfHwgIUFycmF5LmlzQXJyYXkob3BlbmVkTGFiZWxzKSB8fCBvcGVuZWRMYWJlbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICAgIGxldCBjdXJyZW50U3RlcEluZGV4ID0gb3BlbmVkTGFiZWxzWzBdLmN1cnJlbnRTdGVwSW5kZXg7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gb3BlbmVkTGFiZWxzWzBdLmxhYmVsO1xuXG4gICAgICAgIGtleXMuZXZlcnkoKGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmdldChrZXkpO1xuICAgICAgICAgICAgaWYgKGl0ZW0pIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBpbmZvID0gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX3N0ZXBzSW5mb0hpc3RvcnkuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgaWYgKCFpbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBvcGVuZWRMYWJlbHNUZW1wID0gaW5mby5vcGVuZWRMYWJlbHM7XG4gICAgICAgICAgICAgICAgaWYgKCFvcGVuZWRMYWJlbHNUZW1wIHx8ICFBcnJheS5pc0FycmF5KG9wZW5lZExhYmVsc1RlbXApIHx8IG9wZW5lZExhYmVsc1RlbXAubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG9wZW5lZExhYmVsc1RlbXBbMF0ubGFiZWwgIT09IGxhYmVsIHx8IG9wZW5lZExhYmVsc1RlbXBbMF0uY3VycmVudFN0ZXBJbmRleCA+PSBjdXJyZW50U3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA9IG9wZW5lZExhYmVsc1RlbXBbMF0uY3VycmVudFN0ZXBJbmRleDtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0LnJldmVyc2UoKTtcbiAgICB9XG4gICAgcmVtb3ZlTmFycmF0aXZlSGlzdG9yeShpdGVtc051bWJlcj86IG51bWJlcikge1xuICAgICAgICBpZiAoaXRlbXNOdW1iZXIpIHtcbiAgICAgICAgICAgIGxldCBrZXlzID0gQXJyYXkuZnJvbSh0aGlzLmtleXMoKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgICAgICAgLy8gZ2V0IHRoZSBmaXJzdCBpdGVtc051bWJlciBrZXlzXG4gICAgICAgICAgICBrZXlzID0ga2V5cy5zbGljZSgwLCBpdGVtc051bWJlcik7XG4gICAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9uYXJyYXRpb25IaXN0b3J5LmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9zdGVwc0luZm9IaXN0b3J5LmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9kaWZmSGlzdG9yeS5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX3N0ZXBzSW5mb0hpc3RvcnkuY2xlYXIoKTtcbiAgICAgICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9kaWZmSGlzdG9yeS5jbGVhcigpO1xuICAgICAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX25hcnJhdGlvbkhpc3RvcnkuY2xlYXIoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgY2FuR29CYWNrKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBsYXN0S2V5ID0gdGhpcy5sYXN0S2V5O1xuICAgICAgICBpZiAodHlwZW9mIGxhc3RLZXkgIT09IFwibnVtYmVyXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX2RpZmZIaXN0b3J5LmhhcyhsYXN0S2V5KTtcbiAgICB9XG4gICAgYmxvY2tHb0JhY2soKSB7XG4gICAgICAgIGlmIChHYW1lVW5pZmllci5ydW5uaW5nU3RlcHNDb3VudCAhPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9kaWZmSGlzdG9yeS5jbGVhcigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNTYW1lU3RlcChvcmlnaW5hbFN0YXRlOiBHYW1lU3RlcFN0YXRlLCBuZXdTdGF0ZTogR2FtZVN0ZXBTdGF0ZSkge1xuICAgICAgICBpZiAob3JpZ2luYWxTdGF0ZS5vcGVuZWRMYWJlbHMubGVuZ3RoID09PSBuZXdTdGF0ZS5vcGVuZWRMYWJlbHMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGxldCBsYXN0U3RlcERhdGFPcGVuZWRMYWJlbHNTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShvcmlnaW5hbFN0YXRlLm9wZW5lZExhYmVscyk7XG4gICAgICAgICAgICAgICAgbGV0IGhpc3RvcnlTdGVwT3BlbmVkTGFiZWxzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkobmV3U3RhdGUub3BlbmVkTGFiZWxzKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgIGxhc3RTdGVwRGF0YU9wZW5lZExhYmVsc1N0cmluZyA9PT0gaGlzdG9yeVN0ZXBPcGVuZWRMYWJlbHNTdHJpbmcgJiZcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxTdGF0ZS5wYXRoID09PSBuZXdTdGF0ZS5wYXRoICYmXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsU3RhdGUubGFiZWxJbmRleCA9PT0gbmV3U3RhdGUubGFiZWxJbmRleFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKFwiRXJyb3IgY29tcGFyaW5nIG9wZW5lZCBsYWJlbHNcIiwgZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcigpIHtcbiAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX3N0ZXBzSW5mb0hpc3RvcnkuY2xlYXIoKTtcbiAgICAgICAgSGlzdG9yeU1hbmFnZXJTdGF0aWMuX2RpZmZIaXN0b3J5LmNsZWFyKCk7XG4gICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9uYXJyYXRpb25IaXN0b3J5LmNsZWFyKCk7XG4gICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9vcmlnaW5hbFN0ZXBEYXRhID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGdldCBzdGVwTGltaXRTYXZlZCgpIHtcbiAgICAgICAgcmV0dXJuIEhpc3RvcnlNYW5hZ2VyU3RhdGljLnN0ZXBMaW1pdFNhdmVkO1xuICAgIH1cbiAgICBzZXQgc3RlcExpbWl0U2F2ZWQobGltaXQ6IG51bWJlcikge1xuICAgICAgICBIaXN0b3J5TWFuYWdlclN0YXRpYy5zdGVwTGltaXRTYXZlZCA9IGxpbWl0O1xuICAgIH1cblxuICAgIC8qIEV4cG9ydCBhbmQgSW1wb3J0IE1ldGhvZHMgKi9cblxuICAgIHB1YmxpYyBleHBvcnQoKTogSGlzdG9yeUdhbWVTdGF0ZSB7XG4gICAgICAgIGxldCBrZXlzID0gQXJyYXkuZnJvbSh0aGlzLmtleXMoKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgICAvLyB0YWtlIG9ubHkgbGFzdCB0aGUgdGhpcy5zdGVwTGltaXRTYXZlZCBzdGVwc1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggPiB0aGlzLnN0ZXBMaW1pdFNhdmVkKSB7XG4gICAgICAgICAgICBrZXlzID0ga2V5cy5zbGljZShrZXlzLmxlbmd0aCAtIHRoaXMuc3RlcExpbWl0U2F2ZWQpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGVwc0hpc3Rvcnk6IEhpc3RvcnlTdGVwW10gPSBbXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSBIaXN0b3J5TWFuYWdlclN0YXRpYy5fc3RlcHNJbmZvSGlzdG9yeS5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChzdGVwKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRpZmYgPSBIaXN0b3J5TWFuYWdlclN0YXRpYy5fZGlmZkhpc3RvcnkuZ2V0KGtleSk7XG4gICAgICAgICAgICAgICAgc3RlcHNIaXN0b3J5LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGVwLFxuICAgICAgICAgICAgICAgICAgICBkaWZmOiBkaWZmLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN0ZXBzSGlzdG9yeTogY3JlYXRlRXhwb3J0YWJsZUVsZW1lbnQoc3RlcHNIaXN0b3J5KSxcbiAgICAgICAgICAgIG9yaWdpbmFsU3RlcERhdGE6IGNyZWF0ZUV4cG9ydGFibGVFbGVtZW50KEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9vcmlnaW5hbFN0ZXBEYXRhKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmVzdG9yZU5hcnJhdGl2ZUhpc3RvcnkoKSB7XG4gICAgICAgIGNvbnN0IGtleXMgPSBBcnJheS5mcm9tKHRoaXMua2V5cygpKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICAgIGxldCBwcmV2aW91c0l0ZW06IHtcbiAgICAgICAgICAgIGNob2ljZUluZGV4TWFkZT86IG51bWJlcjtcbiAgICAgICAgICAgIGlucHV0VmFsdWU/OiBTdG9yYWdlRWxlbWVudFR5cGU7XG4gICAgICAgICAgICByZW1vdmVEaWFsb2d1ZT86IGJvb2xlYW47XG4gICAgICAgIH0gPSB7fTtcblxuICAgICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHN0ZXBzSGlzdG9yeSBhcnJheSBpbiByZXZlcnNlIG9yZGVyXG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gSGlzdG9yeU1hbmFnZXJTdGF0aWMuX3N0ZXBzSW5mb0hpc3RvcnkuZ2V0KGtleSk7XG4gICAgICAgICAgICBpZiAoc3RlcCkge1xuICAgICAgICAgICAgICAgIGxldCBtb3JlSW5mbyA9IHtcbiAgICAgICAgICAgICAgICAgICAgLi4ucHJldmlvdXNJdGVtLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcHJldmlvdXNJdGVtID0ge307XG4gICAgICAgICAgICAgICAgbGV0IHJlcyA9IHRoaXMuaXRlbU1hcHBlcihcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RlcDogc3RlcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZUluZGV4TWFkZTogbW9yZUluZm8uY2hvaWNlSW5kZXhNYWRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRWYWx1ZTogbW9yZUluZm8uaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZURpYWxvZ3VlOiBtb3JlSW5mby5yZW1vdmVEaWFsb2d1ZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNJdGVtLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBIaXN0b3J5TWFuYWdlclN0YXRpYy5fbmFycmF0aW9uSGlzdG9yeS5zZXQoa2V5LCByZXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1YmxpYyBhc3luYyByZXN0b3JlKGRhdGE6IG9iamVjdCkge1xuICAgICAgICB0aGlzLmNsZWFyKCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShcInN0ZXBzSGlzdG9yeVwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBzSGlzdG9yeSA9IChkYXRhIGFzIEhpc3RvcnlHYW1lU3RhdGUpW1wic3RlcHNIaXN0b3J5XCJdO1xuICAgICAgICAgICAgICAgIHN0ZXBzSGlzdG9yeS5mb3JFYWNoKChzdGVwOiBIaXN0b3J5U3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RlcC5kaWZmKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5TWFuYWdlclN0YXRpYy5fZGlmZkhpc3Rvcnkuc2V0KHN0ZXAuaW5kZXgsIHN0ZXAuZGlmZik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPSB7IC4uLnN0ZXAsIGRpZmY6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgICAgICAgICAgICBIaXN0b3J5TWFuYWdlclN0YXRpYy5fc3RlcHNJbmZvSGlzdG9yeS5zZXQoc3RlcC5pbmRleCwgaW5mbyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXN0b3JlTmFycmF0aXZlSGlzdG9yeSgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIud2FybihcIkNvdWxkIG5vdCBpbXBvcnQgc3RlcHNIaXN0b3J5IGRhdGEsIHNvIHdpbGwgYmUgaWdub3JlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KFwib3JpZ2luYWxTdGVwRGF0YVwiKSkge1xuICAgICAgICAgICAgICAgIEhpc3RvcnlNYW5hZ2VyU3RhdGljLl9vcmlnaW5hbFN0ZXBEYXRhID0gKGRhdGEgYXMgSGlzdG9yeUdhbWVTdGF0ZSlbXCJvcmlnaW5hbFN0ZXBEYXRhXCJdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsb2dnZXIud2FybihcIkNvdWxkIG5vdCBpbXBvcnQgb3JpZ2luYWxTdGVwRGF0YSBkYXRhLCBzbyB3aWxsIGJlIGlnbm9yZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcihcIkVycm9yIGltcG9ydGluZyBkYXRhXCIsIGUpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiaW1wb3J0IEhpc3RvcnlNYW5hZ2VyIGZyb20gXCIuL0hpc3RvcnlNYW5hZ2VyXCI7XG5pbXBvcnQgSGlzdG9yeU1hbmFnZXJJbnRlcmZhY2UgZnJvbSBcIi4vaW50ZXJmYWNlcy9IaXN0b3J5TWFuYWdlckludGVyZmFjZVwiO1xuXG5leHBvcnQgeyBkZWZhdWx0IGFzIEhpc3RvcnlNYW5hZ2VyU3RhdGljIH0gZnJvbSBcIi4vSGlzdG9yeU1hbmFnZXJTdGF0aWNcIjtcbmV4cG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBIaXN0b3J5R2FtZVN0YXRlIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9IaXN0b3J5R2FtZVN0YXRlXCI7XG5leHBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgSGlzdG9yeU1hbmFnZXJJbnRlcmZhY2UgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL0hpc3RvcnlNYW5hZ2VySW50ZXJmYWNlXCI7XG5leHBvcnQgeyBzdGVwSGlzdG9yeSB9O1xuXG5jb25zdCBzdGVwSGlzdG9yeTogSGlzdG9yeU1hbmFnZXJJbnRlcmZhY2UgPSBuZXcgSGlzdG9yeU1hbmFnZXIoKTtcbiJdfQ==
|
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var N=require('@drincs/pixi-vn/canvas'),Bt=require('@drincs/pixi-vn/characters'),tt=require('@drincs/pixi-vn/history'),j=require('@drincs/pixi-vn/narration'),ct=require('@drincs/pixi-vn/sound'),I=require('@drincs/pixi-vn/storage'),unifier=require('@drincs/pixi-vn/unifier');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var N__namespace=/*#__PURE__*/_interopNamespace(N);var Bt__namespace=/*#__PURE__*/_interopNamespace(Bt);var tt__namespace=/*#__PURE__*/_interopNamespace(tt);var j__namespace=/*#__PURE__*/_interopNamespace(j);var ct__namespace=/*#__PURE__*/_interopNamespace(ct);var I__namespace=/*#__PURE__*/_interopNamespace(I);var Xt=Object.defineProperty;var Yt=l=>{throw TypeError(l)};var he=(l,e,i)=>e in l?Xt(l,e,{enumerable:true,configurable:true,writable:true,value:i}):l[e]=i;var le=(l,e)=>{for(var i in e)Xt(l,i,{get:e[i],enumerable:true});};var w=(l,e,i)=>he(l,typeof e!="symbol"?e+"":e,i),zt=(l,e,i)=>e.has(l)||Yt("Cannot "+i);var t=(l,e,i)=>(zt(l,e,"read from private field"),i?i.call(l):e.get(l)),g=(l,e,i)=>e.has(l)?Yt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(l):e.set(l,i),p=(l,e,i,s)=>(zt(l,e,"write to private field"),e.set(l,i),i),c=(l,e,i)=>(zt(l,e,"access private method"),i);var Dt=(l,e,i,s)=>({set _(o){p(l,e,o);},get _(){return t(l,e,s)}});var ce=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,te=new Set,Nt=typeof process=="object"&&process?process:{},ee=(l,e,i,s)=>{typeof Nt.emitWarning=="function"?Nt.emitWarning(l,e,i,s):console.error(`[${i}] ${e}: ${l}`);},Pt=globalThis.AbortController,Jt=globalThis.AbortSignal;if(typeof Pt>"u"){Jt=class{constructor(){w(this,"onabort");w(this,"_onabort",[]);w(this,"reason");w(this,"aborted",false);}addEventListener(i,s){this._onabort.push(s);}},Pt=class{constructor(){w(this,"signal",new Jt);e();}abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=true;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i);}}};let l=Nt.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{l&&(l=false,ee("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e));};}var pe=l=>!te.has(l);var ot=l=>l&&l===Math.floor(l)&&l>0&&isFinite(l),ie=l=>ot(l)?l<=Math.pow(2,8)?Uint8Array:l<=Math.pow(2,16)?Uint16Array:l<=Math.pow(2,32)?Uint32Array:l<=Number.MAX_SAFE_INTEGER?Ct:null:null,Ct=class extends Array{constructor(l){super(l),this.fill(0);}},et,_t,de=(et=class{constructor(e,i){w(this,"heap");w(this,"length");if(!t(et,_t))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0;}static create(e){let i=ie(e);if(!i)return [];p(et,_t,true);let s=new et(e,i);return p(et,_t,false),s}push(e){this.heap[this.length++]=e;}pop(){return this.heap[--this.length]}},_t=new WeakMap,g(et,_t,false),et),Qt,Zt,K,M,q,pt,$,yt,St,B,D,X,T,E,m,L,V,P,C,Y,F,J,Q,W,H,Z,lt,z,xt,h,It,dt,st,Ut,k,re,ut,wt,Ot,nt,at,Gt,Ft,jt,A,Mt,Et,ht,Vt,bt,se=(bt=class{constructor(e){g(this,h);g(this,K);g(this,M);g(this,q);g(this,pt);g(this,$);g(this,yt);g(this,St);g(this,B);w(this,"ttl");w(this,"ttlResolution");w(this,"ttlAutopurge");w(this,"updateAgeOnGet");w(this,"updateAgeOnHas");w(this,"allowStale");w(this,"noDisposeOnSet");w(this,"noUpdateTTL");w(this,"maxEntrySize");w(this,"sizeCalculation");w(this,"noDeleteOnFetchRejection");w(this,"noDeleteOnStaleGet");w(this,"allowStaleOnFetchAbort");w(this,"allowStaleOnFetchRejection");w(this,"ignoreFetchAbort");g(this,D);g(this,X);g(this,T);g(this,E);g(this,m);g(this,L);g(this,V);g(this,P);g(this,C);g(this,Y);g(this,F);g(this,J);g(this,Q);g(this,W);g(this,H);g(this,Z);g(this,lt);g(this,z);g(this,xt);g(this,dt,()=>{});g(this,st,()=>{});g(this,Ut,()=>{});g(this,k,()=>false);g(this,ut,e=>{});g(this,wt,(e,i,s)=>{});g(this,Ot,(e,i,s,o)=>{if(s||o)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});w(this,Qt,"LRUCache");let{max:i=0,ttl:s,ttlResolution:o=1,ttlAutopurge:a,updateAgeOnGet:r,updateAgeOnHas:d,allowStale:f,dispose:S,onInsert:R,disposeAfter:b,noDisposeOnSet:it,noUpdateTTL:G,maxSize:u=0,maxEntrySize:_=0,sizeCalculation:v,fetchMethod:n,memoMethod:y,noDeleteOnFetchRejection:U,noDeleteOnStaleGet:O,allowStaleOnFetchRejection:x,allowStaleOnFetchAbort:rt,ignoreFetchAbort:mt,perf:gt}=e;if(gt!==void 0&&typeof gt?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(p(this,B,gt??ce),i!==0&&!ot(i))throw new TypeError("max option must be a nonnegative integer");let vt=i?ie(i):Array;if(!vt)throw new Error("invalid max value: "+i);if(p(this,K,i),p(this,M,u),this.maxEntrySize=_||t(this,M),this.sizeCalculation=v,this.sizeCalculation){if(!t(this,M)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(y!==void 0&&typeof y!="function")throw new TypeError("memoMethod must be a function if defined");if(p(this,St,y),n!==void 0&&typeof n!="function")throw new TypeError("fetchMethod must be a function if specified");if(p(this,yt,n),p(this,lt,!!n),p(this,T,new Map),p(this,E,new Array(i).fill(void 0)),p(this,m,new Array(i).fill(void 0)),p(this,L,new vt(i)),p(this,V,new vt(i)),p(this,P,0),p(this,C,0),p(this,Y,de.create(i)),p(this,D,0),p(this,X,0),typeof S=="function"&&p(this,q,S),typeof R=="function"&&p(this,pt,R),typeof b=="function"?(p(this,$,b),p(this,F,[])):(p(this,$,void 0),p(this,F,void 0)),p(this,Z,!!t(this,q)),p(this,xt,!!t(this,pt)),p(this,z,!!t(this,$)),this.noDisposeOnSet=!!it,this.noUpdateTTL=!!G,this.noDeleteOnFetchRejection=!!U,this.allowStaleOnFetchRejection=!!x,this.allowStaleOnFetchAbort=!!rt,this.ignoreFetchAbort=!!mt,this.maxEntrySize!==0){if(t(this,M)!==0&&!ot(t(this,M)))throw new TypeError("maxSize must be a positive integer if specified");if(!ot(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");c(this,h,re).call(this);}if(this.allowStale=!!f,this.noDeleteOnStaleGet=!!O,this.updateAgeOnGet=!!r,this.updateAgeOnHas=!!d,this.ttlResolution=ot(o)||o===0?o:1,this.ttlAutopurge=!!a,this.ttl=s||0,this.ttl){if(!ot(this.ttl))throw new TypeError("ttl must be a positive integer if specified");c(this,h,It).call(this);}if(t(this,K)===0&&this.ttl===0&&t(this,M)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,K)&&!t(this,M)){let Lt="LRU_CACHE_UNBOUNDED";pe(Lt)&&(te.add(Lt),ee("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",Lt,bt));}}get perf(){return t(this,B)}static unsafeExposeInternals(e){return {starts:t(e,Q),ttls:t(e,W),autopurgeTimers:t(e,H),sizes:t(e,J),keyMap:t(e,T),keyList:t(e,E),valList:t(e,m),next:t(e,L),prev:t(e,V),get head(){return t(e,P)},get tail(){return t(e,C)},free:t(e,Y),isBackgroundFetch:i=>{var s;return c(s=e,h,A).call(s,i)},backgroundFetch:(i,s,o,a)=>{var r;return c(r=e,h,jt).call(r,i,s,o,a)},moveToTail:i=>{var s;return c(s=e,h,Et).call(s,i)},indexes:i=>{var s;return c(s=e,h,nt).call(s,i)},rindexes:i=>{var s;return c(s=e,h,at).call(s,i)},isStale:i=>{var s;return t(s=e,k).call(s,i)}}}get max(){return t(this,K)}get maxSize(){return t(this,M)}get calculatedSize(){return t(this,X)}get size(){return t(this,D)}get fetchMethod(){return t(this,yt)}get memoMethod(){return t(this,St)}get dispose(){return t(this,q)}get onInsert(){return t(this,pt)}get disposeAfter(){return t(this,$)}getRemainingTTL(e){return t(this,T).has(e)?1/0:0}*entries(){for(let e of c(this,h,nt).call(this))t(this,m)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,h,A).call(this,t(this,m)[e])&&(yield [t(this,E)[e],t(this,m)[e]]);}*rentries(){for(let e of c(this,h,at).call(this))t(this,m)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,h,A).call(this,t(this,m)[e])&&(yield [t(this,E)[e],t(this,m)[e]]);}*keys(){for(let e of c(this,h,nt).call(this)){let i=t(this,E)[e];i!==void 0&&!c(this,h,A).call(this,t(this,m)[e])&&(yield i);}}*rkeys(){for(let e of c(this,h,at).call(this)){let i=t(this,E)[e];i!==void 0&&!c(this,h,A).call(this,t(this,m)[e])&&(yield i);}}*values(){for(let e of c(this,h,nt).call(this))t(this,m)[e]!==void 0&&!c(this,h,A).call(this,t(this,m)[e])&&(yield t(this,m)[e]);}*rvalues(){for(let e of c(this,h,at).call(this))t(this,m)[e]!==void 0&&!c(this,h,A).call(this,t(this,m)[e])&&(yield t(this,m)[e]);}[(Zt=Symbol.iterator,Qt=Symbol.toStringTag,Zt)](){return this.entries()}find(e,i={}){for(let s of c(this,h,nt).call(this)){let o=t(this,m)[s],a=c(this,h,A).call(this,o)?o.__staleWhileFetching:o;if(a!==void 0&&e(a,t(this,E)[s],this))return this.get(t(this,E)[s],i)}}forEach(e,i=this){for(let s of c(this,h,nt).call(this)){let o=t(this,m)[s],a=c(this,h,A).call(this,o)?o.__staleWhileFetching:o;a!==void 0&&e.call(i,a,t(this,E)[s],this);}}rforEach(e,i=this){for(let s of c(this,h,at).call(this)){let o=t(this,m)[s],a=c(this,h,A).call(this,o)?o.__staleWhileFetching:o;a!==void 0&&e.call(i,a,t(this,E)[s],this);}}purgeStale(){let e=false;for(let i of c(this,h,at).call(this,{allowStale:true}))t(this,k).call(this,i)&&(c(this,h,ht).call(this,t(this,E)[i],"expire"),e=true);return e}info(e){let i=t(this,T).get(e);if(i===void 0)return;let s=t(this,m)[i],o=c(this,h,A).call(this,s)?s.__staleWhileFetching:s;if(o===void 0)return;let a={value:o};if(t(this,W)&&t(this,Q)){let r=t(this,W)[i],d=t(this,Q)[i];if(r&&d){let f=r-(t(this,B).now()-d);a.ttl=f,a.start=Date.now();}}return t(this,J)&&(a.size=t(this,J)[i]),a}dump(){let e=[];for(let i of c(this,h,nt).call(this,{allowStale:true})){let s=t(this,E)[i],o=t(this,m)[i],a=c(this,h,A).call(this,o)?o.__staleWhileFetching:o;if(a===void 0||s===void 0)continue;let r={value:a};if(t(this,W)&&t(this,Q)){r.ttl=t(this,W)[i];let d=t(this,B).now()-t(this,Q)[i];r.start=Math.floor(Date.now()-d);}t(this,J)&&(r.size=t(this,J)[i]),e.unshift([s,r]);}return e}load(e){this.clear();for(let[i,s]of e){if(s.start){let o=Date.now()-s.start;s.start=t(this,B).now()-o;}this.set(i,s.value,s);}}set(e,i,s={}){var it,G,u,_;if(i===void 0)return this.delete(e),this;let{ttl:o=this.ttl,start:a,noDisposeOnSet:r=this.noDisposeOnSet,sizeCalculation:d=this.sizeCalculation,status:f}=s,{noUpdateTTL:S=this.noUpdateTTL}=s,R=t(this,Ot).call(this,e,i,s.size||0,d);if(this.maxEntrySize&&R>this.maxEntrySize)return f&&(f.set="miss",f.maxEntrySizeExceeded=true),c(this,h,ht).call(this,e,"set"),this;let b=t(this,D)===0?void 0:t(this,T).get(e);if(b===void 0)b=t(this,D)===0?t(this,C):t(this,Y).length!==0?t(this,Y).pop():t(this,D)===t(this,K)?c(this,h,Ft).call(this,false):t(this,D),t(this,E)[b]=e,t(this,m)[b]=i,t(this,T).set(e,b),t(this,L)[t(this,C)]=b,t(this,V)[b]=t(this,C),p(this,C,b),Dt(this,D)._++,t(this,wt).call(this,b,R,f),f&&(f.set="add"),S=false,t(this,xt)&&((it=t(this,pt))==null||it.call(this,i,e,"add"));else {c(this,h,Et).call(this,b);let v=t(this,m)[b];if(i!==v){if(t(this,lt)&&c(this,h,A).call(this,v)){v.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:n}=v;n!==void 0&&!r&&(t(this,Z)&&((G=t(this,q))==null||G.call(this,n,e,"set")),t(this,z)&&t(this,F)?.push([n,e,"set"]));}else r||(t(this,Z)&&((u=t(this,q))==null||u.call(this,v,e,"set")),t(this,z)&&t(this,F)?.push([v,e,"set"]));if(t(this,ut).call(this,b),t(this,wt).call(this,b,R,f),t(this,m)[b]=i,f){f.set="replace";let n=v&&c(this,h,A).call(this,v)?v.__staleWhileFetching:v;n!==void 0&&(f.oldValue=n);}}else f&&(f.set="update");t(this,xt)&&this.onInsert?.(i,e,i===v?"update":"replace");}if(o!==0&&!t(this,W)&&c(this,h,It).call(this),t(this,W)&&(S||t(this,Ut).call(this,b,o,a),f&&t(this,st).call(this,f,b)),!r&&t(this,z)&&t(this,F)){let v=t(this,F),n;for(;n=v?.shift();)(_=t(this,$))==null||_.call(this,...n);}return this}pop(){var e;try{for(;t(this,D);){let i=t(this,m)[t(this,P)];if(c(this,h,Ft).call(this,!0),c(this,h,A).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,z)&&t(this,F)){let i=t(this,F),s;for(;s=i?.shift();)(e=t(this,$))==null||e.call(this,...s);}}}has(e,i={}){let{updateAgeOnHas:s=this.updateAgeOnHas,status:o}=i,a=t(this,T).get(e);if(a!==void 0){let r=t(this,m)[a];if(c(this,h,A).call(this,r)&&r.__staleWhileFetching===void 0)return false;if(t(this,k).call(this,a))o&&(o.has="stale",t(this,st).call(this,o,a));else return s&&t(this,dt).call(this,a),o&&(o.has="hit",t(this,st).call(this,o,a)),true}else o&&(o.has="miss");return false}peek(e,i={}){let{allowStale:s=this.allowStale}=i,o=t(this,T).get(e);if(o===void 0||!s&&t(this,k).call(this,o))return;let a=t(this,m)[o];return c(this,h,A).call(this,a)?a.__staleWhileFetching:a}async fetch(e,i={}){let{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,ttl:r=this.ttl,noDisposeOnSet:d=this.noDisposeOnSet,size:f=0,sizeCalculation:S=this.sizeCalculation,noUpdateTTL:R=this.noUpdateTTL,noDeleteOnFetchRejection:b=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:it=this.allowStaleOnFetchRejection,ignoreFetchAbort:G=this.ignoreFetchAbort,allowStaleOnFetchAbort:u=this.allowStaleOnFetchAbort,context:_,forceRefresh:v=false,status:n,signal:y}=i;if(!t(this,lt))return n&&(n.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:a,status:n});let U={allowStale:s,updateAgeOnGet:o,noDeleteOnStaleGet:a,ttl:r,noDisposeOnSet:d,size:f,sizeCalculation:S,noUpdateTTL:R,noDeleteOnFetchRejection:b,allowStaleOnFetchRejection:it,allowStaleOnFetchAbort:u,ignoreFetchAbort:G,status:n,signal:y},O=t(this,T).get(e);if(O===void 0){n&&(n.fetch="miss");let x=c(this,h,jt).call(this,e,O,U,_);return x.__returned=x}else {let x=t(this,m)[O];if(c(this,h,A).call(this,x)){let vt=s&&x.__staleWhileFetching!==void 0;return n&&(n.fetch="inflight",vt&&(n.returnedStale=true)),vt?x.__staleWhileFetching:x.__returned=x}let rt=t(this,k).call(this,O);if(!v&&!rt)return n&&(n.fetch="hit"),c(this,h,Et).call(this,O),o&&t(this,dt).call(this,O),n&&t(this,st).call(this,n,O),x;let mt=c(this,h,jt).call(this,e,O,U,_),gt=mt.__staleWhileFetching!==void 0&&s;return n&&(n.fetch=rt?"stale":"refresh",gt&&rt&&(n.returnedStale=true)),gt?mt.__staleWhileFetching:mt.__returned=mt}}async forceFetch(e,i={}){let s=await this.fetch(e,i);if(s===void 0)throw new Error("fetch() returned undefined");return s}memo(e,i={}){let s=t(this,St);if(!s)throw new Error("no memoMethod provided to constructor");let{context:o,forceRefresh:a,...r}=i,d=this.get(e,r);if(!a&&d!==void 0)return d;let f=s(e,d,{options:r,context:o});return this.set(e,f,r),f}get(e,i={}){let{allowStale:s=this.allowStale,updateAgeOnGet:o=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,status:r}=i,d=t(this,T).get(e);if(d!==void 0){let f=t(this,m)[d],S=c(this,h,A).call(this,f);return r&&t(this,st).call(this,r,d),t(this,k).call(this,d)?(r&&(r.get="stale"),S?(r&&s&&f.__staleWhileFetching!==void 0&&(r.returnedStale=true),s?f.__staleWhileFetching:void 0):(a||c(this,h,ht).call(this,e,"expire"),r&&s&&(r.returnedStale=true),s?f:void 0)):(r&&(r.get="hit"),S?f.__staleWhileFetching:(c(this,h,Et).call(this,d),o&&t(this,dt).call(this,d),f))}else r&&(r.get="miss");}delete(e){return c(this,h,ht).call(this,e,"delete")}clear(){return c(this,h,Vt).call(this,"delete")}},K=new WeakMap,M=new WeakMap,q=new WeakMap,pt=new WeakMap,$=new WeakMap,yt=new WeakMap,St=new WeakMap,B=new WeakMap,D=new WeakMap,X=new WeakMap,T=new WeakMap,E=new WeakMap,m=new WeakMap,L=new WeakMap,V=new WeakMap,P=new WeakMap,C=new WeakMap,Y=new WeakMap,F=new WeakMap,J=new WeakMap,Q=new WeakMap,W=new WeakMap,H=new WeakMap,Z=new WeakMap,lt=new WeakMap,z=new WeakMap,xt=new WeakMap,h=new WeakSet,It=function(){let e=new Ct(t(this,K)),i=new Ct(t(this,K));p(this,W,e),p(this,Q,i);let s=this.ttlAutopurge?new Array(t(this,K)):void 0;p(this,H,s),p(this,Ut,(r,d,f=t(this,B).now())=>{if(i[r]=d!==0?f:0,e[r]=d,s?.[r]&&(clearTimeout(s[r]),s[r]=void 0),d!==0&&s){let S=setTimeout(()=>{t(this,k).call(this,r)&&c(this,h,ht).call(this,t(this,E)[r],"expire");},d+1);S.unref&&S.unref(),s[r]=S;}}),p(this,dt,r=>{i[r]=e[r]!==0?t(this,B).now():0;}),p(this,st,(r,d)=>{if(e[d]){let f=e[d],S=i[d];if(!f||!S)return;r.ttl=f,r.start=S,r.now=o||a();let R=r.now-S;r.remainingTTL=f-R;}});let o=0,a=()=>{let r=t(this,B).now();if(this.ttlResolution>0){o=r;let d=setTimeout(()=>o=0,this.ttlResolution);d.unref&&d.unref();}return r};this.getRemainingTTL=r=>{let d=t(this,T).get(r);if(d===void 0)return 0;let f=e[d],S=i[d];if(!f||!S)return 1/0;let R=(o||a())-S;return f-R},p(this,k,r=>{let d=i[r],f=e[r];return !!f&&!!d&&(o||a())-d>f});},dt=new WeakMap,st=new WeakMap,Ut=new WeakMap,k=new WeakMap,re=function(){let e=new Ct(t(this,K));p(this,X,0),p(this,J,e),p(this,ut,i=>{p(this,X,t(this,X)-e[i]),e[i]=0;}),p(this,Ot,(i,s,o,a)=>{if(c(this,h,A).call(this,s))return 0;if(!ot(o))if(a){if(typeof a!="function")throw new TypeError("sizeCalculation must be a function");if(o=a(s,i),!ot(o))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return o}),p(this,wt,(i,s,o)=>{if(e[i]=s,t(this,M)){let a=t(this,M)-e[i];for(;t(this,X)>a;)c(this,h,Ft).call(this,true);}p(this,X,t(this,X)+e[i]),o&&(o.entrySize=s,o.totalCalculatedSize=t(this,X));});},ut=new WeakMap,wt=new WeakMap,Ot=new WeakMap,nt=function*({allowStale:e=this.allowStale}={}){if(t(this,D))for(let i=t(this,C);!(!c(this,h,Gt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,P)));)i=t(this,V)[i];},at=function*({allowStale:e=this.allowStale}={}){if(t(this,D))for(let i=t(this,P);!(!c(this,h,Gt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,C)));)i=t(this,L)[i];},Gt=function(e){return e!==void 0&&t(this,T).get(t(this,E)[e])===e},Ft=function(e){var a;let i=t(this,P),s=t(this,E)[i],o=t(this,m)[i];return t(this,lt)&&c(this,h,A).call(this,o)?o.__abortController.abort(new Error("evicted")):(t(this,Z)||t(this,z))&&(t(this,Z)&&((a=t(this,q))==null||a.call(this,o,s,"evict")),t(this,z)&&t(this,F)?.push([o,s,"evict"])),t(this,ut).call(this,i),t(this,H)?.[i]&&(clearTimeout(t(this,H)[i]),t(this,H)[i]=void 0),e&&(t(this,E)[i]=void 0,t(this,m)[i]=void 0,t(this,Y).push(i)),t(this,D)===1?(p(this,P,p(this,C,0)),t(this,Y).length=0):p(this,P,t(this,L)[i]),t(this,T).delete(s),Dt(this,D)._--,i},jt=function(e,i,s,o){let a=i===void 0?void 0:t(this,m)[i];if(c(this,h,A).call(this,a))return a;let r=new Pt,{signal:d}=s;d?.addEventListener("abort",()=>r.abort(d.reason),{signal:r.signal});let f={signal:r.signal,options:s,context:o},S=(_,v=false)=>{let{aborted:n}=r.signal,y=s.ignoreFetchAbort&&_!==void 0,U=s.ignoreFetchAbort||!!(s.allowStaleOnFetchAbort&&_!==void 0);if(s.status&&(n&&!v?(s.status.fetchAborted=true,s.status.fetchError=r.signal.reason,y&&(s.status.fetchAbortIgnored=true)):s.status.fetchResolved=true),n&&!y&&!v)return b(r.signal.reason,U);let O=G,x=t(this,m)[i];return (x===G||y&&v&&x===void 0)&&(_===void 0?O.__staleWhileFetching!==void 0?t(this,m)[i]=O.__staleWhileFetching:c(this,h,ht).call(this,e,"fetch"):(s.status&&(s.status.fetchUpdated=true),this.set(e,_,f.options))),_},R=_=>(s.status&&(s.status.fetchRejected=true,s.status.fetchError=_),b(_,false)),b=(_,v)=>{let{aborted:n}=r.signal,y=n&&s.allowStaleOnFetchAbort,U=y||s.allowStaleOnFetchRejection,O=U||s.noDeleteOnFetchRejection,x=G;if(t(this,m)[i]===G&&(!O||!v&&x.__staleWhileFetching===void 0?c(this,h,ht).call(this,e,"fetch"):y||(t(this,m)[i]=x.__staleWhileFetching)),U)return s.status&&x.__staleWhileFetching!==void 0&&(s.status.returnedStale=true),x.__staleWhileFetching;if(x.__returned===x)throw _},it=(_,v)=>{var y;let n=(y=t(this,yt))==null?void 0:y.call(this,e,a,f);n&&n instanceof Promise&&n.then(U=>_(U===void 0?void 0:U),v),r.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(_(void 0),s.allowStaleOnFetchAbort&&(_=U=>S(U,true)));});};s.status&&(s.status.fetchDispatched=true);let G=new Promise(it).then(S,R),u=Object.assign(G,{__abortController:r,__staleWhileFetching:a,__returned:void 0});return i===void 0?(this.set(e,u,{...f.options,status:void 0}),i=t(this,T).get(e)):t(this,m)[i]=u,u},A=function(e){if(!t(this,lt))return false;let i=e;return !!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof Pt},Mt=function(e,i){t(this,V)[i]=e,t(this,L)[e]=i;},Et=function(e){e!==t(this,C)&&(e===t(this,P)?p(this,P,t(this,L)[e]):c(this,h,Mt).call(this,t(this,V)[e],t(this,L)[e]),c(this,h,Mt).call(this,t(this,C),e),p(this,C,e));},ht=function(e,i){var o,a;let s=false;if(t(this,D)!==0){let r=t(this,T).get(e);if(r!==void 0)if(t(this,H)?.[r]&&(clearTimeout(t(this,H)?.[r]),t(this,H)[r]=void 0),s=true,t(this,D)===1)c(this,h,Vt).call(this,i);else {t(this,ut).call(this,r);let d=t(this,m)[r];if(c(this,h,A).call(this,d)?d.__abortController.abort(new Error("deleted")):(t(this,Z)||t(this,z))&&(t(this,Z)&&((o=t(this,q))==null||o.call(this,d,e,i)),t(this,z)&&t(this,F)?.push([d,e,i])),t(this,T).delete(e),t(this,E)[r]=void 0,t(this,m)[r]=void 0,r===t(this,C))p(this,C,t(this,V)[r]);else if(r===t(this,P))p(this,P,t(this,L)[r]);else {let f=t(this,V)[r];t(this,L)[f]=t(this,L)[r];let S=t(this,L)[r];t(this,V)[S]=t(this,V)[r];}Dt(this,D)._--,t(this,Y).push(r);}}if(t(this,z)&&t(this,F)?.length){let r=t(this,F),d;for(;d=r?.shift();)(a=t(this,$))==null||a.call(this,...d);}return s},Vt=function(e){var i,s;for(let o of c(this,h,at).call(this,{allowStale:true})){let a=t(this,m)[o];if(c(this,h,A).call(this,a))a.__abortController.abort(new Error("deleted"));else {let r=t(this,E)[o];t(this,Z)&&((i=t(this,q))==null||i.call(this,a,r,e)),t(this,z)&&t(this,F)?.push([a,r,e]);}}if(t(this,T).clear(),t(this,m).fill(void 0),t(this,E).fill(void 0),t(this,W)&&t(this,Q)){t(this,W).fill(0),t(this,Q).fill(0);for(let o of t(this,H)??[])o!==void 0&&clearTimeout(o);t(this,H)?.fill(void 0);}if(t(this,J)&&t(this,J).fill(0),p(this,P,0),p(this,C,0),t(this,Y).length=0,p(this,X,0),p(this,D,0),t(this,z)&&t(this,F)){let o=t(this,F),a;for(;a=o?.shift();)(s=t(this,$))==null||s.call(this,...a);}},bt);var Rt=class{constructor(e){w(this,"cache");w(this,"map",new Map);this.cache=new se({max:e.cacheSize}),this.map=new Map;}get[Symbol.iterator](){return this.map[Symbol.iterator]}get[Symbol.toStringTag](){return this.map[Symbol.toStringTag]}clear(){return this.cache.clear(),this.map.clear()}delete(e){let i=this.map.delete(e);return i&&this.cache.delete(e),i}get forEach(){return this.map.forEach}get(e){let i=this.cache.get(e);return i||this.map.get(e)}has(e){return this.map.has(e)}set(e,i){return this.map.set(e,i),this.cache.set(e,i),this}get size(){return this.map.size}entries(){return this.map.entries()}keys(){return this.map.keys()}values(){return this.map.values()}};var Tt="1.5.13";var Wt="repeat";function Ht(l){return {type:"pause",duration:l}}var kt="__game_layer__";var oe={};var Kt={};le(Kt,{createExportableElement:()=>ne});var At;(o=>(o.log=(a,...r)=>console.log(`[Pixi\u2019VN] ${a}`,...r),o.warn=(a,...r)=>console.warn(`[Pixi\u2019VN] ${a}`,...r),o.error=(a,...r)=>console.error(`[Pixi\u2019VN] ${a}`,...r),o.info=(a,...r)=>console.info(`[Pixi\u2019VN] ${a}`,...r)))(At||(At={}));function ne(l){try{if(typeof l>"u")return l;let e=JSON.stringify(l);return JSON.parse(e)}catch(e){throw At.error("Error creating exportable element",l,e),new Error("[Pixi\u2019VN] Error creating exportable element")}}function ae(){console.info(`
|
|
1
|
+
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var I=require('@drincs/pixi-vn/canvas'),Bt=require('@drincs/pixi-vn/characters'),core=require('@drincs/pixi-vn/core'),tt=require('@drincs/pixi-vn/history'),P=require('@drincs/pixi-vn/narration'),ct=require('@drincs/pixi-vn/sound'),N=require('@drincs/pixi-vn/storage'),motion=require('@drincs/pixi-vn/motion');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var I__namespace=/*#__PURE__*/_interopNamespace(I);var Bt__namespace=/*#__PURE__*/_interopNamespace(Bt);var tt__namespace=/*#__PURE__*/_interopNamespace(tt);var P__namespace=/*#__PURE__*/_interopNamespace(P);var ct__namespace=/*#__PURE__*/_interopNamespace(ct);var N__namespace=/*#__PURE__*/_interopNamespace(N);var Xt=Object.defineProperty;var Yt=h=>{throw TypeError(h)};var le=(h,e,i)=>e in h?Xt(h,e,{enumerable:true,configurable:true,writable:true,value:i}):h[e]=i;var he=(h,e)=>{for(var i in e)Xt(h,i,{get:e[i],enumerable:true});};var b=(h,e,i)=>le(h,typeof e!="symbol"?e+"":e,i),zt=(h,e,i)=>e.has(h)||Yt("Cannot "+i);var t=(h,e,i)=>(zt(h,e,"read from private field"),i?i.call(h):e.get(h)),g=(h,e,i)=>e.has(h)?Yt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(h):e.set(h,i),u=(h,e,i,s)=>(zt(h,e,"write to private field"),e.set(h,i),i),c=(h,e,i)=>(zt(h,e,"access private method"),i);var Dt=(h,e,i,s)=>({set _(r){u(h,e,r);},get _(){return t(h,e,s)}});var ce=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,te=new Set,It=typeof process=="object"&&process?process:{},ee=(h,e,i,s)=>{typeof It.emitWarning=="function"?It.emitWarning(h,e,i,s):console.error(`[${i}] ${e}: ${h}`);},Pt=globalThis.AbortController,Jt=globalThis.AbortSignal;if(typeof Pt>"u"){Jt=class{constructor(){b(this,"onabort");b(this,"_onabort",[]);b(this,"reason");b(this,"aborted",false);}addEventListener(i,s){this._onabort.push(s);}},Pt=class{constructor(){b(this,"signal",new Jt);e();}abort(i){if(!this.signal.aborted){this.signal.reason=i,this.signal.aborted=true;for(let s of this.signal._onabort)s(i);this.signal.onabort?.(i);}}};let h=It.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1",e=()=>{h&&(h=false,ee("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",e));};}var pe=h=>!te.has(h);var ot=h=>h&&h===Math.floor(h)&&h>0&&isFinite(h),ie=h=>ot(h)?h<=Math.pow(2,8)?Uint8Array:h<=Math.pow(2,16)?Uint16Array:h<=Math.pow(2,32)?Uint32Array:h<=Number.MAX_SAFE_INTEGER?Ct:null:null,Ct=class extends Array{constructor(h){super(h),this.fill(0);}},et,_t,de=(et=class{constructor(e,i){b(this,"heap");b(this,"length");if(!t(et,_t))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new i(e),this.length=0;}static create(e){let i=ie(e);if(!i)return [];u(et,_t,true);let s=new et(e,i);return u(et,_t,false),s}push(e){this.heap[this.length++]=e;}pop(){return this.heap[--this.length]}},_t=new WeakMap,g(et,_t,false),et),Qt,Zt,q,M,K,pt,$,yt,St,B,D,X,T,E,m,L,V,R,F,Y,j,J,Q,W,H,Z,ht,z,xt,l,Nt,dt,st,Ut,k,re,ut,wt,Ot,nt,at,Gt,Ft,jt,A,Mt,Et,lt,Vt,bt,se=(bt=class{constructor(e){g(this,l);g(this,q);g(this,M);g(this,K);g(this,pt);g(this,$);g(this,yt);g(this,St);g(this,B);b(this,"ttl");b(this,"ttlResolution");b(this,"ttlAutopurge");b(this,"updateAgeOnGet");b(this,"updateAgeOnHas");b(this,"allowStale");b(this,"noDisposeOnSet");b(this,"noUpdateTTL");b(this,"maxEntrySize");b(this,"sizeCalculation");b(this,"noDeleteOnFetchRejection");b(this,"noDeleteOnStaleGet");b(this,"allowStaleOnFetchAbort");b(this,"allowStaleOnFetchRejection");b(this,"ignoreFetchAbort");g(this,D);g(this,X);g(this,T);g(this,E);g(this,m);g(this,L);g(this,V);g(this,R);g(this,F);g(this,Y);g(this,j);g(this,J);g(this,Q);g(this,W);g(this,H);g(this,Z);g(this,ht);g(this,z);g(this,xt);g(this,dt,()=>{});g(this,st,()=>{});g(this,Ut,()=>{});g(this,k,()=>false);g(this,ut,e=>{});g(this,wt,(e,i,s)=>{});g(this,Ot,(e,i,s,r)=>{if(s||r)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});b(this,Qt,"LRUCache");let{max:i=0,ttl:s,ttlResolution:r=1,ttlAutopurge:a,updateAgeOnGet:o,updateAgeOnHas:p,allowStale:d,dispose:v,onInsert:C,disposeAfter:x,noDisposeOnSet:it,noUpdateTTL:G,maxSize:f=0,maxEntrySize:S=0,sizeCalculation:_,fetchMethod:n,memoMethod:y,noDeleteOnFetchRejection:U,noDeleteOnStaleGet:O,allowStaleOnFetchRejection:w,allowStaleOnFetchAbort:rt,ignoreFetchAbort:mt,perf:gt}=e;if(gt!==void 0&&typeof gt?.now!="function")throw new TypeError("perf option must have a now() method if specified");if(u(this,B,gt??ce),i!==0&&!ot(i))throw new TypeError("max option must be a nonnegative integer");let vt=i?ie(i):Array;if(!vt)throw new Error("invalid max value: "+i);if(u(this,q,i),u(this,M,f),this.maxEntrySize=S||t(this,M),this.sizeCalculation=_,this.sizeCalculation){if(!t(this,M)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(y!==void 0&&typeof y!="function")throw new TypeError("memoMethod must be a function if defined");if(u(this,St,y),n!==void 0&&typeof n!="function")throw new TypeError("fetchMethod must be a function if specified");if(u(this,yt,n),u(this,ht,!!n),u(this,T,new Map),u(this,E,new Array(i).fill(void 0)),u(this,m,new Array(i).fill(void 0)),u(this,L,new vt(i)),u(this,V,new vt(i)),u(this,R,0),u(this,F,0),u(this,Y,de.create(i)),u(this,D,0),u(this,X,0),typeof v=="function"&&u(this,K,v),typeof C=="function"&&u(this,pt,C),typeof x=="function"?(u(this,$,x),u(this,j,[])):(u(this,$,void 0),u(this,j,void 0)),u(this,Z,!!t(this,K)),u(this,xt,!!t(this,pt)),u(this,z,!!t(this,$)),this.noDisposeOnSet=!!it,this.noUpdateTTL=!!G,this.noDeleteOnFetchRejection=!!U,this.allowStaleOnFetchRejection=!!w,this.allowStaleOnFetchAbort=!!rt,this.ignoreFetchAbort=!!mt,this.maxEntrySize!==0){if(t(this,M)!==0&&!ot(t(this,M)))throw new TypeError("maxSize must be a positive integer if specified");if(!ot(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");c(this,l,re).call(this);}if(this.allowStale=!!d,this.noDeleteOnStaleGet=!!O,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!p,this.ttlResolution=ot(r)||r===0?r:1,this.ttlAutopurge=!!a,this.ttl=s||0,this.ttl){if(!ot(this.ttl))throw new TypeError("ttl must be a positive integer if specified");c(this,l,Nt).call(this);}if(t(this,q)===0&&this.ttl===0&&t(this,M)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!t(this,q)&&!t(this,M)){let Lt="LRU_CACHE_UNBOUNDED";pe(Lt)&&(te.add(Lt),ee("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",Lt,bt));}}get perf(){return t(this,B)}static unsafeExposeInternals(e){return {starts:t(e,Q),ttls:t(e,W),autopurgeTimers:t(e,H),sizes:t(e,J),keyMap:t(e,T),keyList:t(e,E),valList:t(e,m),next:t(e,L),prev:t(e,V),get head(){return t(e,R)},get tail(){return t(e,F)},free:t(e,Y),isBackgroundFetch:i=>{var s;return c(s=e,l,A).call(s,i)},backgroundFetch:(i,s,r,a)=>{var o;return c(o=e,l,jt).call(o,i,s,r,a)},moveToTail:i=>{var s;return c(s=e,l,Et).call(s,i)},indexes:i=>{var s;return c(s=e,l,nt).call(s,i)},rindexes:i=>{var s;return c(s=e,l,at).call(s,i)},isStale:i=>{var s;return t(s=e,k).call(s,i)}}}get max(){return t(this,q)}get maxSize(){return t(this,M)}get calculatedSize(){return t(this,X)}get size(){return t(this,D)}get fetchMethod(){return t(this,yt)}get memoMethod(){return t(this,St)}get dispose(){return t(this,K)}get onInsert(){return t(this,pt)}get disposeAfter(){return t(this,$)}getRemainingTTL(e){return t(this,T).has(e)?1/0:0}*entries(){for(let e of c(this,l,nt).call(this))t(this,m)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,l,A).call(this,t(this,m)[e])&&(yield [t(this,E)[e],t(this,m)[e]]);}*rentries(){for(let e of c(this,l,at).call(this))t(this,m)[e]!==void 0&&t(this,E)[e]!==void 0&&!c(this,l,A).call(this,t(this,m)[e])&&(yield [t(this,E)[e],t(this,m)[e]]);}*keys(){for(let e of c(this,l,nt).call(this)){let i=t(this,E)[e];i!==void 0&&!c(this,l,A).call(this,t(this,m)[e])&&(yield i);}}*rkeys(){for(let e of c(this,l,at).call(this)){let i=t(this,E)[e];i!==void 0&&!c(this,l,A).call(this,t(this,m)[e])&&(yield i);}}*values(){for(let e of c(this,l,nt).call(this))t(this,m)[e]!==void 0&&!c(this,l,A).call(this,t(this,m)[e])&&(yield t(this,m)[e]);}*rvalues(){for(let e of c(this,l,at).call(this))t(this,m)[e]!==void 0&&!c(this,l,A).call(this,t(this,m)[e])&&(yield t(this,m)[e]);}[(Zt=Symbol.iterator,Qt=Symbol.toStringTag,Zt)](){return this.entries()}find(e,i={}){for(let s of c(this,l,nt).call(this)){let r=t(this,m)[s],a=c(this,l,A).call(this,r)?r.__staleWhileFetching:r;if(a!==void 0&&e(a,t(this,E)[s],this))return this.get(t(this,E)[s],i)}}forEach(e,i=this){for(let s of c(this,l,nt).call(this)){let r=t(this,m)[s],a=c(this,l,A).call(this,r)?r.__staleWhileFetching:r;a!==void 0&&e.call(i,a,t(this,E)[s],this);}}rforEach(e,i=this){for(let s of c(this,l,at).call(this)){let r=t(this,m)[s],a=c(this,l,A).call(this,r)?r.__staleWhileFetching:r;a!==void 0&&e.call(i,a,t(this,E)[s],this);}}purgeStale(){let e=false;for(let i of c(this,l,at).call(this,{allowStale:true}))t(this,k).call(this,i)&&(c(this,l,lt).call(this,t(this,E)[i],"expire"),e=true);return e}info(e){let i=t(this,T).get(e);if(i===void 0)return;let s=t(this,m)[i],r=c(this,l,A).call(this,s)?s.__staleWhileFetching:s;if(r===void 0)return;let a={value:r};if(t(this,W)&&t(this,Q)){let o=t(this,W)[i],p=t(this,Q)[i];if(o&&p){let d=o-(t(this,B).now()-p);a.ttl=d,a.start=Date.now();}}return t(this,J)&&(a.size=t(this,J)[i]),a}dump(){let e=[];for(let i of c(this,l,nt).call(this,{allowStale:true})){let s=t(this,E)[i],r=t(this,m)[i],a=c(this,l,A).call(this,r)?r.__staleWhileFetching:r;if(a===void 0||s===void 0)continue;let o={value:a};if(t(this,W)&&t(this,Q)){o.ttl=t(this,W)[i];let p=t(this,B).now()-t(this,Q)[i];o.start=Math.floor(Date.now()-p);}t(this,J)&&(o.size=t(this,J)[i]),e.unshift([s,o]);}return e}load(e){this.clear();for(let[i,s]of e){if(s.start){let r=Date.now()-s.start;s.start=t(this,B).now()-r;}this.set(i,s.value,s);}}set(e,i,s={}){var it,G,f,S;if(i===void 0)return this.delete(e),this;let{ttl:r=this.ttl,start:a,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:p=this.sizeCalculation,status:d}=s,{noUpdateTTL:v=this.noUpdateTTL}=s,C=t(this,Ot).call(this,e,i,s.size||0,p);if(this.maxEntrySize&&C>this.maxEntrySize)return d&&(d.set="miss",d.maxEntrySizeExceeded=true),c(this,l,lt).call(this,e,"set"),this;let x=t(this,D)===0?void 0:t(this,T).get(e);if(x===void 0)x=t(this,D)===0?t(this,F):t(this,Y).length!==0?t(this,Y).pop():t(this,D)===t(this,q)?c(this,l,Ft).call(this,false):t(this,D),t(this,E)[x]=e,t(this,m)[x]=i,t(this,T).set(e,x),t(this,L)[t(this,F)]=x,t(this,V)[x]=t(this,F),u(this,F,x),Dt(this,D)._++,t(this,wt).call(this,x,C,d),d&&(d.set="add"),v=false,t(this,xt)&&((it=t(this,pt))==null||it.call(this,i,e,"add"));else {c(this,l,Et).call(this,x);let _=t(this,m)[x];if(i!==_){if(t(this,ht)&&c(this,l,A).call(this,_)){_.__abortController.abort(new Error("replaced"));let{__staleWhileFetching:n}=_;n!==void 0&&!o&&(t(this,Z)&&((G=t(this,K))==null||G.call(this,n,e,"set")),t(this,z)&&t(this,j)?.push([n,e,"set"]));}else o||(t(this,Z)&&((f=t(this,K))==null||f.call(this,_,e,"set")),t(this,z)&&t(this,j)?.push([_,e,"set"]));if(t(this,ut).call(this,x),t(this,wt).call(this,x,C,d),t(this,m)[x]=i,d){d.set="replace";let n=_&&c(this,l,A).call(this,_)?_.__staleWhileFetching:_;n!==void 0&&(d.oldValue=n);}}else d&&(d.set="update");t(this,xt)&&this.onInsert?.(i,e,i===_?"update":"replace");}if(r!==0&&!t(this,W)&&c(this,l,Nt).call(this),t(this,W)&&(v||t(this,Ut).call(this,x,r,a),d&&t(this,st).call(this,d,x)),!o&&t(this,z)&&t(this,j)){let _=t(this,j),n;for(;n=_?.shift();)(S=t(this,$))==null||S.call(this,...n);}return this}pop(){var e;try{for(;t(this,D);){let i=t(this,m)[t(this,R)];if(c(this,l,Ft).call(this,!0),c(this,l,A).call(this,i)){if(i.__staleWhileFetching)return i.__staleWhileFetching}else if(i!==void 0)return i}}finally{if(t(this,z)&&t(this,j)){let i=t(this,j),s;for(;s=i?.shift();)(e=t(this,$))==null||e.call(this,...s);}}}has(e,i={}){let{updateAgeOnHas:s=this.updateAgeOnHas,status:r}=i,a=t(this,T).get(e);if(a!==void 0){let o=t(this,m)[a];if(c(this,l,A).call(this,o)&&o.__staleWhileFetching===void 0)return false;if(t(this,k).call(this,a))r&&(r.has="stale",t(this,st).call(this,r,a));else return s&&t(this,dt).call(this,a),r&&(r.has="hit",t(this,st).call(this,r,a)),true}else r&&(r.has="miss");return false}peek(e,i={}){let{allowStale:s=this.allowStale}=i,r=t(this,T).get(e);if(r===void 0||!s&&t(this,k).call(this,r))return;let a=t(this,m)[r];return c(this,l,A).call(this,a)?a.__staleWhileFetching:a}async fetch(e,i={}){let{allowStale:s=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:p=this.noDisposeOnSet,size:d=0,sizeCalculation:v=this.sizeCalculation,noUpdateTTL:C=this.noUpdateTTL,noDeleteOnFetchRejection:x=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:it=this.allowStaleOnFetchRejection,ignoreFetchAbort:G=this.ignoreFetchAbort,allowStaleOnFetchAbort:f=this.allowStaleOnFetchAbort,context:S,forceRefresh:_=false,status:n,signal:y}=i;if(!t(this,ht))return n&&(n.fetch="get"),this.get(e,{allowStale:s,updateAgeOnGet:r,noDeleteOnStaleGet:a,status:n});let U={allowStale:s,updateAgeOnGet:r,noDeleteOnStaleGet:a,ttl:o,noDisposeOnSet:p,size:d,sizeCalculation:v,noUpdateTTL:C,noDeleteOnFetchRejection:x,allowStaleOnFetchRejection:it,allowStaleOnFetchAbort:f,ignoreFetchAbort:G,status:n,signal:y},O=t(this,T).get(e);if(O===void 0){n&&(n.fetch="miss");let w=c(this,l,jt).call(this,e,O,U,S);return w.__returned=w}else {let w=t(this,m)[O];if(c(this,l,A).call(this,w)){let vt=s&&w.__staleWhileFetching!==void 0;return n&&(n.fetch="inflight",vt&&(n.returnedStale=true)),vt?w.__staleWhileFetching:w.__returned=w}let rt=t(this,k).call(this,O);if(!_&&!rt)return n&&(n.fetch="hit"),c(this,l,Et).call(this,O),r&&t(this,dt).call(this,O),n&&t(this,st).call(this,n,O),w;let mt=c(this,l,jt).call(this,e,O,U,S),gt=mt.__staleWhileFetching!==void 0&&s;return n&&(n.fetch=rt?"stale":"refresh",gt&&rt&&(n.returnedStale=true)),gt?mt.__staleWhileFetching:mt.__returned=mt}}async forceFetch(e,i={}){let s=await this.fetch(e,i);if(s===void 0)throw new Error("fetch() returned undefined");return s}memo(e,i={}){let s=t(this,St);if(!s)throw new Error("no memoMethod provided to constructor");let{context:r,forceRefresh:a,...o}=i,p=this.get(e,o);if(!a&&p!==void 0)return p;let d=s(e,p,{options:o,context:r});return this.set(e,d,o),d}get(e,i={}){let{allowStale:s=this.allowStale,updateAgeOnGet:r=this.updateAgeOnGet,noDeleteOnStaleGet:a=this.noDeleteOnStaleGet,status:o}=i,p=t(this,T).get(e);if(p!==void 0){let d=t(this,m)[p],v=c(this,l,A).call(this,d);return o&&t(this,st).call(this,o,p),t(this,k).call(this,p)?(o&&(o.get="stale"),v?(o&&s&&d.__staleWhileFetching!==void 0&&(o.returnedStale=true),s?d.__staleWhileFetching:void 0):(a||c(this,l,lt).call(this,e,"expire"),o&&s&&(o.returnedStale=true),s?d:void 0)):(o&&(o.get="hit"),v?d.__staleWhileFetching:(c(this,l,Et).call(this,p),r&&t(this,dt).call(this,p),d))}else o&&(o.get="miss");}delete(e){return c(this,l,lt).call(this,e,"delete")}clear(){return c(this,l,Vt).call(this,"delete")}},q=new WeakMap,M=new WeakMap,K=new WeakMap,pt=new WeakMap,$=new WeakMap,yt=new WeakMap,St=new WeakMap,B=new WeakMap,D=new WeakMap,X=new WeakMap,T=new WeakMap,E=new WeakMap,m=new WeakMap,L=new WeakMap,V=new WeakMap,R=new WeakMap,F=new WeakMap,Y=new WeakMap,j=new WeakMap,J=new WeakMap,Q=new WeakMap,W=new WeakMap,H=new WeakMap,Z=new WeakMap,ht=new WeakMap,z=new WeakMap,xt=new WeakMap,l=new WeakSet,Nt=function(){let e=new Ct(t(this,q)),i=new Ct(t(this,q));u(this,W,e),u(this,Q,i);let s=this.ttlAutopurge?new Array(t(this,q)):void 0;u(this,H,s),u(this,Ut,(p,d,v=t(this,B).now())=>{i[p]=d!==0?v:0,e[p]=d,r(p,d);}),u(this,dt,p=>{i[p]=e[p]!==0?t(this,B).now():0,r(p,e[p]);});let r=this.ttlAutopurge?(p,d)=>{if(s?.[p]&&(clearTimeout(s[p]),s[p]=void 0),d&&d!==0&&s){let v=setTimeout(()=>{t(this,k).call(this,p)&&c(this,l,lt).call(this,t(this,E)[p],"expire");},d+1);v.unref&&v.unref(),s[p]=v;}}:()=>{};u(this,st,(p,d)=>{if(e[d]){let v=e[d],C=i[d];if(!v||!C)return;p.ttl=v,p.start=C,p.now=a||o();let x=p.now-C;p.remainingTTL=v-x;}});let a=0,o=()=>{let p=t(this,B).now();if(this.ttlResolution>0){a=p;let d=setTimeout(()=>a=0,this.ttlResolution);d.unref&&d.unref();}return p};this.getRemainingTTL=p=>{let d=t(this,T).get(p);if(d===void 0)return 0;let v=e[d],C=i[d];if(!v||!C)return 1/0;let x=(a||o())-C;return v-x},u(this,k,p=>{let d=i[p],v=e[p];return !!v&&!!d&&(a||o())-d>v});},dt=new WeakMap,st=new WeakMap,Ut=new WeakMap,k=new WeakMap,re=function(){let e=new Ct(t(this,q));u(this,X,0),u(this,J,e),u(this,ut,i=>{u(this,X,t(this,X)-e[i]),e[i]=0;}),u(this,Ot,(i,s,r,a)=>{if(c(this,l,A).call(this,s))return 0;if(!ot(r))if(a){if(typeof a!="function")throw new TypeError("sizeCalculation must be a function");if(r=a(s,i),!ot(r))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return r}),u(this,wt,(i,s,r)=>{if(e[i]=s,t(this,M)){let a=t(this,M)-e[i];for(;t(this,X)>a;)c(this,l,Ft).call(this,true);}u(this,X,t(this,X)+e[i]),r&&(r.entrySize=s,r.totalCalculatedSize=t(this,X));});},ut=new WeakMap,wt=new WeakMap,Ot=new WeakMap,nt=function*({allowStale:e=this.allowStale}={}){if(t(this,D))for(let i=t(this,F);!(!c(this,l,Gt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,R)));)i=t(this,V)[i];},at=function*({allowStale:e=this.allowStale}={}){if(t(this,D))for(let i=t(this,R);!(!c(this,l,Gt).call(this,i)||((e||!t(this,k).call(this,i))&&(yield i),i===t(this,F)));)i=t(this,L)[i];},Gt=function(e){return e!==void 0&&t(this,T).get(t(this,E)[e])===e},Ft=function(e){var a;let i=t(this,R),s=t(this,E)[i],r=t(this,m)[i];return t(this,ht)&&c(this,l,A).call(this,r)?r.__abortController.abort(new Error("evicted")):(t(this,Z)||t(this,z))&&(t(this,Z)&&((a=t(this,K))==null||a.call(this,r,s,"evict")),t(this,z)&&t(this,j)?.push([r,s,"evict"])),t(this,ut).call(this,i),t(this,H)?.[i]&&(clearTimeout(t(this,H)[i]),t(this,H)[i]=void 0),e&&(t(this,E)[i]=void 0,t(this,m)[i]=void 0,t(this,Y).push(i)),t(this,D)===1?(u(this,R,u(this,F,0)),t(this,Y).length=0):u(this,R,t(this,L)[i]),t(this,T).delete(s),Dt(this,D)._--,i},jt=function(e,i,s,r){let a=i===void 0?void 0:t(this,m)[i];if(c(this,l,A).call(this,a))return a;let o=new Pt,{signal:p}=s;p?.addEventListener("abort",()=>o.abort(p.reason),{signal:o.signal});let d={signal:o.signal,options:s,context:r},v=(S,_=false)=>{let{aborted:n}=o.signal,y=s.ignoreFetchAbort&&S!==void 0,U=s.ignoreFetchAbort||!!(s.allowStaleOnFetchAbort&&S!==void 0);if(s.status&&(n&&!_?(s.status.fetchAborted=true,s.status.fetchError=o.signal.reason,y&&(s.status.fetchAbortIgnored=true)):s.status.fetchResolved=true),n&&!y&&!_)return x(o.signal.reason,U);let O=G,w=t(this,m)[i];return (w===G||y&&_&&w===void 0)&&(S===void 0?O.__staleWhileFetching!==void 0?t(this,m)[i]=O.__staleWhileFetching:c(this,l,lt).call(this,e,"fetch"):(s.status&&(s.status.fetchUpdated=true),this.set(e,S,d.options))),S},C=S=>(s.status&&(s.status.fetchRejected=true,s.status.fetchError=S),x(S,false)),x=(S,_)=>{let{aborted:n}=o.signal,y=n&&s.allowStaleOnFetchAbort,U=y||s.allowStaleOnFetchRejection,O=U||s.noDeleteOnFetchRejection,w=G;if(t(this,m)[i]===G&&(!O||!_&&w.__staleWhileFetching===void 0?c(this,l,lt).call(this,e,"fetch"):y||(t(this,m)[i]=w.__staleWhileFetching)),U)return s.status&&w.__staleWhileFetching!==void 0&&(s.status.returnedStale=true),w.__staleWhileFetching;if(w.__returned===w)throw S},it=(S,_)=>{var y;let n=(y=t(this,yt))==null?void 0:y.call(this,e,a,d);n&&n instanceof Promise&&n.then(U=>S(U===void 0?void 0:U),_),o.signal.addEventListener("abort",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(S(void 0),s.allowStaleOnFetchAbort&&(S=U=>v(U,true)));});};s.status&&(s.status.fetchDispatched=true);let G=new Promise(it).then(v,C),f=Object.assign(G,{__abortController:o,__staleWhileFetching:a,__returned:void 0});return i===void 0?(this.set(e,f,{...d.options,status:void 0}),i=t(this,T).get(e)):t(this,m)[i]=f,f},A=function(e){if(!t(this,ht))return false;let i=e;return !!i&&i instanceof Promise&&i.hasOwnProperty("__staleWhileFetching")&&i.__abortController instanceof Pt},Mt=function(e,i){t(this,V)[i]=e,t(this,L)[e]=i;},Et=function(e){e!==t(this,F)&&(e===t(this,R)?u(this,R,t(this,L)[e]):c(this,l,Mt).call(this,t(this,V)[e],t(this,L)[e]),c(this,l,Mt).call(this,t(this,F),e),u(this,F,e));},lt=function(e,i){var r,a;let s=false;if(t(this,D)!==0){let o=t(this,T).get(e);if(o!==void 0)if(t(this,H)?.[o]&&(clearTimeout(t(this,H)?.[o]),t(this,H)[o]=void 0),s=true,t(this,D)===1)c(this,l,Vt).call(this,i);else {t(this,ut).call(this,o);let p=t(this,m)[o];if(c(this,l,A).call(this,p)?p.__abortController.abort(new Error("deleted")):(t(this,Z)||t(this,z))&&(t(this,Z)&&((r=t(this,K))==null||r.call(this,p,e,i)),t(this,z)&&t(this,j)?.push([p,e,i])),t(this,T).delete(e),t(this,E)[o]=void 0,t(this,m)[o]=void 0,o===t(this,F))u(this,F,t(this,V)[o]);else if(o===t(this,R))u(this,R,t(this,L)[o]);else {let d=t(this,V)[o];t(this,L)[d]=t(this,L)[o];let v=t(this,L)[o];t(this,V)[v]=t(this,V)[o];}Dt(this,D)._--,t(this,Y).push(o);}}if(t(this,z)&&t(this,j)?.length){let o=t(this,j),p;for(;p=o?.shift();)(a=t(this,$))==null||a.call(this,...p);}return s},Vt=function(e){var i,s;for(let r of c(this,l,at).call(this,{allowStale:true})){let a=t(this,m)[r];if(c(this,l,A).call(this,a))a.__abortController.abort(new Error("deleted"));else {let o=t(this,E)[r];t(this,Z)&&((i=t(this,K))==null||i.call(this,a,o,e)),t(this,z)&&t(this,j)?.push([a,o,e]);}}if(t(this,T).clear(),t(this,m).fill(void 0),t(this,E).fill(void 0),t(this,W)&&t(this,Q)){t(this,W).fill(0),t(this,Q).fill(0);for(let r of t(this,H)??[])r!==void 0&&clearTimeout(r);t(this,H)?.fill(void 0);}if(t(this,J)&&t(this,J).fill(0),u(this,R,0),u(this,F,0),t(this,Y).length=0,u(this,X,0),u(this,D,0),t(this,z)&&t(this,j)){let r=t(this,j),a;for(;a=r?.shift();)(s=t(this,$))==null||s.call(this,...a);}},bt);var Rt=class{constructor(e){b(this,"cache");b(this,"map",new Map);this.cache=new se({max:e.cacheSize}),this.map=new Map;}get[Symbol.iterator](){return this.map[Symbol.iterator]}get[Symbol.toStringTag](){return this.map[Symbol.toStringTag]}clear(){return this.cache.clear(),this.map.clear()}delete(e){let i=this.map.delete(e);return i&&this.cache.delete(e),i}get forEach(){return this.map.forEach}get(e){let i=this.cache.get(e);return i||this.map.get(e)}has(e){return this.map.has(e)}set(e,i){return this.map.set(e,i),this.cache.set(e,i),this}get size(){return this.map.size}entries(){return this.map.entries()}keys(){return this.map.keys()}values(){return this.map.values()}};var Tt="1.5.18";var Wt="repeat";function Ht(h){return {type:"pause",duration:h}}var kt="__game_layer__";var oe={};var qt={};he(qt,{createExportableElement:()=>ne});var At;(r=>(r.log=(a,...o)=>console.log(`[Pixi\u2019VN] ${a}`,...o),r.warn=(a,...o)=>console.warn(`[Pixi\u2019VN] ${a}`,...o),r.error=(a,...o)=>console.error(`[Pixi\u2019VN] ${a}`,...o),r.info=(a,...o)=>console.info(`[Pixi\u2019VN] ${a}`,...o)))(At||(At={}));function ne(h){try{if(typeof h>"u")return h;let e=JSON.stringify(h);return JSON.parse(e)}catch(e){throw At.error("Error creating exportable element",h,e),new core.PixiError("not_json_serializable","Error creating exportable element")}}function ae(){console.info(`
|
|
2
2
|
_______ _ _ _ ____ ____ ____ _____
|
|
3
3
|
|_ __ \\ (_) (_) | | |_ _| |_ _||_ \\|_ _|
|
|
4
4
|
| |__) |__ _ __ __ \\_| \\ \\ / / | \\ | |
|
|
@@ -6,4 +6,5 @@
|
|
|
6
6
|
_| |_ | | > ' < | | \\ ' / _| |_\\ |_
|
|
7
7
|
|_____| [___][__]\`\\_][___] \\_/ |_____|\\____|
|
|
8
8
|
|
|
9
|
-
`);}function
|
|
9
|
+
`);}function Kt(){let h=window.location.pathname+window.location.hash;return h.includes("#")&&(h=h.split("#")[1]),h}exports.Game=void 0;(G=>{async function h(f,S,_){if(core.GameUnifier.init({navigate:S?.navigate,getCurrentGameStepState:()=>{let n={};try{n=I__namespace.canvas.export();}catch{}return {path:Kt(),storage:N__namespace.storage.export(),canvas:n,sound:ct__namespace.sound.export(),labelIndex:P__namespace.NarrationManagerStatic.currentLabelStepIndex||0,openedLabels:P__namespace.narration.openedLabels}},restoreGameStepState:async(n,y)=>{tt__namespace.HistoryManagerStatic._originalStepData=n,P__namespace.NarrationManagerStatic.openedLabels=n.openedLabels,N__namespace.storage.restore(n.storage);try{await I__namespace.canvas.restore(n.canvas);}catch{}ct__namespace.sound.restore(n.sound),y(n.path);},getStepCounter:()=>P__namespace.narration.stepCounter,setStepCounter:n=>{P__namespace.NarrationManagerStatic._stepCounter=n;},getOpenedLabels:()=>P__namespace.narration.openedLabels.length,addHistoryItem:(n,y)=>tt__namespace.stepHistory.add(n,y),getCharacter:n=>Bt__namespace.RegisteredCharacters.get(n),processNavigationRequests:(n,y)=>{let U=n,O=Promise.resolve();return n>0?(U--,O=P__namespace.narration.continue(y)):n<0&&(U=0,O=tt__namespace.stepHistory.back(y,{steps:n*-1})),{newValue:U,result:O}},onPreContinue:async()=>{try{let n=I__namespace.CanvasManagerStatic._tickersToCompleteOnStepEnd.tikersIds,y=I__namespace.CanvasManagerStatic._tickersToCompleteOnStepEnd.stepAlias,U=(async()=>{for(;n.length;){let{id:w}=n.pop()||{};w&&await I__namespace.canvas.forceCompletionOfTicker(w);}})(),O=(async()=>{for(;y.length;){let{alias:w,id:rt}=y.pop()||{};w&&rt&&await I__namespace.canvas.forceCompletionOfTicker(rt,w);}})();await Promise.all([U,O]),I__namespace.CanvasManagerStatic._tickersToCompleteOnStepEnd={tikersIds:[],stepAlias:[]};}catch{}},animate:(n,y,U,O)=>motion.motion.animate(n,y,U,O),getVariable:n=>N__namespace.storage.get(n),setVariable:(n,y)=>N__namespace.storage.set(n,y),removeVariable:n=>N__namespace.storage.remove(n),getFlag:n=>N__namespace.storage.getFlag(n),setFlag:(n,y)=>N__namespace.storage.setFlag(n,y),onLabelClosing:n=>N__namespace.StorageManagerStatic.clearOldTempVariables(n)}),ae(),!f||!S){At.warn("The canvas element or options are not defined. The canvas will not be initialized.");return}return await I__namespace.canvas.init(f,S,_)}G.init=h;function e(){N__namespace.storage.clear();try{I__namespace.canvas.clear();}catch{}ct__namespace.sound.clear(),P__namespace.narration.clear(),tt__namespace.stepHistory.clear();}G.clear=e;function i(){let f={};try{f=I__namespace.canvas.export();}catch{}return {pixivn_version:Tt,stepData:P__namespace.narration.export(),storageData:N__namespace.storage.export(),canvasData:f,soundData:ct__namespace.sound.export(),historyData:tt__namespace.stepHistory.export(),path:Kt()}}G.exportGameState=i;async function s(f,S){f.stepData.hasOwnProperty("stepsHistory")&&f.stepData.stepsHistory&&(f.historyData.stepsHistory=f.stepData.stepsHistory),f.stepData.hasOwnProperty("originalStepData")&&f.stepData.originalStepData&&(f.historyData.originalStepData=f.stepData.originalStepData),tt__namespace.stepHistory.restore(f.historyData);let _=tt__namespace.stepHistory.lastKey;if(typeof _=="number"){let n=tt__namespace.stepHistory.stepsInfoMap.get(_)||null;await P__namespace.narration.restore(f.stepData,n);}N__namespace.storage.restore(f.storageData);try{await I__namespace.canvas.restore(f.canvasData);}catch{}ct__namespace.sound.restore(f.soundData),await S(f.path);}G.restoreGameState=s;function r(f){return JSON.parse(f)}G.jsonToGameState=r;function a(f){core.GameUnifier.onEnd=f;}G.onEnd=a;function o(f){core.GameUnifier.onError=async(S,_,n)=>f(S,_,n);}G.onError=o;function p(f){P__namespace.NarrationManagerStatic.onStepStart=f;}G.onStepStart=p;function d(f){P__namespace.NarrationManagerStatic.onLoadingLabel=f;}G.onLoadingLabel=d;function v(f){P__namespace.NarrationManagerStatic.onStepEnd=f;}G.onStepEnd=v;function C(f){core.GameUnifier.navigate=f;}G.onNavigate=C;function x(f){return core.GameUnifier.addOnPreContinue(f)}G.addOnPreContinue=x;function it(f){return core.GameUnifier.removeOnPreContinue(f)}G.removeOnPreContinue=it;})(exports.Game||(exports.Game={}));var He={characterUtils:Bt__namespace,canvasUtils:I__namespace,narrationUtils:P__namespace,soundUtils:ct__namespace,CANVAS_APP_GAME_LAYER_ALIAS:kt,Pause:Ht,Repeat:Wt,PIXIVN_VERSION:Tt,...qt,...oe,canvas:I__namespace.canvas,narration:P__namespace.narration,sound:ct__namespace.sound,storage:N__namespace.storage,history:tt__namespace.stepHistory,Game:exports.Game,GameUnifier:core.GameUnifier};exports.CANVAS_APP_GAME_LAYER_ALIAS=kt;exports.CachedMap=Rt;exports.PIXIVN_VERSION=Tt;exports.Pause=Ht;exports.Repeat=Wt;exports.createExportableElement=ne;exports.default=He;Object.keys(I).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return I[k]}})});Object.keys(Bt).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return Bt[k]}})});Object.keys(core).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return core[k]}})});Object.keys(tt).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return tt[k]}})});Object.keys(P).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return P[k]}})});Object.keys(ct).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return ct[k]}})});Object.keys(N).forEach(function(k){if(k!=='default'&&!Object.prototype.hasOwnProperty.call(exports,k))Object.defineProperty(exports,k,{enumerable:true,get:function(){return N[k]}})});//# sourceMappingURL=index.cjs.map
|
|
10
|
+
//# sourceMappingURL=index.cjs.map
|