drama-pm-client 0.1.9 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -3
- package/dist/index.js +9 -6
- package/dist/types.d.ts +154 -59
- package/dist/types.js +1 -1
- package/package.json +1 -1
- package/dist/idl.json +0 -1066
package/dist/index.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export interface ClaimRewardsParams {
|
|
|
27
27
|
market: PublicKey;
|
|
28
28
|
bettingToken: PublicKey;
|
|
29
29
|
winningOutcome: Outcome;
|
|
30
|
+
tokenAmount: number | BN;
|
|
30
31
|
}
|
|
31
32
|
export interface RefundParams {
|
|
32
33
|
user: PublicKey;
|
|
@@ -67,11 +68,11 @@ export declare class DramaPmClient {
|
|
|
67
68
|
/**
|
|
68
69
|
* Update authorized admin (Authority only)
|
|
69
70
|
*/
|
|
70
|
-
|
|
71
|
+
addAdmin(newAdmin: PublicKey): Promise<TransactionInstruction>;
|
|
71
72
|
/**
|
|
72
73
|
* Build a complete transaction to update admin
|
|
73
74
|
*/
|
|
74
|
-
|
|
75
|
+
buildAddAdminTx(newAdmin: PublicKey): Promise<Transaction>;
|
|
75
76
|
/**
|
|
76
77
|
* Create a new prediction market instruction
|
|
77
78
|
*/
|
|
@@ -125,7 +126,7 @@ export declare class DramaPmClient {
|
|
|
125
126
|
*/
|
|
126
127
|
getGlobalConfigAccount(): Promise<{
|
|
127
128
|
authority: anchor.web3.PublicKey;
|
|
128
|
-
|
|
129
|
+
authorizedAdmins: anchor.web3.PublicKey[];
|
|
129
130
|
}>;
|
|
130
131
|
/**
|
|
131
132
|
* Fetch market account data
|
package/dist/index.js
CHANGED
|
@@ -75,10 +75,10 @@ export class DramaPmClient {
|
|
|
75
75
|
/**
|
|
76
76
|
* Update authorized admin (Authority only)
|
|
77
77
|
*/
|
|
78
|
-
async
|
|
78
|
+
async addAdmin(newAdmin) {
|
|
79
79
|
const globalConfig = getGlobalConfigPda(this.program.programId);
|
|
80
80
|
return await this.program.methods
|
|
81
|
-
.
|
|
81
|
+
.addAdmin(newAdmin)
|
|
82
82
|
.accountsPartial({
|
|
83
83
|
globalConfig,
|
|
84
84
|
})
|
|
@@ -87,8 +87,8 @@ export class DramaPmClient {
|
|
|
87
87
|
/**
|
|
88
88
|
* Build a complete transaction to update admin
|
|
89
89
|
*/
|
|
90
|
-
async
|
|
91
|
-
const ix = await this.
|
|
90
|
+
async buildAddAdminTx(newAdmin) {
|
|
91
|
+
const ix = await this.addAdmin(newAdmin);
|
|
92
92
|
return new Transaction().add(ix);
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
@@ -193,8 +193,11 @@ export class DramaPmClient {
|
|
|
193
193
|
const userBettingToken = getAssociatedTokenAddressSync(bettingToken, user);
|
|
194
194
|
const targetMint = winningOutcome === "Yes" ? yesMint : noMint;
|
|
195
195
|
const userOutcomeToken = getAssociatedTokenAddressSync(targetMint, user);
|
|
196
|
+
const amountBn = new AnchorBN(params.tokenAmount);
|
|
196
197
|
return await this.program.methods
|
|
197
|
-
.claimRewards(
|
|
198
|
+
.claimRewards({
|
|
199
|
+
tokenAmount: amountBn, // Claim all available rewards
|
|
200
|
+
})
|
|
198
201
|
.accountsPartial({
|
|
199
202
|
market,
|
|
200
203
|
userOutcomeToken,
|
|
@@ -310,4 +313,4 @@ export class DramaPmClient {
|
|
|
310
313
|
return await getAccount(this.connection, vaultPda);
|
|
311
314
|
}
|
|
312
315
|
}
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3ZDLFVBQVUsRUFDViw2QkFBNkIsRUFDN0IsZ0JBQWdCLEdBQ2pCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUVMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsV0FBVyxFQUVaLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixhQUFhLEVBQ2IsV0FBVyxHQUNaLE1BQU0sWUFBWSxDQUFDO0FBRXBCLHdEQUF3RDtBQUN4RCxNQUFNLFFBQVEsR0FBSSxNQUFjLENBQUMsRUFBRSxJQUFLLE1BQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0FBQ25FLE1BQU0sYUFBYSxHQUFJLE1BQWMsQ0FBQyxPQUFPLElBQUssTUFBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7QUFFbEYsY0FBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFXLEdBQUcsRUFBRSxDQUFDO0FBb0N4QixNQUFNLE9BQU8sYUFBYTtJQUt4QixZQUFZLFVBQXNCLEVBQUUsTUFBc0IsRUFBRSxTQUFxQjtRQUMvRSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FDdkMsVUFBVSxFQUNWLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQy9DLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUM1QixDQUFDO1FBRUYsdUVBQXVFO1FBQ3ZFLE1BQU0sY0FBYyxHQUFHLFNB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RUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxRSxPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQW9CO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxPQUFPLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCTiwgSWRsLCBQcm9ncmFtIH0gZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQgKiBhcyBhbmNob3IgZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQge1xuICBjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb24sXG4gIGdldEFjY291bnQsXG4gIGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jLFxuICBUT0tFTl9QUk9HUkFNX0lELFxufSBmcm9tIFwiQHNvbGFuYS9zcGwtdG9rZW5cIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb24sXG4gIEtleXBhaXIsXG4gIFB1YmxpY0tleSxcbiAgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25cbn0gZnJvbSBcIkBzb2xhbmEvd2ViMy5qc1wiO1xuaW1wb3J0IHsgSURMIH0gZnJvbSBcIi4vaWRsLmpzXCI7XG5pbXBvcnQgeyBEcmFtYVBtIH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcbmltcG9ydCB7XG4gIGdldEdsb2JhbENvbmZpZ1BkYSxcbiAgZ2V0TWFya2V0UGRhLFxuICBnZXRNYXJrZXRQZGFzLFxuICBnZXRWYXVsdFBkYSxcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuLy8gSGFuZGxlIGJvdGggQ29tbW9uSlMgYW5kIEVTTSBpbXBvcnQgc3R5bGVzIGZvciBBbmNob3JcbmNvbnN0IEFuY2hvckJOID0gKGFuY2hvciBhcyBhbnkpLkJOIHx8IChhbmNob3IgYXMgYW55KS5kZWZhdWx0Py5CTjtcbmNvbnN0IEFuY2hvclByb2dyYW0gPSAoYW5jaG9yIGFzIGFueSkuUHJvZ3JhbSB8fCAoYW5jaG9yIGFzIGFueSkuZGVmYXVsdD8uUHJvZ3JhbTtcblxuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMuanNcIjtcbmV4cG9ydCB7IERyYW1hUG0sIElETCB9O1xuXG5leHBvcnQgdHlwZSBPdXRjb21lID0gXCJZZXNcIiB8IFwiTm9cIjtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVNYXJrZXRQYXJhbXMge1xuICBhZG1pbjogUHVibGljS2V5O1xuICBtYXJrZXRJZDogbnVtYmVyIHwgQk47XG4gIHllc1ByaWNlOiBudW1iZXIgfCBCTjtcbiAgbm9QcmljZTogbnVtYmVyIHwgQk47XG4gIGVuZFRpbWU6IG51bWJlciB8IEJOO1xuICBiZXR0aW5nVG9rZW46IFB1YmxpY0tleTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFjZUJldFBhcmFtcyB7XG4gIHVzZXI6IFB1YmxpY0tleTtcbiAgbWFya2V0OiBQdWJsaWNLZXk7IC8vIE1hcmtldCBQREEgYWRkcmVzc1xuICBhbW91bnQ6IG51bWJlciB8IEJOO1xuICBvdXRjb21lOiBPdXRjb21lO1xuICBiZXR0aW5nVG9rZW46IFB1YmxpY0tleTtcbiAgY3JlYXRlQXRhPzogYm9vbGVhbjsgLy8gV2hldGhlciB0byBjcmVhdGUgQVRBIGluc3RydWN0aW9uIGF1dG9tYXRpY2FsbHlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGFpbVJld2FyZHNQYXJhbXMge1xuICB1c2VyOiBQdWJsaWNLZXk7XG4gIG1hcmtldDogUHVibGljS2V5OyAvLyBNYXJrZXQgUERBIGFkZHJlc3NcbiAgYmV0dGluZ1Rva2VuOiBQdWJsaWNLZXk7XG4gIHdpbm5pbmdPdXRjb21lOiBPdXRjb21lO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZnVuZFBhcmFtcyB7XG4gIHVzZXI6IFB1YmxpY0tleTtcbiAgbWFya2V0OiBQdWJsaWNLZXk7IC8vIE1hcmtldCBQREEgYWRkcmVzc1xuICBiZXR0aW5nVG9rZW46IFB1YmxpY0tleTtcbiAgb3V0Y29tZTogT3V0Y29tZTtcbn1cblxuZXhwb3J0IGNsYXNzIERyYW1hUG1DbGllbnQge1xuICBwcm9ncmFtOiBQcm9ncmFtPERyYW1hUG0+O1xuICBwcm92aWRlcjogYW5jaG9yLkFuY2hvclByb3ZpZGVyO1xuICBjb25uZWN0aW9uOiBDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IENvbm5lY3Rpb24sIHdhbGxldD86IGFuY2hvci5XYWxsZXQsIHByb2dyYW1JZD86IFB1YmxpY0tleSkge1xuICAgIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBhbmNob3IuQW5jaG9yUHJvdmlkZXIoXG4gICAgICBjb25uZWN0aW9uLFxuICAgICAgd2FsbGV0IHx8IG5ldyBhbmNob3IuV2FsbGV0KEtleXBhaXIuZ2VuZXJhdGUoKSksXG4gICAgICB7IGNvbW1pdG1lbnQ6IFwiY29uZmlybWVkXCIgfVxuICAgICk7XG4gICAgXG4gICAgLy8gVXNlIGN1c3RvbSBwcm9ncmFtSWQgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgdGhlIGRlZmF1bHQgZnJvbSBJRExcbiAgICBjb25zdCBmaW5hbFByb2dyYW1JZCA9IHByb2dyYW1JZCB8fCBuZXcgUHVibGljS2V5KElETC5hZGRyZXNzKTtcbiAgICBcbiAgICAvLyBDcmVhdGUgYSBuZXcgSURMIHdpdGggdGhlIGN1c3RvbSBwcm9ncmFtSWRcbiAgICBjb25zdCBjdXN0b21JZGwgPSB7IC4uLklETCwgYWRkcmVzczogZmluYWxQcm9ncmFtSWQudG9CYXNlNTgoKSB9O1xuICAgIFxuICAgIHRoaXMucHJvZ3JhbSA9IG5ldyBBbmNob3JQcm9ncmFtKGN1c3RvbUlkbCBhcyBJZGwsIHRoaXMucHJvdmlkZXIpIGFzIHVua25vd24gYXMgUHJvZ3JhbTxEcmFtYVBtPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnQgcHJvZ3JhbSBJRFxuICAgKi9cbiAgZ2V0UHJvZ3JhbUlkKCk6IFB1YmxpY0tleSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGEgbmV3IHByb2dyYW0gSUQgYW5kIHJlaW5pdGlhbGl6ZSB0aGUgcHJvZ3JhbSBpbnN0YW5jZVxuICAgKiBVc2VmdWwgd2hlbiByZWRlcGxveWluZyB0aGUgcHJvZ3JhbSB0byBhIG5ldyBhZGRyZXNzXG4gICAqL1xuICBzZXRQcm9ncmFtSWQocHJvZ3JhbUlkOiBQdWJsaWNLZXkpOiB2b2lkIHtcbiAgICBjb25zdCBjdXN0b21JZGwgPSB7IC4uLklETCwgYWRkcmVzczogcHJvZ3JhbUlkLnRvQmFzZTU4KCkgfTtcbiAgICB0aGlzLnByb2dyYW0gPSBuZXcgQW5jaG9yUHJvZ3JhbShjdXN0b21JZGwgYXMgSWRsLCB0aGlzLnByb3ZpZGVyKSBhcyB1bmtub3duIGFzIFByb2dyYW08RHJhbWFQbT47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50IGV4aXN0c1xuICAgKi9cbiAgYXN5bmMgYXRhRXhpc3RzKGF0YTogUHVibGljS2V5KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGdldEFjY291bnQodGhpcy5jb25uZWN0aW9uLCBhdGEpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBpbnN0cnVjdGlvbiB0byBpbml0aWFsaXplIGFuIGFzc29jaWF0ZWQgdG9rZW4gYWNjb3VudFxuICAgKi9cbiAgY3JlYXRlQXRhSW5zdHJ1Y3Rpb24oXG4gICAgcGF5ZXI6IFB1YmxpY0tleSxcbiAgICBvd25lcjogUHVibGljS2V5LFxuICAgIG1pbnQ6IFB1YmxpY0tleVxuICApOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uIHtcbiAgICBjb25zdCBhdGEgPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyhtaW50LCBvd25lcik7XG4gICAgcmV0dXJuIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgIHBheWVyLFxuICAgICAgYXRhLFxuICAgICAgb3duZXIsXG4gICAgICBtaW50LFxuICAgICAgVE9LRU5fUFJPR1JBTV9JRFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBnbG9iYWwgY29uZmlndXJhdGlvbiAoQXV0aG9yaXR5IG9ubHkpXG4gICAqL1xuICBhc3luYyBpbml0aWFsaXplQ29uZmlnKGF1dGhvcml0eTogUHVibGljS2V5KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluc3RydWN0aW9uPiB7XG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gZ2V0R2xvYmFsQ29uZmlnUGRhKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLmluaXRpYWxpemVDb25maWcoKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIGdsb2JhbENvbmZpZyxcbiAgICAgICAgYXV0aG9yaXR5OiBhdXRob3JpdHksXG4gICAgICAgIHN5c3RlbVByb2dyYW06IGFuY2hvci53ZWIzLlN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLFxuICAgICAgfSlcbiAgICAgIC5pbnN0cnVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgdHJhbnNhY3Rpb24gdG8gaW5pdGlhbGl6ZSBjb25maWdcbiAgICovXG4gIGFzeW5jIGJ1aWxkSW5pdGlhbGl6ZUNvbmZpZ1R4KGF1dGhvcml0eTogUHVibGljS2V5KTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGl4ID0gYXdhaXQgdGhpcy5pbml0aWFsaXplQ29uZmlnKGF1dGhvcml0eSk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGF1dGhvcml6ZWQgYWRtaW4gKEF1dGhvcml0eSBvbmx5KVxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQWRtaW4obmV3QWRtaW46IFB1YmxpY0tleSk6IFByb21pc2U8VHJhbnNhY3Rpb25JbnN0cnVjdGlvbj4ge1xuICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IGdldEdsb2JhbENvbmZpZ1BkYSh0aGlzLnByb2dyYW0ucHJvZ3JhbUlkKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLnVwZGF0ZUFkbWluKG5ld0FkbWluKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIGdsb2JhbENvbmZpZyxcbiAgICAgIH0pXG4gICAgICAuaW5zdHJ1Y3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGNvbXBsZXRlIHRyYW5zYWN0aW9uIHRvIHVwZGF0ZSBhZG1pblxuICAgKi9cbiAgYXN5bmMgYnVpbGRVcGRhdGVBZG1pblR4KG5ld0FkbWluOiBQdWJsaWNLZXkpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLnVwZGF0ZUFkbWluKG5ld0FkbWluKTtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKCkuYWRkKGl4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgcHJlZGljdGlvbiBtYXJrZXQgaW5zdHJ1Y3Rpb25cbiAgICovXG4gIGFzeW5jIGNyZWF0ZU1hcmtldChwYXJhbXM6IENyZWF0ZU1hcmtldFBhcmFtcyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbnN0cnVjdGlvbj4ge1xuICAgIGNvbnN0IHsgYWRtaW4sIG1hcmtldElkLCB5ZXNQcmljZSwgbm9QcmljZSwgZW5kVGltZSwgYmV0dGluZ1Rva2VuIH0gPSBwYXJhbXM7XG4gICAgXG4gICAgY29uc3QgbWFya2V0SWRCbiA9IG5ldyBBbmNob3JCTihtYXJrZXRJZCk7XG4gICAgY29uc3QgeWVzUHJpY2VCbiA9IG5ldyBBbmNob3JCTih5ZXNQcmljZSk7XG4gICAgY29uc3Qgbm9QcmljZUJuID0gbmV3IEFuY2hvckJOKG5vUHJpY2UpO1xuICAgIGNvbnN0IGVuZFRpbWVCbiA9IG5ldyBBbmNob3JCTihlbmRUaW1lKTtcblxuICAgIGNvbnN0IHBkYXMgPSBnZXRNYXJrZXRQZGFzKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQsIGFkbWluLCBtYXJrZXRJZEJuKTtcbiAgICBjb25zdCBnbG9iYWxDb25maWcgPSBnZXRHbG9iYWxDb25maWdQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLm1ldGhvZHNcbiAgICAgIC5jcmVhdGVNYXJrZXQoe1xuICAgICAgICAgIG1hcmtldElkOiBtYXJrZXRJZEJuLFxuICAgICAgICAgIHllc1ByaWNlOiB5ZXNQcmljZUJuLFxuICAgICAgICAgIG5vUHJpY2U6IG5vUHJpY2VCbixcbiAgICAgICAgICBlbmRUaW1lOiBlbmRUaW1lQm4sXG4gICAgICAgIH0pXG4gICAgICAgIC5hY2NvdW50c1BhcnRpYWwoe1xuICAgICAgICAgIGdsb2JhbENvbmZpZyxcbiAgICAgICAgICBtYXJrZXQ6IHBkYXMubWFya2V0LFxuICAgICAgICAgIHllc01pbnQ6IHBkYXMueWVzTWludCxcbiAgICAgICAgICBub01pbnQ6IHBkYXMubm9NaW50LFxuICAgICAgICAgIGJldHRpbmdUb2tlbjogYmV0dGluZ1Rva2VuLFxuICAgICAgICAgIHZhdWx0OiBwZGFzLnZhdWx0LFxuICAgICAgICAgIGFkbWluOiBhZG1pbixcbiAgICAgICAgICBzeXN0ZW1Qcm9ncmFtOiBhbmNob3Iud2ViMy5TeXN0ZW1Qcm9ncmFtLnByb2dyYW1JZCxcbiAgICAgICAgfSlcbiAgICAgICAgLmluc3RydWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBjb21wbGV0ZSB0cmFuc2FjdGlvbiB0byBjcmVhdGUgYSBtYXJrZXRcbiAgICovXG4gIGFzeW5jIGJ1aWxkQ3JlYXRlTWFya2V0VHgocGFyYW1zOiBDcmVhdGVNYXJrZXRQYXJhbXMpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLmNyZWF0ZU1hcmtldChwYXJhbXMpO1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oKS5hZGQoaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBsYWNlIGEgYmV0IGluc3RydWN0aW9uICh3aXRob3V0IEFUQSBjcmVhdGlvbilcbiAgICovXG4gIGFzeW5jIHBsYWNlQmV0KHBhcmFtczogUGxhY2VCZXRQYXJhbXMpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCB7IHVzZXIsIG1hcmtldCwgYW1vdW50LCBvdXRjb21lLCBiZXR0aW5nVG9rZW4gfSA9IHBhcmFtcztcbiAgICBcbiAgICBjb25zdCBhbW91bnRCbiA9IG5ldyBBbmNob3JCTihhbW91bnQpO1xuICAgIGNvbnN0IG91dGNvbWVFbnVtID0gb3V0Y29tZSA9PT0gXCJZZXNcIiA/IHsgeWVzOiB7fSB9IDogeyBubzoge30gfTtcblxuICAgIC8vIERlcml2ZSBQREFzIGZyb20gbWFya2V0IGFkZHJlc3NcbiAgICBjb25zdCB5ZXNNaW50ID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oXCJ5ZXNfbWludFwiKSwgbWFya2V0LnRvQnVmZmVyKCldLFxuICAgICAgdGhpcy5wcm9ncmFtLnByb2dyYW1JZFxuICAgIClbMF07XG4gICAgY29uc3Qgbm9NaW50ID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oXCJub19taW50XCIpLCBtYXJrZXQudG9CdWZmZXIoKV0sXG4gICAgICB0aGlzLnByb2dyYW0ucHJvZ3JhbUlkXG4gICAgKVswXTtcbiAgICBjb25zdCB2YXVsdCA9IFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgICAgW0J1ZmZlci5mcm9tKFwidmF1bHRcIiksIG1hcmtldC50b0J1ZmZlcigpXSxcbiAgICAgIHRoaXMucHJvZ3JhbS5wcm9ncmFtSWRcbiAgICApWzBdO1xuXG4gICAgY29uc3QgdXNlckJldHRpbmdUb2tlbiA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKGJldHRpbmdUb2tlbiwgdXNlcik7XG4gICAgXG4gICAgLy8gRGV0ZXJtaW5lIHdoaWNoIG91dGNvbWUgdG9rZW4gdGhlIHVzZXIgd2lsbCByZWNlaXZlXG4gICAgY29uc3QgdGFyZ2V0TWludCA9IG91dGNvbWUgPT09IFwiWWVzXCIgPyB5ZXNNaW50IDogbm9NaW50O1xuICAgIGNvbnN0IHVzZXJPdXRjb21lVG9rZW4gPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyh0YXJnZXRNaW50LCB1c2VyKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLnBsYWNlQmV0KHtcbiAgICAgICAgYnV5T3V0Y29tZTogb3V0Y29tZUVudW0sXG4gICAgICAgIGFtb3VudDogYW1vdW50Qm4sXG4gICAgICB9KVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIG1hcmtldCxcbiAgICAgICAgeWVzTWludCxcbiAgICAgICAgbm9NaW50LFxuICAgICAgICB2YXVsdCxcbiAgICAgICAgdXNlck91dGNvbWVUb2tlbixcbiAgICAgICAgdXNlckJldHRpbmdUb2tlbixcbiAgICAgICAgdXNlcixcbiAgICAgIH0pXG4gICAgICAuaW5zdHJ1Y3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGNvbXBsZXRlIHRyYW5zYWN0aW9uIHRvIHBsYWNlIGEgYmV0ICh3aXRoIG9wdGlvbmFsIEFUQSBjcmVhdGlvbilcbiAgICovXG4gIGFzeW5jIGJ1aWxkUGxhY2VCZXRUeChwYXJhbXM6IFBsYWNlQmV0UGFyYW1zKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IHsgdXNlciwgbWFya2V0LCBvdXRjb21lLCBjcmVhdGVBdGEgPSB0cnVlIH0gPSBwYXJhbXM7XG4gICAgXG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgICBcbiAgICAvLyBEZXJpdmUgbWludCBQREFzIGZyb20gbWFya2V0IGFkZHJlc3NcbiAgICBjb25zdCB5ZXNNaW50ID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oXCJ5ZXNfbWludFwiKSwgbWFya2V0LnRvQnVmZmVyKCldLFxuICAgICAgdGhpcy5wcm9ncmFtLnByb2dyYW1JZFxuICAgIClbMF07XG4gICAgY29uc3Qgbm9NaW50ID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oXCJub19taW50XCIpLCBtYXJrZXQudG9CdWZmZXIoKV0sXG4gICAgICB0aGlzLnByb2dyYW0ucHJvZ3JhbUlkXG4gICAgKVswXTtcbiAgICBcbiAgICBjb25zdCB0YXJnZXRNaW50ID0gb3V0Y29tZSA9PT0gXCJZZXNcIiA/IHllc01pbnQgOiBub01pbnQ7XG4gICAgY29uc3QgdXNlck91dGNvbWVUb2tlbiA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKHRhcmdldE1pbnQsIHVzZXIpO1xuXG4gICAgLy8gQ2hlY2sgaWYgQVRBIGV4aXN0cyBhbmQgY3JlYXRlIGlmIG5lZWRlZFxuICAgIGlmIChjcmVhdGVBdGEpIHtcbiAgICAgIGNvbnN0IGV4aXN0cyA9IGF3YWl0IHRoaXMuYXRhRXhpc3RzKHVzZXJPdXRjb21lVG9rZW4pO1xuICAgICAgaWYgKCFleGlzdHMpIHtcbiAgICAgICAgY29uc3QgY3JlYXRlQXRhSXggPSB0aGlzLmNyZWF0ZUF0YUluc3RydWN0aW9uKHVzZXIsIHVzZXIsIHRhcmdldE1pbnQpO1xuICAgICAgICB0eC5hZGQoY3JlYXRlQXRhSXgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHBsYWNlQmV0SXggPSBhd2FpdCB0aGlzLnBsYWNlQmV0KHBhcmFtcyk7XG4gICAgdHguYWRkKHBsYWNlQmV0SXgpO1xuXG4gICAgcmV0dXJuIHR4O1xuICB9XG5cbiAgLyoqXG4gICAqIENsYWltIHJld2FyZHMgYWZ0ZXIgbWFya2V0IHJlc29sdXRpb25cbiAgICovXG4gIGFzeW5jIGNsYWltUmV3YXJkcyhwYXJhbXM6IENsYWltUmV3YXJkc1BhcmFtcyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbnN0cnVjdGlvbj4ge1xuICAgIGNvbnN0IHsgdXNlciwgbWFya2V0LCBiZXR0aW5nVG9rZW4sIHdpbm5pbmdPdXRjb21lIH0gPSBwYXJhbXM7XG4gICAgXG4gICAgLy8gRGVyaXZlIG1pbnQgUERBcyBmcm9tIG1hcmtldCBhZGRyZXNzXG4gICAgY29uc3QgeWVzTWludCA9IFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgICAgW0J1ZmZlci5mcm9tKFwieWVzX21pbnRcIiksIG1hcmtldC50b0J1ZmZlcigpXSxcbiAgICAgIHRoaXMucHJvZ3JhbS5wcm9ncmFtSWRcbiAgICApWzBdO1xuICAgIGNvbnN0IG5vTWludCA9IFB1YmxpY0tleS5maW5kUHJvZ3JhbUFkZHJlc3NTeW5jKFxuICAgICAgW0J1ZmZlci5mcm9tKFwibm9fbWludFwiKSwgbWFya2V0LnRvQnVmZmVyKCldLFxuICAgICAgdGhpcy5wcm9ncmFtLnByb2dyYW1JZFxuICAgIClbMF07XG5cbiAgICBjb25zdCB1c2VyQmV0dGluZ1Rva2VuID0gZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMoYmV0dGluZ1Rva2VuLCB1c2VyKTtcbiAgICBjb25zdCB0YXJnZXRNaW50ID0gd2lubmluZ091dGNvbWUgPT09IFwiWWVzXCIgPyB5ZXNNaW50IDogbm9NaW50O1xuICAgIGNvbnN0IHVzZXJPdXRjb21lVG9rZW4gPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyh0YXJnZXRNaW50LCB1c2VyKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLmNsYWltUmV3YXJkcygpXG4gICAgICAuYWNjb3VudHNQYXJ0aWFsKHtcbiAgICAgICAgbWFya2V0LFxuICAgICAgICB1c2VyT3V0Y29tZVRva2VuLFxuICAgICAgICB1c2VyQmV0dGluZ1Rva2VuLFxuICAgICAgICB1c2VyLFxuICAgICAgfSlcbiAgICAgIC5pbnN0cnVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgdHJhbnNhY3Rpb24gdG8gY2xhaW0gcmV3YXJkc1xuICAgKi9cbiAgYXN5bmMgYnVpbGRDbGFpbVJld2FyZHNUeChwYXJhbXM6IENsYWltUmV3YXJkc1BhcmFtcyk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBpeCA9IGF3YWl0IHRoaXMuY2xhaW1SZXdhcmRzKHBhcmFtcyk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmdW5kIGJldHMgaWYgbWFya2V0IGlzIHJlZnVuZGVkXG4gICAqL1xuICBhc3luYyByZWZ1bmQocGFyYW1zOiBSZWZ1bmRQYXJhbXMpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCB7IHVzZXIsIG1hcmtldCwgYmV0dGluZ1Rva2VuLCBvdXRjb21lIH0gPSBwYXJhbXM7XG4gICAgXG4gICAgY29uc3Qgb3V0Y29tZUVudW0gPSBvdXRjb21lID09PSBcIlllc1wiID8geyB5ZXM6IHt9IH0gOiB7IG5vOiB7fSB9O1xuICAgIFxuICAgIC8vIERlcml2ZSBtaW50IFBEQXMgZnJvbSBtYXJrZXQgYWRkcmVzc1xuICAgIGNvbnN0IHllc01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcInllc19taW50XCIpLCBtYXJrZXQudG9CdWZmZXIoKV0sXG4gICAgICB0aGlzLnByb2dyYW0ucHJvZ3JhbUlkXG4gICAgKVswXTtcbiAgICBjb25zdCBub01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcIm5vX21pbnRcIiksIG1hcmtldC50b0J1ZmZlcigpXSxcbiAgICAgIHRoaXMucHJvZ3JhbS5wcm9ncmFtSWRcbiAgICApWzBdO1xuXG4gICAgY29uc3QgdXNlckJldHRpbmdUb2tlbiA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKGJldHRpbmdUb2tlbiwgdXNlcik7XG4gICAgY29uc3QgdGFyZ2V0TWludCA9IG91dGNvbWUgPT09IFwiWWVzXCIgPyB5ZXNNaW50IDogbm9NaW50O1xuICAgIGNvbnN0IHVzZXJPdXRjb21lVG9rZW4gPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyh0YXJnZXRNaW50LCB1c2VyKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLnJlZnVuZChvdXRjb21lRW51bSlcbiAgICAgIC5hY2NvdW50c1BhcnRpYWwoe1xuICAgICAgICBtYXJrZXQsXG4gICAgICAgIHVzZXJPdXRjb21lVG9rZW4sXG4gICAgICAgIHVzZXJCZXR0aW5nVG9rZW4sXG4gICAgICAgIHVzZXIsXG4gICAgICB9KVxuICAgICAgLmluc3RydWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBjb21wbGV0ZSB0cmFuc2FjdGlvbiB0byByZWZ1bmRcbiAgICovXG4gIGFzeW5jIGJ1aWxkUmVmdW5kVHgocGFyYW1zOiBSZWZ1bmRQYXJhbXMpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLnJlZnVuZChwYXJhbXMpO1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oKS5hZGQoaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSBtYXJrZXQgKEFkbWluIG9ubHkpXG4gICAqL1xuICBhc3luYyByZXNvbHZlTWFya2V0KFxuICAgIGFkbWluOiBQdWJsaWNLZXksXG4gICAgbWFya2V0SWQ6IG51bWJlciB8IEJOLFxuICAgIHdpbm5pbmdPdXRjb21lOiBcIlllc1wiIHwgXCJOb1wiIHwgbnVsbFxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCBtYXJrZXRJZEJuID0gbmV3IEFuY2hvckJOKG1hcmtldElkKTtcbiAgICBjb25zdCBtYXJrZXRQZGEgPSBnZXRNYXJrZXRQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCwgYWRtaW4sIG1hcmtldElkQm4pO1xuXG4gICAgbGV0IG91dGNvbWVFbnVtOiBhbnkgPSBudWxsO1xuICAgIGlmICh3aW5uaW5nT3V0Y29tZSA9PT0gXCJZZXNcIikge1xuICAgICAgb3V0Y29tZUVudW0gPSB7IHllczoge30gfTtcbiAgICB9IGVsc2UgaWYgKHdpbm5pbmdPdXRjb21lID09PSBcIk5vXCIpIHtcbiAgICAgIG91dGNvbWVFbnVtID0geyBubzoge30gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLm1ldGhvZHNcbiAgICAgIC5yZXNvbHZlTWFya2V0KG91dGNvbWVFbnVtKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIG1hcmtldDogbWFya2V0UGRhLFxuICAgICAgICBhZG1pbixcbiAgICAgIH0pXG4gICAgICAuaW5zdHJ1Y3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGNvbXBsZXRlIHRyYW5zYWN0aW9uIHRvIHJlc29sdmUgYSBtYXJrZXRcbiAgICovXG4gIGFzeW5jIGJ1aWxkUmVzb2x2ZU1hcmtldFR4KFxuICAgIGFkbWluOiBQdWJsaWNLZXksXG4gICAgbWFya2V0SWQ6IG51bWJlciB8IEJOLFxuICAgIHdpbm5pbmdPdXRjb21lOiBcIlllc1wiIHwgXCJOb1wiIHwgbnVsbFxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLnJlc29sdmVNYXJrZXQoYWRtaW4sIG1hcmtldElkLCB3aW5uaW5nT3V0Y29tZSk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgYSBtYXJrZXQgKEFkbWluIG9ubHkpXG4gICAqL1xuICBhc3luYyBjbG9zZU1hcmtldChcbiAgICBhZG1pbjogUHVibGljS2V5LFxuICAgIG1hcmtldElkOiBudW1iZXIgfCBCTlxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCBtYXJrZXRJZEJuID0gbmV3IEFuY2hvckJOKG1hcmtldElkKTtcbiAgICBjb25zdCBtYXJrZXRQZGEgPSBnZXRNYXJrZXRQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCwgYWRtaW4sIG1hcmtldElkQm4pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5tZXRob2RzXG4gICAgICAuY2xvc2VNYXJrZXQoKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIG1hcmtldDogbWFya2V0UGRhLFxuICAgICAgfSlcbiAgICAgIC5pbnN0cnVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgdHJhbnNhY3Rpb24gdG8gY2xvc2UgYSBtYXJrZXRcbiAgICovXG4gIGFzeW5jIGJ1aWxkQ2xvc2VNYXJrZXRUeChcbiAgICBhZG1pbjogUHVibGljS2V5LFxuICAgIG1hcmtldElkOiBudW1iZXIgfCBCTlxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLmNsb3NlTWFya2V0KGFkbWluLCBtYXJrZXRJZCk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBGZXRjaCBnbG9iYWwgY29uZmlnIGFjY291bnQgZGF0YVxuICAgKi9cbiAgYXN5bmMgZ2V0R2xvYmFsQ29uZmlnQWNjb3VudCgpIHtcbiAgICBjb25zdCBnbG9iYWxDb25maWcgPSBnZXRHbG9iYWxDb25maWdQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5hY2NvdW50Lmdsb2JhbENvbmZpZy5mZXRjaChnbG9iYWxDb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIG1hcmtldCBhY2NvdW50IGRhdGFcbiAgICovXG4gIGFzeW5jIGdldE1hcmtldEFjY291bnQoYWRtaW46IFB1YmxpY0tleSwgbWFya2V0SWQ6IG51bWJlciB8IEJOKSB7XG4gICAgY29uc3QgbWFya2V0SWRCbiA9IG5ldyBBbmNob3JCTihtYXJrZXRJZCk7XG4gICAgY29uc3QgbWFya2V0UGRhID0gZ2V0TWFya2V0UGRhKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQsIGFkbWluLCBtYXJrZXRJZEJuKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLmFjY291bnQubWFya2V0LmZldGNoKG1hcmtldFBkYSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdmF1bHQgYWNjb3VudCBkYXRhXG4gICAqL1xuICBhc3luYyBnZXRWYXVsdEFjY291bnQobWFya2V0UGRhOiBQdWJsaWNLZXkpIHtcbiAgICBjb25zdCB2YXVsdFBkYSA9IGdldFZhdWx0UGRhKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQsIG1hcmtldFBkYSk7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY291bnQodGhpcy5jb25uZWN0aW9uLCB2YXVsdFBkYSk7XG4gIH1cbn1cbiJdfQ==
|
|
316
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUNBQXVDLEVBQ3ZDLFVBQVUsRUFDViw2QkFBNkIsRUFDN0IsZ0JBQWdCLEdBQ2pCLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUVMLE9BQU8sRUFDUCxTQUFTLEVBQ1QsV0FBVyxFQUVaLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQixPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFlBQVksRUFDWixhQUFhLEVBQ2IsV0FBVyxHQUNaLE1BQU0sWUFBWSxDQUFDO0FBRXBCLHdEQUF3RDtBQUN4RCxNQUFNLFFBQVEsR0FBSSxNQUFjLENBQUMsRUFBRSxJQUFLLE1BQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0FBQ25FLE1BQU0sYUFBYSxHQUFJLE1BQWMsQ0FBQyxPQUFPLElBQUssTUFBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7QUFFbEYsY0FBYyxZQUFZLENBQUM7QUFDM0IsT0FBTyxFQUFXLEdBQUcsRUFBRSxDQUFDO0FBcUN4QixNQUFNLE9BQU8sYUFBYTtJQUt4QixZQUFZLFVBQXNCLEVBQUUsTUFBc0IsRUFBRSxTQUFxQjtRQUMvRSxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FDdkMsVUFBVSxFQUNWLE1BQU0sSUFBSSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQy9DLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxDQUM1QixDQUFDO1FBRUYsdUVBQXVFO1FBQ3ZFLE1BQU0sY0FBYyxHQUFHLFNB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LEdBQUcsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDMUMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMxRSxPQUFPLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQW9CO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRSxPQUFPLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBCTiwgSWRsLCBQcm9ncmFtIH0gZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQgKiBhcyBhbmNob3IgZnJvbSBcIkBjb3JhbC14eXovYW5jaG9yXCI7XG5pbXBvcnQge1xuICBjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb24sXG4gIGdldEFjY291bnQsXG4gIGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jLFxuICBUT0tFTl9QUk9HUkFNX0lELFxufSBmcm9tIFwiQHNvbGFuYS9zcGwtdG9rZW5cIjtcbmltcG9ydCB7XG4gIENvbm5lY3Rpb24sXG4gIEtleXBhaXIsXG4gIFB1YmxpY0tleSxcbiAgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25cbn0gZnJvbSBcIkBzb2xhbmEvd2ViMy5qc1wiO1xuaW1wb3J0IHsgSURMIH0gZnJvbSBcIi4vaWRsLmpzXCI7XG5pbXBvcnQgeyBEcmFtYVBtIH0gZnJvbSBcIi4vdHlwZXMuanNcIjtcbmltcG9ydCB7XG4gIGdldEdsb2JhbENvbmZpZ1BkYSxcbiAgZ2V0TWFya2V0UGRhLFxuICBnZXRNYXJrZXRQZGFzLFxuICBnZXRWYXVsdFBkYSxcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcblxuLy8gSGFuZGxlIGJvdGggQ29tbW9uSlMgYW5kIEVTTSBpbXBvcnQgc3R5bGVzIGZvciBBbmNob3JcbmNvbnN0IEFuY2hvckJOID0gKGFuY2hvciBhcyBhbnkpLkJOIHx8IChhbmNob3IgYXMgYW55KS5kZWZhdWx0Py5CTjtcbmNvbnN0IEFuY2hvclByb2dyYW0gPSAoYW5jaG9yIGFzIGFueSkuUHJvZ3JhbSB8fCAoYW5jaG9yIGFzIGFueSkuZGVmYXVsdD8uUHJvZ3JhbTtcblxuZXhwb3J0ICogZnJvbSBcIi4vdXRpbHMuanNcIjtcbmV4cG9ydCB7IERyYW1hUG0sIElETCB9O1xuXG5leHBvcnQgdHlwZSBPdXRjb21lID0gXCJZZXNcIiB8IFwiTm9cIjtcblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVNYXJrZXRQYXJhbXMge1xuICBhZG1pbjogUHVibGljS2V5O1xuICBtYXJrZXRJZDogbnVtYmVyIHwgQk47XG4gIHllc1ByaWNlOiBudW1iZXIgfCBCTjtcbiAgbm9QcmljZTogbnVtYmVyIHwgQk47XG4gIGVuZFRpbWU6IG51bWJlciB8IEJOO1xuICBiZXR0aW5nVG9rZW46IFB1YmxpY0tleTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQbGFjZUJldFBhcmFtcyB7XG4gIHVzZXI6IFB1YmxpY0tleTtcbiAgbWFya2V0OiBQdWJsaWNLZXk7IC8vIE1hcmtldCBQREEgYWRkcmVzc1xuICBhbW91bnQ6IG51bWJlciB8IEJOO1xuICBvdXRjb21lOiBPdXRjb21lO1xuICBiZXR0aW5nVG9rZW46IFB1YmxpY0tleTtcbiAgY3JlYXRlQXRhPzogYm9vbGVhbjsgLy8gV2hldGhlciB0byBjcmVhdGUgQVRBIGluc3RydWN0aW9uIGF1dG9tYXRpY2FsbHlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDbGFpbVJld2FyZHNQYXJhbXMge1xuICB1c2VyOiBQdWJsaWNLZXk7XG4gIG1hcmtldDogUHVibGljS2V5OyAvLyBNYXJrZXQgUERBIGFkZHJlc3NcbiAgYmV0dGluZ1Rva2VuOiBQdWJsaWNLZXk7XG4gIHdpbm5pbmdPdXRjb21lOiBPdXRjb21lO1xuICB0b2tlbkFtb3VudDogbnVtYmVyIHwgQk47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmdW5kUGFyYW1zIHtcbiAgdXNlcjogUHVibGljS2V5O1xuICBtYXJrZXQ6IFB1YmxpY0tleTsgLy8gTWFya2V0IFBEQSBhZGRyZXNzXG4gIGJldHRpbmdUb2tlbjogUHVibGljS2V5O1xuICBvdXRjb21lOiBPdXRjb21lO1xufVxuXG5leHBvcnQgY2xhc3MgRHJhbWFQbUNsaWVudCB7XG4gIHByb2dyYW06IFByb2dyYW08RHJhbWFQbT47XG4gIHByb3ZpZGVyOiBhbmNob3IuQW5jaG9yUHJvdmlkZXI7XG4gIGNvbm5lY3Rpb246IENvbm5lY3Rpb247XG5cbiAgY29uc3RydWN0b3IoY29ubmVjdGlvbjogQ29ubmVjdGlvbiwgd2FsbGV0PzogYW5jaG9yLldhbGxldCwgcHJvZ3JhbUlkPzogUHVibGljS2V5KSB7XG4gICAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbiAgICB0aGlzLnByb3ZpZGVyID0gbmV3IGFuY2hvci5BbmNob3JQcm92aWRlcihcbiAgICAgIGNvbm5lY3Rpb24sXG4gICAgICB3YWxsZXQgfHwgbmV3IGFuY2hvci5XYWxsZXQoS2V5cGFpci5nZW5lcmF0ZSgpKSxcbiAgICAgIHsgY29tbWl0bWVudDogXCJjb25maXJtZWRcIiB9XG4gICAgKTtcbiAgICBcbiAgICAvLyBVc2UgY3VzdG9tIHByb2dyYW1JZCBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHVzZSB0aGUgZGVmYXVsdCBmcm9tIElETFxuICAgIGNvbnN0IGZpbmFsUHJvZ3JhbUlkID0gcHJvZ3JhbUlkIHx8IG5ldyBQdWJsaWNLZXkoSURMLmFkZHJlc3MpO1xuICAgIFxuICAgIC8vIENyZWF0ZSBhIG5ldyBJREwgd2l0aCB0aGUgY3VzdG9tIHByb2dyYW1JZFxuICAgIGNvbnN0IGN1c3RvbUlkbCA9IHsgLi4uSURMLCBhZGRyZXNzOiBmaW5hbFByb2dyYW1JZC50b0Jhc2U1OCgpIH07XG4gICAgXG4gICAgdGhpcy5wcm9ncmFtID0gbmV3IEFuY2hvclByb2dyYW0oY3VzdG9tSWRsIGFzIElkbCwgdGhpcy5wcm92aWRlcikgYXMgdW5rbm93biBhcyBQcm9ncmFtPERyYW1hUG0+O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgY3VycmVudCBwcm9ncmFtIElEXG4gICAqL1xuICBnZXRQcm9ncmFtSWQoKTogUHVibGljS2V5IHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtLnByb2dyYW1JZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgYSBuZXcgcHJvZ3JhbSBJRCBhbmQgcmVpbml0aWFsaXplIHRoZSBwcm9ncmFtIGluc3RhbmNlXG4gICAqIFVzZWZ1bCB3aGVuIHJlZGVwbG95aW5nIHRoZSBwcm9ncmFtIHRvIGEgbmV3IGFkZHJlc3NcbiAgICovXG4gIHNldFByb2dyYW1JZChwcm9ncmFtSWQ6IFB1YmxpY0tleSk6IHZvaWQge1xuICAgIGNvbnN0IGN1c3RvbUlkbCA9IHsgLi4uSURMLCBhZGRyZXNzOiBwcm9ncmFtSWQudG9CYXNlNTgoKSB9O1xuICAgIHRoaXMucHJvZ3JhbSA9IG5ldyBBbmNob3JQcm9ncmFtKGN1c3RvbUlkbCBhcyBJZGwsIHRoaXMucHJvdmlkZXIpIGFzIHVua25vd24gYXMgUHJvZ3JhbTxEcmFtYVBtPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBhc3NvY2lhdGVkIHRva2VuIGFjY291bnQgZXhpc3RzXG4gICAqL1xuICBhc3luYyBhdGFFeGlzdHMoYXRhOiBQdWJsaWNLZXkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZ2V0QWNjb3VudCh0aGlzLmNvbm5lY3Rpb24sIGF0YSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGluc3RydWN0aW9uIHRvIGluaXRpYWxpemUgYW4gYXNzb2NpYXRlZCB0b2tlbiBhY2NvdW50XG4gICAqL1xuICBjcmVhdGVBdGFJbnN0cnVjdGlvbihcbiAgICBwYXllcjogUHVibGljS2V5LFxuICAgIG93bmVyOiBQdWJsaWNLZXksXG4gICAgbWludDogUHVibGljS2V5XG4gICk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24ge1xuICAgIGNvbnN0IGF0YSA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKG1pbnQsIG93bmVyKTtcbiAgICByZXR1cm4gY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uKFxuICAgICAgcGF5ZXIsXG4gICAgICBhdGEsXG4gICAgICBvd25lcixcbiAgICAgIG1pbnQsXG4gICAgICBUT0tFTl9QUk9HUkFNX0lEXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGdsb2JhbCBjb25maWd1cmF0aW9uIChBdXRob3JpdHkgb25seSlcbiAgICovXG4gIGFzeW5jIGluaXRpYWxpemVDb25maWcoYXV0aG9yaXR5OiBQdWJsaWNLZXkpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCBnbG9iYWxDb25maWcgPSBnZXRHbG9iYWxDb25maWdQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5tZXRob2RzXG4gICAgICAuaW5pdGlhbGl6ZUNvbmZpZygpXG4gICAgICAuYWNjb3VudHNQYXJ0aWFsKHtcbiAgICAgICAgZ2xvYmFsQ29uZmlnLFxuICAgICAgICBhdXRob3JpdHk6IGF1dGhvcml0eSxcbiAgICAgICAgc3lzdGVtUHJvZ3JhbTogYW5jaG9yLndlYjMuU3lzdGVtUHJvZ3JhbS5wcm9ncmFtSWQsXG4gICAgICB9KVxuICAgICAgLmluc3RydWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBjb21wbGV0ZSB0cmFuc2FjdGlvbiB0byBpbml0aWFsaXplIGNvbmZpZ1xuICAgKi9cbiAgYXN5bmMgYnVpbGRJbml0aWFsaXplQ29uZmlnVHgoYXV0aG9yaXR5OiBQdWJsaWNLZXkpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLmluaXRpYWxpemVDb25maWcoYXV0aG9yaXR5KTtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uKCkuYWRkKGl4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYXV0aG9yaXplZCBhZG1pbiAoQXV0aG9yaXR5IG9ubHkpXG4gICAqL1xuICBhc3luYyBhZGRBZG1pbihuZXdBZG1pbjogUHVibGljS2V5KTogUHJvbWlzZTxUcmFuc2FjdGlvbkluc3RydWN0aW9uPiB7XG4gICAgY29uc3QgZ2xvYmFsQ29uZmlnID0gZ2V0R2xvYmFsQ29uZmlnUGRhKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5tZXRob2RzXG4gICAgICAuYWRkQWRtaW4obmV3QWRtaW4pXG4gICAgICAuYWNjb3VudHNQYXJ0aWFsKHtcbiAgICAgICAgZ2xvYmFsQ29uZmlnLFxuICAgICAgfSlcbiAgICAgIC5pbnN0cnVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgdHJhbnNhY3Rpb24gdG8gdXBkYXRlIGFkbWluXG4gICAqL1xuICBhc3luYyBidWlsZEFkZEFkbWluVHgobmV3QWRtaW46IFB1YmxpY0tleSk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBpeCA9IGF3YWl0IHRoaXMuYWRkQWRtaW4obmV3QWRtaW4pO1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oKS5hZGQoaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBwcmVkaWN0aW9uIG1hcmtldCBpbnN0cnVjdGlvblxuICAgKi9cbiAgYXN5bmMgY3JlYXRlTWFya2V0KHBhcmFtczogQ3JlYXRlTWFya2V0UGFyYW1zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluc3RydWN0aW9uPiB7XG4gICAgY29uc3QgeyBhZG1pbiwgbWFya2V0SWQsIHllc1ByaWNlLCBub1ByaWNlLCBlbmRUaW1lLCBiZXR0aW5nVG9rZW4gfSA9IHBhcmFtcztcbiAgICBcbiAgICBjb25zdCBtYXJrZXRJZEJuID0gbmV3IEFuY2hvckJOKG1hcmtldElkKTtcbiAgICBjb25zdCB5ZXNQcmljZUJuID0gbmV3IEFuY2hvckJOKHllc1ByaWNlKTtcbiAgICBjb25zdCBub1ByaWNlQm4gPSBuZXcgQW5jaG9yQk4obm9QcmljZSk7XG4gICAgY29uc3QgZW5kVGltZUJuID0gbmV3IEFuY2hvckJOKGVuZFRpbWUpO1xuXG4gICAgY29uc3QgcGRhcyA9IGdldE1hcmtldFBkYXModGhpcy5wcm9ncmFtLnByb2dyYW1JZCwgYWRtaW4sIG1hcmtldElkQm4pO1xuICAgIGNvbnN0IGdsb2JhbENvbmZpZyA9IGdldEdsb2JhbENvbmZpZ1BkYSh0aGlzLnByb2dyYW0ucHJvZ3JhbUlkKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLmNyZWF0ZU1hcmtldCh7XG4gICAgICAgICAgbWFya2V0SWQ6IG1hcmtldElkQm4sXG4gICAgICAgICAgeWVzUHJpY2U6IHllc1ByaWNlQm4sXG4gICAgICAgICAgbm9QcmljZTogbm9QcmljZUJuLFxuICAgICAgICAgIGVuZFRpbWU6IGVuZFRpbWVCbixcbiAgICAgICAgfSlcbiAgICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgICAgZ2xvYmFsQ29uZmlnLFxuICAgICAgICAgIG1hcmtldDogcGRhcy5tYXJrZXQsXG4gICAgICAgICAgeWVzTWludDogcGRhcy55ZXNNaW50LFxuICAgICAgICAgIG5vTWludDogcGRhcy5ub01pbnQsXG4gICAgICAgICAgYmV0dGluZ1Rva2VuOiBiZXR0aW5nVG9rZW4sXG4gICAgICAgICAgdmF1bHQ6IHBkYXMudmF1bHQsXG4gICAgICAgICAgYWRtaW46IGFkbWluLFxuICAgICAgICAgIHN5c3RlbVByb2dyYW06IGFuY2hvci53ZWIzLlN5c3RlbVByb2dyYW0ucHJvZ3JhbUlkLFxuICAgICAgICB9KVxuICAgICAgICAuaW5zdHJ1Y3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGNvbXBsZXRlIHRyYW5zYWN0aW9uIHRvIGNyZWF0ZSBhIG1hcmtldFxuICAgKi9cbiAgYXN5bmMgYnVpbGRDcmVhdGVNYXJrZXRUeChwYXJhbXM6IENyZWF0ZU1hcmtldFBhcmFtcyk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBpeCA9IGF3YWl0IHRoaXMuY3JlYXRlTWFya2V0KHBhcmFtcyk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cblxuICAvKipcbiAgICogUGxhY2UgYSBiZXQgaW5zdHJ1Y3Rpb24gKHdpdGhvdXQgQVRBIGNyZWF0aW9uKVxuICAgKi9cbiAgYXN5bmMgcGxhY2VCZXQocGFyYW1zOiBQbGFjZUJldFBhcmFtcyk6IFByb21pc2U8VHJhbnNhY3Rpb25JbnN0cnVjdGlvbj4ge1xuICAgIGNvbnN0IHsgdXNlciwgbWFya2V0LCBhbW91bnQsIG91dGNvbWUsIGJldHRpbmdUb2tlbiB9ID0gcGFyYW1zO1xuICAgIFxuICAgIGNvbnN0IGFtb3VudEJuID0gbmV3IEFuY2hvckJOKGFtb3VudCk7XG4gICAgY29uc3Qgb3V0Y29tZUVudW0gPSBvdXRjb21lID09PSBcIlllc1wiID8geyB5ZXM6IHt9IH0gOiB7IG5vOiB7fSB9O1xuXG4gICAgLy8gRGVyaXZlIFBEQXMgZnJvbSBtYXJrZXQgYWRkcmVzc1xuICAgIGNvbnN0IHllc01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcInllc19taW50XCIpLCBtYXJrZXQudG9CdWZmZXIoKV0sXG4gICAgICB0aGlzLnByb2dyYW0ucHJvZ3JhbUlkXG4gICAgKVswXTtcbiAgICBjb25zdCBub01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcIm5vX21pbnRcIiksIG1hcmtldC50b0J1ZmZlcigpXSxcbiAgICAgIHRoaXMucHJvZ3JhbS5wcm9ncmFtSWRcbiAgICApWzBdO1xuICAgIGNvbnN0IHZhdWx0ID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oXCJ2YXVsdFwiKSwgbWFya2V0LnRvQnVmZmVyKCldLFxuICAgICAgdGhpcy5wcm9ncmFtLnByb2dyYW1JZFxuICAgIClbMF07XG5cbiAgICBjb25zdCB1c2VyQmV0dGluZ1Rva2VuID0gZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmMoYmV0dGluZ1Rva2VuLCB1c2VyKTtcbiAgICBcbiAgICAvLyBEZXRlcm1pbmUgd2hpY2ggb3V0Y29tZSB0b2tlbiB0aGUgdXNlciB3aWxsIHJlY2VpdmVcbiAgICBjb25zdCB0YXJnZXRNaW50ID0gb3V0Y29tZSA9PT0gXCJZZXNcIiA/IHllc01pbnQgOiBub01pbnQ7XG4gICAgY29uc3QgdXNlck91dGNvbWVUb2tlbiA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKHRhcmdldE1pbnQsIHVzZXIpO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5tZXRob2RzXG4gICAgICAucGxhY2VCZXQoe1xuICAgICAgICBidXlPdXRjb21lOiBvdXRjb21lRW51bSxcbiAgICAgICAgYW1vdW50OiBhbW91bnRCbixcbiAgICAgIH0pXG4gICAgICAuYWNjb3VudHNQYXJ0aWFsKHtcbiAgICAgICAgbWFya2V0LFxuICAgICAgICB5ZXNNaW50LFxuICAgICAgICBub01pbnQsXG4gICAgICAgIHZhdWx0LFxuICAgICAgICB1c2VyT3V0Y29tZVRva2VuLFxuICAgICAgICB1c2VyQmV0dGluZ1Rva2VuLFxuICAgICAgICB1c2VyLFxuICAgICAgfSlcbiAgICAgIC5pbnN0cnVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgdHJhbnNhY3Rpb24gdG8gcGxhY2UgYSBiZXQgKHdpdGggb3B0aW9uYWwgQVRBIGNyZWF0aW9uKVxuICAgKi9cbiAgYXN5bmMgYnVpbGRQbGFjZUJldFR4KHBhcmFtczogUGxhY2VCZXRQYXJhbXMpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgeyB1c2VyLCBtYXJrZXQsIG91dGNvbWUsIGNyZWF0ZUF0YSA9IHRydWUgfSA9IHBhcmFtcztcbiAgICBcbiAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbigpO1xuICAgIFxuICAgIC8vIERlcml2ZSBtaW50IFBEQXMgZnJvbSBtYXJrZXQgYWRkcmVzc1xuICAgIGNvbnN0IHllc01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcInllc19taW50XCIpLCBtYXJrZXQudG9CdWZmZXIoKV0sXG4gICAgICB0aGlzLnByb2dyYW0ucHJvZ3JhbUlkXG4gICAgKVswXTtcbiAgICBjb25zdCBub01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcIm5vX21pbnRcIiksIG1hcmtldC50b0J1ZmZlcigpXSxcbiAgICAgIHRoaXMucHJvZ3JhbS5wcm9ncmFtSWRcbiAgICApWzBdO1xuICAgIFxuICAgIGNvbnN0IHRhcmdldE1pbnQgPSBvdXRjb21lID09PSBcIlllc1wiID8geWVzTWludCA6IG5vTWludDtcbiAgICBjb25zdCB1c2VyT3V0Y29tZVRva2VuID0gZ2V0QXNzb2NpYXRlZFRva2VuQWRkcmVzc1N5bmModGFyZ2V0TWludCwgdXNlcik7XG5cbiAgICAvLyBDaGVjayBpZiBBVEEgZXhpc3RzIGFuZCBjcmVhdGUgaWYgbmVlZGVkXG4gICAgaWYgKGNyZWF0ZUF0YSkge1xuICAgICAgY29uc3QgZXhpc3RzID0gYXdhaXQgdGhpcy5hdGFFeGlzdHModXNlck91dGNvbWVUb2tlbik7XG4gICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICBjb25zdCBjcmVhdGVBdGFJeCA9IHRoaXMuY3JlYXRlQXRhSW5zdHJ1Y3Rpb24odXNlciwgdXNlciwgdGFyZ2V0TWludCk7XG4gICAgICAgIHR4LmFkZChjcmVhdGVBdGFJeCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcGxhY2VCZXRJeCA9IGF3YWl0IHRoaXMucGxhY2VCZXQocGFyYW1zKTtcbiAgICB0eC5hZGQocGxhY2VCZXRJeCk7XG5cbiAgICByZXR1cm4gdHg7XG4gIH1cblxuICAvKipcbiAgICogQ2xhaW0gcmV3YXJkcyBhZnRlciBtYXJrZXQgcmVzb2x1dGlvblxuICAgKi9cbiAgYXN5bmMgY2xhaW1SZXdhcmRzKHBhcmFtczogQ2xhaW1SZXdhcmRzUGFyYW1zKTogUHJvbWlzZTxUcmFuc2FjdGlvbkluc3RydWN0aW9uPiB7XG4gICAgY29uc3QgeyB1c2VyLCBtYXJrZXQsIGJldHRpbmdUb2tlbiwgd2lubmluZ091dGNvbWUgfSA9IHBhcmFtcztcbiAgICBcbiAgICAvLyBEZXJpdmUgbWludCBQREFzIGZyb20gbWFya2V0IGFkZHJlc3NcbiAgICBjb25zdCB5ZXNNaW50ID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oXCJ5ZXNfbWludFwiKSwgbWFya2V0LnRvQnVmZmVyKCldLFxuICAgICAgdGhpcy5wcm9ncmFtLnByb2dyYW1JZFxuICAgIClbMF07XG4gICAgY29uc3Qgbm9NaW50ID0gUHVibGljS2V5LmZpbmRQcm9ncmFtQWRkcmVzc1N5bmMoXG4gICAgICBbQnVmZmVyLmZyb20oXCJub19taW50XCIpLCBtYXJrZXQudG9CdWZmZXIoKV0sXG4gICAgICB0aGlzLnByb2dyYW0ucHJvZ3JhbUlkXG4gICAgKVswXTtcblxuICAgIGNvbnN0IHVzZXJCZXR0aW5nVG9rZW4gPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyhiZXR0aW5nVG9rZW4sIHVzZXIpO1xuICAgIGNvbnN0IHRhcmdldE1pbnQgPSB3aW5uaW5nT3V0Y29tZSA9PT0gXCJZZXNcIiA/IHllc01pbnQgOiBub01pbnQ7XG4gICAgY29uc3QgdXNlck91dGNvbWVUb2tlbiA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKHRhcmdldE1pbnQsIHVzZXIpO1xuICAgIGNvbnN0IGFtb3VudEJuID0gbmV3IEFuY2hvckJOKHBhcmFtcy50b2tlbkFtb3VudCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5tZXRob2RzXG4gICAgICAuY2xhaW1SZXdhcmRzKHtcbiAgICAgICAgdG9rZW5BbW91bnQ6IGFtb3VudEJuLCAvLyBDbGFpbSBhbGwgYXZhaWxhYmxlIHJld2FyZHNcbiAgICAgIH0pXG4gICAgICAuYWNjb3VudHNQYXJ0aWFsKHtcbiAgICAgICAgbWFya2V0LFxuICAgICAgICB1c2VyT3V0Y29tZVRva2VuLFxuICAgICAgICB1c2VyQmV0dGluZ1Rva2VuLFxuICAgICAgICB1c2VyLFxuICAgICAgfSlcbiAgICAgIC5pbnN0cnVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgdHJhbnNhY3Rpb24gdG8gY2xhaW0gcmV3YXJkc1xuICAgKi9cbiAgYXN5bmMgYnVpbGRDbGFpbVJld2FyZHNUeChwYXJhbXM6IENsYWltUmV3YXJkc1BhcmFtcyk6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCBpeCA9IGF3YWl0IHRoaXMuY2xhaW1SZXdhcmRzKHBhcmFtcyk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmdW5kIGJldHMgaWYgbWFya2V0IGlzIHJlZnVuZGVkXG4gICAqL1xuICBhc3luYyByZWZ1bmQocGFyYW1zOiBSZWZ1bmRQYXJhbXMpOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCB7IHVzZXIsIG1hcmtldCwgYmV0dGluZ1Rva2VuLCBvdXRjb21lIH0gPSBwYXJhbXM7XG4gICAgXG4gICAgY29uc3Qgb3V0Y29tZUVudW0gPSBvdXRjb21lID09PSBcIlllc1wiID8geyB5ZXM6IHt9IH0gOiB7IG5vOiB7fSB9O1xuICAgIFxuICAgIC8vIERlcml2ZSBtaW50IFBEQXMgZnJvbSBtYXJrZXQgYWRkcmVzc1xuICAgIGNvbnN0IHllc01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcInllc19taW50XCIpLCBtYXJrZXQudG9CdWZmZXIoKV0sXG4gICAgICB0aGlzLnByb2dyYW0ucHJvZ3JhbUlkXG4gICAgKVswXTtcbiAgICBjb25zdCBub01pbnQgPSBQdWJsaWNLZXkuZmluZFByb2dyYW1BZGRyZXNzU3luYyhcbiAgICAgIFtCdWZmZXIuZnJvbShcIm5vX21pbnRcIiksIG1hcmtldC50b0J1ZmZlcigpXSxcbiAgICAgIHRoaXMucHJvZ3JhbS5wcm9ncmFtSWRcbiAgICApWzBdO1xuXG4gICAgY29uc3QgdXNlckJldHRpbmdUb2tlbiA9IGdldEFzc29jaWF0ZWRUb2tlbkFkZHJlc3NTeW5jKGJldHRpbmdUb2tlbiwgdXNlcik7XG4gICAgY29uc3QgdGFyZ2V0TWludCA9IG91dGNvbWUgPT09IFwiWWVzXCIgPyB5ZXNNaW50IDogbm9NaW50O1xuICAgIGNvbnN0IHVzZXJPdXRjb21lVG9rZW4gPSBnZXRBc3NvY2lhdGVkVG9rZW5BZGRyZXNzU3luYyh0YXJnZXRNaW50LCB1c2VyKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLnByb2dyYW0ubWV0aG9kc1xuICAgICAgLnJlZnVuZChvdXRjb21lRW51bSlcbiAgICAgIC5hY2NvdW50c1BhcnRpYWwoe1xuICAgICAgICBtYXJrZXQsXG4gICAgICAgIHVzZXJPdXRjb21lVG9rZW4sXG4gICAgICAgIHVzZXJCZXR0aW5nVG9rZW4sXG4gICAgICAgIHVzZXIsXG4gICAgICB9KVxuICAgICAgLmluc3RydWN0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYSBjb21wbGV0ZSB0cmFuc2FjdGlvbiB0byByZWZ1bmRcbiAgICovXG4gIGFzeW5jIGJ1aWxkUmVmdW5kVHgocGFyYW1zOiBSZWZ1bmRQYXJhbXMpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLnJlZnVuZChwYXJhbXMpO1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb24oKS5hZGQoaXgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgYSBtYXJrZXQgKEFkbWluIG9ubHkpXG4gICAqL1xuICBhc3luYyByZXNvbHZlTWFya2V0KFxuICAgIGFkbWluOiBQdWJsaWNLZXksXG4gICAgbWFya2V0SWQ6IG51bWJlciB8IEJOLFxuICAgIHdpbm5pbmdPdXRjb21lOiBcIlllc1wiIHwgXCJOb1wiIHwgbnVsbFxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCBtYXJrZXRJZEJuID0gbmV3IEFuY2hvckJOKG1hcmtldElkKTtcbiAgICBjb25zdCBtYXJrZXRQZGEgPSBnZXRNYXJrZXRQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCwgYWRtaW4sIG1hcmtldElkQm4pO1xuXG4gICAgbGV0IG91dGNvbWVFbnVtOiBhbnkgPSBudWxsO1xuICAgIGlmICh3aW5uaW5nT3V0Y29tZSA9PT0gXCJZZXNcIikge1xuICAgICAgb3V0Y29tZUVudW0gPSB7IHllczoge30gfTtcbiAgICB9IGVsc2UgaWYgKHdpbm5pbmdPdXRjb21lID09PSBcIk5vXCIpIHtcbiAgICAgIG91dGNvbWVFbnVtID0geyBubzoge30gfTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLm1ldGhvZHNcbiAgICAgIC5yZXNvbHZlTWFya2V0KG91dGNvbWVFbnVtKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIG1hcmtldDogbWFya2V0UGRhLFxuICAgICAgICBhZG1pbixcbiAgICAgIH0pXG4gICAgICAuaW5zdHJ1Y3Rpb24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhIGNvbXBsZXRlIHRyYW5zYWN0aW9uIHRvIHJlc29sdmUgYSBtYXJrZXRcbiAgICovXG4gIGFzeW5jIGJ1aWxkUmVzb2x2ZU1hcmtldFR4KFxuICAgIGFkbWluOiBQdWJsaWNLZXksXG4gICAgbWFya2V0SWQ6IG51bWJlciB8IEJOLFxuICAgIHdpbm5pbmdPdXRjb21lOiBcIlllc1wiIHwgXCJOb1wiIHwgbnVsbFxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLnJlc29sdmVNYXJrZXQoYWRtaW4sIG1hcmtldElkLCB3aW5uaW5nT3V0Y29tZSk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2UgYSBtYXJrZXQgKEFkbWluIG9ubHkpXG4gICAqL1xuICBhc3luYyBjbG9zZU1hcmtldChcbiAgICBhZG1pbjogUHVibGljS2V5LFxuICAgIG1hcmtldElkOiBudW1iZXIgfCBCTlxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24+IHtcbiAgICBjb25zdCBtYXJrZXRJZEJuID0gbmV3IEFuY2hvckJOKG1hcmtldElkKTtcbiAgICBjb25zdCBtYXJrZXRQZGEgPSBnZXRNYXJrZXRQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCwgYWRtaW4sIG1hcmtldElkQm4pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5tZXRob2RzXG4gICAgICAuY2xvc2VNYXJrZXQoKVxuICAgICAgLmFjY291bnRzUGFydGlhbCh7XG4gICAgICAgIG1hcmtldDogbWFya2V0UGRhLFxuICAgICAgfSlcbiAgICAgIC5pbnN0cnVjdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEgY29tcGxldGUgdHJhbnNhY3Rpb24gdG8gY2xvc2UgYSBtYXJrZXRcbiAgICovXG4gIGFzeW5jIGJ1aWxkQ2xvc2VNYXJrZXRUeChcbiAgICBhZG1pbjogUHVibGljS2V5LFxuICAgIG1hcmtldElkOiBudW1iZXIgfCBCTlxuICApOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgaXggPSBhd2FpdCB0aGlzLmNsb3NlTWFya2V0KGFkbWluLCBtYXJrZXRJZCk7XG4gICAgcmV0dXJuIG5ldyBUcmFuc2FjdGlvbigpLmFkZChpeCk7XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBGZXRjaCBnbG9iYWwgY29uZmlnIGFjY291bnQgZGF0YVxuICAgKi9cbiAgYXN5bmMgZ2V0R2xvYmFsQ29uZmlnQWNjb3VudCgpIHtcbiAgICBjb25zdCBnbG9iYWxDb25maWcgPSBnZXRHbG9iYWxDb25maWdQZGEodGhpcy5wcm9ncmFtLnByb2dyYW1JZCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucHJvZ3JhbS5hY2NvdW50Lmdsb2JhbENvbmZpZy5mZXRjaChnbG9iYWxDb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIG1hcmtldCBhY2NvdW50IGRhdGFcbiAgICovXG4gIGFzeW5jIGdldE1hcmtldEFjY291bnQoYWRtaW46IFB1YmxpY0tleSwgbWFya2V0SWQ6IG51bWJlciB8IEJOKSB7XG4gICAgY29uc3QgbWFya2V0SWRCbiA9IG5ldyBBbmNob3JCTihtYXJrZXRJZCk7XG4gICAgY29uc3QgbWFya2V0UGRhID0gZ2V0TWFya2V0UGRhKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQsIGFkbWluLCBtYXJrZXRJZEJuKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm9ncmFtLmFjY291bnQubWFya2V0LmZldGNoKG1hcmtldFBkYSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdmF1bHQgYWNjb3VudCBkYXRhXG4gICAqL1xuICBhc3luYyBnZXRWYXVsdEFjY291bnQobWFya2V0UGRhOiBQdWJsaWNLZXkpIHtcbiAgICBjb25zdCB2YXVsdFBkYSA9IGdldFZhdWx0UGRhKHRoaXMucHJvZ3JhbS5wcm9ncmFtSWQsIG1hcmtldFBkYSk7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY291bnQodGhpcy5jb25uZWN0aW9uLCB2YXVsdFBkYSk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/types.d.ts
CHANGED
|
@@ -13,6 +13,53 @@ export type DramaPm = {
|
|
|
13
13
|
"description": "Created with Anchor";
|
|
14
14
|
};
|
|
15
15
|
"instructions": [
|
|
16
|
+
{
|
|
17
|
+
"name": "addAdmin";
|
|
18
|
+
"discriminator": [
|
|
19
|
+
177,
|
|
20
|
+
236,
|
|
21
|
+
33,
|
|
22
|
+
205,
|
|
23
|
+
124,
|
|
24
|
+
152,
|
|
25
|
+
55,
|
|
26
|
+
186
|
|
27
|
+
];
|
|
28
|
+
"accounts": [
|
|
29
|
+
{
|
|
30
|
+
"name": "globalConfig";
|
|
31
|
+
"writable": true;
|
|
32
|
+
"pda": {
|
|
33
|
+
"seeds": [
|
|
34
|
+
{
|
|
35
|
+
"kind": "const";
|
|
36
|
+
"value": [
|
|
37
|
+
99,
|
|
38
|
+
111,
|
|
39
|
+
110,
|
|
40
|
+
102,
|
|
41
|
+
105,
|
|
42
|
+
103
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
];
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "authority";
|
|
50
|
+
"signer": true;
|
|
51
|
+
"relations": [
|
|
52
|
+
"globalConfig"
|
|
53
|
+
];
|
|
54
|
+
}
|
|
55
|
+
];
|
|
56
|
+
"args": [
|
|
57
|
+
{
|
|
58
|
+
"name": "newAdmin";
|
|
59
|
+
"type": "pubkey";
|
|
60
|
+
}
|
|
61
|
+
];
|
|
62
|
+
},
|
|
16
63
|
{
|
|
17
64
|
"name": "claimRewards";
|
|
18
65
|
"discriminator": [
|
|
@@ -118,7 +165,16 @@ export type DramaPm = {
|
|
|
118
165
|
"address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
|
|
119
166
|
}
|
|
120
167
|
];
|
|
121
|
-
"args": [
|
|
168
|
+
"args": [
|
|
169
|
+
{
|
|
170
|
+
"name": "params";
|
|
171
|
+
"type": {
|
|
172
|
+
"defined": {
|
|
173
|
+
"name": "claimRewardsParams";
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
];
|
|
122
178
|
},
|
|
123
179
|
{
|
|
124
180
|
"name": "closeMarket";
|
|
@@ -519,54 +575,16 @@ export type DramaPm = {
|
|
|
519
575
|
];
|
|
520
576
|
},
|
|
521
577
|
{
|
|
522
|
-
"name": "
|
|
578
|
+
"name": "removeAdmin";
|
|
523
579
|
"discriminator": [
|
|
524
|
-
155,
|
|
525
|
-
23,
|
|
526
|
-
80,
|
|
527
|
-
173,
|
|
528
|
-
46,
|
|
529
580
|
74,
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
},
|
|
538
|
-
{
|
|
539
|
-
"name": "admin";
|
|
540
|
-
"signer": true;
|
|
541
|
-
"relations": [
|
|
542
|
-
"market"
|
|
543
|
-
];
|
|
544
|
-
}
|
|
545
|
-
];
|
|
546
|
-
"args": [
|
|
547
|
-
{
|
|
548
|
-
"name": "winningOutcome";
|
|
549
|
-
"type": {
|
|
550
|
-
"option": {
|
|
551
|
-
"defined": {
|
|
552
|
-
"name": "outcome";
|
|
553
|
-
};
|
|
554
|
-
};
|
|
555
|
-
};
|
|
556
|
-
}
|
|
557
|
-
];
|
|
558
|
-
},
|
|
559
|
-
{
|
|
560
|
-
"name": "updateAdmin";
|
|
561
|
-
"discriminator": [
|
|
562
|
-
161,
|
|
563
|
-
176,
|
|
564
|
-
40,
|
|
565
|
-
213,
|
|
566
|
-
60,
|
|
567
|
-
184,
|
|
568
|
-
179,
|
|
569
|
-
228
|
|
581
|
+
202,
|
|
582
|
+
71,
|
|
583
|
+
106,
|
|
584
|
+
252,
|
|
585
|
+
31,
|
|
586
|
+
72,
|
|
587
|
+
183
|
|
570
588
|
];
|
|
571
589
|
"accounts": [
|
|
572
590
|
{
|
|
@@ -598,10 +616,48 @@ export type DramaPm = {
|
|
|
598
616
|
];
|
|
599
617
|
"args": [
|
|
600
618
|
{
|
|
601
|
-
"name": "
|
|
619
|
+
"name": "adminToRemove";
|
|
602
620
|
"type": "pubkey";
|
|
603
621
|
}
|
|
604
622
|
];
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"name": "resolveMarket";
|
|
626
|
+
"discriminator": [
|
|
627
|
+
155,
|
|
628
|
+
23,
|
|
629
|
+
80,
|
|
630
|
+
173,
|
|
631
|
+
46,
|
|
632
|
+
74,
|
|
633
|
+
23,
|
|
634
|
+
239
|
|
635
|
+
];
|
|
636
|
+
"accounts": [
|
|
637
|
+
{
|
|
638
|
+
"name": "market";
|
|
639
|
+
"writable": true;
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"name": "admin";
|
|
643
|
+
"signer": true;
|
|
644
|
+
"relations": [
|
|
645
|
+
"market"
|
|
646
|
+
];
|
|
647
|
+
}
|
|
648
|
+
];
|
|
649
|
+
"args": [
|
|
650
|
+
{
|
|
651
|
+
"name": "winningOutcome";
|
|
652
|
+
"type": {
|
|
653
|
+
"option": {
|
|
654
|
+
"defined": {
|
|
655
|
+
"name": "outcome";
|
|
656
|
+
};
|
|
657
|
+
};
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
];
|
|
605
661
|
}
|
|
606
662
|
];
|
|
607
663
|
"accounts": [
|
|
@@ -775,53 +831,78 @@ export type DramaPm = {
|
|
|
775
831
|
},
|
|
776
832
|
{
|
|
777
833
|
"code": 6012;
|
|
834
|
+
"name": "insufficientShares";
|
|
835
|
+
"msg": "Insufficient shares to claim";
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
"code": 6013;
|
|
778
839
|
"name": "noWinningShares";
|
|
779
840
|
"msg": "No winning shares available";
|
|
780
841
|
},
|
|
781
842
|
{
|
|
782
|
-
"code":
|
|
843
|
+
"code": 6014;
|
|
783
844
|
"name": "noReward";
|
|
784
845
|
"msg": "No reward available";
|
|
785
846
|
},
|
|
786
847
|
{
|
|
787
|
-
"code":
|
|
848
|
+
"code": 6015;
|
|
788
849
|
"name": "marketNotRefunded";
|
|
789
850
|
"msg": "Market is not in refunded status";
|
|
790
851
|
},
|
|
791
852
|
{
|
|
792
|
-
"code":
|
|
853
|
+
"code": 6016;
|
|
793
854
|
"name": "invalidMint";
|
|
794
855
|
"msg": "Invalid mint account";
|
|
795
856
|
},
|
|
796
857
|
{
|
|
797
|
-
"code":
|
|
858
|
+
"code": 6017;
|
|
798
859
|
"name": "invalidAccount";
|
|
799
860
|
"msg": "Invalid account - required account not provided";
|
|
800
861
|
},
|
|
801
862
|
{
|
|
802
|
-
"code":
|
|
863
|
+
"code": 6018;
|
|
803
864
|
"name": "invalidVault";
|
|
804
865
|
"msg": "Invalid vault account";
|
|
805
866
|
},
|
|
806
867
|
{
|
|
807
|
-
"code":
|
|
868
|
+
"code": 6019;
|
|
808
869
|
"name": "invalidBettingToken";
|
|
809
870
|
"msg": "Invalid betting token";
|
|
810
871
|
},
|
|
811
872
|
{
|
|
812
|
-
"code":
|
|
873
|
+
"code": 6020;
|
|
813
874
|
"name": "invalidTokenOwner";
|
|
814
875
|
"msg": "Invalid token account owner";
|
|
815
876
|
},
|
|
816
877
|
{
|
|
817
|
-
"code":
|
|
878
|
+
"code": 6021;
|
|
818
879
|
"name": "marketAlreadyResolved";
|
|
819
880
|
"msg": "Market already resolved or refunded";
|
|
820
881
|
},
|
|
821
882
|
{
|
|
822
|
-
"code":
|
|
883
|
+
"code": 6022;
|
|
823
884
|
"name": "unauthorized";
|
|
824
885
|
"msg": "Unauthorized access";
|
|
886
|
+
},
|
|
887
|
+
{
|
|
888
|
+
"code": 6023;
|
|
889
|
+
"name": "adminAlreadyExists";
|
|
890
|
+
"msg": "Admin already exists";
|
|
891
|
+
},
|
|
892
|
+
{
|
|
893
|
+
"code": 6024;
|
|
894
|
+
"name": "maxAdminsReached";
|
|
895
|
+
"msg": "Maximum number of admins reached";
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"code": 6025;
|
|
899
|
+
"name": "cannotRemoveAuthority";
|
|
900
|
+
"msg": "Cannot remove the authority";
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"code": 6026;
|
|
904
|
+
"name": "adminNotFound";
|
|
905
|
+
"msg": "Admin not found";
|
|
825
906
|
}
|
|
826
907
|
];
|
|
827
908
|
"types": [
|
|
@@ -861,6 +942,18 @@ export type DramaPm = {
|
|
|
861
942
|
];
|
|
862
943
|
};
|
|
863
944
|
},
|
|
945
|
+
{
|
|
946
|
+
"name": "claimRewardsParams";
|
|
947
|
+
"type": {
|
|
948
|
+
"kind": "struct";
|
|
949
|
+
"fields": [
|
|
950
|
+
{
|
|
951
|
+
"name": "tokenAmount";
|
|
952
|
+
"type": "u64";
|
|
953
|
+
}
|
|
954
|
+
];
|
|
955
|
+
};
|
|
956
|
+
},
|
|
864
957
|
{
|
|
865
958
|
"name": "closeMarketEvent";
|
|
866
959
|
"type": {
|
|
@@ -915,8 +1008,10 @@ export type DramaPm = {
|
|
|
915
1008
|
"type": "pubkey";
|
|
916
1009
|
},
|
|
917
1010
|
{
|
|
918
|
-
"name": "
|
|
919
|
-
"type":
|
|
1011
|
+
"name": "authorizedAdmins";
|
|
1012
|
+
"type": {
|
|
1013
|
+
"vec": "pubkey";
|
|
1014
|
+
};
|
|
920
1015
|
}
|
|
921
1016
|
];
|
|
922
1017
|
};
|