@black-market/sdk 0.8.0-rc.1 → 0.8.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/README.md +11 -6
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.d.ts +12 -0
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.d.ts.map +1 -0
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.js +11 -0
- package/dist/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.js.map +1 -0
- package/dist/lifecycle/presets.d.ts +5 -3
- package/dist/lifecycle/presets.d.ts.map +1 -1
- package/dist/lifecycle/presets.js +77 -1
- package/dist/lifecycle/presets.js.map +1 -1
- package/docs/launch-lifecycle.md +53 -11
- package/examples/README.md +10 -8
- package/examples/launch-example.ts +13 -5
- package/package.json +1 -1
- package/src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts +12 -0
- package/src/lifecycle/presets.ts +80 -1
package/README.md
CHANGED
|
@@ -73,8 +73,9 @@ without re-execution. Retain the private session/capability and, for a pending i
|
|
|
73
73
|
reload the original bytes via `EXAMPLE_IMAGE_PATH`. See the recovery guide above.
|
|
74
74
|
Keep `.env`, keystores and private recovery files out of Git.
|
|
75
75
|
|
|
76
|
-
The published `0.
|
|
77
|
-
|
|
76
|
+
The published `0.8.1` package ships launch topology safety, TypeScript examples,
|
|
77
|
+
dry-run/`--broadcast` modes, retained-plan recovery, the opt-in static session cache,
|
|
78
|
+
and the Robinhood Dynamic Fee Hook preset.
|
|
78
79
|
`prepareAndPlanLifecycleLaunch` combines bound-hook preparation and complete admission;
|
|
79
80
|
`preparePoolBoundLifecyclePlan` and `PlannedLaunch.atomicAttempt` are removed.
|
|
80
81
|
Only the explicitly requested execution mode is simulated. Independent `planLaunch`,
|
|
@@ -82,10 +83,14 @@ recovery and build-next operations acquire fresh authority.
|
|
|
82
83
|
|
|
83
84
|
Known deployments/profiles/hooks ship as frozen construction presets selected by
|
|
84
85
|
typed keys without remote discovery. Explicit live discovery and unlisted profiles
|
|
85
|
-
remain supported.
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
86
|
+
remain supported. Six known profiles include the existing October8 fixed hook,
|
|
87
|
+
four Abyss variants and the October11 zero-author-royalty **Dynamic Fee Hook**
|
|
88
|
+
(`KnownLifecycleProfile.V4DynamicFeePool`, `KnownLifecycleHook.DynamicFeePoolV1`).
|
|
89
|
+
Both bound hooks use config6/V2; dynamic pools require zero LP fee and explicit
|
|
90
|
+
minimum/maximum hook fees and sensitivity. Fixed example/default selection is unchanged.
|
|
91
|
+
Historical config5 evidence is never reused or relabeled as these graphs.
|
|
92
|
+
Creator fee settings are independent per-pool values frozen at launch.
|
|
93
|
+
Optional `buySlippageBps` protects all ordered buys in one SDK
|
|
89
94
|
operation, returning only the final proved commitment. Pure transaction compilation
|
|
90
95
|
reports exact calldata sizes. Position recipes use Black Market's Early Scarcity,
|
|
91
96
|
Staircase and Smooth Ramp weights, widths and gaps with exact allocation maxima.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Exact config6/V2 constructor creation code from the registered zero-author-royalty Dynamic Fee Hook.
|
|
4
|
+
* Evidence: pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json
|
|
5
|
+
* and contracts/evidence/verify-zero-royalty-20261011/children/ runtime.json files.
|
|
6
|
+
* PoolHookDeployerV1._initCode strips the first STOP byte from each storage-child runtime,
|
|
7
|
+
* concatenates chunk0 then chunk1, and appends the exact 20-word V2 arguments per market.
|
|
8
|
+
* Creation-code keccak256: 0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a.
|
|
9
|
+
* Creation-code size: 28918 bytes; constructor arguments add 640 bytes.
|
|
10
|
+
*/
|
|
11
|
+
export declare const dynamicFeePoolHookV1CreationCode: Hex;
|
|
12
|
+
//# sourceMappingURL=dynamic-fee-pool-hook-v1-20261011.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-fee-pool-hook-v1-20261011.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,EAAE,GAAs/wD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exact config6/V2 constructor creation code from the registered zero-author-royalty Dynamic Fee Hook.
|
|
3
|
+
* Evidence: pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json
|
|
4
|
+
* and contracts/evidence/verify-zero-royalty-20261011/children/ runtime.json files.
|
|
5
|
+
* PoolHookDeployerV1._initCode strips the first STOP byte from each storage-child runtime,
|
|
6
|
+
* concatenates chunk0 then chunk1, and appends the exact 20-word V2 arguments per market.
|
|
7
|
+
* Creation-code keccak256: 0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a.
|
|
8
|
+
* Creation-code size: 28918 bytes; constructor arguments add 640 bytes.
|
|
9
|
+
*/
|
|
10
|
+
export const dynamicFeePoolHookV1CreationCode = "0x610260604052348015610010575f5ffd5b506040516170f63803806170f683398101604081905261002f91610c9f565b808061003a81610471565b611afc613fff30161461006057604051632a96f9e160e21b815260040160405180910390fd5b80516001600160a01b039081166080908152602080840151831660a0908152604080860151851660c0526060860151851660e0529285015184166101005284015190921661012052516100b591839101610e24565b60408051808303601f1901815291905280516020909101206101609081526102408201516101809081526101208301516001600160a01b039081166101a05261026084015163ffffffff166101c052908301519183015160189290921b66ffffffff0000001662ffffff909216919091176101e05260a082015160c08301519082169116105f8161014a578260a00151610150565b8260c001515b90505f82610162578360c00151610168565b8360a001515b6001600160a01b038084166102008190529082166102208190526040805160a081018252928352602083019190915260e087015162ffffff169082015261010086015160020b60608201523060808201529091506101c78160a0902090565b6101405280515f80546001600160a01b03199081166001600160a01b03938416178255602080850151600180546040808901516060808b0151958a166001600160b81b031990941693909317600160a01b62ffffff928316021762ffffff60b81b1916600160b81b91909516029390931782556080808901516002805490971690891617909555825161012081018452958652938b015186169285019290925260c08a0151909416938301939093526101a088015191929083019160ff169081111561029557610295610fc9565b60018111156102a6576102a6610fc9565b815261014087015162ffffff166020808301919091526101c088015160ff166040808401919091526101e08901516001600160a01b039081166060808601919091526102008b0151151560808601526102208b015160a0909501949094528451600380549183166001600160a01b031992831617815593860151600480549184169183169190911790559185015160058054919092169281168317825593850151929390916001600160a81b031990911617600160a01b83600181111561036f5761036f610fc9565b0217905550608082015160028201805460a08086015160ff16600160c01b0260ff60c01b1962ffffff909516600160a81b029490941663ffffffff60a81b199092169190911792909217905560c08084015160038401805460e08701511515600160a01b026001600160a81b03199091166001600160a01b03938416171790556101009094015160049093019290925588015190880151908216911610610240525050506102208301515f925082915061042890610b1e565b6016805461ffff909216600160e01b0261ffff60e01b1962ffffff909416600160c81b029390931664ffffffffff60c81b19909216919091179190911790555061103a92505050565b80516001600160a01b03163b1580610495575060208101516001600160a01b03163b155b806104ac575060408101516001600160a01b03163b155b806104c3575060608101516001600160a01b03163b155b806104da575060808101516001600160a01b03163b155b806104f1575060c08101516001600160a01b03163b155b80610507575060a08101516001600160a01b0316155b8061052b57508060c001516001600160a01b03168160a001516001600160a01b0316145b80610542575060a08101516001600160a01b031630145b80610566575080606001516001600160a01b031681602001516001600160a01b0316145b806105895750805f01516001600160a01b031681602001516001600160a01b0316145b806105a0575060208101516001600160a01b031630145b806105b7575060608101516001600160a01b031630145b806105ce575060808101516001600160a01b031630145b806105f15750805f01516001600160a01b031681608001516001600160a01b0316145b80610604575060e081015162ffffff1615155b8061061a5750600160020b81610100015160020b125b806106315750610100810151617fff60029190910b135b8061065757506401000276a36001600160a01b03168161012001516001600160a01b0316105b8061068d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168161012001516001600160a01b031610155b806106a95750620f424062ffffff1681610140015162ffffff16115b806106c7575080610140015162ffffff1681610160015162ffffff16115b806106dd5750600160ff16816101a0015160ff16115b8061071457506101c081015160ff161580159061071457506004816101c0015160ff1610806107145750600a816101c0015160ff16115b8061073d57506101c081015160ff161580159061073d57506101e08101516001600160a01b0316155b8061075557506101e08101516001600160a01b031630145b806107795750805f01516001600160a01b0316816101e001516001600160a01b0316145b8061079e575080608001516001600160a01b0316816101e001516001600160a01b0316145b806107ac5750610240810151155b806107c0575061026081015163ffffffff16155b806107d65750602081610260015163ffffffff16115b156107f45760405163c52a9bd360e01b815260040160405180910390fd5b5f816020015190505f8260800151905082606001516001600160a01b0316826001600160a01b031663f2f4eb266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108729190610fdd565b6001600160a01b03161415806108fc5750825f01516001600160a01b0316826001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f09190610fdd565b6001600160a01b031614155b8061097c575082604001516001600160a01b0316826001600160a01b031663c7f7fb906040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109709190610fdd565b6001600160a01b031614155b806109fc575082608001516001600160a01b0316826001600160a01b031663d7b96d4e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f09190610fdd565b6001600160a01b031614155b80610a7c575082602001516001600160a01b0316816001600160a01b03166316eebd1e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190610fdd565b6001600160a01b031614155b80610afb5750825f01516001600160a01b0316816001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610acb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aef9190610fdd565b6001600160a01b031614155b15610b195760405163c52a9bd360e01b815260040160405180910390fd5b505050565b5f5f60c0516001600160a01b031663deee4135846040518263ffffffff1660e01b8152600401610b5091815260200190565b6040805180830381865afa158015610b6a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190610fff565b909250905062ffffff82161580610bac5750620d89e862ffffff8316115b80610bbb575060028161ffff16105b80610bcb575061100061ffff8216115b15610be95760405163c52a9bd360e01b815260040160405180910390fd5b915091565b60405161028081016001600160401b0381118282101715610c1d57634e487b7160e01b5f52604160045260245ffd5b60405290565b6001600160a01b0381168114610c37575f5ffd5b50565b8051610c4581610c23565b919050565b805162ffffff81168114610c45575f5ffd5b8051600281900b8114610c45575f5ffd5b805163ffffffff81168114610c45575f5ffd5b805160ff81168114610c45575f5ffd5b80518015158114610c45575f5ffd5b5f610280828403128015610cb1575f5ffd5b50610cba610bee565b610cc383610c3a565b8152610cd160208401610c3a565b6020820152610ce260408401610c3a565b6040820152610cf360608401610c3a565b6060820152610d0460808401610c3a565b6080820152610d1560a08401610c3a565b60a0820152610d2660c08401610c3a565b60c0820152610d3760e08401610c4a565b60e0820152610d496101008401610c5c565b610100820152610d5c6101208401610c3a565b610120820152610d6f6101408401610c4a565b610140820152610d826101608401610c4a565b610160820152610d956101808401610c6d565b610180820152610da86101a08401610c80565b6101a0820152610dbb6101c08401610c80565b6101c0820152610dce6101e08401610c3a565b6101e0820152610de16102008401610c90565b61020082015261022083810151908201526102408084015190820152610e0a6102608401610c6d565b6102608201529392505050565b6001600160a01b03169052565b5f61028082019050610e37828451610e17565b6020830151610e496020840182610e17565b506040830151610e5c6040840182610e17565b506060830151610e6f6060840182610e17565b506080830151610e826080840182610e17565b5060a0830151610e9560a0840182610e17565b5060c0830151610ea860c0840182610e17565b5060e0830151610ebf60e084018262ffffff169052565b50610100830151610ed661010084018260020b9052565b50610120830151610eeb610120840182610e17565b50610140830151610f0461014084018262ffffff169052565b50610160830151610f1d61016084018262ffffff169052565b50610180830151610f3761018084018263ffffffff169052565b506101a0830151610f4e6101a084018260ff169052565b506101c0830151610f656101c084018260ff169052565b506101e0830151610f7a6101e0840182610e17565b50610200830151610f9061020084018215159052565b50610220830151610220830152610240830151610240830152610260830151610fc261026084018263ffffffff169052565b5092915050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610fed575f5ffd5b8151610ff881610c23565b9392505050565b5f5f60408385031215611010575f5ffd5b61101983610c4a565b9150602083015161ffff8116811461102f575f5ffd5b809150509250929050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051615deb61130b5f395f818161302901526136d001525f81816122570152818161235d015261379e01525f818161221601528181612322015261377d01525f818161047f0152818161059c01526134a801525f818161055a01526138dd01525f81816104cb015261136201525f6106fb01525f6103f101525f81816103560152818161096601528181610d69015281816110e8015281816113d1015281816115ed015281816116ef01528181611a1a01528181611e4b01528181611f8001528181612120015281816122f70152818161282d015281816129ae01528181612ce20152818161342a015281816134d70152818161386a015281816138a5015261443701525f818161088a01528181612e9f01528181613b1f015261451701525f818161053301528181610d3101528181610fc10152818161113601528181611fcc01528181612037015281816120a1015281816122d101528181612853015281816128f70152818161298b015261375c01525f818161082f01528181612eee01528181613b6e015261446f01525f818161066e01526111c001525f81816102d0015281816108f401528181610c650152818161132501528181612f380152818161395101526144f401525f818161072b01528181610adb01528181610b7101528181610ec2015281816110c7015281816112940152818161145b015281816115cc0152818161165f0152818161190a01528181611b7101528181611d8801528181612145015281816121b9015281816122b001528181612b1601528181612ba501528181612c22015281816134510152818161350f0152818161373b01528181613d3b015281816145d30152818161478f0152818161481e0152818161489b01528181614963015281816149ae0152614a1b0152615deb5ff3fe608060405234801561000f575f5ffd5b5060043610610239575f3560e01c80630268e2931461023d5780630581555f146102525780630885f7321461026c57806321d0ee701461028c578063259982e5146102b85780632b20e397146102cb578063359b4f301461030a5780633e451d6a1461032b57806342ea83e01461033e57806347f8496c1461035157806350fb3a3a146103785780635524d5481461038b578063575e24b4146103ae5780635955d09a146103ec57806360f89f2e14610413578063654f631c146104265780636fe7e6eb14610457578063747a68cd1461046a5780637dbeb94e1461047d578063847211a6146104b35780638bc801c1146104c657806391dd7346146104ed578063921b0bed1461050d5780639759164a1461052e5780639e5fe06214610555578063a3f4bac714610591578063a86911141461059a578063aae49d70146105c3578063ac4e4054146105cd578063ac5555aa146105d6578063b47b2fb1146105e9578063b6a8b0fa1461061f578063c5c51dca14610632578063c5fbb29814610647578063c67046af1461065a578063c7f7fb9014610669578063ca266dfe14610690578063ce1b8e4f146106f6578063d2be66251461071d578063dc4c90d314610726578063dd71cea81461074d578063e1b4af691461079a578063e2e65ec1146107ad578063f11457c7146107c0578063f2f4eb261461082a578063f399150c14610851578063f9bc70e714610872578063fc0c546a14610885578063fd5b6d5b146108ac575b5f5ffd5b61025061024b36600461515e565b6108bf565b005b5f5b60405161ffff90911681526020015b60405180910390f35b61027f61027a366004615178565b6109ba565b60405161026391906151d9565b61029f61029a3660046152d4565b610acf565b6040516001600160e01b03199091168152602001610263565b61029f6102c63660046152d4565b610b65565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610263565b61031d610318366004615354565b610c02565b604051908152602001610263565b61031d610339366004615382565b610c1f565b61025061034c36600461539d565b610c30565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102506103863660046153eb565b610dc4565b61039e610399366004615178565b610e9f565b6040519015158152602001610263565b6103c16103bc36600461541e565b610eb4565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610263565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b610250610421366004615477565b6110b8565b610439610434366004615178565b61119e565b6040805162ffffff909316835261ffff909116602083015201610263565b61029f6104653660046154cf565b611288565b61031d610478366004615382565b611428565b7f00000000000000000000000000000000000000000000000000000000000000005b60405162ffffff9091168152602001610263565b61031d6104c1366004615178565b61143c565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6105006104fb366004615526565b61144e565b6040516102639190615564565b61052061051b366004615599565b611573565b604051610263929190615611565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61057c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610263565b6102f2613fff81565b7f000000000000000000000000000000000000000000000000000000000000000060181c61057c565b61049f620f424081565b6102f2611afc81565b61039e6105e4366004615178565b611638565b6105fc6105f736600461569d565b611652565b604080516001600160e01b03199093168352600f9190910b602083015201610263565b61029f61062d36600461571d565b6118fe565b61063a6119b0565b6040516102639190615776565b61031d610655366004615178565b611a5b565b600160405161026391906157b8565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6106a361069e366004615178565b611a7d565b604051610263919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b61025461100081565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61076061075b3660046157cb565b611b07565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091169183019190915215156060820152608001610263565b61029f6107a836600461571d565b611b65565b61031d6107bb366004615354565b611c17565b6107d36107ce366004615178565b611c35565b6040805161ffff998a168152978916602089015295881695870195909552600293840b60608701526001600160401b039283166080870152911660a0850152900b60c083015290911660e082015261010001610263565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61086461085f36600461515e565b611caa565b6040516102639291906157eb565b61049f6108803660046157f9565b611eb4565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61031d6108ba366004615354565b611f21565b3068929eee149b4bd2126854036108dd5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610931576040516282b42960e81b815260040160405180910390fd5b61093a81611f3f565b6013541561095b576040516304c7cf6760e51b815260040160405180910390fd5b4260138190556040517f0000000000000000000000000000000000000000000000000000000000000000907ff1bac50d2c6f6c83cb8ff6fac488b03adc5fb0cc9fae30db2077588d5d9e5fbd905f90a33868929eee149b4bd212685550565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152610a0b82611f7e565b6040805161012081018252600380546001600160a01b039081168352600454811660208401526005549081169383019390935290916060830190600160a01b900460ff166001811115610a6057610a6061519c565b6001811115610a7157610a7161519c565b8152600282015462ffffff600160a81b820416602083015260ff600160c01b9091048116604083015260038301546001600160a01b0381166060840152600160a01b9004161515608082015260049091015460a09091015292915050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b18576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610b365763ab143c065f526004601cfd5b610b3f85611f3f565b610b498685611fbd565b610b52846120f4565b5063021d0ee760e41b5b95945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bae576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610bcc5763ab143c065f526004601cfd5b610bd585611f3f565b610bdf8685611fbd565b610be76121e8565b610bf0846120f4565b5063259982e560e01b95945050505050565b5f610c0c83611f7e565b610c1582612213565b5490505b92915050565b5f610c2982612213565b5492915050565b3068929eee149b4bd212685403610c4e5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca2576040516282b42960e81b815260040160405180910390fd5b610cc3610cbe610cb736859003850185615867565b60a0902090565b611f7e565b60125460ff1615610ce757604051630ea075bf60e21b815260040160405180910390fd5b610cf0816122ae565b610cf9816125b7565b610d066020820182615382565b600380546001600160a01b0319166001600160a01b039283161790556012805460ff191660011790557f000000000000000000000000000000000000000000000000000000000000000016610d5e6020830183615382565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007ffafdbdd88ac30f0aa936e576be61816ea751908540523fa81b80c4a406ad7bec60405160405180910390a43868929eee149b4bd21268555050565b3068929eee149b4bd212685403610de25763ab143c065f526004601cfd5b610deb82611f7e565b6016805461ffff600160e01b90910481169083161115610e15578054600160e01b900461ffff1691505b8054600160201b900461ffff165f610e2f60178386612619565b835461ffff60201b1916600160201b61ffff838116918202929092178655919250831614610e98576040805161ffff80851682528316602082015286917f04f592d3848fffa22f73de92a2fd8da837e6d597f468af77c6fc619b478362ae910160405180910390a25b5050505050565b5f610ea982611f7e565b505060125460ff1690565b5f8080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eff576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610f1d5763ab143c065f526004601cfd5b60155460ff1615610f415760405163558a1e0360e11b815260040160405180910390fd5b610f4a87611f3f565b610f526121e8565b60035f610f5f8a896126ac565b90505f610f6c8a8a6126e4565b90505f62ffffff831615801590610f8a5750610f8a828c8c87612722565b15610fa857610fa5610f9f8b602001356127a6565b846127e1565b90505b6040516364b3357d60e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c9666afa90610ffa908f908f9087906004016159c8565b602060405180830381865afa158015611015573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103991906159f3565b90506110758c61104c60208e018e615a0a565b611056575f611058565b825b61106560208f018f615a0a565b61106f578361281f565b5f61281f565b81156110975761109783838760020160189054906101000a900460ff16612a0c565b506315d7892d60e21b965060801b94505f9350505050955095509592505050565b6110c183611f3f565b5f61110c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612d51565b5050600354919250506001600160a01b0384811691161415806111615750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b8061117357506001600160a01b038116155b156111905760405162820f3560e61b815260040160405180910390fd5b611198612e03565b50505050565b60405163deee413560e01b8152600481018290525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063deee4135906024016040805180830381865afa158015611204573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112289190615a23565b909250905062ffffff821615806112465750620d89e862ffffff8316115b80611255575060028161ffff16105b80611265575061100061ffff8216115b156112835760405163c52a9bd360e01b815260040160405180910390fd5b915091565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112d1576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036112ef5763ab143c065f526004601cfd5b611304610cbe610cb736879003870187615867565b60125460ff16158061131d5750601254610100900460ff165b8061135a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8061139757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156113b45760405162820f3560e61b815260040160405180910390fd5b6113bd82612fe8565b6012805461ff0019166101001790556040517f0000000000000000000000000000000000000000000000000000000000000000907febcc9ffea17e08841d7588f2ecd87720e1cfb444bb3b5e662c4a5005c3c94ab2905f90a250636fe7e6eb60e01b5b949350505050565b5f61143282612213565b6003015492915050565b5f61144682611f7e565b505060135490565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611498576040516282b42960e81b815260040160405180910390fd5b60145415806114c0575060145483836040516114b5929190615a50565b604051809103902014155b156114de5760405163f7a632f560e01b815260040160405180910390fd5b5f60148190556114f083850185615867565b9050611500610cbe8260a0902090565b601254610100900460ff166115275760405162820f3560e61b815260040160405180910390fd5b5f611534825f01516130f6565b90505f61154483602001516130f6565b905081816040516020016115599291906157eb565b604051602081830303815290604052935050505092915050565b60608061157f85611f7e565b6016805462010000900461ffff165f036115ac576040516329d9e10560e01b815260040160405180910390fd5b805461162b90429087908790600160301b810460020b9061ffff166116117f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061318f565b875460179695949392919062010000900461ffff16613212565b9250925050935093915050565b5f61164282611f7e565b5050601254610100900460ff1690565b5f80336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169c576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036116ba5763ab143c065f526004601cfd5b60155460ff16156116de5760405163558a1e0360e11b815260040160405180910390fd5b6116e787611f3f565b5f61171560107f00000000000000000000000000000000000000000000000000000000000000008b8a61336d565b9050611722885f5f61281f565b60035f61172f8a8a6126e4565b90505f61173f60208c018c615382565b6001600160a01b0316826001600160a01b0316146117695761176460208c018c615382565b611779565b61177960408c0160208d01615382565b905062ffffff8416158015906117965750611796828c8c86612722565b1561182f575f6117b26117ac8c602001356127a6565b866127e1565b9050801561182d575f6117c860208e018e615382565b6001600160a01b0316846001600160a01b0316146117ef576117ea8b600f0b90565b6117f9565b6117f98b60801d90565b90506118098260208e0135615a73565b81600f0b1461182b5760405163161b48a960e21b815260040160405180910390fd5b505b505b62ffffff8416158061184a5750611848818c8c86612722565b155b15611866575063b47b2fb160e01b94505f93506118f392505050565b5f61187460208d018d615382565b6001600160a01b0316826001600160a01b03161461189b576118968a600f0b90565b6118a5565b6118a58a60801d90565b90505f6118bd6118b783600f0b6127a6565b876127e1565b905080156118e1576118e183828760020160189054906101000a900460ff16612a0c565b63b47b2fb160e01b9750955050505050505b965096945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611947576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036119655763ab143c065f526004601cfd5b60155460ff16156119895760405163558a1e0360e11b815260040160405180910390fd5b61199286611f3f565b61199d86868661281f565b50635b54587d60e11b9695505050505050565b60125460609060ff166119c3575f6119c6565b60015b60ff166001600160401b038111156119e0576119e0615813565b604051908082528060200260200182016040528015611a09578160200160208202803683370190505b5060125490915060ff1615611a58577f0000000000000000000000000000000000000000000000000000000000000000815f81518110611a4b57611a4b615a9a565b6020026020010181815250505b90565b5f611a6582611f7e565b601654600160881b90046001600160401b0316610c19565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152611ab082611f7e565b50506040805160a0810182525f546001600160a01b039081168252600154808216602084015262ffffff600160a01b82041693830193909352600160b81b909204600290810b606083015254909116608082015290565b5f5f5f5f611b1486611f7e565b5f60178661ffff8110611b2957611b29615a9a565b015463ffffffff811698600160201b820460060b9850600160581b82046001600160a01b03169750600160f81b90910460ff1695509350505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bae576040516282b42960e81b815260040160405180910390fd5b60155460ff1615611bd25760405163558a1e0360e11b815260040160405180910390fd5b3068929eee149b4bd212685403611bf05763ab143c065f526004601cfd5b611bf986611f3f565b611c04865f5f61281f565b5063e1b4af6960e01b9695505050505050565b5f611c2183611f7e565b611c2a82612213565b600101549392505050565b5f5f5f5f5f5f5f5f611c4689611f7e565b505060165461ffff8082169962010000830482169950600160201b830482169850600160301b8304600290810b98506001600160401b03600160481b850481169850600160881b8504169650600160c81b8404900b9450600160e01b909204169150565b5f5f3068929eee149b4bd212685403611cca5763ab143c065f526004601cfd5b3068929eee149b4bd212685560155460ff1615611cfa5760405163558a1e0360e11b815260040160405180910390fd5b611d0383611f3f565b6003546001600160a01b03163314611d2d576040516282b42960e81b815260040160405180910390fd5b600854151580611d3e5750600c5415155b15611e3f575f83604051602001611d559190615aae565b60408051601f1981840301815290829052805160208201206014556348c8949160e01b825291505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906348c8949190611dbd908590600401615564565b5f604051808303815f875af1158015611dd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dff9190810190615abc565b60145490915015611e235760405163f7a632f560e01b815260040160405180910390fd5b80806020019051810190611e379190615b4e565b909450925050505b336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f4a93be8d0a356d70b54fdf016f78a2ed8b8a3c420952848eb4f4b2c4546405b68484604051611e9b9291906157eb565b60405180910390a33868929eee149b4bd2126855915091565b5f3068929eee149b4bd212685403611ed35763ab143c065f526004601cfd5b601254610100900460ff16611efa5760405162820f3560e61b815260040160405180910390fd5b611f02612e03565b5f611f0c836133db565b509050611f18816135bf565b9150505b919050565b5f611f2b83611f7e565b611f3482612213565b600201549392505050565b611f54610cbe610cb736849003840184615867565b601254610100900460ff16611f7b5760405162820f3560e61b815260040160405180910390fd5b50565b7f00000000000000000000000000000000000000000000000000000000000000008114611f7b5760405162820f3560e61b815260040160405180910390fd5b60155460ff16801561200e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158061200e5750604081013515155b1561202c5760405163558a1e0360e11b815260040160405180910390fd5b6013545f0361208b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461208757604051637cd5a0ad60e01b815260040160405180910390fd5b5050565b600654600160a01b900460ff1680156120d657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561208757604051630af9fb3360e21b815260040160405180910390fd5b604081013515806121165750601654600160481b90046001600160401b031643145b1561211e5750565b7f00000000000000000000000000000000000000000000000000000000000000005f61216a7f000000000000000000000000000000000000000000000000000000000000000083612d51565b5090925061217e9150506020840184615b70565b60020b8160020b12806121a6575061219c6040840160208501615b70565b60020b8160020b12155b156121b057505050565b6121e3816121de7f00000000000000000000000000000000000000000000000000000000000000008561318f565b61365a565b505050565b601554610100900460ff16156121fa57565b612202612e03565b6015805461ff001916610100179055565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361225557506008919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036122965750600c919050565b60405162820f3560e61b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f61231b837f0000000000000000000000000000000000000000000000000000000000000000612d51565b50505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b5f148061238057506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b155b8061239357506001600160a01b03811615155b806123bf57506001600160a01b0382166123b36040860160208701615382565b6001600160a01b031614155b806123ed57506005546001600160a01b03166123e16060860160408701615382565b6001600160a01b031614155b806124355750600554600160a01b900460ff1660018111156124115761241161519c565b6124216080860160608701615b89565b60018111156124325761243261519c565b14155b806124625750600554600160a81b900462ffffff1661245a60a0860160808701615ba7565b62ffffff1614155b8061248b5750600554600160c01b900460ff1661248560c0860160a08701615bc2565b60ff1614155b806124b957506006546001600160a01b03166124ad60e0860160c08701615382565b6001600160a01b031614155b806124e45750600654600160a01b900460ff1615156124df610100860160e08701615a0a565b151514155b806124f6575060075461010085013514155b8061251557506125096020850185615382565b6001600160a01b03163b155b8061253d57506001600160a01b0382166125326020860186615382565b6001600160a01b0316145b8061255c5750306125516020860186615382565b6001600160a01b0316145b8061258457506001600160a01b0383166125796020860186615382565b6001600160a01b0316145b156125a25760405163c52a9bd360e01b815260040160405180910390fd5b6111986125b26020860186615382565b613739565b5f5f6125c783610100013561119e565b6016549193509150600283810b600160c81b909204900b1415806125fb575060165461ffff828116600160e01b9092041614155b156121e35760405163c52a9bd360e01b815260040160405180910390fd5b5f8261ffff165f0361263e576040516329d9e10560e01b815260040160405180910390fd5b8261ffff168261ffff16116126545750816126a5565b825b8261ffff168161ffff1610156126a0576001858261ffff1661ffff811061267f5761267f615a9a565b01805463ffffffff191663ffffffff92909216919091179055600101612656565b508190505b9392505050565b5f5f5f6126b8846133db565b604082015191935091506126cf6010848888613bf8565b93506126db8282613c76565b50505092915050565b5f6126f26020830183615a0a565b15155f60208401351214612715576127106040840160208501615382565b6126a5565b6126a56020840184615382565b5f8060016002840154600160a01b900460ff1660018111156127465761274661519c565b1461277e576127586020850185615a0a565b6127715761276c6040860160208701615382565b61278d565b61276c6020860186615382565b60028301546001600160a01b03165b6001600160a01b03878116911614915050949350505050565b5f600160ff1b82036127cb57604051637e2df70960e11b815260040160405180910390fd5b5f82126127d85781610c19565b610c1982615be2565b5f6127f5838362ffffff16620f4240613c99565b905060016001607f1b03811115610c1957604051637e2df70960e11b815260040160405180910390fd5b60405162e568cf60e71b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906372b4678090602401602060405180830381865afa1580156128a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c491906159f3565b5f036128cf57505050565b6015805460ff191660011790556040516381f8a9d160e01b81525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906381f8a9d19061293090889088908890600401615bfc565b60408051808303815f875af115801561294b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296f9190615b4e565b6015805460ff1916905560405191935091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000907fa30ca6140dfb2cac1c1021c5303d8dc7de0cd4db47221fb3ad068fac7ef8185e906129fd90869086906157eb565b60405180910390a35050505050565b3068929eee149b4bd212685403612a2a5763ab143c065f526004601cfd5b3068929eee149b4bd2126855825f612a4182612213565b90505f8160020154825f0154612a579190615c1b565b9050612a6a8160016001607f1b03615c1b565b851115612a7c57612a7c868383613d27565b5f60ff851615612aaf576064612a9560ff871688615c42565b612aa090607d615c55565b612aaa9190615c42565b612ab1565b5f5b905085835f015f828254612ac59190615c6c565b9250508190555080836001015f828254612adf9190615c6c565b9250508190555085836003015f828254612af99190615c6c565b9091555050604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90612b4c9030908990600401615c7f565b602060405180830381865afa158015612b67573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8b91906159f3565b604051630ab714fb60e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063156e29f690612bde90309089908c90600401615c99565b5f604051808303815f87803b158015612bf5575f5ffd5b505af1158015612c07573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e90612c599030908a90600401615c7f565b602060405180830381865afa158015612c74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9891906159f3565b905081811080612caa57508782820314155b80612cb85750846003015481105b15612cd65760405163104eed1d60e31b815260040160405180910390fd5b856001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f2616e25de5abcc9e6a698b140fb6c92f55ace21b7a57f76172f195dbbf693af68a86604051612d329291906157eb565b60405180910390a35050505050503868929eee149b4bd2126855505050565b5f5f5f5f5f612d5f86613dcb565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015612da7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcb91906159f3565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b601554610100900460ff1615612e1557565b6003546001600160a01b03165f612e3b612e3683630d96a1bf60e21b613e07565b613e21565b90505f612e5d8263537df88f60e11b6001600160a01b038616602460c0613e33565b9050606081015160a01c815160a01c1715612e76575f5ffd5b60a081015160808201511760101c15612e8d575f5ffd5b60c081016040525f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612ed3612e368563514526c360e11b613e07565b6001600160a01b0316141580612f2e57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612f22612e368563056a0fbf60e31b613e07565b6001600160a01b031614155b80612f63575081517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b80612f7757505f612f75836020015190565b145b80612f8b57505f612f89836040015190565b145b80612f9f57505f612f9d836060015190565b145b80612fb857508061ffff16612fb58360a0015190565b14155b80612fca5750608082015160a0830151115b156111985760405163c52a9bd360e01b815260040160405180910390fd5b6016612ff5601742613e68565b825465ffffffff00001916600160201b61ffff9283160263ffff000019161762010000929091169190910217815561304d827f0000000000000000000000000000000000000000000000000000000000000000613ea8565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b039081169190910291909117600160881b600160c81b031916600160881b42929092169190910217808255600290600160e01b900461ffff168111156130d757508054600160e01b900461ffff165b815461ffff8216600160201b0261ffff60201b19909116178255505050565b5f818161310282612213565b80549091505f81900361311957505f949350505050565b613133858384600201548461312e9190615c1b565b613d27565b6001820180545f8085559182905560028401919091556131538183615c1b565b60065490955061316e9085906001600160a01b031683613ebd565b6003546131869085906001600160a01b031687613ebd565b50505050919050565b5f5f61319a83613dcb565b90505f6131a8600383615c6c565b604051631e2eaeaf60e01b8152600481018290529091506001600160a01b03861690631e2eaeaf90602401602060405180830381865afa1580156131ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c91906159f3565b6060808261ffff165f03613239576040516329d9e10560e01b815260040160405180910390fd5b866001600160401b0381111561325157613251615813565b60405190808252806020026020018201604052801561327a578160200160208202803683370190505b509150866001600160401b0381111561329557613295615813565b6040519080825280602002602001820160405280156132be578160200160208202803683370190505b5090505f5b8781101561335f576133008b8b8b8b858181106132e2576132e2615a9a565b90506020020160208101906132f79190615cbd565b8a8a8a8a613f4d565b84838151811061331257613312615a9a565b6020026020010184848151811061332b5761332b615a9a565b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508060010190506132c3565b509850989650505050505050565b60018401545f9063ffffffff16801580613392575061338d8585856140f9565b865414155b156133b3576040516001620787ab60e51b0319815260040160405180910390fd5b6133be600182615ce0565b5f87556001909601805463ffffffff191690555093949350505050565b61342760408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290529061010082015290565b5f7f00000000000000000000000000000000000000000000000000000000000000008180806134767f000000000000000000000000000000000000000000000000000000000000000085612d51565b509250925092508062ffffff165f146134a25760405163c52a9bd360e01b815260040160405180910390fd5b8194505f7f000000000000000000000000000000000000000000000000000000000000000090506040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000008152602001856001600160a01b031681526020016135347f00000000000000000000000000000000000000000000000000000000000000008861318f565b6001600160801b0316815260200189602001358152602001895f01602081019061355e9190615a0a565b1515815260055462ffffff600160a81b8204811660208401528416604083015263ffffffff601885901c16606083015260809091019060ff600160a01b9091041660018111156135b0576135b061519c565b81525096505050505050915091565b5f600160ff1b8260600151036135e857604051637e2df70960e11b815260040160405180910390fd5b60a082015160c08301516135fb8461412e565b92508162ffffff168362ffffff16111561362857604051637e2df70960e11b815260040160405180910390fd5b8062ffffff168362ffffff161015613653576040516302cce67760e31b815260040160405180910390fd5b5050919050565b601680546136919060179061ffff808216914291600160301b820460020b918891620100008204811691600160201b90041661418b565b825463ffffffff19166201000061ffff9283160261ffff1916179116178082556136f490600160301b8104600290810b918691600160c81b909104900b7f0000000000000000000000000000000000000000000000000000000000000000614307565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b0316021790555050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f6137d2612e3687630d96a1bf60e21b613e07565b90505f6137e0878585614370565b90506001600160a01b038616613800612e368963dc4c90d360e01b613e07565b6001600160a01b031614158061383b57506001600160a01b03851661382f612e3689636bdcb6a760e11b613e07565b6001600160a01b031614155b80613862575030613856612e3689636620eee760e11b613e07565b6001600160a01b031614155b8061389d57507f000000000000000000000000000000000000000000000000000000000000000061389a88631f06e1a760e11b613e07565b14155b806138d057507f00000000000000000000000000000000000000000000000000000000000000006138cd8861440b565b14155b80613911575063ffffffff7f00000000000000000000000000000000000000000000000000000000000000001661390e88634f2ff03160e11b613e07565b14155b8061394157506001600160a01b038616613935612e368763dc4c90d360e01b613e07565b6001600160a01b031614155b8061399157506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613985612e3687630b775e8f60e11b613e07565b6001600160a01b031614155b806139ab57505f6139a88662e568cf60e71b61442e565b14155b806139ca57506139ca6139c586630323715f60e11b61442e565b61445f565b806139e557505f6139e286635c0af38360e01b61442e565b14155b80613a0c57505f613a00612e3687630961712f60e01b61442e565b6001600160a01b031614155b80613a15575080155b80613a2857506001600160a01b0382163b155b80613a3b57506001600160a01b03821630145b80613a575750866001600160a01b0316826001600160a01b0316145b80613a735750846001600160a01b0316826001600160a01b0316145b80613a8f5750856001600160a01b0316826001600160a01b0316145b80613aab5750836001600160a01b0316826001600160a01b0316145b80613ac75750826001600160a01b0316826001600160a01b0316145b80613adf57506006546001600160a01b038381169116145b80613af757506006546001600160a01b038881169116145b15613b155760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613b53612e368463514526c360e11b613e07565b6001600160a01b0316141580613bae57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ba2612e368463056a0fbf60e31b613e07565b6001600160a01b031614155b80613bc85750613bc86139c58363b3f05b9760e01b613e07565b15613be65760405163c52a9bd360e01b815260040160405180910390fd5b613bef8261446d565b50505050505050565b60018401545f9063ffffffff1615613c26576040516001620787ab60e51b0319815260040160405180910390fd5b8351613c31856135bf565b9150613c3e8185856140f9565b8655613c5062ffffff83166001615cfc565b600196909601805463ffffffff191663ffffffff90971696909617909555949350505050565b601654600160481b90046001600160401b0316431461208757612087828261365a565b82820281838583041485151702613d20575f198385098181108201900382848609835f038416828511613cd35763ae47f7025f526004601cfd5b93849004938382119092035f8390038390046001010292030417600260038302811880840282030280840282030280840282030280840282030280840282030280840290910302026126a5565b0492915050565b805f03613d3357505050565b8281613d5f827f000000000000000000000000000000000000000000000000000000000000000061474d565b1015613d7e576040516365169c1d60e01b815260040160405180910390fd5b81836003015f828254613d919190615c1b565b90915550613da29050818484614777565b613dad84308461494f565b81836002015f828254613dc09190615c6c565b909155505050505050565b6040515f90613dea908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b5f80613e1884848360046020613e33565b51949350505050565b5f8160a01c15613e2f575f5ffd5b5090565b6040518481526023198301613e49578360048201525b81818483895afa613e5c573d5f823e3d81fd5b813d1015610b5c575f5ffd5b6040805160808101825263ffffffff83168082525f602083018190529282019290925260016060909101819052600160f81b9091178355805b9250929050565b5f81613eb457826126a5565b6126a583615d18565b805f03613ec957505050565b5f613ed4843061474d565b90505f613ee1858561474d565b9050613eee858585614a9d565b5f613ef9863061474d565b90505f613f06878761474d565b905083821180613f1857508482850314155b80613f2257508281105b80613f2f57508483820314155b15613bef57604051631dc418c360e31b815260040160405180910390fd5b5f5f8663ffffffff165f03613ff3575f898661ffff1661ffff8110613f7457613f74615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a1614613fdf57613fdc818a8988614ae7565b90505b8060200151816040015192509250506140ed565b8688035f806140078c8c858c8c8c8c614b8d565b91509150815f015163ffffffff168363ffffffff16036140375781602001518260400151945094505050506140ed565b805f015163ffffffff168363ffffffff16036140635780602001518160400151945094505050506140ed565b5f825f0151825f01510390505f835f0151850390508063ffffffff168263ffffffff1660060b856020015185602001510360060b816140a4576140a4615c2e565b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816140dc576140dc615c2e565b048560400151019650965050505050505b97509795505050505050565b5f83838360405160200161410f93929190615d38565b6040516020818303038152906040528051906020012090509392505050565b5f8160c0015162ffffff168260a0015162ffffff161480614157575060e082015163ffffffff16155b15614164575060c0015190565b5f5f61416e614d68565b915091506114208460c001518560a001518660e001518585614dd8565b5f5f5f898961ffff1661ffff81106141a5576141a5615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508916900361420e57888592509250506140ed565b8461ffff168461ffff16118015614236575061422b600186615d5b565b61ffff168961ffff16145b6142405784614242565b835b9150816142508a6001615d75565b61425a9190615d8f565b925061426881898989614ae7565b8a8461ffff1661ffff811061427f5761427f615a9a565b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b02959095166001600160581b0366ffffffffffffff909216600160201b026001600160581b031990931663ffffffff909516949094179190911716919091179190911790555097509795505050505050565b5f5f8560020b6143178685613ea8565b60020b6143249190615db2565b9050600284900b8082131561433b57809150614357565b61434481615be2565b8212156143575761435481615be2565b91505b61436582600289900b615a73565b979650505050505050565b5f80614388856371a9730560e01b8360046020613e33565b80519091506001600160a01b0380861691908516903d906001600160401b038111601f198301821117156143ba575f5ffd5b602081863e8451602080838503030481116001600160401b03821117156143df575f5ffd5b600281036143fe57604060208301873e83602087015114858751141696505b5050505050509392505050565b5f806144238363182148ef60e01b83600460a0613e33565b60a090209392505050565b5f5f613e1884847f000000000000000000000000000000000000000000000000000000000000000060246020613e33565b5f6001821115613e2f575f5ffd5b7f00000000000000000000000000000000000000000000000000000000000000005f6144a68263086fce0d60e11b836004610160613e33565b90505f6005905080604083015111602083015160201c17156144c6575f5ffd5b6101408201606083015b818110156144ee57805160a01c156144e6575f5ffd5b6020016144d0565b505081517f000000000000000000000000000000000000000000000000000000000000000091507f00000000000000000000000000000000000000000000000000000000000000009080158061454957506001604085015114155b8061456757506001600160a01b038316614564856060015190565b14155b8061458557506001600160a01b038316614582856080015190565b14155b806145a357506001600160a01b0382166145a08560a0015190565b14155b806145c357506005546001600160a01b03166145c08560c0015190565b14155b8061460157506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166145fe8560e0015190565b14155b1561461e576040516282b42960e81b815260040160405180910390fd5b5f61462a856020015190565b905061464386636373dff160e11b8460246101c0613e33565b94505f600190505f600590508060a0880151118260808901511117604088015160a01c1715614670575f5ffd5b610120870160c088015b8181101561469857805160a01c15614690575f5ffd5b60200161467a565b50506101a0870161012088015b818110156146c357805160201c156146bb575f5ffd5b6020016146a5565b5050865184925090501415806146de5750600160a086015114155b806146fc57506001600160a01b0383166146f98660c0015190565b14155b8061471a57506001600160a01b0387166147178660e0015190565b14155b80614730575061014085015163ffffffff821610155b15613bef576040516282b42960e81b815260040160405180910390fd5b5f816014526370a0823160601b5f5260208060246010865afa601f3d111660205102905092915050565b604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e906147c59030908890600401615c7f565b602060405180830381865afa1580156147e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061480491906159f3565b604051637a94c56560e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f5298aca9061485790309088908790600401615c99565b5f604051808303815f87803b15801561486e575f5ffd5b505af1158015614880573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e906148d29030908990600401615c7f565b602060405180830381865afa1580156148ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061491191906159f3565b90508181118061492357508281830314155b806149315750836003015481105b15610e985760405163104eed1d60e31b815260040160405180910390fd5b805f0361495b57505050565b825f614987827f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614994838661474d565b604051630b0d9c0960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906149e790899089908990600401615c99565b5f604051808303815f87803b1580156149fe575f5ffd5b505af1158015614a10573d5f5f3e3d5ffd5b505050505f614a3f847f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614a4c858861474d565b905083821180614a5e57508582850314155b80614a6857508281105b80614a7557508583820314155b15614a9357604051631dc418c360e31b815260040160405180910390fd5b5050505050505050565b816014528060345263a9059cbb60601b5f5260205f604460105f875af18060015f511416614add57803d853b151710614add576390b8ec185f526004601cfd5b505f603452505050565b614aef615122565b5f855f01518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020015f856001600160801b031611614b40576001614b42565b845b6001600160801b031663ffffffff60801b608085901b1681614b6657614b66615c2e565b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b614b95615122565b614b9d615122565b888561ffff1661ffff8110614bb457614bb4615a9a565b60408051608081018252919092015463ffffffff8116808352600160201b820460060b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff16151560608201529250614c1290899089614e87565b15614c4b578663ffffffff16825f015163ffffffff1614614c3f5781614c3a83898988614ae7565b614c42565b81815b915091506140ed565b8883614c58876001615d75565b614c629190615d8f565b61ffff1661ffff8110614c7757614c77615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614d2057604080516080810182528a5463ffffffff81168252600160201b810460060b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614d2e88835f015189614e87565b614d4b57604051636ffbbccd60e11b815260040160405180910390fd5b614d588989898887614f45565b9150915097509795505050505050565b5f5f60165461ffff8160101c166001811115614dd25761ffff82168060170154826001840383010660170154915063ffffffff828203168015614dce578260201c8260201c0360060b8181059050808660301c60020b0397505063ffffffff8342031695505b5050505b50509091565b5f8462ffffff168662ffffff1610614df1575083610b5c565b5f83131580614e04575063ffffffff8216155b80614e13575063ffffffff8416155b15614e1f575084610b5c565b63ffffffff82811687870362ffffff160290849086168281614e4357614e43615c2e565b04811115614e55578692505050610b5c565b8363ffffffff168663ffffffff16820281614e7257614e72615c2e565b048862ffffff16019250505095945050505050565b5f8363ffffffff168363ffffffff1611158015614eb057508363ffffffff168263ffffffff1611155b15614ecc578163ffffffff168363ffffffff16111590506126a5565b5f8463ffffffff168463ffffffff1611614ef957614ef463ffffffff8516600160201b615c6c565b614f01565b8363ffffffff165b90505f8563ffffffff168463ffffffff1611614f3057614f2b63ffffffff8516600160201b615c6c565b614f38565b8363ffffffff165b9091111595945050505050565b614f4d615122565b614f55615122565b5f83614f62866001615d75565b614f6c9190615d8f565b61ffff1690505f60018561ffff1683614f859190615c6c565b614f8f9190615c1b565b90505b5f6002614f9f8385615c6c565b614fa99190615c42565b905089614fba61ffff881683615dd8565b61ffff8110614fcb57614fcb615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529095506150375761502f816001615c6c565b925050614f92565b8961ffff8716615048836001615c6c565b6150529190615dd8565b61ffff811061506357615063615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094505f906150c6908b908b614e87565b90508080156150de57506150de8a8a875f0151614e87565b156150ea575050615116565b80615101576150fa600183615c1b565b925061510f565b61510c826001615c6c565b93505b5050614f92565b50509550959350505050565b604080516080810182525f80825260208201819052918101829052606081019190915290565b5f60a08284031215615158575f5ffd5b50919050565b5f60a0828403121561516e575f5ffd5b6126a58383615148565b5f60208284031215615188575f5ffd5b5035919050565b6001600160a01b03169052565b634e487b7160e01b5f52602160045260245ffd5b60028110611f7b57634e487b7160e01b5f52602160045260245ffd5b6151d5816151b0565b9052565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161520d9084018261518f565b50606083015161522060608401826151cc565b506080830151615237608084018262ffffff169052565b5060a083015161524c60a084018260ff169052565b5060c083015161525f60c084018261518f565b5060e083015161527360e084018215159052565b5061010092830151919092015290565b6001600160a01b0381168114611f7b575f5ffd5b5f5f83601f8401126152a7575f5ffd5b5081356001600160401b038111156152bd575f5ffd5b602083019150836020828501011115613ea1575f5ffd5b5f5f5f5f5f8587036101608112156152ea575f5ffd5b86356152f581615283565b95506153048860208901615148565b9450608060bf1982011215615317575f5ffd5b5060c0860192506101408601356001600160401b03811115615337575f5ffd5b61534388828901615297565b969995985093965092949392505050565b5f5f60408385031215615365575f5ffd5b82359150602083013561537781615283565b809150509250929050565b5f60208284031215615392575f5ffd5b81356126a581615283565b5f5f8284036101c08112156153b0575f5ffd5b6153ba8585615148565b9250610120609f19820112156153ce575f5ffd5b5060a0830190509250929050565b61ffff81168114611f7b575f5ffd5b5f5f604083850312156153fc575f5ffd5b823591506020830135615377816153dc565b5f60608284031215615158575f5ffd5b5f5f5f5f5f6101408688031215615433575f5ffd5b853561543e81615283565b945061544d8760208801615148565b935061545c8760c0880161540e565b92506101208601356001600160401b03811115615337575f5ffd5b5f5f5f60e08486031215615489575f5ffd5b6154938585615148565b925060a08401356154a381615283565b915060c08401356154b381615283565b809150509250925092565b8035600281900b8114611f1c575f5ffd5b5f5f5f5f61010085870312156154e3575f5ffd5b84356154ee81615283565b93506154fd8660208701615148565b925060c085013561550d81615283565b915061551b60e086016154be565b905092959194509250565b5f5f60208385031215615537575f5ffd5b82356001600160401b0381111561554c575f5ffd5b61555885828601615297565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f604084860312156155ab575f5ffd5b8335925060208401356001600160401b038111156155c7575f5ffd5b8401601f810186136155d7575f5ffd5b80356001600160401b038111156155ec575f5ffd5b8660208260051b8401011115615600575f5ffd5b939660209190910195509293505050565b604080825283519082018190525f9060208501906060840190835b8181101561564d57835160060b83526020938401939092019160010161562c565b5050838103602080860191909152855180835291810192508501905f5b818110156156915782516001600160a01b031684526020938401939092019160010161566a565b50919695505050505050565b5f5f5f5f5f5f61016087890312156156b3575f5ffd5b86356156be81615283565b95506156cd8860208901615148565b94506156dc8860c0890161540e565b935061012087013592506101408701356001600160401b038111156156ff575f5ffd5b61570b89828a01615297565b979a9699509497509295939492505050565b5f5f5f5f5f5f6101208789031215615733575f5ffd5b863561573e81615283565b955061574d8860208901615148565b945060c0870135935060e087013592506101008701356001600160401b038111156156ff575f5ffd5b602080825282518282018190525f918401906040840190835b818110156157ad57835183526020938401939092019160010161578f565b509095945050505050565b602081016157c5836151b0565b91905290565b5f5f604083850312156157dc575f5ffd5b50508035926020909101359150565b918252602082015260400190565b5f60608284031215615809575f5ffd5b6126a5838361540e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561584f5761584f615813565b604052919050565b62ffffff81168114611f7b575f5ffd5b5f60a0828403128015615878575f5ffd5b5060405160a081016001600160401b038111828210171561589b5761589b615813565b60405282356158a981615283565b815260208301356158b981615283565b602082015260408301356158cc81615857565b60408201526158dd606084016154be565b606082015260808301356158f081615283565b60808201529392505050565b803561590781615283565b6001600160a01b03168252602081013561592081615283565b6001600160a01b03166020830152604081013561593c81615857565b62ffffff166040830152615952606082016154be565b60020b6060830152608081013561596881615283565b6001600160a01b03166080929092019190915250565b80358015158114611f1c575f5ffd5b6159968161597e565b151582526020818101359083015260408101356159b281615283565b6001600160a01b03166040929092019190915250565b61012081016159d782866158fc565b6159e460a083018561598d565b82610100830152949350505050565b5f60208284031215615a03575f5ffd5b5051919050565b5f60208284031215615a1a575f5ffd5b6126a58261597e565b5f5f60408385031215615a34575f5ffd5b8251615a3f81615857565b6020840151909250615377816153dc565b818382375f9101908152919050565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f831280158216821582161715615a9257615a92615a5f565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b60a08101610c1982846158fc565b5f60208284031215615acc575f5ffd5b81516001600160401b03811115615ae1575f5ffd5b8201601f81018413615af1575f5ffd5b80516001600160401b03811115615b0a57615b0a615813565b615b1d601f8201601f1916602001615827565b818152856020838501011115615b31575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f60408385031215615b5f575f5ffd5b505080516020909101519092909150565b5f60208284031215615b80575f5ffd5b6126a5826154be565b5f60208284031215615b99575f5ffd5b8135600281106126a5575f5ffd5b5f60208284031215615bb7575f5ffd5b81356126a581615857565b5f60208284031215615bd2575f5ffd5b813560ff811681146126a5575f5ffd5b5f600160ff1b8201615bf657615bf6615a5f565b505f0390565b60e08101615c0a82866158fc565b60a082019390935260c00152919050565b81810381811115610c1957610c19615a5f565b634e487b7160e01b5f52601260045260245ffd5b5f82615c5057615c50615c2e565b500490565b8082028115828204841417610c1957610c19615a5f565b80820180821115610c1957610c19615a5f565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215615ccd575f5ffd5b813563ffffffff811681146126a5575f5ffd5b63ffffffff8281168282160390811115610c1957610c19615a5f565b63ffffffff8181168382160190811115610c1957610c19615a5f565b5f8160020b627fffff198103615d3057615d30615a5f565b5f0392915050565b8381526001600160a01b038316602082015260a08101611420604083018461598d565b61ffff8281168282160390811115610c1957610c19615a5f565b61ffff8181168382160190811115610c1957610c19615a5f565b5f61ffff831680615da257615da2615c2e565b8061ffff84160691505092915050565b8181035f831280158383131683831282161715615dd157615dd1615a5f565b5092915050565b5f82615de657615de6615c2e565b50069056";
|
|
11
|
+
//# sourceMappingURL=dynamic-fee-pool-hook-v1-20261011.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-fee-pool-hook-v1-20261011.js","sourceRoot":"","sources":["../../../src/lifecycle/deployments/dynamic-fee-pool-hook-v1-20261011.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAQ,g/wDAAg/wD,CAAC"}
|
|
@@ -5,10 +5,12 @@ export declare enum KnownLifecycleProfile {
|
|
|
5
5
|
Abyss1 = "abyss-1",
|
|
6
6
|
Abyss2 = "abyss-2",
|
|
7
7
|
Abyss3 = "abyss-3",
|
|
8
|
-
V4FixedFeePool = "v4-fixed-fee-pool"
|
|
8
|
+
V4FixedFeePool = "v4-fixed-fee-pool",
|
|
9
|
+
V4DynamicFeePool = "v4-dynamic-fee-pool"
|
|
9
10
|
}
|
|
10
11
|
export declare enum KnownLifecycleHook {
|
|
11
|
-
FixedFeePoolV1 = "fixed-fee-pool-v1"
|
|
12
|
+
FixedFeePoolV1 = "fixed-fee-pool-v1",
|
|
13
|
+
DynamicFeePoolV1 = "dynamic-fee-pool-v1"
|
|
12
14
|
}
|
|
13
15
|
/** Frozen construction metadata, not a current eligibility or execution observation. */
|
|
14
16
|
export type LifecycleProfilePreset = {
|
|
@@ -56,7 +58,7 @@ export declare function getKnownLifecycleProfile(options: KnownLifecycleDeployme
|
|
|
56
58
|
profileId: Hex;
|
|
57
59
|
key?: never;
|
|
58
60
|
})): LifecycleProfilePreset | undefined;
|
|
59
|
-
/** Stable, frozen
|
|
61
|
+
/** Stable, frozen order: Abyss variants 0 through 3, then fixed and dynamic pool-bound V4. */
|
|
60
62
|
export declare function listKnownLifecycleProfiles(options: KnownLifecycleDeploymentIdentity): readonly LifecycleProfilePreset[];
|
|
61
63
|
export {};
|
|
62
64
|
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/lifecycle/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAIzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/lifecycle/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAIzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAInD,oBAAY,qBAAqB;IAC/B,MAAM,YAAY;IAClB,MAAM,YAAY;IAClB,MAAM,YAAY;IAClB,MAAM,YAAY;IAClB,cAAc,sBAAsB;IACpC,gBAAgB,wBAAwB;CACzC;AAED,oBAAY,kBAAkB;IAC5B,cAAc,sBAAsB;IACpC,gBAAgB,wBAAwB;CACzC;AAKD,wFAAwF;AACxF,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,GAAG,EAAE,qBAAqB,CAAC;IACpC,gGAAgG;IAChG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IAChE,QAAQ,CAAC,SAAS,CAAC,EAAE;QACnB,8EAA8E;QAC9E,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;QAChC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;QAClC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;KAC7B,CAAC;CACH,CAAC;AAEF,8FAA8F;AAC9F,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC;IACnC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,sDAAsD;QACtD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,KAAK,gCAAgC,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAAC;AA8O5F,0FAA0F;AAC1F,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,gCAAgC,GAAG,yBAAyB,GAAG,SAAS,CAI5H;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,gCAAgC,GAChF,CAAC;IAAE,GAAG,EAAE,qBAAqB,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,GAAG,CAAC;IAAC,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAAG,sBAAsB,GAAG,SAAS,CAU3H;AAED,8FAA8F;AAC9F,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,gCAAgC,GAAG,SAAS,sBAAsB,EAAE,CAEvH"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { fixedFeePoolHookV1CreationCode } from "./deployments/fixed-fee-pool-hook-v1-20261008.js";
|
|
2
|
+
import { dynamicFeePoolHookV1CreationCode } from "./deployments/dynamic-fee-pool-hook-v1-20261011.js";
|
|
2
3
|
export var KnownLifecycleProfile;
|
|
3
4
|
(function (KnownLifecycleProfile) {
|
|
4
5
|
KnownLifecycleProfile["Abyss0"] = "abyss-0";
|
|
@@ -6,10 +7,12 @@ export var KnownLifecycleProfile;
|
|
|
6
7
|
KnownLifecycleProfile["Abyss2"] = "abyss-2";
|
|
7
8
|
KnownLifecycleProfile["Abyss3"] = "abyss-3";
|
|
8
9
|
KnownLifecycleProfile["V4FixedFeePool"] = "v4-fixed-fee-pool";
|
|
10
|
+
KnownLifecycleProfile["V4DynamicFeePool"] = "v4-dynamic-fee-pool";
|
|
9
11
|
})(KnownLifecycleProfile || (KnownLifecycleProfile = {}));
|
|
10
12
|
export var KnownLifecycleHook;
|
|
11
13
|
(function (KnownLifecycleHook) {
|
|
12
14
|
KnownLifecycleHook["FixedFeePoolV1"] = "fixed-fee-pool-v1";
|
|
15
|
+
KnownLifecycleHook["DynamicFeePoolV1"] = "dynamic-fee-pool-v1";
|
|
13
16
|
})(KnownLifecycleHook || (KnownLifecycleHook = {}));
|
|
14
17
|
Object.freeze(KnownLifecycleProfile);
|
|
15
18
|
Object.freeze(KnownLifecycleHook);
|
|
@@ -144,6 +147,78 @@ const fixedFeePoolPreset = Object.freeze({
|
|
|
144
147
|
registrar: fixedFeePoolAdapter.implementation,
|
|
145
148
|
}),
|
|
146
149
|
});
|
|
150
|
+
// pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty: config.json,
|
|
151
|
+
// admission.json (unsigned preparation), preserved storage-child runtimes and the
|
|
152
|
+
// successful admit-latest.json receipt 0x1928b13d1a6bf8826d08493a18c483fc7d244a3ec4100a7f8118f510a5db640c.
|
|
153
|
+
// The admitted envelope shares the fixed profile's bounds and protocol terms,
|
|
154
|
+
// but has its own artifact, review, author terms, locker, deployer and adapter.
|
|
155
|
+
const dynamicFeePoolEnvelope = Object.freeze({
|
|
156
|
+
...fixedFeePoolEnvelope,
|
|
157
|
+
artifactDigest: "0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a",
|
|
158
|
+
reviewManifestDigest: "0x59c9c449ec9f1e5a552fd67e9538fe77055945f46513048115d1282d3a479589",
|
|
159
|
+
termsDigest: "0xbe3b09dc6d49fd548e76fed654b852039e8899e591ebacafc5e67f0692d0c699",
|
|
160
|
+
graph: Object.freeze({
|
|
161
|
+
...fixedFeePoolEnvelope.graph,
|
|
162
|
+
locker: "0x3C68D5d75C69DF755eD53EA51f0be609cA76402c",
|
|
163
|
+
lockerCodeHash: "0xbc55801d253d519818b7be0a0008c359dd9774c068f7b103bdd0b7d4997e7467",
|
|
164
|
+
hookDeployer: "0x59F83bC43A075C40c68dea444dcd9c639BE7F1E7",
|
|
165
|
+
hookDeployerCodeHash: "0x1b11f186b567721148b442eab0a922dd2a2e85ddbf3b729d239eef2379b319c3",
|
|
166
|
+
hookCreationCodeHash: "0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a",
|
|
167
|
+
codeChunk0: "0x766eB09552C91faea2bA9ae46832dFCeD6C60335",
|
|
168
|
+
codeChunk0Hash: "0x818c56bf10ae21129fe54f1b8991d6f807ce4ccef35b34c56251c1fd2d7d623f",
|
|
169
|
+
codeChunk1: "0x4Ce7Ed36Ea5E26a83c0Dc536C7Babc2EA171439c",
|
|
170
|
+
codeChunk1Hash: "0xbc73944bfa7e74df5968907a05fe2579a17ab155d3a0db407588d1baff51b4de",
|
|
171
|
+
}),
|
|
172
|
+
});
|
|
173
|
+
const dynamicFeePoolAdapter = Object.freeze({
|
|
174
|
+
implementation: "0xDa8581E1241722154B44404a032C086708080519",
|
|
175
|
+
codeHash: "0xddee60ce5afbc508b0337fb170b3e7446775db08a444635eaa3cfea0ff575fdb",
|
|
176
|
+
capabilities: 123n,
|
|
177
|
+
configVersion: 6,
|
|
178
|
+
enabled: true,
|
|
179
|
+
});
|
|
180
|
+
const dynamicFeePoolPreset = Object.freeze({
|
|
181
|
+
key: KnownLifecycleProfile.V4DynamicFeePool,
|
|
182
|
+
supported: true,
|
|
183
|
+
profile: Object.freeze({
|
|
184
|
+
id: "0x27f219872fe934a5464bc9b900028256122f215b40cbdb69ef5f88cd5f627ccb",
|
|
185
|
+
registration: Object.freeze({
|
|
186
|
+
adapterId: "0xce1347ee563f66097199aee9c7c651e1b938972924dc271605db1b6721502bc3",
|
|
187
|
+
configSchema: "0x51c5ca14c40012f78425cd1afb1ea77980da3fed0490a00911a8a4ed34792045",
|
|
188
|
+
dependencyDigest: "0x599fd5154bef5751fdb6e1265586c7eced3d3e7ebd2c6f0066a20f9c8b7bf810",
|
|
189
|
+
venue: dynamicFeePoolEnvelope.graph.manager,
|
|
190
|
+
factory: zeroAddress,
|
|
191
|
+
hook: zeroAddress,
|
|
192
|
+
capabilities: 123n,
|
|
193
|
+
enabled: true,
|
|
194
|
+
}),
|
|
195
|
+
adapter: dynamicFeePoolAdapter,
|
|
196
|
+
topology: Object.freeze({
|
|
197
|
+
hookTopology: 2,
|
|
198
|
+
configVersion: 6,
|
|
199
|
+
hookDeployer: dynamicFeePoolEnvelope.graph.hookDeployer,
|
|
200
|
+
hookCreationCodeHash: dynamicFeePoolEnvelope.graph.hookCreationCodeHash,
|
|
201
|
+
}),
|
|
202
|
+
venueKind: "uniswap-v4",
|
|
203
|
+
envelope: dynamicFeePoolEnvelope,
|
|
204
|
+
developerTerms: Object.freeze({
|
|
205
|
+
adapter: dynamicFeePoolAdapter.implementation,
|
|
206
|
+
beneficiary: dynamicFeePoolEnvelope.beneficiary,
|
|
207
|
+
maximumDeveloperFeeBps: dynamicFeePoolEnvelope.maximumDeveloperFeeBps,
|
|
208
|
+
termsDigest: dynamicFeePoolEnvelope.termsDigest,
|
|
209
|
+
enabled: true,
|
|
210
|
+
}),
|
|
211
|
+
protocolMaximumDeveloperFeeBps: 2400,
|
|
212
|
+
}),
|
|
213
|
+
boundHook: Object.freeze({
|
|
214
|
+
creationCode: dynamicFeePoolHookV1CreationCode,
|
|
215
|
+
deployer: dynamicFeePoolEnvelope.graph.hookDeployer,
|
|
216
|
+
poolManager: dynamicFeePoolEnvelope.graph.manager,
|
|
217
|
+
oracleFactory: dynamicFeePoolEnvelope.graph.oracleFactory,
|
|
218
|
+
liquidityLocker: dynamicFeePoolEnvelope.graph.locker,
|
|
219
|
+
registrar: dynamicFeePoolAdapter.implementation,
|
|
220
|
+
}),
|
|
221
|
+
});
|
|
147
222
|
const knownDeployment = Object.freeze({
|
|
148
223
|
chainId: 4663n,
|
|
149
224
|
orchestrator: "0x91560876033d568d25CDe98C78c33ff8FC43962c",
|
|
@@ -157,6 +232,7 @@ const knownDeployment = Object.freeze({
|
|
|
157
232
|
abyssPreset(KnownLifecycleProfile.Abyss2, "0x49b3bd30fe302526d7799f2ef15f3b2b261b5c44e075aa48b98c6b37148b7d59"),
|
|
158
233
|
abyssPreset(KnownLifecycleProfile.Abyss3, "0xe1bd95e086469e6afd9791ccc957e4d22b735012cb3db4a747f703673c62c306"),
|
|
159
234
|
fixedFeePoolPreset,
|
|
235
|
+
dynamicFeePoolPreset,
|
|
160
236
|
]),
|
|
161
237
|
provenance: Object.freeze({ sourceCommit: "e174ce695c7010f50ca9211b07b9f178c990beac", deploymentBlock: 82880546n }),
|
|
162
238
|
});
|
|
@@ -188,7 +264,7 @@ export function getKnownLifecycleProfile(options) {
|
|
|
188
264
|
}
|
|
189
265
|
return undefined;
|
|
190
266
|
}
|
|
191
|
-
/** Stable, frozen
|
|
267
|
+
/** Stable, frozen order: Abyss variants 0 through 3, then fixed and dynamic pool-bound V4. */
|
|
192
268
|
export function listKnownLifecycleProfiles(options) {
|
|
193
269
|
return getKnownLifecycleDeployment(options)?.profiles ?? noProfiles;
|
|
194
270
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/lifecycle/presets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kDAAkD,CAAC;
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/lifecycle/presets.ts"],"names":[],"mappings":"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"}
|
package/docs/launch-lifecycle.md
CHANGED
|
@@ -7,19 +7,40 @@ The canonical authorities are the registry/certification/adapter/config contract
|
|
|
7
7
|
in the protocol repository. Plan identity is `LaunchPlanV1`. Pool-bound V4 uses **config 6**,
|
|
8
8
|
canonical Abyss uses **config 1**, and generic current shared-V4 support uses **config 4**.
|
|
9
9
|
|
|
10
|
+
## 0.8.1 release
|
|
11
|
+
|
|
12
|
+
Adds the Robinhood October11 Dynamic Fee Hook preset:
|
|
13
|
+
`KnownLifecycleHook.DynamicFeePoolV1` and `KnownLifecycleProfile.V4DynamicFeePool`
|
|
14
|
+
(`"v4-dynamic-fee-pool"`), profile
|
|
15
|
+
`0x27f219872fe934a5464bc9b900028256122f215b40cbdb69ef5f88cd5f627ccb`. The fixed
|
|
16
|
+
preset and example default are unchanged.
|
|
17
|
+
|
|
18
|
+
## 0.8.0 release
|
|
19
|
+
|
|
20
|
+
This release adds unstarted-launch topology validation, boundary tails enabled by
|
|
21
|
+
default, and the generalized `positionGaps` option replacing `staircaseBoundaries`.
|
|
22
|
+
The TypeScript examples default to an unsigned dry run; `--broadcast` explicitly
|
|
23
|
+
authorizes execution without an interactive hash prompt. `--resume` retains the
|
|
24
|
+
original plan, receipt evidence, and metadata session instead of relaunching.
|
|
25
|
+
The opt-in `LifecycleSessionCache` below reuses only the allowlisted static reads
|
|
26
|
+
at the same canonical chain/block; execution proof and financial state stay live.
|
|
27
|
+
|
|
10
28
|
## 0.7.1 transaction-first construction
|
|
11
29
|
|
|
12
30
|
Known chain/core/profile identities use frozen release construction metadata.
|
|
13
31
|
`getKnownLifecycleDeployment`, `getKnownLifecycleProfile` and
|
|
14
32
|
`listKnownLifecycleProfiles` are pure, browser-safe selectors. Profile selection
|
|
15
33
|
accepts either `KnownLifecycleProfile` keys or exact profile IDs.
|
|
16
|
-
`KnownLifecycleHook.FixedFeePoolV1`
|
|
34
|
+
`KnownLifecycleHook.FixedFeePoolV1` and `KnownLifecycleHook.DynamicFeePoolV1`
|
|
35
|
+
identify the fixed hook and **Dynamic Fee Hook** respectively; both use the V2 constructor.
|
|
36
|
+
Select the latter with `KnownLifecycleProfile.V4DynamicFeePool` (`"v4-dynamic-fee-pool"`).
|
|
17
37
|
Unknown identities return no preset; explicit `readLifecycleProfiles` and unlisted
|
|
18
38
|
profile construction retain live discovery/certification. Presets describe release
|
|
19
39
|
availability, never current admission, and contain no `admitted` claim.
|
|
20
|
-
The
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
The Robinhood presets retain the mined October8 fixed config6 graph and add the
|
|
41
|
+
October11 zero-author-royalty Dynamic Fee Hook, each with its own exact artifact,
|
|
42
|
+
review, terms, runtime pins, creation-code chunks and 20-word V2 constructor.
|
|
43
|
+
Historical config5 codecs and 18-word V1 ABIs remain explicit for
|
|
23
44
|
existing deployments, but October5 evidence is not relabeled or selected as the
|
|
24
45
|
current preset. Explicit live discovery certifies unlisted deployments from actual
|
|
25
46
|
pinned reads.
|
|
@@ -161,7 +182,7 @@ No cross-review execution cache, caller certificate or execution-proof skip exis
|
|
|
161
182
|
Recovery and `buildNextTransaction` acquire fresh authority and retain separate
|
|
162
183
|
immediate-submission-provider preflight. Construction/proof is not submission.
|
|
163
184
|
|
|
164
|
-
##
|
|
185
|
+
## Reviewed next envelopes
|
|
165
186
|
|
|
166
187
|
`BuildNextTransactionOptions.reviewedTransaction` optionally supplies an untrusted
|
|
167
188
|
previously reviewed immediate transaction. Omit it to construct a new envelope
|
|
@@ -498,12 +519,24 @@ capabilities and explicit atomic/staged behavior are unchanged.
|
|
|
498
519
|
|
|
499
520
|
Robinhood mainnet (`4663`) selects the mined `pool-launch-v1` deployment captured at block
|
|
500
521
|
`82880546` in `contracts/deployments/launch/pool-launch-v1/20261008T000141Z-e174ce6/manifest.json`.
|
|
501
|
-
The manifest records 22 successful receipts and canonical runtime evidence
|
|
502
|
-
adapters and five
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
522
|
+
The October8 manifest records 22 successful receipts and canonical runtime evidence,
|
|
523
|
+
with two adapters and five profiles at that deployment. The subsequent October11
|
|
524
|
+
Dynamic Fee Hook admission adds a third adapter and sixth profile to the same
|
|
525
|
+
core/registry: four canonical Abyss variants and fixed/dynamic pool-bound config6/V2.
|
|
526
|
+
Neither offering deploys a shared V4 root. The fixed preset and example selection
|
|
527
|
+
remain `0xf18140c2fb66a4202a0f22d62d6288bf7976db108de5381e5497aaed332a06f8`,
|
|
528
|
+
with creation hash `0x11c4c7b1f265ed708b7d53ab828c89d237ca821333daa808f1913986c6f8f1ab`.
|
|
529
|
+
The Dynamic Fee Hook profile is
|
|
530
|
+
`0x27f219872fe934a5464bc9b900028256122f215b40cbdb69ef5f88cd5f627ccb`,
|
|
531
|
+
with creation hash `0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a`.
|
|
532
|
+
Its exact graph and terms are prepared in
|
|
533
|
+
`contracts/deployments/launch/pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json`;
|
|
534
|
+
that file is **unsigned preparation, not a mined receipt**. Registration is evidenced
|
|
535
|
+
by the successful `forge-broadcast/AdmitPoolHookTemplateV1.s.sol/4663/admit-latest.json`
|
|
536
|
+
receipt for `0x1928b13d1a6bf8826d08493a18c483fc7d244a3ec4100a7f8118f510a5db640c`.
|
|
537
|
+
Creation bytes concatenate the preserved storage-child runtimes after stripping each
|
|
538
|
+
first STOP byte, exactly as `PoolHookDeployerV1._initCode` does; constructor arguments
|
|
539
|
+
are appended separately. An unpatched artifact runtime is not a deployed hook-instance runtime.
|
|
507
540
|
October5 config5/V1 evidence remains historical, never a substitute for this graph.
|
|
508
541
|
|
|
509
542
|
| SDK field | Mainnet address |
|
|
@@ -639,6 +672,15 @@ calculation. Sensitivity's encoded units are fee-pips × seconds/tick; they do n
|
|
|
639
672
|
imply an active oracle-driven fee formula. Registered oracle configuration still
|
|
640
673
|
governs the pool's oracle behavior, not this hook's fixed fee rate.
|
|
641
674
|
|
|
675
|
+
The registered **Dynamic Fee Hook** instead uses the oracle's upward quote-per-base
|
|
676
|
+
tick velocity: `minimum + floor(positiveTickChange * sensitivity / elapsedSeconds)`,
|
|
677
|
+
capped at `hookFeePips` (the maximum). Quiet/falling prices, zero elapsed time or zero
|
|
678
|
+
sensitivity use the minimum. Select its own preset/terms, set **`lpFeePips: 0`** and
|
|
679
|
+
explicitly encode all three config6 fee settings. Its reviewed author allocation is
|
|
680
|
+
**0 bps**, so `developerFeeBps` must be zero. Generic config6 codecs do not identify
|
|
681
|
+
fee behavior or certify constructor compatibility; live constructor/simulation
|
|
682
|
+
authority remains required. Fixed launch examples continue selecting the fixed preset.
|
|
683
|
+
|
|
642
684
|
```ts
|
|
643
685
|
const profile = profiles.find((row) => row.id === selectedProfileId);
|
|
644
686
|
if (!profile?.admitted || !profile.envelope || !profile.developerTerms) throw new Error("Selected profile is not reviewed/admitted");
|
package/examples/README.md
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
# Examples
|
|
2
2
|
|
|
3
|
-
The launch examples use the public `@black-market/sdk` package and viem.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
the October8 mined pool-bound V4 config6/V2 and canonical Abyss config1 deployment.
|
|
8
|
-
|
|
3
|
+
The launch examples use the public `@black-market/sdk` 0.8.1 package and viem.
|
|
4
|
+
Build this checkout before running its examples; in a consumer project install
|
|
5
|
+
`@black-market/sdk@0.8.0` or later for the `positionGaps` and recovery APIs.
|
|
6
|
+
The default chain-4663 launch cases retain
|
|
7
|
+
the October8 mined fixed pool-bound V4 config6/V2 and canonical Abyss config1 deployment.
|
|
8
|
+
The SDK additionally knows the October11 zero-author-royalty Dynamic Fee Hook;
|
|
9
|
+
its registration does not change the fixed cases' selection or fee schedule.
|
|
10
|
+
Historical October5 config5 evidence is not relabeled as these graphs. Discovery
|
|
9
11
|
is read-only; fixed launch examples default to an unsigned dry run. Only
|
|
10
12
|
`--broadcast` (or deliberate `--resume` continuation) authorizes real writes.
|
|
11
13
|
|
|
@@ -20,7 +22,7 @@ examples; their relative support imports use explicit `.ts` extensions for Node
|
|
|
20
22
|
| `launch.ts` | Reviews/reconstructs an explicit saved plan and selected atomic/staged mode; optional offchain config6/V2 salt mining. Prints simulation, progress, and an admitted unsigned next transaction when evidence permits. |
|
|
21
23
|
| `generate-lifecycle-commitment-fixture.ts` | Frozen independent historical config4/Abyss ABI bytes/hash/identity vector. Its pre-cutover allocations are not an executable 0.7.1 plan. |
|
|
22
24
|
| `launch-lifecycle-smoke.ts` | Actual SDK launch/recovery/custody/fee operations, only on an explicitly authorized owned disposable loopback graph. |
|
|
23
|
-
| `launch-erc20-*.ts`, `launch-erc404-*.ts` | Eleven independent fixed cases: unsigned end-to-end planning by default; `--broadcast` adds guarded local signing, chain verification and mandatory API publication/indexing.
|
|
25
|
+
| `launch-erc20-*.ts`, `launch-erc404-*.ts` | Eleven independent fixed cases: unsigned end-to-end planning by default; `--broadcast` adds guarded local signing, chain verification and mandatory API publication/indexing. |
|
|
24
26
|
|
|
25
27
|
## Deployed read-only discovery
|
|
26
28
|
|
|
@@ -483,7 +485,7 @@ The examples have been reviewed against `abyss-app`'s `scripts/launch-node.mjs`,
|
|
|
483
485
|
`launch-node-deploy.mjs`, `launch-browser-wallet.mjs`, `launch-staged-smoke.mjs`,
|
|
484
486
|
`launch-review-smoke.mjs`, and `src/lib/creation` / `src/lib/lifecycle` authoring,
|
|
485
487
|
funding, execution and recovery modules. These are behavioral references, not SDK
|
|
486
|
-
dependencies. The application
|
|
488
|
+
dependencies. The application consumes the published **`@black-market/sdk` 0.8.1** and
|
|
487
489
|
derives current deployment defaults through **`getAddresses`**, as do these examples.
|
|
488
490
|
The package pin alone is not live deployment authority. The mined graph
|
|
489
491
|
is recorded in the contracts repository at
|
|
@@ -182,6 +182,18 @@ export async function discoverExampleQuoteOracles({ client, fixture, scenario, q
|
|
|
182
182
|
addressEqual(canonical?.hash, block.hash, "Pinned quote/oracle block remains canonical");
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
+
/** Fixed launch cases retain their exact known offering when more hooks are admitted. */
|
|
186
|
+
export function selectExampleFixedV4Profile({ profiles, fixture, sdk }) {
|
|
187
|
+
const fixed = sdk.getKnownLifecycleProfile({ chainId: BigInt(fixture.chainId), orchestrator: fixture.orchestrator,
|
|
188
|
+
key: sdk.KnownLifecycleProfile.V4FixedFeePool });
|
|
189
|
+
const bound = profiles.filter((row) => (!fixed || same(row.id, fixed.profile.id)) &&
|
|
190
|
+
row.venueKind === "uniswap-v4" && row.topology.hookTopology === 2 &&
|
|
191
|
+
row.topology.configVersion === 6 && same(row.registration.configSchema, sdk.V4_POOL_BOUND_LIFECYCLE_CONFIG_SCHEMA_V6) &&
|
|
192
|
+
row.adapter.configVersion === 6 && row.envelope?.configVersion === 6);
|
|
193
|
+
if (bound.length !== 1 || !bound[0].admitted || !bound[0].envelope || !bound[0].developerTerms) throw exampleError("PROFILE_NOT_ADMITTED", "The fixed case requires its exact admitted pool-bound V4 config6/V2 profile, schema and frozen terms; unlisted graphs require an unambiguous offering", { data: bound });
|
|
194
|
+
return bound[0];
|
|
195
|
+
}
|
|
196
|
+
|
|
185
197
|
|
|
186
198
|
async function constructPlan({ client, fixture, scenario, sdk, artifacts, signal, limits, metadata, image }) {
|
|
187
199
|
const read = contractReader(client);
|
|
@@ -191,11 +203,7 @@ async function constructPlan({ client, fixture, scenario, sdk, artifacts, signal
|
|
|
191
203
|
artifacts.event("registry-profiles", { profiles });
|
|
192
204
|
const selected = {};
|
|
193
205
|
if (scenario.markets.some((row) => row.venue === "v4")) {
|
|
194
|
-
|
|
195
|
-
row.topology.configVersion === 6 && same(row.registration.configSchema, sdk.V4_POOL_BOUND_LIFECYCLE_CONFIG_SCHEMA_V6) &&
|
|
196
|
-
row.adapter.configVersion === 6 && row.envelope?.configVersion === 6);
|
|
197
|
-
if (bound.length !== 1 || !bound[0].admitted || !bound[0].envelope || !bound[0].developerTerms) throw exampleError("PROFILE_NOT_ADMITTED", "An unambiguous admitted pool-bound V4 config6/V2 profile with its exact schema and frozen terms is required", { data: bound });
|
|
198
|
-
selected.v4 = bound[0];
|
|
206
|
+
selected.v4 = selectExampleFixedV4Profile({ profiles, fixture, sdk });
|
|
199
207
|
}
|
|
200
208
|
if (scenario.markets.some((row) => row.venue === "abyss")) {
|
|
201
209
|
const canonical = [];
|
package/package.json
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Exact config6/V2 constructor creation code from the registered zero-author-royalty Dynamic Fee Hook.
|
|
5
|
+
* Evidence: pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty/admission.json
|
|
6
|
+
* and contracts/evidence/verify-zero-royalty-20261011/children/ runtime.json files.
|
|
7
|
+
* PoolHookDeployerV1._initCode strips the first STOP byte from each storage-child runtime,
|
|
8
|
+
* concatenates chunk0 then chunk1, and appends the exact 20-word V2 arguments per market.
|
|
9
|
+
* Creation-code keccak256: 0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a.
|
|
10
|
+
* Creation-code size: 28918 bytes; constructor arguments add 640 bytes.
|
|
11
|
+
*/
|
|
12
|
+
export const dynamicFeePoolHookV1CreationCode: Hex = "0x610260604052348015610010575f5ffd5b506040516170f63803806170f683398101604081905261002f91610c9f565b808061003a81610471565b611afc613fff30161461006057604051632a96f9e160e21b815260040160405180910390fd5b80516001600160a01b039081166080908152602080840151831660a0908152604080860151851660c0526060860151851660e0529285015184166101005284015190921661012052516100b591839101610e24565b60408051808303601f1901815291905280516020909101206101609081526102408201516101809081526101208301516001600160a01b039081166101a05261026084015163ffffffff166101c052908301519183015160189290921b66ffffffff0000001662ffffff909216919091176101e05260a082015160c08301519082169116105f8161014a578260a00151610150565b8260c001515b90505f82610162578360c00151610168565b8360a001515b6001600160a01b038084166102008190529082166102208190526040805160a081018252928352602083019190915260e087015162ffffff169082015261010086015160020b60608201523060808201529091506101c78160a0902090565b6101405280515f80546001600160a01b03199081166001600160a01b03938416178255602080850151600180546040808901516060808b0151958a166001600160b81b031990941693909317600160a01b62ffffff928316021762ffffff60b81b1916600160b81b91909516029390931782556080808901516002805490971690891617909555825161012081018452958652938b015186169285019290925260c08a0151909416938301939093526101a088015191929083019160ff169081111561029557610295610fc9565b60018111156102a6576102a6610fc9565b815261014087015162ffffff166020808301919091526101c088015160ff166040808401919091526101e08901516001600160a01b039081166060808601919091526102008b0151151560808601526102208b015160a0909501949094528451600380549183166001600160a01b031992831617815593860151600480549184169183169190911790559185015160058054919092169281168317825593850151929390916001600160a81b031990911617600160a01b83600181111561036f5761036f610fc9565b0217905550608082015160028201805460a08086015160ff16600160c01b0260ff60c01b1962ffffff909516600160a81b029490941663ffffffff60a81b199092169190911792909217905560c08084015160038401805460e08701511515600160a01b026001600160a81b03199091166001600160a01b03938416171790556101009094015160049093019290925588015190880151908216911610610240525050506102208301515f925082915061042890610b1e565b6016805461ffff909216600160e01b0261ffff60e01b1962ffffff909416600160c81b029390931664ffffffffff60c81b19909216919091179190911790555061103a92505050565b80516001600160a01b03163b1580610495575060208101516001600160a01b03163b155b806104ac575060408101516001600160a01b03163b155b806104c3575060608101516001600160a01b03163b155b806104da575060808101516001600160a01b03163b155b806104f1575060c08101516001600160a01b03163b155b80610507575060a08101516001600160a01b0316155b8061052b57508060c001516001600160a01b03168160a001516001600160a01b0316145b80610542575060a08101516001600160a01b031630145b80610566575080606001516001600160a01b031681602001516001600160a01b0316145b806105895750805f01516001600160a01b031681602001516001600160a01b0316145b806105a0575060208101516001600160a01b031630145b806105b7575060608101516001600160a01b031630145b806105ce575060808101516001600160a01b031630145b806105f15750805f01516001600160a01b031681608001516001600160a01b0316145b80610604575060e081015162ffffff1615155b8061061a5750600160020b81610100015160020b125b806106315750610100810151617fff60029190910b135b8061065757506401000276a36001600160a01b03168161012001516001600160a01b0316105b8061068d575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168161012001516001600160a01b031610155b806106a95750620f424062ffffff1681610140015162ffffff16115b806106c7575080610140015162ffffff1681610160015162ffffff16115b806106dd5750600160ff16816101a0015160ff16115b8061071457506101c081015160ff161580159061071457506004816101c0015160ff1610806107145750600a816101c0015160ff16115b8061073d57506101c081015160ff161580159061073d57506101e08101516001600160a01b0316155b8061075557506101e08101516001600160a01b031630145b806107795750805f01516001600160a01b0316816101e001516001600160a01b0316145b8061079e575080608001516001600160a01b0316816101e001516001600160a01b0316145b806107ac5750610240810151155b806107c0575061026081015163ffffffff16155b806107d65750602081610260015163ffffffff16115b156107f45760405163c52a9bd360e01b815260040160405180910390fd5b5f816020015190505f8260800151905082606001516001600160a01b0316826001600160a01b031663f2f4eb266040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108729190610fdd565b6001600160a01b03161415806108fc5750825f01516001600160a01b0316826001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f09190610fdd565b6001600160a01b031614155b8061097c575082604001516001600160a01b0316826001600160a01b031663c7f7fb906040518163ffffffff1660e01b8152600401602060405180830381865afa15801561094c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109709190610fdd565b6001600160a01b031614155b806109fc575082608001516001600160a01b0316826001600160a01b031663d7b96d4e6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f09190610fdd565b6001600160a01b031614155b80610a7c575082602001516001600160a01b0316816001600160a01b03166316eebd1e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a709190610fdd565b6001600160a01b031614155b80610afb5750825f01516001600160a01b0316816001600160a01b031663dc4c90d36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610acb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aef9190610fdd565b6001600160a01b031614155b15610b195760405163c52a9bd360e01b815260040160405180910390fd5b505050565b5f5f60c0516001600160a01b031663deee4135846040518263ffffffff1660e01b8152600401610b5091815260200190565b6040805180830381865afa158015610b6a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8e9190610fff565b909250905062ffffff82161580610bac5750620d89e862ffffff8316115b80610bbb575060028161ffff16105b80610bcb575061100061ffff8216115b15610be95760405163c52a9bd360e01b815260040160405180910390fd5b915091565b60405161028081016001600160401b0381118282101715610c1d57634e487b7160e01b5f52604160045260245ffd5b60405290565b6001600160a01b0381168114610c37575f5ffd5b50565b8051610c4581610c23565b919050565b805162ffffff81168114610c45575f5ffd5b8051600281900b8114610c45575f5ffd5b805163ffffffff81168114610c45575f5ffd5b805160ff81168114610c45575f5ffd5b80518015158114610c45575f5ffd5b5f610280828403128015610cb1575f5ffd5b50610cba610bee565b610cc383610c3a565b8152610cd160208401610c3a565b6020820152610ce260408401610c3a565b6040820152610cf360608401610c3a565b6060820152610d0460808401610c3a565b6080820152610d1560a08401610c3a565b60a0820152610d2660c08401610c3a565b60c0820152610d3760e08401610c4a565b60e0820152610d496101008401610c5c565b610100820152610d5c6101208401610c3a565b610120820152610d6f6101408401610c4a565b610140820152610d826101608401610c4a565b610160820152610d956101808401610c6d565b610180820152610da86101a08401610c80565b6101a0820152610dbb6101c08401610c80565b6101c0820152610dce6101e08401610c3a565b6101e0820152610de16102008401610c90565b61020082015261022083810151908201526102408084015190820152610e0a6102608401610c6d565b6102608201529392505050565b6001600160a01b03169052565b5f61028082019050610e37828451610e17565b6020830151610e496020840182610e17565b506040830151610e5c6040840182610e17565b506060830151610e6f6060840182610e17565b506080830151610e826080840182610e17565b5060a0830151610e9560a0840182610e17565b5060c0830151610ea860c0840182610e17565b5060e0830151610ebf60e084018262ffffff169052565b50610100830151610ed661010084018260020b9052565b50610120830151610eeb610120840182610e17565b50610140830151610f0461014084018262ffffff169052565b50610160830151610f1d61016084018262ffffff169052565b50610180830151610f3761018084018263ffffffff169052565b506101a0830151610f4e6101a084018260ff169052565b506101c0830151610f656101c084018260ff169052565b506101e0830151610f7a6101e0840182610e17565b50610200830151610f9061020084018215159052565b50610220830151610220830152610240830151610240830152610260830151610fc261026084018263ffffffff169052565b5092915050565b634e487b7160e01b5f52602160045260245ffd5b5f60208284031215610fed575f5ffd5b8151610ff881610c23565b9392505050565b5f5f60408385031215611010575f5ffd5b61101983610c4a565b9150602083015161ffff8116811461102f575f5ffd5b809150509250929050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e051610200516102205161024051615deb61130b5f395f818161302901526136d001525f81816122570152818161235d015261379e01525f818161221601528181612322015261377d01525f818161047f0152818161059c01526134a801525f818161055a01526138dd01525f81816104cb015261136201525f6106fb01525f6103f101525f81816103560152818161096601528181610d69015281816110e8015281816113d1015281816115ed015281816116ef01528181611a1a01528181611e4b01528181611f8001528181612120015281816122f70152818161282d015281816129ae01528181612ce20152818161342a015281816134d70152818161386a015281816138a5015261443701525f818161088a01528181612e9f01528181613b1f015261451701525f818161053301528181610d3101528181610fc10152818161113601528181611fcc01528181612037015281816120a1015281816122d101528181612853015281816128f70152818161298b015261375c01525f818161082f01528181612eee01528181613b6e015261446f01525f818161066e01526111c001525f81816102d0015281816108f401528181610c650152818161132501528181612f380152818161395101526144f401525f818161072b01528181610adb01528181610b7101528181610ec2015281816110c7015281816112940152818161145b015281816115cc0152818161165f0152818161190a01528181611b7101528181611d8801528181612145015281816121b9015281816122b001528181612b1601528181612ba501528181612c22015281816134510152818161350f0152818161373b01528181613d3b015281816145d30152818161478f0152818161481e0152818161489b01528181614963015281816149ae0152614a1b0152615deb5ff3fe608060405234801561000f575f5ffd5b5060043610610239575f3560e01c80630268e2931461023d5780630581555f146102525780630885f7321461026c57806321d0ee701461028c578063259982e5146102b85780632b20e397146102cb578063359b4f301461030a5780633e451d6a1461032b57806342ea83e01461033e57806347f8496c1461035157806350fb3a3a146103785780635524d5481461038b578063575e24b4146103ae5780635955d09a146103ec57806360f89f2e14610413578063654f631c146104265780636fe7e6eb14610457578063747a68cd1461046a5780637dbeb94e1461047d578063847211a6146104b35780638bc801c1146104c657806391dd7346146104ed578063921b0bed1461050d5780639759164a1461052e5780639e5fe06214610555578063a3f4bac714610591578063a86911141461059a578063aae49d70146105c3578063ac4e4054146105cd578063ac5555aa146105d6578063b47b2fb1146105e9578063b6a8b0fa1461061f578063c5c51dca14610632578063c5fbb29814610647578063c67046af1461065a578063c7f7fb9014610669578063ca266dfe14610690578063ce1b8e4f146106f6578063d2be66251461071d578063dc4c90d314610726578063dd71cea81461074d578063e1b4af691461079a578063e2e65ec1146107ad578063f11457c7146107c0578063f2f4eb261461082a578063f399150c14610851578063f9bc70e714610872578063fc0c546a14610885578063fd5b6d5b146108ac575b5f5ffd5b61025061024b36600461515e565b6108bf565b005b5f5b60405161ffff90911681526020015b60405180910390f35b61027f61027a366004615178565b6109ba565b60405161026391906151d9565b61029f61029a3660046152d4565b610acf565b6040516001600160e01b03199091168152602001610263565b61029f6102c63660046152d4565b610b65565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610263565b61031d610318366004615354565b610c02565b604051908152602001610263565b61031d610339366004615382565b610c1f565b61025061034c36600461539d565b610c30565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b6102506103863660046153eb565b610dc4565b61039e610399366004615178565b610e9f565b6040519015158152602001610263565b6103c16103bc36600461541e565b610eb4565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610263565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b610250610421366004615477565b6110b8565b610439610434366004615178565b61119e565b6040805162ffffff909316835261ffff909116602083015201610263565b61029f6104653660046154cf565b611288565b61031d610478366004615382565b611428565b7f00000000000000000000000000000000000000000000000000000000000000005b60405162ffffff9091168152602001610263565b61031d6104c1366004615178565b61143c565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6105006104fb366004615526565b61144e565b6040516102639190615564565b61052061051b366004615599565b611573565b604051610263929190615611565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61057c7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610263565b6102f2613fff81565b7f000000000000000000000000000000000000000000000000000000000000000060181c61057c565b61049f620f424081565b6102f2611afc81565b61039e6105e4366004615178565b611638565b6105fc6105f736600461569d565b611652565b604080516001600160e01b03199093168352600f9190910b602083015201610263565b61029f61062d36600461571d565b6118fe565b61063a6119b0565b6040516102639190615776565b61031d610655366004615178565b611a5b565b600160405161026391906157b8565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b6106a361069e366004615178565b611a7d565b604051610263919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b61031d7f000000000000000000000000000000000000000000000000000000000000000081565b61025461100081565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61076061075b3660046157cb565b611b07565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091169183019190915215156060820152608001610263565b61029f6107a836600461571d565b611b65565b61031d6107bb366004615354565b611c17565b6107d36107ce366004615178565b611c35565b6040805161ffff998a168152978916602089015295881695870195909552600293840b60608701526001600160401b039283166080870152911660a0850152900b60c083015290911660e082015261010001610263565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61086461085f36600461515e565b611caa565b6040516102639291906157eb565b61049f6108803660046157f9565b611eb4565b6102f27f000000000000000000000000000000000000000000000000000000000000000081565b61031d6108ba366004615354565b611f21565b3068929eee149b4bd2126854036108dd5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610931576040516282b42960e81b815260040160405180910390fd5b61093a81611f3f565b6013541561095b576040516304c7cf6760e51b815260040160405180910390fd5b4260138190556040517f0000000000000000000000000000000000000000000000000000000000000000907ff1bac50d2c6f6c83cb8ff6fac488b03adc5fb0cc9fae30db2077588d5d9e5fbd905f90a33868929eee149b4bd212685550565b60408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152610a0b82611f7e565b6040805161012081018252600380546001600160a01b039081168352600454811660208401526005549081169383019390935290916060830190600160a01b900460ff166001811115610a6057610a6061519c565b6001811115610a7157610a7161519c565b8152600282015462ffffff600160a81b820416602083015260ff600160c01b9091048116604083015260038301546001600160a01b0381166060840152600160a01b9004161515608082015260049091015460a09091015292915050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b18576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610b365763ab143c065f526004601cfd5b610b3f85611f3f565b610b498685611fbd565b610b52846120f4565b5063021d0ee760e41b5b95945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bae576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610bcc5763ab143c065f526004601cfd5b610bd585611f3f565b610bdf8685611fbd565b610be76121e8565b610bf0846120f4565b5063259982e560e01b95945050505050565b5f610c0c83611f7e565b610c1582612213565b5490505b92915050565b5f610c2982612213565b5492915050565b3068929eee149b4bd212685403610c4e5763ab143c065f526004601cfd5b3068929eee149b4bd2126855336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ca2576040516282b42960e81b815260040160405180910390fd5b610cc3610cbe610cb736859003850185615867565b60a0902090565b611f7e565b60125460ff1615610ce757604051630ea075bf60e21b815260040160405180910390fd5b610cf0816122ae565b610cf9816125b7565b610d066020820182615382565b600380546001600160a01b0319166001600160a01b039283161790556012805460ff191660011790557f000000000000000000000000000000000000000000000000000000000000000016610d5e6020830183615382565b6001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007ffafdbdd88ac30f0aa936e576be61816ea751908540523fa81b80c4a406ad7bec60405160405180910390a43868929eee149b4bd21268555050565b3068929eee149b4bd212685403610de25763ab143c065f526004601cfd5b610deb82611f7e565b6016805461ffff600160e01b90910481169083161115610e15578054600160e01b900461ffff1691505b8054600160201b900461ffff165f610e2f60178386612619565b835461ffff60201b1916600160201b61ffff838116918202929092178655919250831614610e98576040805161ffff80851682528316602082015286917f04f592d3848fffa22f73de92a2fd8da837e6d597f468af77c6fc619b478362ae910160405180910390a25b5050505050565b5f610ea982611f7e565b505060125460ff1690565b5f8080336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eff576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd212685403610f1d5763ab143c065f526004601cfd5b60155460ff1615610f415760405163558a1e0360e11b815260040160405180910390fd5b610f4a87611f3f565b610f526121e8565b60035f610f5f8a896126ac565b90505f610f6c8a8a6126e4565b90505f62ffffff831615801590610f8a5750610f8a828c8c87612722565b15610fa857610fa5610f9f8b602001356127a6565b846127e1565b90505b6040516364b3357d60e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c9666afa90610ffa908f908f9087906004016159c8565b602060405180830381865afa158015611015573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103991906159f3565b90506110758c61104c60208e018e615a0a565b611056575f611058565b825b61106560208f018f615a0a565b61106f578361281f565b5f61281f565b81156110975761109783838760020160189054906101000a900460ff16612a0c565b506315d7892d60e21b965060801b94505f9350505050955095509592505050565b6110c183611f3f565b5f61110c7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000612d51565b5050600354919250506001600160a01b0384811691161415806111615750816001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b8061117357506001600160a01b038116155b156111905760405162820f3560e61b815260040160405180910390fd5b611198612e03565b50505050565b60405163deee413560e01b8152600481018290525f9081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063deee4135906024016040805180830381865afa158015611204573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112289190615a23565b909250905062ffffff821615806112465750620d89e862ffffff8316115b80611255575060028161ffff16105b80611265575061100061ffff8216115b156112835760405163c52a9bd360e01b815260040160405180910390fd5b915091565b5f336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112d1576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036112ef5763ab143c065f526004601cfd5b611304610cbe610cb736879003870187615867565b60125460ff16158061131d5750601254610100900460ff165b8061135a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b8061139757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b156113b45760405162820f3560e61b815260040160405180910390fd5b6113bd82612fe8565b6012805461ff0019166101001790556040517f0000000000000000000000000000000000000000000000000000000000000000907febcc9ffea17e08841d7588f2ecd87720e1cfb444bb3b5e662c4a5005c3c94ab2905f90a250636fe7e6eb60e01b5b949350505050565b5f61143282612213565b6003015492915050565b5f61144682611f7e565b505060135490565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611498576040516282b42960e81b815260040160405180910390fd5b60145415806114c0575060145483836040516114b5929190615a50565b604051809103902014155b156114de5760405163f7a632f560e01b815260040160405180910390fd5b5f60148190556114f083850185615867565b9050611500610cbe8260a0902090565b601254610100900460ff166115275760405162820f3560e61b815260040160405180910390fd5b5f611534825f01516130f6565b90505f61154483602001516130f6565b905081816040516020016115599291906157eb565b604051602081830303815290604052935050505092915050565b60608061157f85611f7e565b6016805462010000900461ffff165f036115ac576040516329d9e10560e01b815260040160405180910390fd5b805461162b90429087908790600160301b810460020b9061ffff166116117f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061318f565b875460179695949392919062010000900461ffff16613212565b9250925050935093915050565b5f61164282611f7e565b5050601254610100900460ff1690565b5f80336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461169c576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036116ba5763ab143c065f526004601cfd5b60155460ff16156116de5760405163558a1e0360e11b815260040160405180910390fd5b6116e787611f3f565b5f61171560107f00000000000000000000000000000000000000000000000000000000000000008b8a61336d565b9050611722885f5f61281f565b60035f61172f8a8a6126e4565b90505f61173f60208c018c615382565b6001600160a01b0316826001600160a01b0316146117695761176460208c018c615382565b611779565b61177960408c0160208d01615382565b905062ffffff8416158015906117965750611796828c8c86612722565b1561182f575f6117b26117ac8c602001356127a6565b866127e1565b9050801561182d575f6117c860208e018e615382565b6001600160a01b0316846001600160a01b0316146117ef576117ea8b600f0b90565b6117f9565b6117f98b60801d90565b90506118098260208e0135615a73565b81600f0b1461182b5760405163161b48a960e21b815260040160405180910390fd5b505b505b62ffffff8416158061184a5750611848818c8c86612722565b155b15611866575063b47b2fb160e01b94505f93506118f392505050565b5f61187460208d018d615382565b6001600160a01b0316826001600160a01b03161461189b576118968a600f0b90565b6118a5565b6118a58a60801d90565b90505f6118bd6118b783600f0b6127a6565b876127e1565b905080156118e1576118e183828760020160189054906101000a900460ff16612a0c565b63b47b2fb160e01b9750955050505050505b965096945050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611947576040516282b42960e81b815260040160405180910390fd5b3068929eee149b4bd2126854036119655763ab143c065f526004601cfd5b60155460ff16156119895760405163558a1e0360e11b815260040160405180910390fd5b61199286611f3f565b61199d86868661281f565b50635b54587d60e11b9695505050505050565b60125460609060ff166119c3575f6119c6565b60015b60ff166001600160401b038111156119e0576119e0615813565b604051908082528060200260200182016040528015611a09578160200160208202803683370190505b5060125490915060ff1615611a58577f0000000000000000000000000000000000000000000000000000000000000000815f81518110611a4b57611a4b615a9a565b6020026020010181815250505b90565b5f611a6582611f7e565b601654600160881b90046001600160401b0316610c19565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152611ab082611f7e565b50506040805160a0810182525f546001600160a01b039081168252600154808216602084015262ffffff600160a01b82041693830193909352600160b81b909204600290810b606083015254909116608082015290565b5f5f5f5f611b1486611f7e565b5f60178661ffff8110611b2957611b29615a9a565b015463ffffffff811698600160201b820460060b9850600160581b82046001600160a01b03169750600160f81b90910460ff1695509350505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611bae576040516282b42960e81b815260040160405180910390fd5b60155460ff1615611bd25760405163558a1e0360e11b815260040160405180910390fd5b3068929eee149b4bd212685403611bf05763ab143c065f526004601cfd5b611bf986611f3f565b611c04865f5f61281f565b5063e1b4af6960e01b9695505050505050565b5f611c2183611f7e565b611c2a82612213565b600101549392505050565b5f5f5f5f5f5f5f5f611c4689611f7e565b505060165461ffff8082169962010000830482169950600160201b830482169850600160301b8304600290810b98506001600160401b03600160481b850481169850600160881b8504169650600160c81b8404900b9450600160e01b909204169150565b5f5f3068929eee149b4bd212685403611cca5763ab143c065f526004601cfd5b3068929eee149b4bd212685560155460ff1615611cfa5760405163558a1e0360e11b815260040160405180910390fd5b611d0383611f3f565b6003546001600160a01b03163314611d2d576040516282b42960e81b815260040160405180910390fd5b600854151580611d3e5750600c5415155b15611e3f575f83604051602001611d559190615aae565b60408051601f1981840301815290829052805160208201206014556348c8949160e01b825291505f906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906348c8949190611dbd908590600401615564565b5f604051808303815f875af1158015611dd8573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611dff9190810190615abc565b60145490915015611e235760405163f7a632f560e01b815260040160405180910390fd5b80806020019051810190611e379190615b4e565b909450925050505b336001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f4a93be8d0a356d70b54fdf016f78a2ed8b8a3c420952848eb4f4b2c4546405b68484604051611e9b9291906157eb565b60405180910390a33868929eee149b4bd2126855915091565b5f3068929eee149b4bd212685403611ed35763ab143c065f526004601cfd5b601254610100900460ff16611efa5760405162820f3560e61b815260040160405180910390fd5b611f02612e03565b5f611f0c836133db565b509050611f18816135bf565b9150505b919050565b5f611f2b83611f7e565b611f3482612213565b600201549392505050565b611f54610cbe610cb736849003840184615867565b601254610100900460ff16611f7b5760405162820f3560e61b815260040160405180910390fd5b50565b7f00000000000000000000000000000000000000000000000000000000000000008114611f7b5760405162820f3560e61b815260040160405180910390fd5b60155460ff16801561200e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158061200e5750604081013515155b1561202c5760405163558a1e0360e11b815260040160405180910390fd5b6013545f0361208b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461208757604051637cd5a0ad60e01b815260040160405180910390fd5b5050565b600654600160a01b900460ff1680156120d657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b1561208757604051630af9fb3360e21b815260040160405180910390fd5b604081013515806121165750601654600160481b90046001600160401b031643145b1561211e5750565b7f00000000000000000000000000000000000000000000000000000000000000005f61216a7f000000000000000000000000000000000000000000000000000000000000000083612d51565b5090925061217e9150506020840184615b70565b60020b8160020b12806121a6575061219c6040840160208501615b70565b60020b8160020b12155b156121b057505050565b6121e3816121de7f00000000000000000000000000000000000000000000000000000000000000008561318f565b61365a565b505050565b601554610100900460ff16156121fa57565b612202612e03565b6015805461ff001916610100179055565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361225557506008919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036122965750600c919050565b60405162820f3560e61b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f61231b837f0000000000000000000000000000000000000000000000000000000000000000612d51565b50505090507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b5f148061238057506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b155b8061239357506001600160a01b03811615155b806123bf57506001600160a01b0382166123b36040860160208701615382565b6001600160a01b031614155b806123ed57506005546001600160a01b03166123e16060860160408701615382565b6001600160a01b031614155b806124355750600554600160a01b900460ff1660018111156124115761241161519c565b6124216080860160608701615b89565b60018111156124325761243261519c565b14155b806124625750600554600160a81b900462ffffff1661245a60a0860160808701615ba7565b62ffffff1614155b8061248b5750600554600160c01b900460ff1661248560c0860160a08701615bc2565b60ff1614155b806124b957506006546001600160a01b03166124ad60e0860160c08701615382565b6001600160a01b031614155b806124e45750600654600160a01b900460ff1615156124df610100860160e08701615a0a565b151514155b806124f6575060075461010085013514155b8061251557506125096020850185615382565b6001600160a01b03163b155b8061253d57506001600160a01b0382166125326020860186615382565b6001600160a01b0316145b8061255c5750306125516020860186615382565b6001600160a01b0316145b8061258457506001600160a01b0383166125796020860186615382565b6001600160a01b0316145b156125a25760405163c52a9bd360e01b815260040160405180910390fd5b6111986125b26020860186615382565b613739565b5f5f6125c783610100013561119e565b6016549193509150600283810b600160c81b909204900b1415806125fb575060165461ffff828116600160e01b9092041614155b156121e35760405163c52a9bd360e01b815260040160405180910390fd5b5f8261ffff165f0361263e576040516329d9e10560e01b815260040160405180910390fd5b8261ffff168261ffff16116126545750816126a5565b825b8261ffff168161ffff1610156126a0576001858261ffff1661ffff811061267f5761267f615a9a565b01805463ffffffff191663ffffffff92909216919091179055600101612656565b508190505b9392505050565b5f5f5f6126b8846133db565b604082015191935091506126cf6010848888613bf8565b93506126db8282613c76565b50505092915050565b5f6126f26020830183615a0a565b15155f60208401351214612715576127106040840160208501615382565b6126a5565b6126a56020840184615382565b5f8060016002840154600160a01b900460ff1660018111156127465761274661519c565b1461277e576127586020850185615a0a565b6127715761276c6040860160208701615382565b61278d565b61276c6020860186615382565b60028301546001600160a01b03165b6001600160a01b03878116911614915050949350505050565b5f600160ff1b82036127cb57604051637e2df70960e11b815260040160405180910390fd5b5f82126127d85781610c19565b610c1982615be2565b5f6127f5838362ffffff16620f4240613c99565b905060016001607f1b03811115610c1957604051637e2df70960e11b815260040160405180910390fd5b60405162e568cf60e71b81527f000000000000000000000000000000000000000000000000000000000000000060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906372b4678090602401602060405180830381865afa1580156128a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c491906159f3565b5f036128cf57505050565b6015805460ff191660011790556040516381f8a9d160e01b81525f9081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906381f8a9d19061293090889088908890600401615bfc565b60408051808303815f875af115801561294b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061296f9190615b4e565b6015805460ff1916905560405191935091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016907f0000000000000000000000000000000000000000000000000000000000000000907fa30ca6140dfb2cac1c1021c5303d8dc7de0cd4db47221fb3ad068fac7ef8185e906129fd90869086906157eb565b60405180910390a35050505050565b3068929eee149b4bd212685403612a2a5763ab143c065f526004601cfd5b3068929eee149b4bd2126855825f612a4182612213565b90505f8160020154825f0154612a579190615c1b565b9050612a6a8160016001607f1b03615c1b565b851115612a7c57612a7c868383613d27565b5f60ff851615612aaf576064612a9560ff871688615c42565b612aa090607d615c55565b612aaa9190615c42565b612ab1565b5f5b905085835f015f828254612ac59190615c6c565b9250508190555080836001015f828254612adf9190615c6c565b9250508190555085836003015f828254612af99190615c6c565b9091555050604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90612b4c9030908990600401615c7f565b602060405180830381865afa158015612b67573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b8b91906159f3565b604051630ab714fb60e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063156e29f690612bde90309089908c90600401615c99565b5f604051808303815f87803b158015612bf5575f5ffd5b505af1158015612c07573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e90612c599030908a90600401615c7f565b602060405180830381865afa158015612c74573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9891906159f3565b905081811080612caa57508782820314155b80612cb85750846003015481105b15612cd65760405163104eed1d60e31b815260040160405180910390fd5b856001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000007f2616e25de5abcc9e6a698b140fb6c92f55ace21b7a57f76172f195dbbf693af68a86604051612d329291906157eb565b60405180910390a35050505050503868929eee149b4bd2126855505050565b5f5f5f5f5f612d5f86613dcb565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015612da7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612dcb91906159f3565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b601554610100900460ff1615612e1557565b6003546001600160a01b03165f612e3b612e3683630d96a1bf60e21b613e07565b613e21565b90505f612e5d8263537df88f60e11b6001600160a01b038616602460c0613e33565b9050606081015160a01c815160a01c1715612e76575f5ffd5b60a081015160808201511760101c15612e8d575f5ffd5b60c081016040525f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612ed3612e368563514526c360e11b613e07565b6001600160a01b0316141580612f2e57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612f22612e368563056a0fbf60e31b613e07565b6001600160a01b031614155b80612f63575081517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614155b80612f7757505f612f75836020015190565b145b80612f8b57505f612f89836040015190565b145b80612f9f57505f612f9d836060015190565b145b80612fb857508061ffff16612fb58360a0015190565b14155b80612fca5750608082015160a0830151115b156111985760405163c52a9bd360e01b815260040160405180910390fd5b6016612ff5601742613e68565b825465ffffffff00001916600160201b61ffff9283160263ffff000019161762010000929091169190910217815561304d827f0000000000000000000000000000000000000000000000000000000000000000613ea8565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b039081169190910291909117600160881b600160c81b031916600160881b42929092169190910217808255600290600160e01b900461ffff168111156130d757508054600160e01b900461ffff165b815461ffff8216600160201b0261ffff60201b19909116178255505050565b5f818161310282612213565b80549091505f81900361311957505f949350505050565b613133858384600201548461312e9190615c1b565b613d27565b6001820180545f8085559182905560028401919091556131538183615c1b565b60065490955061316e9085906001600160a01b031683613ebd565b6003546131869085906001600160a01b031687613ebd565b50505050919050565b5f5f61319a83613dcb565b90505f6131a8600383615c6c565b604051631e2eaeaf60e01b8152600481018290529091506001600160a01b03861690631e2eaeaf90602401602060405180830381865afa1580156131ee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5c91906159f3565b6060808261ffff165f03613239576040516329d9e10560e01b815260040160405180910390fd5b866001600160401b0381111561325157613251615813565b60405190808252806020026020018201604052801561327a578160200160208202803683370190505b509150866001600160401b0381111561329557613295615813565b6040519080825280602002602001820160405280156132be578160200160208202803683370190505b5090505f5b8781101561335f576133008b8b8b8b858181106132e2576132e2615a9a565b90506020020160208101906132f79190615cbd565b8a8a8a8a613f4d565b84838151811061331257613312615a9a565b6020026020010184848151811061332b5761332b615a9a565b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508060010190506132c3565b509850989650505050505050565b60018401545f9063ffffffff16801580613392575061338d8585856140f9565b865414155b156133b3576040516001620787ab60e51b0319815260040160405180910390fd5b6133be600182615ce0565b5f87556001909601805463ffffffff191690555093949350505050565b61342760408051610120810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290529061010082015290565b5f7f00000000000000000000000000000000000000000000000000000000000000008180806134767f000000000000000000000000000000000000000000000000000000000000000085612d51565b509250925092508062ffffff165f146134a25760405163c52a9bd360e01b815260040160405180910390fd5b8194505f7f000000000000000000000000000000000000000000000000000000000000000090506040518061012001604052807f00000000000000000000000000000000000000000000000000000000000000008152602001856001600160a01b031681526020016135347f00000000000000000000000000000000000000000000000000000000000000008861318f565b6001600160801b0316815260200189602001358152602001895f01602081019061355e9190615a0a565b1515815260055462ffffff600160a81b8204811660208401528416604083015263ffffffff601885901c16606083015260809091019060ff600160a01b9091041660018111156135b0576135b061519c565b81525096505050505050915091565b5f600160ff1b8260600151036135e857604051637e2df70960e11b815260040160405180910390fd5b60a082015160c08301516135fb8461412e565b92508162ffffff168362ffffff16111561362857604051637e2df70960e11b815260040160405180910390fd5b8062ffffff168362ffffff161015613653576040516302cce67760e31b815260040160405180910390fd5b5050919050565b601680546136919060179061ffff808216914291600160301b820460020b918891620100008204811691600160201b90041661418b565b825463ffffffff19166201000061ffff9283160261ffff1916179116178082556136f490600160301b8104600290810b918691600160c81b909104900b7f0000000000000000000000000000000000000000000000000000000000000000614307565b8154600160301b600160881b031916600160301b62ffffff9290921691909102600160481b600160881b03191617600160481b436001600160401b0316021790555050565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000005f6137d2612e3687630d96a1bf60e21b613e07565b90505f6137e0878585614370565b90506001600160a01b038616613800612e368963dc4c90d360e01b613e07565b6001600160a01b031614158061383b57506001600160a01b03851661382f612e3689636bdcb6a760e11b613e07565b6001600160a01b031614155b80613862575030613856612e3689636620eee760e11b613e07565b6001600160a01b031614155b8061389d57507f000000000000000000000000000000000000000000000000000000000000000061389a88631f06e1a760e11b613e07565b14155b806138d057507f00000000000000000000000000000000000000000000000000000000000000006138cd8861440b565b14155b80613911575063ffffffff7f00000000000000000000000000000000000000000000000000000000000000001661390e88634f2ff03160e11b613e07565b14155b8061394157506001600160a01b038616613935612e368763dc4c90d360e01b613e07565b6001600160a01b031614155b8061399157506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613985612e3687630b775e8f60e11b613e07565b6001600160a01b031614155b806139ab57505f6139a88662e568cf60e71b61442e565b14155b806139ca57506139ca6139c586630323715f60e11b61442e565b61445f565b806139e557505f6139e286635c0af38360e01b61442e565b14155b80613a0c57505f613a00612e3687630961712f60e01b61442e565b6001600160a01b031614155b80613a15575080155b80613a2857506001600160a01b0382163b155b80613a3b57506001600160a01b03821630145b80613a575750866001600160a01b0316826001600160a01b0316145b80613a735750846001600160a01b0316826001600160a01b0316145b80613a8f5750856001600160a01b0316826001600160a01b0316145b80613aab5750836001600160a01b0316826001600160a01b0316145b80613ac75750826001600160a01b0316826001600160a01b0316145b80613adf57506006546001600160a01b038381169116145b80613af757506006546001600160a01b038881169116145b15613b155760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613b53612e368463514526c360e11b613e07565b6001600160a01b0316141580613bae57506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ba2612e368463056a0fbf60e31b613e07565b6001600160a01b031614155b80613bc85750613bc86139c58363b3f05b9760e01b613e07565b15613be65760405163c52a9bd360e01b815260040160405180910390fd5b613bef8261446d565b50505050505050565b60018401545f9063ffffffff1615613c26576040516001620787ab60e51b0319815260040160405180910390fd5b8351613c31856135bf565b9150613c3e8185856140f9565b8655613c5062ffffff83166001615cfc565b600196909601805463ffffffff191663ffffffff90971696909617909555949350505050565b601654600160481b90046001600160401b0316431461208757612087828261365a565b82820281838583041485151702613d20575f198385098181108201900382848609835f038416828511613cd35763ae47f7025f526004601cfd5b93849004938382119092035f8390038390046001010292030417600260038302811880840282030280840282030280840282030280840282030280840282030280840290910302026126a5565b0492915050565b805f03613d3357505050565b8281613d5f827f000000000000000000000000000000000000000000000000000000000000000061474d565b1015613d7e576040516365169c1d60e01b815260040160405180910390fd5b81836003015f828254613d919190615c1b565b90915550613da29050818484614777565b613dad84308461494f565b81836002015f828254613dc09190615c6c565b909155505050505050565b6040515f90613dea908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b5f80613e1884848360046020613e33565b51949350505050565b5f8160a01c15613e2f575f5ffd5b5090565b6040518481526023198301613e49578360048201525b81818483895afa613e5c573d5f823e3d81fd5b813d1015610b5c575f5ffd5b6040805160808101825263ffffffff83168082525f602083018190529282019290925260016060909101819052600160f81b9091178355805b9250929050565b5f81613eb457826126a5565b6126a583615d18565b805f03613ec957505050565b5f613ed4843061474d565b90505f613ee1858561474d565b9050613eee858585614a9d565b5f613ef9863061474d565b90505f613f06878761474d565b905083821180613f1857508482850314155b80613f2257508281105b80613f2f57508483820314155b15613bef57604051631dc418c360e31b815260040160405180910390fd5b5f5f8663ffffffff165f03613ff3575f898661ffff1661ffff8110613f7457613f74615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a1614613fdf57613fdc818a8988614ae7565b90505b8060200151816040015192509250506140ed565b8688035f806140078c8c858c8c8c8c614b8d565b91509150815f015163ffffffff168363ffffffff16036140375781602001518260400151945094505050506140ed565b805f015163ffffffff168363ffffffff16036140635780602001518160400151945094505050506140ed565b5f825f0151825f01510390505f835f0151850390508063ffffffff168263ffffffff1660060b856020015185602001510360060b816140a4576140a4615c2e565b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816140dc576140dc615c2e565b048560400151019650965050505050505b97509795505050505050565b5f83838360405160200161410f93929190615d38565b6040516020818303038152906040528051906020012090509392505050565b5f8160c0015162ffffff168260a0015162ffffff161480614157575060e082015163ffffffff16155b15614164575060c0015190565b5f5f61416e614d68565b915091506114208460c001518560a001518660e001518585614dd8565b5f5f5f898961ffff1661ffff81106141a5576141a5615a9a565b60408051608081018252919092015463ffffffff808216808452600160201b830460060b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508916900361420e57888592509250506140ed565b8461ffff168461ffff16118015614236575061422b600186615d5b565b61ffff168961ffff16145b6142405784614242565b835b9150816142508a6001615d75565b61425a9190615d8f565b925061426881898989614ae7565b8a8461ffff1661ffff811061427f5761427f615a9a565b825191018054602084015160408501516060909501511515600160f81b026001600160f81b036001600160a01b03909616600160581b02959095166001600160581b0366ffffffffffffff909216600160201b026001600160581b031990931663ffffffff909516949094179190911716919091179190911790555097509795505050505050565b5f5f8560020b6143178685613ea8565b60020b6143249190615db2565b9050600284900b8082131561433b57809150614357565b61434481615be2565b8212156143575761435481615be2565b91505b61436582600289900b615a73565b979650505050505050565b5f80614388856371a9730560e01b8360046020613e33565b80519091506001600160a01b0380861691908516903d906001600160401b038111601f198301821117156143ba575f5ffd5b602081863e8451602080838503030481116001600160401b03821117156143df575f5ffd5b600281036143fe57604060208301873e83602087015114858751141696505b5050505050509392505050565b5f806144238363182148ef60e01b83600460a0613e33565b60a090209392505050565b5f5f613e1884847f000000000000000000000000000000000000000000000000000000000000000060246020613e33565b5f6001821115613e2f575f5ffd5b7f00000000000000000000000000000000000000000000000000000000000000005f6144a68263086fce0d60e11b836004610160613e33565b90505f6005905080604083015111602083015160201c17156144c6575f5ffd5b6101408201606083015b818110156144ee57805160a01c156144e6575f5ffd5b6020016144d0565b505081517f000000000000000000000000000000000000000000000000000000000000000091507f00000000000000000000000000000000000000000000000000000000000000009080158061454957506001604085015114155b8061456757506001600160a01b038316614564856060015190565b14155b8061458557506001600160a01b038316614582856080015190565b14155b806145a357506001600160a01b0382166145a08560a0015190565b14155b806145c357506005546001600160a01b03166145c08560c0015190565b14155b8061460157506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166145fe8560e0015190565b14155b1561461e576040516282b42960e81b815260040160405180910390fd5b5f61462a856020015190565b905061464386636373dff160e11b8460246101c0613e33565b94505f600190505f600590508060a0880151118260808901511117604088015160a01c1715614670575f5ffd5b610120870160c088015b8181101561469857805160a01c15614690575f5ffd5b60200161467a565b50506101a0870161012088015b818110156146c357805160201c156146bb575f5ffd5b6020016146a5565b5050865184925090501415806146de5750600160a086015114155b806146fc57506001600160a01b0383166146f98660c0015190565b14155b8061471a57506001600160a01b0387166147178660e0015190565b14155b80614730575061014085015163ffffffff821610155b15613bef576040516282b42960e81b815260040160405180910390fd5b5f816014526370a0823160601b5f5260208060246010865afa601f3d111660205102905092915050565b604051627eeac760e11b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e906147c59030908890600401615c7f565b602060405180830381865afa1580156147e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061480491906159f3565b604051637a94c56560e11b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f5298aca9061485790309088908790600401615c99565b5f604051808303815f87803b15801561486e575f5ffd5b505af1158015614880573d5f5f3e3d5ffd5b5050604051627eeac760e11b81525f92506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e906148d29030908990600401615c7f565b602060405180830381865afa1580156148ed573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061491191906159f3565b90508181118061492357508281830314155b806149315750836003015481105b15610e985760405163104eed1d60e31b815260040160405180910390fd5b805f0361495b57505050565b825f614987827f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614994838661474d565b604051630b0d9c0960e01b81529091506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630b0d9c09906149e790899089908990600401615c99565b5f604051808303815f87803b1580156149fe575f5ffd5b505af1158015614a10573d5f5f3e3d5ffd5b505050505f614a3f847f000000000000000000000000000000000000000000000000000000000000000061474d565b90505f614a4c858861474d565b905083821180614a5e57508582850314155b80614a6857508281105b80614a7557508583820314155b15614a9357604051631dc418c360e31b815260040160405180910390fd5b5050505050505050565b816014528060345263a9059cbb60601b5f5260205f604460105f875af18060015f511416614add57803d853b151710614add576390b8ec185f526004601cfd5b505f603452505050565b614aef615122565b5f855f01518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020015f856001600160801b031611614b40576001614b42565b845b6001600160801b031663ffffffff60801b608085901b1681614b6657614b66615c2e565b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b614b95615122565b614b9d615122565b888561ffff1661ffff8110614bb457614bb4615a9a565b60408051608081018252919092015463ffffffff8116808352600160201b820460060b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff16151560608201529250614c1290899089614e87565b15614c4b578663ffffffff16825f015163ffffffff1614614c3f5781614c3a83898988614ae7565b614c42565b81815b915091506140ed565b8883614c58876001615d75565b614c629190615d8f565b61ffff1661ffff8110614c7757614c77615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614d2057604080516080810182528a5463ffffffff81168252600160201b810460060b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614d2e88835f015189614e87565b614d4b57604051636ffbbccd60e11b815260040160405180910390fd5b614d588989898887614f45565b9150915097509795505050505050565b5f5f60165461ffff8160101c166001811115614dd25761ffff82168060170154826001840383010660170154915063ffffffff828203168015614dce578260201c8260201c0360060b8181059050808660301c60020b0397505063ffffffff8342031695505b5050505b50509091565b5f8462ffffff168662ffffff1610614df1575083610b5c565b5f83131580614e04575063ffffffff8216155b80614e13575063ffffffff8416155b15614e1f575084610b5c565b63ffffffff82811687870362ffffff160290849086168281614e4357614e43615c2e565b04811115614e55578692505050610b5c565b8363ffffffff168663ffffffff16820281614e7257614e72615c2e565b048862ffffff16019250505095945050505050565b5f8363ffffffff168363ffffffff1611158015614eb057508363ffffffff168263ffffffff1611155b15614ecc578163ffffffff168363ffffffff16111590506126a5565b5f8463ffffffff168463ffffffff1611614ef957614ef463ffffffff8516600160201b615c6c565b614f01565b8363ffffffff165b90505f8563ffffffff168463ffffffff1611614f3057614f2b63ffffffff8516600160201b615c6c565b614f38565b8363ffffffff165b9091111595945050505050565b614f4d615122565b614f55615122565b5f83614f62866001615d75565b614f6c9190615d8f565b61ffff1690505f60018561ffff1683614f859190615c6c565b614f8f9190615c1b565b90505b5f6002614f9f8385615c6c565b614fa99190615c42565b905089614fba61ffff881683615dd8565b61ffff8110614fcb57614fcb615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082018190529095506150375761502f816001615c6c565b925050614f92565b8961ffff8716615048836001615c6c565b6150529190615dd8565b61ffff811061506357615063615a9a565b60408051608081018252929091015463ffffffff81168352600160201b810460060b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094505f906150c6908b908b614e87565b90508080156150de57506150de8a8a875f0151614e87565b156150ea575050615116565b80615101576150fa600183615c1b565b925061510f565b61510c826001615c6c565b93505b5050614f92565b50509550959350505050565b604080516080810182525f80825260208201819052918101829052606081019190915290565b5f60a08284031215615158575f5ffd5b50919050565b5f60a0828403121561516e575f5ffd5b6126a58383615148565b5f60208284031215615188575f5ffd5b5035919050565b6001600160a01b03169052565b634e487b7160e01b5f52602160045260245ffd5b60028110611f7b57634e487b7160e01b5f52602160045260245ffd5b6151d5816151b0565b9052565b81516001600160a01b0390811682526020808401519091169082015260408083015161012083019161520d9084018261518f565b50606083015161522060608401826151cc565b506080830151615237608084018262ffffff169052565b5060a083015161524c60a084018260ff169052565b5060c083015161525f60c084018261518f565b5060e083015161527360e084018215159052565b5061010092830151919092015290565b6001600160a01b0381168114611f7b575f5ffd5b5f5f83601f8401126152a7575f5ffd5b5081356001600160401b038111156152bd575f5ffd5b602083019150836020828501011115613ea1575f5ffd5b5f5f5f5f5f8587036101608112156152ea575f5ffd5b86356152f581615283565b95506153048860208901615148565b9450608060bf1982011215615317575f5ffd5b5060c0860192506101408601356001600160401b03811115615337575f5ffd5b61534388828901615297565b969995985093965092949392505050565b5f5f60408385031215615365575f5ffd5b82359150602083013561537781615283565b809150509250929050565b5f60208284031215615392575f5ffd5b81356126a581615283565b5f5f8284036101c08112156153b0575f5ffd5b6153ba8585615148565b9250610120609f19820112156153ce575f5ffd5b5060a0830190509250929050565b61ffff81168114611f7b575f5ffd5b5f5f604083850312156153fc575f5ffd5b823591506020830135615377816153dc565b5f60608284031215615158575f5ffd5b5f5f5f5f5f6101408688031215615433575f5ffd5b853561543e81615283565b945061544d8760208801615148565b935061545c8760c0880161540e565b92506101208601356001600160401b03811115615337575f5ffd5b5f5f5f60e08486031215615489575f5ffd5b6154938585615148565b925060a08401356154a381615283565b915060c08401356154b381615283565b809150509250925092565b8035600281900b8114611f1c575f5ffd5b5f5f5f5f61010085870312156154e3575f5ffd5b84356154ee81615283565b93506154fd8660208701615148565b925060c085013561550d81615283565b915061551b60e086016154be565b905092959194509250565b5f5f60208385031215615537575f5ffd5b82356001600160401b0381111561554c575f5ffd5b61555885828601615297565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f5f604084860312156155ab575f5ffd5b8335925060208401356001600160401b038111156155c7575f5ffd5b8401601f810186136155d7575f5ffd5b80356001600160401b038111156155ec575f5ffd5b8660208260051b8401011115615600575f5ffd5b939660209190910195509293505050565b604080825283519082018190525f9060208501906060840190835b8181101561564d57835160060b83526020938401939092019160010161562c565b5050838103602080860191909152855180835291810192508501905f5b818110156156915782516001600160a01b031684526020938401939092019160010161566a565b50919695505050505050565b5f5f5f5f5f5f61016087890312156156b3575f5ffd5b86356156be81615283565b95506156cd8860208901615148565b94506156dc8860c0890161540e565b935061012087013592506101408701356001600160401b038111156156ff575f5ffd5b61570b89828a01615297565b979a9699509497509295939492505050565b5f5f5f5f5f5f6101208789031215615733575f5ffd5b863561573e81615283565b955061574d8860208901615148565b945060c0870135935060e087013592506101008701356001600160401b038111156156ff575f5ffd5b602080825282518282018190525f918401906040840190835b818110156157ad57835183526020938401939092019160010161578f565b509095945050505050565b602081016157c5836151b0565b91905290565b5f5f604083850312156157dc575f5ffd5b50508035926020909101359150565b918252602082015260400190565b5f60608284031215615809575f5ffd5b6126a5838361540e565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561584f5761584f615813565b604052919050565b62ffffff81168114611f7b575f5ffd5b5f60a0828403128015615878575f5ffd5b5060405160a081016001600160401b038111828210171561589b5761589b615813565b60405282356158a981615283565b815260208301356158b981615283565b602082015260408301356158cc81615857565b60408201526158dd606084016154be565b606082015260808301356158f081615283565b60808201529392505050565b803561590781615283565b6001600160a01b03168252602081013561592081615283565b6001600160a01b03166020830152604081013561593c81615857565b62ffffff166040830152615952606082016154be565b60020b6060830152608081013561596881615283565b6001600160a01b03166080929092019190915250565b80358015158114611f1c575f5ffd5b6159968161597e565b151582526020818101359083015260408101356159b281615283565b6001600160a01b03166040929092019190915250565b61012081016159d782866158fc565b6159e460a083018561598d565b82610100830152949350505050565b5f60208284031215615a03575f5ffd5b5051919050565b5f60208284031215615a1a575f5ffd5b6126a58261597e565b5f5f60408385031215615a34575f5ffd5b8251615a3f81615857565b6020840151909250615377816153dc565b818382375f9101908152919050565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f831280158216821582161715615a9257615a92615a5f565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b60a08101610c1982846158fc565b5f60208284031215615acc575f5ffd5b81516001600160401b03811115615ae1575f5ffd5b8201601f81018413615af1575f5ffd5b80516001600160401b03811115615b0a57615b0a615813565b615b1d601f8201601f1916602001615827565b818152856020838501011115615b31575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f60408385031215615b5f575f5ffd5b505080516020909101519092909150565b5f60208284031215615b80575f5ffd5b6126a5826154be565b5f60208284031215615b99575f5ffd5b8135600281106126a5575f5ffd5b5f60208284031215615bb7575f5ffd5b81356126a581615857565b5f60208284031215615bd2575f5ffd5b813560ff811681146126a5575f5ffd5b5f600160ff1b8201615bf657615bf6615a5f565b505f0390565b60e08101615c0a82866158fc565b60a082019390935260c00152919050565b81810381811115610c1957610c19615a5f565b634e487b7160e01b5f52601260045260245ffd5b5f82615c5057615c50615c2e565b500490565b8082028115828204841417610c1957610c19615a5f565b80820180821115610c1957610c19615a5f565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b5f60208284031215615ccd575f5ffd5b813563ffffffff811681146126a5575f5ffd5b63ffffffff8281168282160390811115610c1957610c19615a5f565b63ffffffff8181168382160190811115610c1957610c19615a5f565b5f8160020b627fffff198103615d3057615d30615a5f565b5f0392915050565b8381526001600160a01b038316602082015260a08101611420604083018461598d565b61ffff8281168282160390811115610c1957610c19615a5f565b61ffff8181168382160190811115610c1957610c19615a5f565b5f61ffff831680615da257615da2615c2e565b8061ffff84160691505092915050565b8181035f831280158383131683831282161715615dd157615dd1615a5f565b5092915050565b5f82615de657615de6615c2e565b50069056";
|
package/src/lifecycle/presets.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type {
|
|
|
4
4
|
} from "./schema.js";
|
|
5
5
|
import type { LifecycleProfile } from "./types.js";
|
|
6
6
|
import { fixedFeePoolHookV1CreationCode } from "./deployments/fixed-fee-pool-hook-v1-20261008.js";
|
|
7
|
+
import { dynamicFeePoolHookV1CreationCode } from "./deployments/dynamic-fee-pool-hook-v1-20261011.js";
|
|
7
8
|
|
|
8
9
|
export enum KnownLifecycleProfile {
|
|
9
10
|
Abyss0 = "abyss-0",
|
|
@@ -11,10 +12,12 @@ export enum KnownLifecycleProfile {
|
|
|
11
12
|
Abyss2 = "abyss-2",
|
|
12
13
|
Abyss3 = "abyss-3",
|
|
13
14
|
V4FixedFeePool = "v4-fixed-fee-pool",
|
|
15
|
+
V4DynamicFeePool = "v4-dynamic-fee-pool",
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
export enum KnownLifecycleHook {
|
|
17
19
|
FixedFeePoolV1 = "fixed-fee-pool-v1",
|
|
20
|
+
DynamicFeePoolV1 = "dynamic-fee-pool-v1",
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
Object.freeze(KnownLifecycleProfile);
|
|
@@ -195,6 +198,81 @@ const fixedFeePoolPreset: LifecycleProfilePreset = Object.freeze({
|
|
|
195
198
|
}),
|
|
196
199
|
});
|
|
197
200
|
|
|
201
|
+
// pool-hook-template-v1/20261011T033141Z-dynamic-fee-zero-royalty: config.json,
|
|
202
|
+
// admission.json (unsigned preparation), preserved storage-child runtimes and the
|
|
203
|
+
// successful admit-latest.json receipt 0x1928b13d1a6bf8826d08493a18c483fc7d244a3ec4100a7f8118f510a5db640c.
|
|
204
|
+
// The admitted envelope shares the fixed profile's bounds and protocol terms,
|
|
205
|
+
// but has its own artifact, review, author terms, locker, deployer and adapter.
|
|
206
|
+
const dynamicFeePoolEnvelope = Object.freeze({
|
|
207
|
+
...fixedFeePoolEnvelope,
|
|
208
|
+
artifactDigest: "0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a",
|
|
209
|
+
reviewManifestDigest: "0x59c9c449ec9f1e5a552fd67e9538fe77055945f46513048115d1282d3a479589",
|
|
210
|
+
termsDigest: "0xbe3b09dc6d49fd548e76fed654b852039e8899e591ebacafc5e67f0692d0c699",
|
|
211
|
+
graph: Object.freeze({
|
|
212
|
+
...fixedFeePoolEnvelope.graph,
|
|
213
|
+
locker: "0x3C68D5d75C69DF755eD53EA51f0be609cA76402c",
|
|
214
|
+
lockerCodeHash: "0xbc55801d253d519818b7be0a0008c359dd9774c068f7b103bdd0b7d4997e7467",
|
|
215
|
+
hookDeployer: "0x59F83bC43A075C40c68dea444dcd9c639BE7F1E7",
|
|
216
|
+
hookDeployerCodeHash: "0x1b11f186b567721148b442eab0a922dd2a2e85ddbf3b729d239eef2379b319c3",
|
|
217
|
+
hookCreationCodeHash: "0xd448a4117b78714cc4f96824356c6a90ec666449fde5c57e2b7bbe072f5e4a7a",
|
|
218
|
+
codeChunk0: "0x766eB09552C91faea2bA9ae46832dFCeD6C60335",
|
|
219
|
+
codeChunk0Hash: "0x818c56bf10ae21129fe54f1b8991d6f807ce4ccef35b34c56251c1fd2d7d623f",
|
|
220
|
+
codeChunk1: "0x4Ce7Ed36Ea5E26a83c0Dc536C7Babc2EA171439c",
|
|
221
|
+
codeChunk1Hash: "0xbc73944bfa7e74df5968907a05fe2579a17ab155d3a0db407588d1baff51b4de",
|
|
222
|
+
}),
|
|
223
|
+
} satisfies LaunchEnvelopeV2);
|
|
224
|
+
|
|
225
|
+
const dynamicFeePoolAdapter = Object.freeze({
|
|
226
|
+
implementation: "0xDa8581E1241722154B44404a032C086708080519",
|
|
227
|
+
codeHash: "0xddee60ce5afbc508b0337fb170b3e7446775db08a444635eaa3cfea0ff575fdb",
|
|
228
|
+
capabilities: 123n,
|
|
229
|
+
configVersion: 6,
|
|
230
|
+
enabled: true,
|
|
231
|
+
} satisfies AdapterRegistrationV1);
|
|
232
|
+
|
|
233
|
+
const dynamicFeePoolPreset: LifecycleProfilePreset = Object.freeze({
|
|
234
|
+
key: KnownLifecycleProfile.V4DynamicFeePool,
|
|
235
|
+
supported: true,
|
|
236
|
+
profile: Object.freeze({
|
|
237
|
+
id: "0x27f219872fe934a5464bc9b900028256122f215b40cbdb69ef5f88cd5f627ccb",
|
|
238
|
+
registration: Object.freeze({
|
|
239
|
+
adapterId: "0xce1347ee563f66097199aee9c7c651e1b938972924dc271605db1b6721502bc3",
|
|
240
|
+
configSchema: "0x51c5ca14c40012f78425cd1afb1ea77980da3fed0490a00911a8a4ed34792045",
|
|
241
|
+
dependencyDigest: "0x599fd5154bef5751fdb6e1265586c7eced3d3e7ebd2c6f0066a20f9c8b7bf810",
|
|
242
|
+
venue: dynamicFeePoolEnvelope.graph.manager,
|
|
243
|
+
factory: zeroAddress,
|
|
244
|
+
hook: zeroAddress,
|
|
245
|
+
capabilities: 123n,
|
|
246
|
+
enabled: true,
|
|
247
|
+
}),
|
|
248
|
+
adapter: dynamicFeePoolAdapter,
|
|
249
|
+
topology: Object.freeze({
|
|
250
|
+
hookTopology: 2,
|
|
251
|
+
configVersion: 6,
|
|
252
|
+
hookDeployer: dynamicFeePoolEnvelope.graph.hookDeployer,
|
|
253
|
+
hookCreationCodeHash: dynamicFeePoolEnvelope.graph.hookCreationCodeHash,
|
|
254
|
+
}),
|
|
255
|
+
venueKind: "uniswap-v4",
|
|
256
|
+
envelope: dynamicFeePoolEnvelope,
|
|
257
|
+
developerTerms: Object.freeze({
|
|
258
|
+
adapter: dynamicFeePoolAdapter.implementation,
|
|
259
|
+
beneficiary: dynamicFeePoolEnvelope.beneficiary,
|
|
260
|
+
maximumDeveloperFeeBps: dynamicFeePoolEnvelope.maximumDeveloperFeeBps,
|
|
261
|
+
termsDigest: dynamicFeePoolEnvelope.termsDigest,
|
|
262
|
+
enabled: true,
|
|
263
|
+
}),
|
|
264
|
+
protocolMaximumDeveloperFeeBps: 2400,
|
|
265
|
+
}),
|
|
266
|
+
boundHook: Object.freeze({
|
|
267
|
+
creationCode: dynamicFeePoolHookV1CreationCode,
|
|
268
|
+
deployer: dynamicFeePoolEnvelope.graph.hookDeployer,
|
|
269
|
+
poolManager: dynamicFeePoolEnvelope.graph.manager,
|
|
270
|
+
oracleFactory: dynamicFeePoolEnvelope.graph.oracleFactory,
|
|
271
|
+
liquidityLocker: dynamicFeePoolEnvelope.graph.locker,
|
|
272
|
+
registrar: dynamicFeePoolAdapter.implementation,
|
|
273
|
+
}),
|
|
274
|
+
});
|
|
275
|
+
|
|
198
276
|
const knownDeployment: LifecycleDeploymentPreset = Object.freeze({
|
|
199
277
|
chainId: 4663n,
|
|
200
278
|
orchestrator: "0x91560876033d568d25CDe98C78c33ff8FC43962c",
|
|
@@ -208,6 +286,7 @@ const knownDeployment: LifecycleDeploymentPreset = Object.freeze({
|
|
|
208
286
|
abyssPreset(KnownLifecycleProfile.Abyss2, "0x49b3bd30fe302526d7799f2ef15f3b2b261b5c44e075aa48b98c6b37148b7d59"),
|
|
209
287
|
abyssPreset(KnownLifecycleProfile.Abyss3, "0xe1bd95e086469e6afd9791ccc957e4d22b735012cb3db4a747f703673c62c306"),
|
|
210
288
|
fixedFeePoolPreset,
|
|
289
|
+
dynamicFeePoolPreset,
|
|
211
290
|
]),
|
|
212
291
|
provenance: Object.freeze({ sourceCommit: "e174ce695c7010f50ca9211b07b9f178c990beac", deploymentBlock: 82880546n }),
|
|
213
292
|
});
|
|
@@ -237,7 +316,7 @@ export function getKnownLifecycleProfile(options: KnownLifecycleDeploymentIdenti
|
|
|
237
316
|
return undefined;
|
|
238
317
|
}
|
|
239
318
|
|
|
240
|
-
/** Stable, frozen
|
|
319
|
+
/** Stable, frozen order: Abyss variants 0 through 3, then fixed and dynamic pool-bound V4. */
|
|
241
320
|
export function listKnownLifecycleProfiles(options: KnownLifecycleDeploymentIdentity): readonly LifecycleProfilePreset[] {
|
|
242
321
|
return getKnownLifecycleDeployment(options)?.profiles ?? noProfiles;
|
|
243
322
|
}
|