From 2cb7d5820b267c7ba4068deccdfb8ed72019f121 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 08:41:55 +0100 Subject: [PATCH 001/128] fix(deps): update dependency zksync-web3 to ^0.17.0 (#318) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [zksync-web3](https://togithub.com/zksync-sdk/zksync2-js/tree/ethers-v5#readme) ([source](https://togithub.com/zksync-sdk/zksync2-js)) | [`^0.13.3` -> `^0.17.0`](https://renovatebot.com/diffs/npm/zksync-web3/0.13.4/0.17.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/zksync-web3/0.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/zksync-web3/0.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/zksync-web3/0.13.4/0.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/zksync-web3/0.13.4/0.17.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
zksync-sdk/zksync2-js (zksync-web3) ### [`v0.17.0`](https://togithub.com/zksync-sdk/zksync2-js/releases/tag/v0.17.0) [Compare Source](https://togithub.com/zksync-sdk/zksync2-js/compare/v0.16.0...v0.17.0) ##### Features - add `Provider.getBytecodeByHash` and `Provider.getRawBlockTransactions` ([125a092](https://togithub.com/zksync-sdk/zksync2-js/commit/125a092983e1fda7f7aab5daef6a8fb0a76f2c38)) ### [`v0.16.0`](https://togithub.com/zksync-sdk/zksync2-js/compare/v0.15.5...v0.16.0) [Compare Source](https://togithub.com/zksync-sdk/zksync2-js/compare/v0.15.5...v0.16.0) ### [`v0.15.5`](https://togithub.com/zksync-sdk/zksync2-js/compare/v0.15.4...v0.15.5) [Compare Source](https://togithub.com/zksync-sdk/zksync2-js/compare/v0.15.4...v0.15.5) ### [`v0.15.4`](https://togithub.com/zksync-sdk/zksync2-js/releases/tag/v0.15.4) #### 0.15.4 (2023-07-25) ##### Bug Fixes - allow `null` for `txIndexInL1Batch` in formatter
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index dac0711..93755b2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "ethers": "^5.6.0", "node-fetch": "^2.6.1", "prom-client": "^14.2.0", - "zksync-web3": "^0.13.3" + "zksync-web3": "^0.17.0" }, "devDependencies": { "@nomiclabs/hardhat-ethers": "^2.0.5", From a3ca0bde3bb8ad1d69c6ff8ecde724b09b68e6ff Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 10:05:49 +0100 Subject: [PATCH 002/128] fix(deps): update dependency ethers to v6 (#329) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [ethers](https://ethers.org) ([source](https://togithub.com/ethers-io/ethers.js)) | [`^5.6.0` -> `^6.0.0`](https://renovatebot.com/diffs/npm/ethers/5.7.2/6.9.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/ethers/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/ethers/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/ethers/5.7.2/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/ethers/5.7.2/6.9.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
ethers-io/ethers.js (ethers) ### [`v6.9.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv690-2023-11-27-0615) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.8.1...v6.9.0) - Use provider-specified suggested priority fee when available, otherwise fallback onto existing logic of 1 gwei ([#​4463](https://togithub.com/ethers-io/ethers.js/issues/4463); [f8f11c7](https://togithub.com/ethers-io/ethers.js/commit/f8f11c754aa2c9b541db73d3bde66a8ffa5146f0)). - Add auto-detected static network support to providers and allow customizing socket provider options ([#​4199](https://togithub.com/ethers-io/ethers.js/issues/4199), [#​4418](https://togithub.com/ethers-io/ethers.js/issues/4418), [#​4441](https://togithub.com/ethers-io/ethers.js/issues/4441); [4681b83](https://togithub.com/ethers-io/ethers.js/commit/4681b83d516ab2eb41ddb68b5021c97e14c6f2cf)). - Added Base network to AlchemyProvider ([#​4384](https://togithub.com/ethers-io/ethers.js/issues/4384); [9e74d14](https://togithub.com/ethers-io/ethers.js/commit/9e74d14432e6efebdff21b9a7d2e6143af55e143)). - Fixed ParamType formatting causing bad tuple full and minimal ABI output ([#​4329](https://togithub.com/ethers-io/ethers.js/issues/4329), [#​4479](https://togithub.com/ethers-io/ethers.js/issues/4479); [2b67488](https://togithub.com/ethers-io/ethers.js/commit/2b6748815169abf2c99a647131875c13b8b6a787)). - Adjust for provider config weight when kicking off a request in FallbackProvider ([#​4298](https://togithub.com/ethers-io/ethers.js/issues/4298); [da34e35](https://togithub.com/ethers-io/ethers.js/commit/da34e3569e95357d9469209d926cb645f0750bfa)). - More robust FallbackProvider broadcast ([#​4186](https://togithub.com/ethers-io/ethers.js/issues/4186), [#​4297](https://togithub.com/ethers-io/ethers.js/issues/4297), [#​4442](https://togithub.com/ethers-io/ethers.js/issues/4442); [e2485b8](https://togithub.com/ethers-io/ethers.js/commit/e2485b8ef927d18c7a15d2d29b3b0feffec9991a)). - Added safe and finalized provider events ([#​3921](https://togithub.com/ethers-io/ethers.js/issues/3921); [a92766e](https://togithub.com/ethers-io/ethers.js/commit/a92766e56ad04185625037d84fc28adaac7fae8c)). ### [`v6.8.1`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv681-2023-11-01-1608) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.8.0...v6.8.1) - Fixed typo in error description when converting values to arrays ([#​4427](https://togithub.com/ethers-io/ethers.js/issues/4427), [#​4446](https://togithub.com/ethers-io/ethers.js/issues/4446); [8fed2f8](https://togithub.com/ethers-io/ethers.js/commit/8fed2f84768ace4bf3e5742c931a74841da7c637)). - Fix invalid token nonpayable being included in formatted constructor ([#​4412](https://togithub.com/ethers-io/ethers.js/issues/4412); [2e0bd90](https://togithub.com/ethers-io/ethers.js/commit/2e0bd90744b8e76fcf03f75a66cb0061d50f7bd9)). - Add ENS support for Sepolia ([#​4422](https://togithub.com/ethers-io/ethers.js/issues/4422); [1da50ae](https://togithub.com/ethers-io/ethers.js/commit/1da50ae286da01e58a70bb8df8aa5cc5d260e33e)). ### [`v6.8.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv680-2023-10-10-2242) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.7.1...v6.8.0) - Replicated former ENS normalize behaviour for empty strings and update namehash testcases ([125ff11](https://togithub.com/ethers-io/ethers.js/commit/125ff1189b9cefb8abfd7da9c104c75e382a50cc)). - Initial shortMessage support for errors ([#​4241](https://togithub.com/ethers-io/ethers.js/issues/4241); [d6a8c14](https://togithub.com/ethers-io/ethers.js/commit/d6a8c14d907cf8b90347444c0186b83a5db2e293)). - Fixed resolving ENS addresses used as from parameters ([#​3961](https://togithub.com/ethers-io/ethers.js/issues/3961); [2616f4c](https://togithub.com/ethers-io/ethers.js/commit/2616f4c30c82bd45449b73fa37ef269d60a07d80)). - Merge: [`9a4b753`](https://togithub.com/ethers-io/ethers.js/commit/9a4b7534) [`0c9c23b`](https://togithub.com/ethers-io/ethers.js/commit/0c9c23b0) Merge branch 'v5.8-progress' ([cd5f0fe](https://togithub.com/ethers-io/ethers.js/commit/cd5f0fe03f2137fbc47e295f8db38a5151111e72)). - Allow more loose input format for RLP encoder ([#​4402](https://togithub.com/ethers-io/ethers.js/issues/4402); [9a4b753](https://togithub.com/ethers-io/ethers.js/commit/9a4b7534458fc79a0654b0eb57fc956bffa02a2f)). - Update to latest noble crypto libraries ([#​3975](https://togithub.com/ethers-io/ethers.js/issues/3975); [b27faa0](https://togithub.com/ethers-io/ethers.js/commit/b27faa02ac8f90e2e54b188e8139c59d98c469e3)). - More robust configuration options for FetchRequest getUrl functions ([#​4353](https://togithub.com/ethers-io/ethers.js/issues/4353); [9541f2f](https://togithub.com/ethers-io/ethers.js/commit/9541f2f70cd7f5c6f3caf93f5a3d5e34eae5281a)). - Ignore blockTag when calling Etherscan if it is the default block tag ([dcea9b3](https://togithub.com/ethers-io/ethers.js/commit/dcea9b353619d85878ad2ba340ae17e5c285d558)). ### [`v6.7.1`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv671-2023-08-15-0308) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.7.0...v6.7.1) - Prevent destroyed providers from emitting network detection errors ([7d41730](https://togithub.com/ethers-io/ethers.js/commit/7d4173049edc3b4ff2de1971c3ecca3b08588651)). - Fix VSCode reported lint issues ([#​4153](https://togithub.com/ethers-io/ethers.js/issues/4153), [#​4156](https://togithub.com/ethers-io/ethers.js/issues/4156), [#​4158](https://togithub.com/ethers-io/ethers.js/issues/4158), [#​4159](https://togithub.com/ethers-io/ethers.js/issues/4159); [4eb84da](https://togithub.com/ethers-io/ethers.js/commit/4eb84da865a82a27c5113c38102b6b710096958e), [203dfc3](https://togithub.com/ethers-io/ethers.js/commit/203dfc33b9c8e72c9cdfe0a349ac763ef17a4484)). - Add gasPrice to Polygon feeData for type 0 and type 1 legacy transactions ([#​4315](https://togithub.com/ethers-io/ethers.js/issues/4315); [0df3ab9](https://togithub.com/ethers-io/ethers.js/commit/0df3ab93137039de1e1986bbfe9a5b32ceffa8a4)). ### [`v6.7.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv670-2023-08-02-2352) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.7...v6.7.0) - Fixed receipt wait not throwing on reverted transactions ([25fef4f](https://togithub.com/ethers-io/ethers.js/commit/25fef4f8d756f5bbf5a2a05e38233248a8eb43ac)). - Added custom priority fee to Optimism chain (via telegram) ([ff80b04](https://togithub.com/ethers-io/ethers.js/commit/ff80b04f31da21496e72d3687cecd1c01efaecc5)). - Add context to Logs that fail decoding due to ABI issues to help debugging ([f3c46f2](https://togithub.com/ethers-io/ethers.js/commit/f3c46f22994d194ff78b3b176407b2ecb7af1c77)). - Added new exports for FallbackProviderOptions and FetchUrlFeeDataNetworkPlugin ([#​2828](https://togithub.com/ethers-io/ethers.js/issues/2828), [#​4160](https://togithub.com/ethers-io/ethers.js/issues/4160); [b1dbbb0](https://togithub.com/ethers-io/ethers.js/commit/b1dbbb0de3f10a3d9e12d6a84ad5c52bea25c7f6)). - Allow overriding pollingInterval in JsonRpcProvider constructor (via discord) ([f42f258](https://togithub.com/ethers-io/ethers.js/commit/f42f258beb305a06e563ad16522f095a72da32eb)). - Fixed FallbackProvider priority sorting ([#​4150](https://togithub.com/ethers-io/ethers.js/issues/4150); [78538eb](https://togithub.com/ethers-io/ethers.js/commit/78538eb100addd135d29e60c9fa4fed3946278fa)). - Added linea network to InfuraProvider and Network ([#​4184](https://togithub.com/ethers-io/ethers.js/issues/4184), [#​4190](https://togithub.com/ethers-io/ethers.js/issues/4190); [d3e5e2c](https://togithub.com/ethers-io/ethers.js/commit/d3e5e2c45b28c377f306091acfc024e30c49ef20)). - Added whitelist support to getDefaultProvider ([82bb936](https://togithub.com/ethers-io/ethers.js/commit/82bb936542e29c6441ac8dc2d3ebbdd4edb708ee)). - Add Polygon RPC endpoints to the default provider ([#​3689](https://togithub.com/ethers-io/ethers.js/issues/3689); [23704a9](https://togithub.com/ethers-io/ethers.js/commit/23704a9c44d5857817e138fb19d44ce2103ca005)). - Added customizable quorum to FallbackProvider ([#​4160](https://togithub.com/ethers-io/ethers.js/issues/4160); [8f0a509](https://togithub.com/ethers-io/ethers.js/commit/8f0a50921a12a866addcf5b0fabc576bfc287689)). - Added basic Gas Station support via a NetworkPlugin ([#​2828](https://togithub.com/ethers-io/ethers.js/issues/2828); [229145d](https://togithub.com/ethers-io/ethers.js/commit/229145ddf566a962517588eaeed155734c7d4598)). - Add BNB URLs to EtherscanProvider networks ([ec39abe](https://togithub.com/ethers-io/ethers.js/commit/ec39abe067259fad4ea8607a6c5aece61890eb41)). - Added tests for JSON format ([#​4248](https://togithub.com/ethers-io/ethers.js/issues/4248); [ba36079](https://togithub.com/ethers-io/ethers.js/commit/ba36079a285706694532ce726568c4c447acad47)). - Use empty string for unnamed parameters in JSON output instead of undefined ([#​4248](https://togithub.com/ethers-io/ethers.js/issues/4248); [8c2652c](https://togithub.com/ethers-io/ethers.js/commit/8c2652c8cb4d054207d89688d30930869d9d3f8b)). - Return undefined for Contract properties that do not exist instead of throwing an error ([#​4266](https://togithub.com/ethers-io/ethers.js/issues/4266); [5bf7b34](https://togithub.com/ethers-io/ethers.js/commit/5bf7b3494ed62952fc387b4368a0bdc86dfe163e)). ### [`v6.6.7`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv667-2023-07-28-1450) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.6...v6.6.7) - Prevent malformed logs from preventing other logs being decoded ([#​4275](https://togithub.com/ethers-io/ethers.js/issues/4275); [0dca645](https://togithub.com/ethers-io/ethers.js/commit/0dca645632d73488bf6ad460e0d779361a537bbe)). - Allow visibility on human-readable constructors ([#​4278](https://togithub.com/ethers-io/ethers.js/issues/4278); [3a52201](https://togithub.com/ethers-io/ethers.js/commit/3a52201fe2ba68a00105cca2c0901da5ffa18d6b)). ### [`v6.6.6`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv666-2023-07-28-0114) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.5...v6.6.6) - Better error message when passing invalid overrides object into a contract deployment ([#​4182](https://togithub.com/ethers-io/ethers.js/issues/4182); [aa2ea3d](https://togithub.com/ethers-io/ethers.js/commit/aa2ea3d5296956fd0d40b83888e1ca053bb250ee)). ### [`v6.6.5`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv665-2023-07-24-0004) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.4...v6.6.5) - Reflect symbols in the Contract Proxy to target ([#​4084](https://togithub.com/ethers-io/ethers.js/issues/4048); [ac2f5e5](https://togithub.com/ethers-io/ethers.js/commit/ac2f5e563b8ec0e91a931470eb6ea58b0c01fb3d)). - Allow arrays of address for indexed filter topics ([#​4259](https://togithub.com/ethers-io/ethers.js/issues/4259); [93af87c](https://togithub.com/ethers-io/ethers.js/commit/93af87c447eeb77090e29bd940612603b3f74026)). - Fixed filter encoding for bytesX ([#​4244](https://togithub.com/ethers-io/ethers.js/issues/4244); [fa3a883](https://togithub.com/ethers-io/ethers.js/commit/fa3a883ff7c88611ce766f58bdd4b8ac90814470)). - Fix JSON formatting for tuple arrays ([#​4237](https://togithub.com/ethers-io/ethers.js/issues/4237); [a8bc49b](https://togithub.com/ethers-io/ethers.js/commit/a8bc49bdcf07a51b35f38cf209db27e116cc1a59)). - Better error messages when parsing fragment strings ([#​4246](https://togithub.com/ethers-io/ethers.js/issues/4246); [e36b6c3](https://togithub.com/ethers-io/ethers.js/commit/e36b6c35b7bc777c9adbe0055b32b31a13185240)). - Include the missing fragment key and args when no matching Contract method or event is present ([#​3809](https://togithub.com/ethers-io/ethers.js/issues/3809); [450a176](https://togithub.com/ethers-io/ethers.js/commit/450a176ee25f88a2ddb9ff23b153ef70bf1dc546)). - Prevent a single malformed event from preventing other Contract logs; reported on Discord ([b1375f4](https://togithub.com/ethers-io/ethers.js/commit/b1375f4e4463b856855ebc684b45945455ac082e)). ### [`v6.6.4`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv664-2023-07-16-0035) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.3...v6.6.4) - More robust support for Signatures with less standard parameter values ([#​3835](https://togithub.com/ethers-io/ethers.js/issues/3835), [#​4228](https://togithub.com/ethers-io/ethers.js/issues/4228); [a7e4048](https://togithub.com/ethers-io/ethers.js/commit/a7e4048fe3b75a743cec8c8ef2a5fad4bdc8b14c)). - Fixed CCIP-read in the EnsResolver ([#​4221](https://togithub.com/ethers-io/ethers.js/issues/4221); [57f1e1c](https://togithub.com/ethers-io/ethers.js/commit/57f1e1c47148921148e35c10c83539531942923e)). - Skip checking confirmation count if confirms is 0 ([#​4229](https://togithub.com/ethers-io/ethers.js/issues/4229), [#​4242](https://togithub.com/ethers-io/ethers.js/issues/4242); [492919d](https://togithub.com/ethers-io/ethers.js/commit/492919d14f646c630f29e1596e5564df1e51f309)). - Fixed waiting for confirmations in deployment transactions ([#​4212](https://togithub.com/ethers-io/ethers.js/issues/4212), [#​4230](https://togithub.com/ethers-io/ethers.js/issues/4230); [43c253a](https://togithub.com/ethers-io/ethers.js/commit/43c253a402f52a08353c424f6c4e236836cfaf36)). ### [`v6.6.3`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv663-2023-07-11-2055) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.2...v6.6.3) - Throw more desscriptive error for unconfigured ENS name contract targets ([#​4213](https://togithub.com/ethers-io/ethers.js/issues/4213); [80f62ef](https://togithub.com/ethers-io/ethers.js/commit/80f62efc41c3a29e690af40a1976928b7f886a0e)). - Fixed contract once not running stop callback ([7d061b7](https://togithub.com/ethers-io/ethers.js/commit/7d061b786f72cbfc461bf80d139d10aeff533a6e)). ### [`v6.6.2`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv662-2023-06-27-2330) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.1...v6.6.2) - Wider error detection for call exceptions on certain backends ([#​4154](https://togithub.com/ethers-io/ethers.js/issues/4154), [#​4155](https://togithub.com/ethers-io/ethers.js/issues/4155); [9197f9f](https://togithub.com/ethers-io/ethers.js/commit/9197f9f938b5f3b5f97c043f2dab06854656c932)). - Added wider error deetection for JSON-RPC unsupported operation ([#​4162](https://togithub.com/ethers-io/ethers.js/issues/4162); [1dc8986](https://togithub.com/ethers-io/ethers.js/commit/1dc8986a33be9dce536b24189326cbfaabf1342e)). - Fixed formatUnits and parseUnits for values over 128 bits ([#​4037](https://togithub.com/ethers-io/ethers.js/issues/4037), [#​4133](https://togithub.com/ethers-io/ethers.js/issues/4133); [3d141b4](https://togithub.com/ethers-io/ethers.js/commit/3d141b44b528f52b3c9205125b64ce342f91643c)). ### [`v6.6.1`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv661-2023-06-23-0035) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.6.0...v6.6.1) - Fixed CCIP read in contract calls ([#​4043](https://togithub.com/ethers-io/ethers.js/issues/4043); [d51e3fb](https://togithub.com/ethers-io/ethers.js/commit/d51e3fbff43c31d88353ac71151626312d22c0b9), [857aa8c](https://togithub.com/ethers-io/ethers.js/commit/857aa8ccc30f25eda8e83dcac3e0ad2c1a5ce2b3)). ### [`v6.6.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv660-2023-06-13-2142) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.5.1...v6.6.0) - Add exports for AbstractProviderOptions and for MulticoinProviderPlugin ([203a759](https://togithub.com/ethers-io/ethers.js/commit/203a759efc65bf6901d3e574a601525ea3936238)). - Add option to adjust perform cache timeout in AbstractProvider ([de0f518](https://togithub.com/ethers-io/ethers.js/commit/de0f5189f695c181a5fa09100af96a691a338e2b)). - Add full support for MultiCoin plugins and automatic detection for EVM-compatible coin types ([#​3888](https://togithub.com/ethers-io/ethers.js/issues/3888), [#​4081](https://togithub.com/ethers-io/ethers.js/issues/4081); [84375be](https://togithub.com/ethers-io/ethers.js/commit/84375be92d32a2939cf4a2f713e4c554b5b54a32)). - Allow Interface instances where InterfaceAbi are allowed ([#​4142](https://togithub.com/ethers-io/ethers.js/issues/4142); [2318005](https://togithub.com/ethers-io/ethers.js/commit/2318005dfd996c8a7c51603d0264ceabe9bb6141)). - Allow Numeric type for decimals in FixedNumber ([#​4141](https://togithub.com/ethers-io/ethers.js/issues/4141); [9055ef6](https://togithub.com/ethers-io/ethers.js/commit/9055ef6c69291f1a44ea23a2e7b5aaf3140a5577)). ### [`v6.5.1`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv651-2023-06-07-2019) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.5.0...v6.5.1) - Fix lost promise fulfillment when a batch has an error response ([#​4126](https://togithub.com/ethers-io/ethers.js/issues/4126); [8dd21f0](https://togithub.com/ethers-io/ethers.js/commit/8dd21f03334ffd3cdb7ac532376d51fd4130c7ab)). ### [`v6.5.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv650-2023-06-06-2241) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.4.2...v6.5.0) - Fix CJS browser bundling ([#​4033](https://togithub.com/ethers-io/ethers.js/issues/4033); [38ee319](https://togithub.com/ethers-io/ethers.js/commit/38ee3195b0192d8180899fd61308e03fa3a0eb32)). - Fixed type guard for non-Typed instances ([#​4087](https://togithub.com/ethers-io/ethers.js/issues/4087); [20c3d1b](https://togithub.com/ethers-io/ethers.js/commit/20c3d1b109743e33ab60a75d69bf7ede73b15ce2)). - Add confirmations to TransactionResponse ([#​4094](https://togithub.com/ethers-io/ethers.js/issues/4094); [bb8685b](https://togithub.com/ethers-io/ethers.js/commit/bb8685b112ce1c689c740d4dbcb358c16fb9b22d)). - Fix stray promises when a node returns invalid results ([#​4118](https://togithub.com/ethers-io/ethers.js/issues/4118); [3c1bad2](https://togithub.com/ethers-io/ethers.js/commit/3c1bad2fb7ad4a6ff90ff11f3e382fd18e41c800)). - Added support to detect and stop providers spinning on intitial network detection ([#​4015](https://togithub.com/ethers-io/ethers.js/issues/4015); [f37a52d](https://togithub.com/ethers-io/ethers.js/commit/f37a52da28ac130b7f4de52901618320994ea87a)). ### [`v6.4.2`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv642-2023-06-05-2241) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.4.1...v6.4.2) - Bump ens-normalize version ([#​4071](https://togithub.com/ethers-io/ethers.js/issues/4071), [#​4077](https://togithub.com/ethers-io/ethers.js/issues/4077), [#​4080](https://togithub.com/ethers-io/ethers.js/issues/4080), [#​4102](https://togithub.com/ethers-io/ethers.js/issues/4102); [c135784](https://togithub.com/ethers-io/ethers.js/commit/c1357847dcdec93d72f28d890f9271d0289ccefd)). - Fix for networks with polling with non-consistent block and filter events ([#​4119](https://togithub.com/ethers-io/ethers.js/issues/4119); [9b0e992](https://togithub.com/ethers-io/ethers.js/commit/9b0e9920c09577296ec0e2abb3acc3f3299d96c7)). ### [`v6.4.1`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv641-2023-06-01-1752) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.4.0...v6.4.1) - Fixed AbstractProvider lookupAddress bug ([#​4086](https://togithub.com/ethers-io/ethers.js/issues/4086); [15ed2f5](https://togithub.com/ethers-io/ethers.js/commit/15ed2f5b32084527961332481c9442a313036a01)). - Fix FixedNumber comparison bug ([#​4112](https://togithub.com/ethers-io/ethers.js/issues/4112); [d8e9586](https://togithub.com/ethers-io/ethers.js/commit/d8e9586044e888e424b5ead0f6e01f88140dba8a)). ### [`v6.4.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv640-2023-05-18-1728) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.3.0...v6.4.0) - Coerce value into BigInt when checking for value ([83d7f43](https://togithub.com/ethers-io/ethers.js/commit/83d7f43b9ca4b9868a3952510e56b41ea8610baa)). - Better errors when junk passed as Contract target ([#​3947](https://togithub.com/ethers-io/ethers.js/issues/3947), [#​4053](https://togithub.com/ethers-io/ethers.js/issues/4053); [219b16d](https://togithub.com/ethers-io/ethers.js/commit/219b16dc284b0c6a532c8c49e824d8234f94222b)). - More robust message checking in socket providers ([#​4051](https://togithub.com/ethers-io/ethers.js/issues/4051); [f58990b](https://togithub.com/ethers-io/ethers.js/commit/f58990b80cfd83579014339315e58663c0aa6ae3)). - More robust defaultProvider start-up when a backend fails on bootstrap ([#​3979](https://togithub.com/ethers-io/ethers.js/issues/3979); [984f6fa](https://togithub.com/ethers-io/ethers.js/commit/984f6fa155fca08ebec2353c75ee0a0b974e8568)). - Fix Result.map when Array contains zero elements ([#​4036](https://togithub.com/ethers-io/ethers.js/issues/4036), [#​4048](https://togithub.com/ethers-io/ethers.js/issues/4048); [2e5935b](https://togithub.com/ethers-io/ethers.js/commit/2e5935b91cff462165a054b33c8b8413f51e3f39)). - Fixed error handling for contracts with receive and non-payable fallback ([6db7458](https://togithub.com/ethers-io/ethers.js/commit/6db7458cf0a09e8e8a2abb712239972ab81dc9df)). - Remove superfluous logging in defaultProvider ([f87f6ef](https://togithub.com/ethers-io/ethers.js/commit/f87f6ef9a01ca399664f9fe106b0a677dba0c8e8)). - Removed superfluous logging ([1bc8b55](https://togithub.com/ethers-io/ethers.js/commit/1bc8b55d502a95c4ae58352bdcfce9e5f9ea72d3)). - Fix receipt gas price when effectiveGasPrice is 0 on testnets ([#​4014](https://togithub.com/ethers-io/ethers.js/issues/4014); [2b0fe61](https://togithub.com/ethers-io/ethers.js/commit/2b0fe611335432aee334d777a64d8c7827881618)). - Added error event to provider ([#​3970](https://togithub.com/ethers-io/ethers.js/issues/3970), [#​3982](https://togithub.com/ethers-io/ethers.js/issues/3982); [af0291c](https://togithub.com/ethers-io/ethers.js/commit/af0291c01639674658f5049343da88a84da763a1)). - Removed superfluous parameters for internal transaction functions ([e848978](https://togithub.com/ethers-io/ethers.js/commit/e8489787585c2e69a23f6cdec6901f22b096aebe)). - More aggresive tree-shaking ([076edad](https://togithub.com/ethers-io/ethers.js/commit/076edad81ef62474f48f2b4c8af0edc6e4fd64f2)). - More flexible static network checking ([#​3834](https://togithub.com/ethers-io/ethers.js/issues/3834); [7c0465c](https://togithub.com/ethers-io/ethers.js/commit/7c0465c5fb834eba18d4e5535072685bdc1029f0)). - Support transitive dependants that use non-node16 moduleResolution ([#​3920](https://togithub.com/ethers-io/ethers.js/issues/3920); [df685b1](https://togithub.com/ethers-io/ethers.js/commit/df685b1bd9ad346ee7863beb6c3ca3f4e94932a2)). - Populate any missing log.removed with false ([#​3959](https://togithub.com/ethers-io/ethers.js/issues/3959); [4e478e6](https://togithub.com/ethers-io/ethers.js/commit/4e478e625d5648f2172631eef5fda5776ee776b0)). ### [`v6.3.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv630-2023-04-06-0435) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.2.3...v6.3.0) - Added support for legacy ABI JSON fragments ([#​3932](https://togithub.com/ethers-io/ethers.js/issues/3932); [8c5973e](https://togithub.com/ethers-io/ethers.js/commit/8c5973e3a9b8d4d4ed80bdf209d8a0b6cc6b8d6d)). - Add *in* operator support for contract and contract.filters ([#​3901](https://togithub.com/ethers-io/ethers.js/issues/3901); [c58ab3a](https://togithub.com/ethers-io/ethers.js/commit/c58ab3a97687e15a3ffe30b038089c5f4b570bb9)). - Fixed TypedData unsigned value range ([#​3873](https://togithub.com/ethers-io/ethers.js/issues/3873); [a851b24](https://togithub.com/ethers-io/ethers.js/commit/a851b24d0af009ecf277766d2a5f81f9b3e7f9f8)). - Added missing export for getIndexedAccountPath ([#​3875](https://togithub.com/ethers-io/ethers.js/issues/3875); [356ff2b](https://togithub.com/ethers-io/ethers.js/commit/356ff2becb4f4d3622b281d3825770af5caf71ca)). - Fixed TypedData payloads for JSON-restricted chainId field ([#​3836](https://togithub.com/ethers-io/ethers.js/issues/3836); [50b74b8](https://togithub.com/ethers-io/ethers.js/commit/50b74b8806ef2064f2764b09f89c7ac75fda3a3c)). ### [`v6.2.3`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv623-2023-03-27-2122) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.2.2...v6.2.3) - Fixed events when emitted in WebSocketProvider ([#​3767](https://togithub.com/ethers-io/ethers.js/issues/3767), [#​3922](https://togithub.com/ethers-io/ethers.js/issues/3922); [ffaafc0](https://togithub.com/ethers-io/ethers.js/commit/ffaafc0ce1cf40d1d76d8d814c9c445057bf6989)). ### [`v6.2.2`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv622-2023-03-24-0049) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.2.1...v6.2.2) - Fixed FetchRequest when using credentials ([#​3897](https://togithub.com/ethers-io/ethers.js/issues/3897); [88e8124](https://togithub.com/ethers-io/ethers.js/commit/88e8124c37d377628f9b8abdf140fc07ad06259f)). ### [`v6.2.1`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv621-2023-03-23-1733) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.2.0...v6.2.1) - Stall block polling bootstrap when the network is down ([#​3924](https://togithub.com/ethers-io/ethers.js/issues/3924); [603d474](https://togithub.com/ethers-io/ethers.js/commit/603d47496e2b667c15b72f315261d6e299381848)). ### [`v6.2.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv620-2023-03-20-1553) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.1.0...v6.2.0) - Added extra details in the error info field for RPC errors ([30ffa78](https://togithub.com/ethers-io/ethers.js/commit/30ffa78d1441fa033677fa09237fc135a314f373)). - Remove Ankr as a deafult for now as the provided API key is failing ([6e01e54](https://togithub.com/ethers-io/ethers.js/commit/6e01e5448f4a3e2d30288d4c8447db295c3a2e7a)). - Fixed deferred filters after unsafe-eval changes ([#​3749](https://togithub.com/ethers-io/ethers.js/issues/3749), [#​3763](https://togithub.com/ethers-io/ethers.js/issues/3763); [2e3802a](https://togithub.com/ethers-io/ethers.js/commit/2e3802a83b8ad2f5a6269d79fbd1c83c9f2d1047)). - Remove use of Function sub-class to address unsafe-eval issues ([#​3749](https://togithub.com/ethers-io/ethers.js/issues/3749), [#​3763](https://togithub.com/ethers-io/ethers.js/issues/3763); [7d3af51](https://togithub.com/ethers-io/ethers.js/commit/7d3af512c75b4c24027ec2daef1e9f4c1064194a)). - Added verifyTypedData utility (reported on Farcaster) ([f06a445](https://togithub.com/ethers-io/ethers.js/commit/f06a445247f3b294f9fc805cc8fe0752accb8edc)). - Removed stray logging in IpcProvider ([#​3908](https://togithub.com/ethers-io/ethers.js/issues/3908), [#​3909](https://togithub.com/ethers-io/ethers.js/issues/3909); [e11d4c1](https://togithub.com/ethers-io/ethers.js/commit/e11d4c1c20cc5b6fd5803cf9636c4f5bc082dab7)). - Fixed legacy serialization for implicit chainId transactions ([#​3898](https://togithub.com/ethers-io/ethers.js/issues/3898), [#​3899](https://togithub.com/ethers-io/ethers.js/issues/3899); [fcf6c8f](https://togithub.com/ethers-io/ethers.js/commit/fcf6c8fcee95ec412aaafba8ec84d5049b077a4e)). - Fix Webpack issue (reported on discord) ([3ad4273](https://togithub.com/ethers-io/ethers.js/commit/3ad4273b8b714bff344ccbfb1eb71ed8a8b7cfa4)). - Fix some bundlers which cannot handle recursive pkg.exports ([#​3848](https://togithub.com/ethers-io/ethers.js/issues/3848); [6315e78](https://togithub.com/ethers-io/ethers.js/commit/6315e78ea32147653b72ca06f6800f3e2df6ffbf)). - Fixed typo in signature.s error ([#​3891](https://togithub.com/ethers-io/ethers.js/issues/3891); [47ef3eb](https://togithub.com/ethers-io/ethers.js/commit/47ef3ebde37bfa0c015c258c3d8a6800d751e147)). - Fixed stray unreachable code ([#​3890](https://togithub.com/ethers-io/ethers.js/issues/3890); [c220fe2](https://togithub.com/ethers-io/ethers.js/commit/c220fe2ea747ccc80cd3c4020e0278e3daf3c4fc)). - Move all wrapping to proper \_wrap functions ([#​3818](https://togithub.com/ethers-io/ethers.js/issues/3818); [02a0aad](https://togithub.com/ethers-io/ethers.js/commit/02a0aad61212c35e8d2723a8ae589989b97dae3e)). ### [`v6.1.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv610-2023-03-07-0210) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.8...v6.1.0) - Fixed ethers imported in web workers ([#​3856](https://togithub.com/ethers-io/ethers.js/issues/3856); [5f2678f](https://togithub.com/ethers-io/ethers.js/commit/5f2678fb059d643638b9cc1dc59cbfc61ce7a7b8)). - Added Sepolia support ([#​3863](https://togithub.com/ethers-io/ethers.js/issues/3863); [abeaa74](https://togithub.com/ethers-io/ethers.js/commit/abeaa74da04fbe25e837a2ffa7d1e9c1257a5da5)). - Added missing exports ([#​3734](https://togithub.com/ethers-io/ethers.js/issues/3734); [06aa303](https://togithub.com/ethers-io/ethers.js/commit/06aa30363f88144db672376d39012d7fe3f86c33)). - Allow null values for TypedData domain ([#​3623](https://togithub.com/ethers-io/ethers.js/issues/3623); [a32af3a](https://togithub.com/ethers-io/ethers.js/commit/a32af3adc104c4b07a45097a4a3725a4ce9e0be6)). - Added listAccounts to JsonRpcProvider ([#​3778](https://togithub.com/ethers-io/ethers.js/issues/3778); [287d94f](https://togithub.com/ethers-io/ethers.js/commit/287d94fc454d03f1b3086ea98745131cdf40129a)). - Allow BigInt for blockTag ([#​3780](https://togithub.com/ethers-io/ethers.js/issues/3780); [fe1f04c](https://togithub.com/ethers-io/ethers.js/commit/fe1f04c6e5fb4254a100f492d7dcbdc3cf19a446)). - Fixed typo in error messages ([#​3822](https://togithub.com/ethers-io/ethers.js/issues/3822), [#​3824](https://togithub.com/ethers-io/ethers.js/issues/3824); [f1a810d](https://togithub.com/ethers-io/ethers.js/commit/f1a810dcb56df54b1e1567f2a59c73500619472f)). - Re-adding definition files to require exports ([#​3703](https://togithub.com/ethers-io/ethers.js/issues/3703); [76fab92](https://togithub.com/ethers-io/ethers.js/commit/76fab923da33e71e6bb751bb0b5e3ba3faa27ab2)). ### [`v6.0.8`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv608-2023-02-23-0630) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.7...v6.0.8) - Fix matic-mumbai network and include aliases to legacy names ([#​3811](https://togithub.com/ethers-io/ethers.js/issues/3811); [20bbd12](https://togithub.com/ethers-io/ethers.js/commit/20bbd1281911d31b360f6f5032251c9257943541)). - Fixed getSigner bug ([#​3821](https://togithub.com/ethers-io/ethers.js/issues/3821); [388edf6](https://togithub.com/ethers-io/ethers.js/commit/388edf6abc168f89f1ca609e9e5b025dc9205add)). ### [`v6.0.7`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv607-2023-02-23-0141) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.6...v6.0.7) - Fixed getContentHash ([#​3819](https://togithub.com/ethers-io/ethers.js/issues/3819); [b993f7c](https://togithub.com/ethers-io/ethers.js/commit/b993f7c3b6c0e135c460c8b8dc5943215628231a)). ### [`v6.0.6`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv606-2023-02-22-2153) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.5...v6.0.6) - Added chain parameters for Arbitrum and Optimism ([#​3811](https://togithub.com/ethers-io/ethers.js/issues/3811); [77a7323](https://togithub.com/ethers-io/ethers.js/commit/77a7323119923e596f4def4f1bc90beae5447320)). - Fix NonceManager race condition ([#​3812](https://togithub.com/ethers-io/ethers.js/issues/3812), [#​3813](https://togithub.com/ethers-io/ethers.js/issues/3813); [5a3c10a](https://togithub.com/ethers-io/ethers.js/commit/5a3c10a29c047609a50828adb620d88aa8cf0014)). - Add UMD output to dist builds ([#​3814](https://togithub.com/ethers-io/ethers.js/issues/3814); [f9eed4c](https://togithub.com/ethers-io/ethers.js/commit/f9eed4cdb190b06dd4ddaa2382c1de42e8e98de6)). ### [`v6.0.5`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv605-2023-02-18-2236) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.4...v6.0.5) - Fixed Result to behave correctly like an array using slice and toArray ([#​3787](https://togithub.com/ethers-io/ethers.js/issues/3787); [399356b](https://togithub.com/ethers-io/ethers.js/commit/399356b91227db04e496628af60c4b8e38207760)). - Replaced substring from 0 index with startsWith ([#​3691](https://togithub.com/ethers-io/ethers.js/issues/3691); [4512e97](https://togithub.com/ethers-io/ethers.js/commit/4512e97f9b55607ce388aa6eb63a37fc196a5d9d)). - Fixed inverted assert in duplicate name detection for ABI encoding ([#​3792](https://togithub.com/ethers-io/ethers.js/issues/3792); [762c2f3](https://togithub.com/ethers-io/ethers.js/commit/762c2f34eac848c5464389f11d1697dcd8ebcbb5)). - Fixed missing property during transaction copy ([#​3793](https://togithub.com/ethers-io/ethers.js/issues/3793); [48bbef7](https://togithub.com/ethers-io/ethers.js/commit/48bbef7ade69bcfe86542f752f15049cc62f4141)). - Add support for Wallet private keys without 0x prefix ([#​3768](https://togithub.com/ethers-io/ethers.js/issues/3768); [4665fb4](https://togithub.com/ethers-io/ethers.js/commit/4665fb4c6886c8b344dee316ba9f4fde57ce7557)). - Fixed quicknode property for defaultProvider ([#​3741](https://togithub.com/ethers-io/ethers.js/issues/3741); [a8afb72](https://togithub.com/ethers-io/ethers.js/commit/a8afb72fbbceb6a5024c1edb85badb72099787ea)). - Fixed exports field order ([#​3703](https://togithub.com/ethers-io/ethers.js/issues/3703), [#​3755](https://togithub.com/ethers-io/ethers.js/issues/3755); [085a905](https://togithub.com/ethers-io/ethers.js/commit/085a9054f349afb816ca1a123737293ec9bd2532)). ### [`v6.0.4`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv604-2023-02-16-0855) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.3...v6.0.4) - Fixed custom error decoding ([#​3785](https://togithub.com/ethers-io/ethers.js/issues/3785); [4d9b29d](https://togithub.com/ethers-io/ethers.js/commit/4d9b29de751e2387c143e474bb96d271da892ea6)). - Removed stray debug logging ([e1e0929](https://togithub.com/ethers-io/ethers.js/commit/e1e09293483a9d07fd8e8f96552aa958b5ec45ed)). - Fixed lookupAddress when bad resolver is present ([#​3782](https://togithub.com/ethers-io/ethers.js/issues/3782); [92def9c](https://togithub.com/ethers-io/ethers.js/commit/92def9c1489bb35ad13fe58a1cd107ee3a05a112)). - Fixed FallbackProvider median calculation ([#​3746](https://togithub.com/ethers-io/ethers.js/issues/3746); [83957dc](https://togithub.com/ethers-io/ethers.js/commit/83957dc283043b9af8f6e89920faac3e09ca69fc)). - Move the xnf normalize variant to pkg.browser instead of import ([#​3724](https://togithub.com/ethers-io/ethers.js/issues/3724); [179e6ca](https://togithub.com/ethers-io/ethers.js/commit/179e6ca520392177c7dea5e477b29930952ed637)). ### [`v6.0.3`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv603-2023-02-12-2245) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.2...v6.0.3) - Allow null type in transaction receipt for legacy type 0 networks ([#​3459](https://togithub.com/ethers-io/ethers.js/issues/3459); [6372a46](https://togithub.com/ethers-io/ethers.js/commit/6372a46b1b273db3e4c1189daebb4b888bd588bc)). - Fixed events when slicing immutable Result ([#​3765](https://togithub.com/ethers-io/ethers.js/issues/3765); [2ba4a17](https://togithub.com/ethers-io/ethers.js/commit/2ba4a172555b7e17ac01fedfc944549defab61bc)). - More robust support on networks which throw when filters are not supported ([#​3767](https://togithub.com/ethers-io/ethers.js/issues/3767); [37bf4fb](https://togithub.com/ethers-io/ethers.js/commit/37bf4fb55563d7ff66edee15c7515c8a0d6a2266)). - Fixed ignored polling override for JsonRpcApiProvider ([400d576](https://togithub.com/ethers-io/ethers.js/commit/400d57621b3e9a33679a528b5072449699f0a068)). ### [`v6.0.2`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv602-2023-02-04-0850) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.1...v6.0.2) - Fixed crossed assert in Fetch ([#​3733](https://togithub.com/ethers-io/ethers.js/issues/3733); [6c338c1](https://togithub.com/ethers-io/ethers.js/commit/6c338c1c5b4013db9754c9d1a33dcbf54330e5c7)). ### [`v6.0.1`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv601-2023-02-04-0406) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v6.0.0...v6.0.1) - Fix Subscriber model when removed within emit callback ([d0ed918](https://togithub.com/ethers-io/ethers.js/commit/d0ed91840c9f51c7ce9061ebb1d36727dbdd51a4)). - Fixed human-readable parser when identifier begins with valid type prefix ([#​3728](https://togithub.com/ethers-io/ethers.js/issues/3728); [522fd16](https://togithub.com/ethers-io/ethers.js/commit/522fd16f68aabc53e4dc8745d4128e0d61260ed5)). - Update to latest secp256k1 library ([#​3719](https://togithub.com/ethers-io/ethers.js/issues/3719); [803e8f9](https://togithub.com/ethers-io/ethers.js/commit/803e8f9821950b83efa876d64b1cfb35f6bccc38)). ### [`v6.0.0`](https://togithub.com/ethers-io/ethers.js/blob/HEAD/CHANGELOG.md#ethersv600-2023-02-02-2248) [Compare Source](https://togithub.com/ethers-io/ethers.js/compare/v5.7.2...v6.0.0) - Initial release ([90afd9b](https://togithub.com/ethers-io/ethers.js/commit/90afd9bd81ed1408421a0247fa0845a74c9eb319)).
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 93755b2..adcc804 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "@openzeppelin/contracts": "^4.8.1", "@sentry/node": "^7.2.0", "@sentry/tracing": "^7.2.0", - "ethers": "^5.6.0", + "ethers": "^6.0.0", "node-fetch": "^2.6.1", "prom-client": "^14.2.0", "zksync-web3": "^0.17.0" From 6067bc11751b7cdede63a38053b897df9a095d61 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:25:01 +0100 Subject: [PATCH 003/128] fix(deps): update dependency @matterlabs/zksync-contracts to ^0.6.0 (#317) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @​matterlabs/zksync-contracts | [`^0.5.2` -> `^0.6.0`](https://renovatebot.com/diffs/npm/@matterlabs%2fzksync-contracts/0.5.2/0.6.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@matterlabs%2fzksync-contracts/0.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@matterlabs%2fzksync-contracts/0.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@matterlabs%2fzksync-contracts/0.5.2/0.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@matterlabs%2fzksync-contracts/0.5.2/0.6.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index adcc804..1444172 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@matterlabs/zksync-contracts": "^0.5.2", + "@matterlabs/zksync-contracts": "^0.6.0", "@openzeppelin/contracts": "^4.8.1", "@sentry/node": "^7.2.0", "@sentry/tracing": "^7.2.0", From fe1a7feba59ffa813e26abe0877a5d6fdda573d2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 16:50:27 +0100 Subject: [PATCH 004/128] chore(deps): update dependency @typechain/hardhat to v9 (#321) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | [@typechain/hardhat](https://togithub.com/ethereum-ts/Typechain) | [`^5.0.0` -> `^9.0.0`](https://renovatebot.com/diffs/npm/@typechain%2fhardhat/5.0.0/9.1.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@typechain%2fhardhat/9.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@typechain%2fhardhat/9.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@typechain%2fhardhat/5.0.0/9.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@typechain%2fhardhat/5.0.0/9.1.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | --- ### Release Notes
ethereum-ts/Typechain (@​typechain/hardhat) ### [`v9.1.0`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%409.1.0) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@9.0.0...@typechain/hardhat@9.1.0) ##### Minor Changes - [`da71c45`](https://togithub.com/ethereum-ts/Typechain/commit/da71c45): Allow passing node16Modules flag to TypeChain ##### Patch Changes - Updated dependencies \[[`3469800`](https://togithub.com/ethereum-ts/Typechain/commit/3469800)] - typechain@8.3.2 - [@​typechain/ethers-v6](https://togithub.com/typechain/ethers-v6)[@​0](https://togithub.com/0).5.1 ### [`v9.0.0`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%409.0.0) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@8.0.3...@typechain/hardhat@9.0.0) ##### Patch Changes - Updated dependencies \[[`04ebda9`](https://togithub.com/ethereum-ts/Typechain/commit/04ebda9)] - Updated dependencies \[[`64d18f7`](https://togithub.com/ethereum-ts/Typechain/commit/64d18f7)] - [@​typechain/ethers-v6](https://togithub.com/typechain/ethers-v6)[@​0](https://togithub.com/0).5.0 ### [`v8.0.3`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%408.0.3) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@8.0.2...@typechain/hardhat@8.0.3) ##### Patch Changes - Updated dependencies \[[`9107713`](https://togithub.com/ethereum-ts/Typechain/commit/9107713)] - typechain@8.3.1 - [@​typechain/ethers-v6](https://togithub.com/typechain/ethers-v6)[@​0](https://togithub.com/0).4.3 ### [`v8.0.2`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%408.0.2) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@8.0.1...@typechain/hardhat@8.0.2) ##### Patch Changes - Updated dependencies \[[`c4720b9`](https://togithub.com/ethereum-ts/Typechain/commit/c4720b9)] - typechain@8.3.0 - [@​typechain/ethers-v6](https://togithub.com/typechain/ethers-v6)[@​0](https://togithub.com/0).4.2 ### [`v8.0.1`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%408.0.1) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@8.0.0...@typechain/hardhat@8.0.1) ##### Patch Changes - [`c2b3f1b`](https://togithub.com/ethereum-ts/Typechain/commit/c2b3f1b): Support for the newest hardhat-ethers version - Updated dependencies \[[`c2b3f1b`](https://togithub.com/ethereum-ts/Typechain/commit/c2b3f1b)] - Updated dependencies \[[`cd4bb0f`](https://togithub.com/ethereum-ts/Typechain/commit/cd4bb0f)] - [@​typechain/ethers-v6](https://togithub.com/typechain/ethers-v6)[@​0](https://togithub.com/0).4.1 - typechain@8.2.1 ### [`v8.0.0`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%408.0.0) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@7.0.0...@typechain/hardhat@8.0.0) ##### Major Changes - [`2380a8f`](https://togithub.com/ethereum-ts/Typechain/commit/2380a8f): Added support for ethers v6 in [@​typechain/hardhat](https://togithub.com/typechain/hardhat) ##### Patch Changes - Updated dependencies \[[`2380a8f`](https://togithub.com/ethereum-ts/Typechain/commit/2380a8f)] - [@​typechain/ethers-v6](https://togithub.com/typechain/ethers-v6)[@​0](https://togithub.com/0).4.0 ### [`v7.0.0`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%407.0.0) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.1.6...@typechain/hardhat@7.0.0) ##### Patch Changes - Updated dependencies \[[`3eb6ed6`](https://togithub.com/ethereum-ts/Typechain/commit/3eb6ed6)] - Updated dependencies \[[`15541e4`](https://togithub.com/ethereum-ts/Typechain/commit/15541e4)] - [@​typechain/ethers-v5](https://togithub.com/typechain/ethers-v5)[@​11](https://togithub.com/11).0.0 - typechain@8.2.0 ### [`v6.1.6`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%406.1.6) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.1.5...@typechain/hardhat@6.1.6) ##### Patch Changes - Updated dependencies \[[`5b0759d`](https://togithub.com/ethereum-ts/Typechain/commit/5b0759d)] - Updated dependencies \[[`a036651`](https://togithub.com/ethereum-ts/Typechain/commit/a036651)] - [@​typechain/ethers-v5](https://togithub.com/typechain/ethers-v5)[@​10](https://togithub.com/10).2.1 ### [`v6.1.5`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%406.1.5) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.1.4...@typechain/hardhat@6.1.5) ##### Patch Changes - Updated dependencies \[[`31e6957`](https://togithub.com/ethereum-ts/Typechain/commit/31e6957)] - [@​typechain/ethers-v5](https://togithub.com/typechain/ethers-v5)[@​10](https://togithub.com/10).2.0 ### [`v6.1.4`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%406.1.4) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.1.3...@typechain/hardhat@6.1.4) ##### Patch Changes - Updated dependencies \[[`bbc9656`](https://togithub.com/ethereum-ts/Typechain/commit/bbc9656)] - typechain@8.1.1 - [@​typechain/ethers-v5](https://togithub.com/typechain/ethers-v5)[@​10](https://togithub.com/10).1.1 ### [`v6.1.3`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%406.1.3) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.1.2...@typechain/hardhat@6.1.3) ##### Patch Changes - [`dc5ede9`](https://togithub.com/ethereum-ts/Typechain/commit/dc5ede9): Reduce the time it takes to load the plugin by importing every library only when needed ### [`v6.1.2`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%406.1.2) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.1.1...@typechain/hardhat@6.1.2) ##### Patch Changes - [`ed6f85b`](https://togithub.com/ethereum-ts/Typechain/commit/ed6f85b): Don't autodisable overrides for js projects - [`1663b98`](https://togithub.com/ethereum-ts/Typechain/commit/1663b98): Respect the `--quiet` flag ### [`v6.1.1`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%406.1.1) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.1.0...@typechain/hardhat@6.1.1) ##### Patch Changes - [`ed6f85b`](https://togithub.com/ethereum-ts/Typechain/commit/ed6f85b): Don't autodisable overrides for js projects - [`1663b98`](https://togithub.com/ethereum-ts/Typechain/commit/1663b98): Respect the `--quiet` flag ### [`v6.1.0`](https://togithub.com/dethcrypto/TypeChain/releases/tag/typechain%406.1.0) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@6.0.0...@typechain/hardhat@6.1.0) ##### Minor Changes - [`5f81ca9`](https://togithub.com/ethereum-ts/Typechain/commit/5f81ca9): Using `--ts-nocheck` (`config.tsNocheck`) flag, you can now add `// @​ts-nocheck` comment in case where code generated by TypeChain doesn't pass typechecking. Read more in [TypeScript docs][tsdocs]. [tsdocs]: \(https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-7.html#-ts-nocheck-in-typescript-files\) - [`156c744`](https://togithub.com/ethereum-ts/Typechain/commit/156c744): Given --help flag, `typechain` CLI now shows the usage guide. ### [`v6.0.0`](https://togithub.com/dethcrypto/TypeChain/releases/tag/%40typechain/hardhat%406.0.0) [Compare Source](https://togithub.com/ethereum-ts/Typechain/compare/@typechain/hardhat@5.0.0...@typechain/hardhat@6.0.0) ##### Major Changes - [`3a8a99a`](https://togithub.com/ethereum-ts/Typechain/commit/3a8a99a): Directory tree in generated types now reflects the directory tree in the inputs. Also, only the main contract type is reexported from each file. This change solves a number of name clashing problems. All generated code can still be imported after updating the import path. - [`978490f`](https://togithub.com/ethereum-ts/Typechain/commit/978490f): ## What's breaking: We are not emitting `contractName` fields on contracts and factories anymore. #### Why? `contractName` breaks polymorphism for example: exact token implementation is not assignable to token interface. #### What do to? We are adding optional flag `--discriminate-types` to continue emitting `contractName`. ##### Minor Changes - [`a59ae6e`](https://togithub.com/ethereum-ts/Typechain/commit/a59ae6e): Prefer `import type` in generated files when possible ##### Patch Changes - Updated dependencies \[[`3a8a99a`](https://togithub.com/ethereum-ts/Typechain/commit/3a8a99a)] - Updated dependencies \[[`5b9a7fb`](https://togithub.com/ethereum-ts/Typechain/commit/5b9a7fb)] - Updated dependencies \[[`d86d048`](https://togithub.com/ethereum-ts/Typechain/commit/d86d048)] - Updated dependencies \[[`2395289`](https://togithub.com/ethereum-ts/Typechain/commit/2395289)] - Updated dependencies \[[`e447bfb`](https://togithub.com/ethereum-ts/Typechain/commit/e447bfb)] - Updated dependencies \[[`978490f`](https://togithub.com/ethereum-ts/Typechain/commit/978490f)] - Updated dependencies \[[`a59ae6e`](https://togithub.com/ethereum-ts/Typechain/commit/a59ae6e)] - Updated dependencies \[[`47ab651`](https://togithub.com/ethereum-ts/Typechain/commit/47ab651)] - Updated dependencies \[[`975a9dc`](https://togithub.com/ethereum-ts/Typechain/commit/975a9dc)] - Updated dependencies \[[`e1f832c`](https://togithub.com/ethereum-ts/Typechain/commit/e1f832c)] - [@​typechain/ethers-v5](https://togithub.com/typechain/ethers-v5)[@​10](https://togithub.com/10).0.0 - typechain@8.0.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1444172..030342d 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ "@nomiclabs/hardhat-etherscan": "^3.0.3", "@nomiclabs/hardhat-solpp": "^2.0.1", "@typechain/ethers-v5": "^11.0.0", - "@typechain/hardhat": "^5.0.0", + "@typechain/hardhat": "^9.0.0", "@types/chai": "^4.2.0", "@types/mocha": "^9.1.0", "@types/node": "^14.14.5", From faca54f1f4e224c2df8c81d512575471c4b3a6a2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Dec 2023 08:47:47 +0100 Subject: [PATCH 005/128] chore(deps): update rust crate eyre to 0.6.10 (#332) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [eyre](https://togithub.com/eyre-rs/eyre) | workspace.dependencies | patch | `0.6.9` -> `0.6.10` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e3deba6..167428f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1418,9 +1418,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "eyre" -version = "0.6.9" +version = "0.6.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80f656be11ddf91bd709454d15d5bd896fbaf4cc3314e69349e4d1569f5b46cd" +checksum = "8bbb8258be8305fb0237d7b295f47bb24ff1b136a535f473baf40e70468515aa" dependencies = [ "indenter", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index cb0f4d7..54aca99 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ serde = "1.0.193" thiserror = "1.0.50" serde_json = "1.0" color-eyre = "0.6.2" -eyre = "0.6.9" +eyre = "0.6.10" dotenvy = "0.15.7" envconfig = "0.10.0" proc-macro2 = "1.0.70" From b63b050cbccd600b1b46c2f4cc7b2a4b508d8704 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 9 Dec 2023 11:32:45 +0100 Subject: [PATCH 006/128] chore(deps): update rust crate tokio to 1.35.0 (#333) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | workspace.dependencies | minor | `1.34.0` -> `1.35.0` | --- ### Release Notes
tokio-rs/tokio (tokio) ### [`v1.35.0`](https://togithub.com/tokio-rs/tokio/releases/tag/tokio-1.35.0): Tokio v1.35.0 [Compare Source](https://togithub.com/tokio-rs/tokio/compare/tokio-1.34.0...tokio-1.35.0) ### 1.35.0 (December 8th, 2023) ##### Added - net: add Apple watchOS support ([#​6176]) ##### Changed - io: drop the `Sized` requirements from `AsyncReadExt.read_buf` ([#​6169]) - runtime: make `Runtime` unwind safe ([#​6189]) - runtime: reduce the lock contention in task spawn ([#​6001]) - tokio: update nix dependency to 0.27.1 ([#​6190]) ##### Fixed - chore: make `--cfg docsrs` work without net feature ([#​6166]) - chore: use relaxed load for `unsync_load` on miri ([#​6179]) - runtime: handle missing context on wake ([#​6148]) - taskdump: fix taskdump cargo config example ([#​6150]) - taskdump: skip notified tasks during taskdumps ([#​6194]) - tracing: avoid creating resource spans with current parent, use a None parent instead ([#​6107]) - tracing: make task span explicit root ([#​6158]) ##### Documented - io: flush in `AsyncWriteExt` examples ([#​6149]) - runtime: document fairness guarantees and current behavior ([#​6145]) - task: document cancel safety of `LocalSet::run_until` ([#​6147]) [#​6001]: https://togithub.com/tokio-rs/tokio/pull/6001 [#​6107]: https://togithub.com/tokio-rs/tokio/pull/6107 [#​6144]: https://togithub.com/tokio-rs/tokio/pull/6144 [#​6145]: https://togithub.com/tokio-rs/tokio/pull/6145 [#​6147]: https://togithub.com/tokio-rs/tokio/pull/6147 [#​6148]: https://togithub.com/tokio-rs/tokio/pull/6148 [#​6149]: https://togithub.com/tokio-rs/tokio/pull/6149 [#​6150]: https://togithub.com/tokio-rs/tokio/pull/6150 [#​6158]: https://togithub.com/tokio-rs/tokio/pull/6158 [#​6166]: https://togithub.com/tokio-rs/tokio/pull/6166 [#​6169]: https://togithub.com/tokio-rs/tokio/pull/6169 [#​6176]: https://togithub.com/tokio-rs/tokio/pull/6176 [#​6179]: https://togithub.com/tokio-rs/tokio/pull/6179 [#​6189]: https://togithub.com/tokio-rs/tokio/pull/6189 [#​6190]: https://togithub.com/tokio-rs/tokio/pull/6190 [#​6194]: https://togithub.com/tokio-rs/tokio/pull/6194
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 167428f..8c228fd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4177,9 +4177,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.34.0" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" +checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" dependencies = [ "backtrace", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 54aca99..ac37d8c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ exclude = ["./github"] auto_impl = "1.1.0" async-trait = "0.1.74" ethers = { version = "2.0.11", default-features = false } -tokio = "1.34.0" +tokio = "1.35.0" clap = "4.4.11" tracing = "0.1" tracing-subscriber = "0.3" From 0a2639d75a8469120e7ca58f460b41334c181ace Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 09:24:07 +0100 Subject: [PATCH 007/128] chore(deps): update rust crate syn to 2.0.40 (#334) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.39` -> `2.0.40` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.40`](https://togithub.com/dtolnay/syn/releases/tag/2.0.40) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.39...2.0.40) - Fix some edge cases of handling None-delimited groups in expression parser ([#​1539](https://togithub.com/dtolnay/syn/issues/1539), [#​1541](https://togithub.com/dtolnay/syn/issues/1541), [#​1542](https://togithub.com/dtolnay/syn/issues/1542), [#​1543](https://togithub.com/dtolnay/syn/issues/1543), [#​1544](https://togithub.com/dtolnay/syn/issues/1544), [#​1545](https://togithub.com/dtolnay/syn/issues/1545))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 46 +++++++++++++++++++++++----------------------- Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c228fd..36d10d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -518,7 +518,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -1218,7 +1218,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.39", + "syn 2.0.40", "toml", "walkdir", ] @@ -1236,7 +1236,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -1262,7 +1262,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.39", + "syn 2.0.40", "tempfile", "thiserror", "tiny-keccak", @@ -1292,7 +1292,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -1610,7 +1610,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -2202,7 +2202,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -2458,7 +2458,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -2704,7 +2704,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -2742,7 +2742,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -2827,7 +2827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -2907,7 +2907,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -3516,7 +3516,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -4012,7 +4012,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -4054,9 +4054,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e" dependencies = [ "proc-macro2", "quote", @@ -4110,7 +4110,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -4202,7 +4202,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -4326,7 +4326,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -4626,7 +4626,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", ] [[package]] @@ -4686,7 +4686,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", "wasm-bindgen-shared", ] @@ -4720,7 +4720,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.40", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index ac37d8c..1836d2b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.29" quote = "1.0.33" num = "0.4.1" -syn = "2.0.39" +syn = "2.0.40" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From e9fe8819d365f95b522ec4f6b95266758a2e8b30 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 13 Dec 2023 10:21:51 +0100 Subject: [PATCH 008/128] chore(deps): update rust crate syn to 2.0.41 (#335) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.40` -> `2.0.41` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.41`](https://togithub.com/dtolnay/syn/releases/tag/2.0.41) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.40...2.0.41) - Support parsing syn::Field in `parse_quote!` ([#​1548](https://togithub.com/dtolnay/syn/issues/1548))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 46 +++++++++++++++++++++++----------------------- Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 36d10d6..80c7252 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -518,7 +518,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -1218,7 +1218,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.40", + "syn 2.0.41", "toml", "walkdir", ] @@ -1236,7 +1236,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -1262,7 +1262,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.40", + "syn 2.0.41", "tempfile", "thiserror", "tiny-keccak", @@ -1292,7 +1292,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -1610,7 +1610,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -2202,7 +2202,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -2458,7 +2458,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -2704,7 +2704,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -2742,7 +2742,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -2827,7 +2827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -2907,7 +2907,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -3516,7 +3516,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -4012,7 +4012,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -4054,9 +4054,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.40" +version = "2.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13fa70a4ee923979ffb522cacce59d34421ebdea5625e1073c4326ef9d2dd42e" +checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" dependencies = [ "proc-macro2", "quote", @@ -4110,7 +4110,7 @@ checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -4202,7 +4202,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -4326,7 +4326,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -4626,7 +4626,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", ] [[package]] @@ -4686,7 +4686,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", "wasm-bindgen-shared", ] @@ -4720,7 +4720,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.40", + "syn 2.0.41", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 1836d2b..6b39894 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.29" quote = "1.0.33" num = "0.4.1" -syn = "2.0.40" +syn = "2.0.41" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 571665dd6ca7eb06a457e7a1eec88f4eb09a609e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Dec 2023 11:38:20 +0100 Subject: [PATCH 009/128] chore(deps): update rust crate eyre to 0.6.11 (#336) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [eyre](https://togithub.com/eyre-rs/eyre) | workspace.dependencies | patch | `0.6.10` -> `0.6.11` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 80c7252..b2d75e0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1418,9 +1418,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "eyre" -version = "0.6.10" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bbb8258be8305fb0237d7b295f47bb24ff1b136a535f473baf40e70468515aa" +checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" dependencies = [ "indenter", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index 6b39894..e6bfb20 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ serde = "1.0.193" thiserror = "1.0.50" serde_json = "1.0" color-eyre = "0.6.2" -eyre = "0.6.10" +eyre = "0.6.11" dotenvy = "0.15.7" envconfig = "0.10.0" proc-macro2 = "1.0.70" From 8d27045ad3d7b4a87999ee4514d66130e2846e88 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 16 Dec 2023 09:12:44 +0100 Subject: [PATCH 010/128] chore(deps): update rust crate thiserror to 1.0.51 (#337) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.50` -> `1.0.51` | --- ### Release Notes
dtolnay/thiserror (thiserror) ### [`v1.0.51`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.51) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.50...1.0.51) - Improve diagnostics when an invalid attribute previously caused thiserror to generate no `Error` impl ([#​266](https://togithub.com/dtolnay/thiserror/issues/266))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b2d75e0..853f3e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4095,18 +4095,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e6bfb20..92c649a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.0" serde = "1.0.193" -thiserror = "1.0.50" +thiserror = "1.0.51" serde_json = "1.0" color-eyre = "0.6.2" eyre = "0.6.11" From adb49ec08da56a42f4937f7422f4d7f3cb08e819 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 09:40:21 +0100 Subject: [PATCH 011/128] chore(deps): update rust crate tokio to 1.35.1 (#339) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | workspace.dependencies | patch | `1.35.0` -> `1.35.1` | --- ### Release Notes
tokio-rs/tokio (tokio) ### [`v1.35.1`](https://togithub.com/tokio-rs/tokio/releases/tag/tokio-1.35.1): Tokio v1.35.1 [Compare Source](https://togithub.com/tokio-rs/tokio/compare/tokio-1.35.0...tokio-1.35.1) ### 1.35.1 (December 19, 2023) This is a forward part of a change that was backported to 1.25.3. ##### Fixed - io: add budgeting to `tokio::runtime::io::registration::async_io` ([#​6221]) [#​6221]: https://togithub.com/tokio-rs/tokio/pull/6221
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 853f3e6..5d9e7b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4177,9 +4177,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.0" +version = "1.35.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c" +checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" dependencies = [ "backtrace", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 92c649a..6a5e43d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ exclude = ["./github"] auto_impl = "1.1.0" async-trait = "0.1.74" ethers = { version = "2.0.11", default-features = false } -tokio = "1.35.0" +tokio = "1.35.1" clap = "4.4.11" tracing = "0.1" tracing-subscriber = "0.3" From a0679cfc969446fcda3f009996cc1a2541126f0b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:15:09 +0100 Subject: [PATCH 012/128] chore(deps): update rust crate async-trait to 0.1.75 (#340) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [async-trait](https://togithub.com/dtolnay/async-trait) | workspace.dependencies | patch | `0.1.74` -> `0.1.75` | --- ### Release Notes
dtolnay/async-trait (async-trait) ### [`v0.1.75`](https://togithub.com/dtolnay/async-trait/releases/tag/0.1.75) [Compare Source](https://togithub.com/dtolnay/async-trait/compare/0.1.74...0.1.75) - Documentation improvements
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d9e7b0..7f4db0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -163,9 +163,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 6a5e43d..97d586a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ exclude = ["./github"] [workspace.dependencies] auto_impl = "1.1.0" -async-trait = "0.1.74" +async-trait = "0.1.75" ethers = { version = "2.0.11", default-features = false } tokio = "1.35.1" clap = "4.4.11" From a3224f3e800b6f71da5debed97250c69721a330f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 08:49:39 +0100 Subject: [PATCH 013/128] chore(deps): update rust crate syn to 2.0.42 (#341) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.41` -> `2.0.42` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.42`](https://togithub.com/dtolnay/syn/releases/tag/2.0.42) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.41...2.0.42) - Documentation improvements
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 46 +++++++++++++++++++++++----------------------- Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7f4db0a..fdd7fc2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -518,7 +518,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1218,7 +1218,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.41", + "syn 2.0.42", "toml", "walkdir", ] @@ -1236,7 +1236,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1262,7 +1262,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.41", + "syn 2.0.42", "tempfile", "thiserror", "tiny-keccak", @@ -1292,7 +1292,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -1610,7 +1610,7 @@ checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -2202,7 +2202,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -2458,7 +2458,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -2704,7 +2704,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -2742,7 +2742,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -2827,7 +2827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -2907,7 +2907,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -3516,7 +3516,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4012,7 +4012,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4054,9 +4054,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.41" +version = "2.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8" dependencies = [ "proc-macro2", "quote", @@ -4110,7 +4110,7 @@ checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4202,7 +4202,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4326,7 +4326,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4626,7 +4626,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", ] [[package]] @@ -4686,7 +4686,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", "wasm-bindgen-shared", ] @@ -4720,7 +4720,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.41", + "syn 2.0.42", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 97d586a..d45eb4c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.29" quote = "1.0.33" num = "0.4.1" -syn = "2.0.41" +syn = "2.0.42" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 53d00828d79d07563dc072a883d2eb8358ef7695 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 21 Dec 2023 21:46:59 +0100 Subject: [PATCH 014/128] chore(deps): update rust crate proc-macro2 to 1.0.71 (#342) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | workspace.dependencies | patch | `1.0.70` -> `1.0.71` | --- ### Release Notes
dtolnay/proc-macro2 (proc-macro2) ### [`v1.0.71`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.71) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.70...1.0.71) - Turn on `deny(unsafe_op_in_unsafe_fn)` lint
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fdd7fc2..671e187 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2880,9 +2880,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b" +checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" dependencies = [ "unicode-ident", ] diff --git a/Cargo.toml b/Cargo.toml index d45eb4c..e0a9b9c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ color-eyre = "0.6.2" eyre = "0.6.11" dotenvy = "0.15.7" envconfig = "0.10.0" -proc-macro2 = "1.0.70" +proc-macro2 = "1.0.71" bincode = "1.3.3" futures = "0.3.29" quote = "1.0.33" From a4a2e57e72f790ebc4738c5d6f98917f5eebb7cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Dec 2023 19:14:30 +0100 Subject: [PATCH 015/128] chore(deps): update rust crate futures to 0.3.30 (#343) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [futures](https://rust-lang.github.io/futures-rs) ([source](https://togithub.com/rust-lang/futures-rs)) | workspace.dependencies | patch | `0.3.29` -> `0.3.30` | --- ### Release Notes
rust-lang/futures-rs (futures) ### [`v0.3.30`](https://togithub.com/rust-lang/futures-rs/blob/HEAD/CHANGELOG.md#0330---2023-12-24) [Compare Source](https://togithub.com/rust-lang/futures-rs/compare/0.3.29...0.3.30) - Add `{BiLock,SplitStream,SplitSink,ReadHalf,WriteHalf}::is_pair_of` ([#​2797](https://togithub.com/rust-lang/futures-rs/issues/2797)) - Fix panic in `FuturesUnordered::clear` ([#​2809](https://togithub.com/rust-lang/futures-rs/issues/2809)) - Fix panic in `AsyncBufReadExt::fill_buf` ([#​2801](https://togithub.com/rust-lang/futures-rs/issues/2801), [#​2812](https://togithub.com/rust-lang/futures-rs/issues/2812)) - Improve support for targets without atomic CAS ([#​2811](https://togithub.com/rust-lang/futures-rs/issues/2811)) - Remove build scripts ([#​2811](https://togithub.com/rust-lang/futures-rs/issues/2811))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 36 ++++++++++++++++++------------------ Cargo.toml | 2 +- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 671e187..8158190 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1535,9 +1535,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1550,9 +1550,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1560,15 +1560,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1588,9 +1588,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-locks" @@ -1604,9 +1604,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", @@ -1615,15 +1615,15 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" @@ -1637,9 +1637,9 @@ dependencies = [ [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", diff --git a/Cargo.toml b/Cargo.toml index e0a9b9c..6894540 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ dotenvy = "0.15.7" envconfig = "0.10.0" proc-macro2 = "1.0.71" bincode = "1.3.3" -futures = "0.3.29" +futures = "0.3.30" quote = "1.0.33" num = "0.4.1" syn = "2.0.42" From de06484e26c6e19100befe012774c0f7995ce228 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 08:48:38 +0100 Subject: [PATCH 016/128] chore(deps): update rust crate syn to 2.0.43 (#344) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.42` -> `2.0.43` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.43`](https://togithub.com/dtolnay/syn/releases/tag/2.0.43) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.42...2.0.43) - Insert trailing comma if not already present when printing a 1-tuple in pattern position ([#​1553](https://togithub.com/dtolnay/syn/issues/1553))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 46 +++++++++++++++++++++++----------------------- Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8158190..fd19ce0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -169,7 +169,7 @@ checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -518,7 +518,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -1218,7 +1218,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.42", + "syn 2.0.43", "toml", "walkdir", ] @@ -1236,7 +1236,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -1262,7 +1262,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.42", + "syn 2.0.43", "tempfile", "thiserror", "tiny-keccak", @@ -1292,7 +1292,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -1610,7 +1610,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -2202,7 +2202,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -2458,7 +2458,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -2704,7 +2704,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -2742,7 +2742,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -2827,7 +2827,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -2907,7 +2907,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -3516,7 +3516,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -4012,7 +4012,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -4054,9 +4054,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.42" +version = "2.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b7d0a2c048d661a1a59fcd7355baa232f7ed34e0ee4df2eef3c1c1c0d3852d8" +checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" dependencies = [ "proc-macro2", "quote", @@ -4110,7 +4110,7 @@ checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -4202,7 +4202,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -4326,7 +4326,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -4626,7 +4626,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", ] [[package]] @@ -4686,7 +4686,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", "wasm-bindgen-shared", ] @@ -4720,7 +4720,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.42", + "syn 2.0.43", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 6894540..8e9c464 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.33" num = "0.4.1" -syn = "2.0.42" +syn = "2.0.43" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 17d10befd05a845942561ae312e5c6ce64ab9192 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Dec 2023 02:04:58 +0100 Subject: [PATCH 017/128] chore(deps): update rust crate thiserror to 1.0.52 (#345) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.51` -> `1.0.52` | --- ### Release Notes
dtolnay/thiserror (thiserror) ### [`v1.0.52`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.52) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.51...1.0.52) - Fix interaction with RUSTC_BOOTSTRAP ([#​269](https://togithub.com/dtolnay/thiserror/issues/269))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fd19ce0..cf7b37b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4095,18 +4095,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.51" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" +checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.51" +version = "1.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" +checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 8e9c464..b8c3421 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.0" serde = "1.0.193" -thiserror = "1.0.51" +thiserror = "1.0.52" serde_json = "1.0" color-eyre = "0.6.2" eyre = "0.6.11" From 08e6971fb31c72fd55441b781ef185afd52953b3 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Tue, 16 Jan 2024 16:56:05 +0100 Subject: [PATCH 018/128] fix(chain-events): do not listen to withdrawalinitiated events (#347) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ Change was introduced for a custom birdge but on the main bridge this will detect the same withdrawal event twice. ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- chain-events/src/l2_events.rs | 29 +---------------------------- client/src/lib.rs | 9 --------- 2 files changed, 1 insertion(+), 37 deletions(-) diff --git a/chain-events/src/l2_events.rs b/chain-events/src/l2_events.rs index 227e031..4eceb3b 100644 --- a/chain-events/src/l2_events.rs +++ b/chain-events/src/l2_events.rs @@ -5,7 +5,6 @@ use futures::{Sink, SinkExt, StreamExt}; use client::{ contracts_deployer::codegen::ContractDeployedFilter, ethtoken::codegen::WithdrawalFilter, - l2bridge::codegen::WithdrawalInitiatedFilter, l2standard_token::codegen::{ BridgeBurnFilter, BridgeInitializationFilter, BridgeInitializeFilter, }, @@ -39,7 +38,6 @@ pub struct L2EventsListener { enum L2Events { BridgeBurn(BridgeBurnFilter), Withdrawal(WithdrawalFilter), - WithdrawalInitiated(WithdrawalInitiatedFilter), ContractDeployed(ContractDeployedFilter), } @@ -337,17 +335,12 @@ impl L2EventsListener { let last_seen_l2_token_block: BlockNumber = last_seen_l2_token_block.into(); let from_block: BlockNumber = from_block.into(); - let past_topic0 = vec![ - BridgeBurnFilter::signature(), - WithdrawalFilter::signature(), - WithdrawalInitiatedFilter::signature(), - ]; + let past_topic0 = vec![BridgeBurnFilter::signature(), WithdrawalFilter::signature()]; let topic0 = vec![ ContractDeployedFilter::signature(), BridgeBurnFilter::signature(), WithdrawalFilter::signature(), - WithdrawalInitiatedFilter::signature(), ]; tracing::info!("topic0 {topic0:?}"); @@ -486,26 +479,6 @@ impl L2EventsListener { .await .map_err(|_| Error::ChannelClosing)?; } - L2Events::WithdrawalInitiated(WithdrawalInitiatedFilter { - amount, - l_2_token, - .. - }) => { - CHAIN_EVENTS_METRICS.withdrawal_events.inc(); - - let we = WithdrawalEvent { - tx_hash, - block_number: block_number.as_u64(), - token: *l_2_token, - amount: *amount, - }; - let event = we.into(); - tracing::info!("sending withdrawal event {event:?}"); - sender - .send(event) - .await - .map_err(|_| Error::ChannelClosing)?; - } L2Events::ContractDeployed(_) => { let tx = middleware .zks_get_transaction_receipt(log.transaction_hash.unwrap_or_else(|| { diff --git a/client/src/lib.rs b/client/src/lib.rs index 4e312c3..c609735 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -81,7 +81,6 @@ pub fn is_eth(address: Address) -> bool { enum WithdrawalEvents { BridgeBurn(BridgeBurnFilter), Withdrawal(WithdrawalFilter), - WithdrawalInitiated(WithdrawalInitiatedFilter), } lazy_static! { @@ -340,7 +339,6 @@ impl ZksyncMiddleware for Provider

{ .filter(|log| { log.topics[0] == BridgeBurnFilter::signature() || log.topics[0] == WithdrawalFilter::signature() - || log.topics[0] == WithdrawalInitiatedFilter::signature() }) .nth(index) .ok_or(Error::WithdrawalLogNotFound(index, withdrawal_hash))?; @@ -349,13 +347,6 @@ impl ZksyncMiddleware for Provider

{ let withdrawal_event = WithdrawalEvents::decode_log(&raw_log)?; let l2_to_l1_message_hash = match withdrawal_event { - WithdrawalEvents::WithdrawalInitiated(w) => { - let addr_lock = TOKEN_ADDRS.lock().await; - let l_1_token = addr_lock - .get(&w.l_2_token) - .ok_or(Error::L2TokenUnknown(w.l_2_token))?; - get_l1_bridge_burn_message_keccak(w.amount, w.l_1_receiver, *l_1_token)? - } WithdrawalEvents::BridgeBurn(b) => { let mut addr_lock = TOKEN_ADDRS.lock().await; From a4e91dd1fe20639314f9441185da6cb8ec0d598f Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Tue, 16 Jan 2024 19:09:28 +0100 Subject: [PATCH 019/128] fix(finalizer): introduce an optional threshold to eth withdrawals (#348) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- README.md | 1 + bin/withdrawal-finalizer/src/config.rs | 3 ++ bin/withdrawal-finalizer/src/main.rs | 7 +++++ finalizer/src/lib.rs | 13 +++++++-- ...9d0503e6498288f4f40911dd1b2decb4a327.json} | 7 +++-- ...a785f5128591f617d214d5929152d3469800.json} | 7 +++-- ...f1622e1f15489530ccf7fd8a93088f4b6bf7.json} | 7 +++-- storage/src/lib.rs | 29 ++++++++++++++++++- 8 files changed, 62 insertions(+), 12 deletions(-) rename storage/.sqlx/{query-c16ff516b3b4c276e35d802175f6b8c3a33826b9d8c3425153b3c254198d7af8.json => query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json} (84%) rename storage/.sqlx/{query-1429bfeafe86ef0ce1449e07709bcce578fe6c917592a00654294c881dcc609a.json => query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json} (84%) rename storage/.sqlx/{query-0296c80dfb2f21e40580333a071f07e0c0b25eb548cc83f9386c810847a3aa65.json => query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json} (84%) diff --git a/README.md b/README.md index 250467d..3b25028 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ Deployment is done by deploying a dockerized image of the service. | `CUSTOM_TOKEN_DEPLOYER_ADDRESSES` | (Optional) Normally ERC20 tokens are deployed by the bridge contract. However, in custom cases it may be necessary to override that behavior with a custom set of addresses that have deployed tokens | | `CUSTOM_TOKEN_ADDRESSES` | (Optional) Adds a predefined list of tokens to finalize. May be useful in case of custom bridge setups when the regular technique of finding token deployments does not work. | | `ENABLE_WITHDRAWAL_METERING` | (Optional, default: `"true"`) By default Finalizer collects metrics about withdrawn token volumens. Users may optionally switch off this metering. | +| `ETH_FINALIZATION_THRESHOLD`| (Optional, default: "0") Finalizer will only finalize ETH withdrawals that are greater or equal to this value | The configuration structure describing the service config can be found in [`config.rs`](https://github.com/matter-labs/zksync-withdrawal-finalizer/blob/main/bin/withdrawal-finalizer/src/config.rs) diff --git a/bin/withdrawal-finalizer/src/config.rs b/bin/withdrawal-finalizer/src/config.rs index 01e64bf..5b7912c 100644 --- a/bin/withdrawal-finalizer/src/config.rs +++ b/bin/withdrawal-finalizer/src/config.rs @@ -83,6 +83,9 @@ pub struct Config { #[envconfig(from = "CUSTOM_TOKEN_ADDRESS_MAPPINGS")] pub custom_token_address_mappings: Option, + + #[envconfig(from = "ETH_FINALIZATION_THRESHOLD")] + pub eth_finalization_threshold: Option, } #[derive(Deserialize, Serialize, Debug, Eq, PartialEq)] diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index facc008..b544c9e 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -283,6 +283,12 @@ async fn main() -> Result<()> { config.batch_finalization_gas_limit, ); + let eth_finalization_threshold = match config.eth_finalization_threshold { + Some(eth_finalization_threshold) => { + Some(ethers::utils::parse_ether(eth_finalization_threshold)?) + } + None => None, + }; let finalizer = finalizer::Finalizer::new( pgpool, one_withdrawal_gas_limit, @@ -294,6 +300,7 @@ async fn main() -> Result<()> { finalizer_account_address, config.tokens_to_finalize.unwrap_or_default(), meter_withdrawals, + eth_finalization_threshold, ); let finalizer_handle = tokio::spawn(finalizer.run(client_l2)); diff --git a/finalizer/src/lib.rs b/finalizer/src/lib.rs index edff557..f339cf9 100644 --- a/finalizer/src/lib.rs +++ b/finalizer/src/lib.rs @@ -103,6 +103,7 @@ pub struct Finalizer { account_address: Address, withdrawals_meterer: Option, token_list: TokenList, + eth_threshold: Option, } const NO_NEW_WITHDRAWALS_BACKOFF: Duration = Duration::from_secs(5); @@ -132,6 +133,7 @@ where account_address: Address, token_list: TokenList, meter_withdrawals: bool, + eth_threshold: Option, ) -> Self { let withdrawals_meterer = meter_withdrawals.then_some(WithdrawalsMeter::new( pgpool.clone(), @@ -157,6 +159,7 @@ where account_address, withdrawals_meterer, token_list, + eth_threshold, } } @@ -351,14 +354,19 @@ where let try_finalize_these = match &self.token_list { TokenList::All => { - storage::withdrawals_to_finalize(&self.pgpool, self.query_db_pagination_limit) - .await? + storage::withdrawals_to_finalize( + &self.pgpool, + self.query_db_pagination_limit, + self.eth_threshold, + ) + .await? } TokenList::WhiteList(w) => { storage::withdrawals_to_finalize_with_whitelist( &self.pgpool, self.query_db_pagination_limit, w, + self.eth_threshold, ) .await? } @@ -367,6 +375,7 @@ where &self.pgpool, self.query_db_pagination_limit, b, + self.eth_threshold, ) .await? } diff --git a/storage/.sqlx/query-c16ff516b3b4c276e35d802175f6b8c3a33826b9d8c3425153b3c254198d7af8.json b/storage/.sqlx/query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json similarity index 84% rename from storage/.sqlx/query-c16ff516b3b4c276e35d802175f6b8c3a33826b9d8c3425153b3c254198d7af8.json rename to storage/.sqlx/query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json index 8587e13..e1f56a3 100644 --- a/storage/.sqlx/query-c16ff516b3b4c276e35d802175f6b8c3a33826b9d8c3425153b3c254198d7af8.json +++ b/storage/.sqlx/query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", "describe": { "columns": [ { @@ -57,7 +57,8 @@ "parameters": { "Left": [ "Int8", - "ByteaArray" + "ByteaArray", + "Numeric" ] }, "nullable": [ @@ -73,5 +74,5 @@ false ] }, - "hash": "c16ff516b3b4c276e35d802175f6b8c3a33826b9d8c3425153b3c254198d7af8" + "hash": "70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327" } diff --git a/storage/.sqlx/query-1429bfeafe86ef0ce1449e07709bcce578fe6c917592a00654294c881dcc609a.json b/storage/.sqlx/query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json similarity index 84% rename from storage/.sqlx/query-1429bfeafe86ef0ce1449e07709bcce578fe6c917592a00654294c881dcc609a.json rename to storage/.sqlx/query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json index a5835dd..adb68a8 100644 --- a/storage/.sqlx/query-1429bfeafe86ef0ce1449e07709bcce578fe6c917592a00654294c881dcc609a.json +++ b/storage/.sqlx/query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND (\n last_finalization_attempt IS NULL\n OR\n last_finalization_attempt < NOW() - INTERVAL '1 minutes'\n )\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND (\n last_finalization_attempt IS NULL\n OR\n last_finalization_attempt < NOW() - INTERVAL '1 minutes'\n )\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2\n ELSE TRUE\n END\n )\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", "describe": { "columns": [ { @@ -56,7 +56,8 @@ ], "parameters": { "Left": [ - "Int8" + "Int8", + "Numeric" ] }, "nullable": [ @@ -72,5 +73,5 @@ false ] }, - "hash": "1429bfeafe86ef0ce1449e07709bcce578fe6c917592a00654294c881dcc609a" + "hash": "e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800" } diff --git a/storage/.sqlx/query-0296c80dfb2f21e40580333a071f07e0c0b25eb548cc83f9386c810847a3aa65.json b/storage/.sqlx/query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json similarity index 84% rename from storage/.sqlx/query-0296c80dfb2f21e40580333a071f07e0c0b25eb548cc83f9386c810847a3aa65.json rename to storage/.sqlx/query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json index bf3dce8..3e2e10b 100644 --- a/storage/.sqlx/query-0296c80dfb2f21e40580333a071f07e0c0b25eb548cc83f9386c810847a3aa65.json +++ b/storage/.sqlx/query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token NOT IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token NOT IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", "describe": { "columns": [ { @@ -57,7 +57,8 @@ "parameters": { "Left": [ "Int8", - "ByteaArray" + "ByteaArray", + "Numeric" ] }, "nullable": [ @@ -73,5 +74,5 @@ false ] }, - "hash": "0296c80dfb2f21e40580333a071f07e0c0b25eb548cc83f9386c810847a3aa65" + "hash": "f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7" } diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 0310903..afc7f56 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -5,7 +5,7 @@ //! Finalizer watcher.storage.operations. -use ethers::types::{Address, H160, H256}; +use ethers::types::{Address, H160, H256, U256}; use sqlx::{PgConnection, PgPool}; use chain_events::L2TokenInitEvent; @@ -746,8 +746,11 @@ pub async fn withdrawals_to_finalize_with_blacklist( pool: &PgPool, limit_by: u64, token_blacklist: &[Address], + eth_threshold: Option, ) -> Result> { let blacklist: Vec<_> = token_blacklist.iter().map(|a| a.0.to_vec()).collect(); + // if no threshold, query _all_ ethereum withdrawals since all of them are >= 0. + let eth_threshold = eth_threshold.unwrap_or(U256::zero()); let data = sqlx::query!( " @@ -782,6 +785,11 @@ pub async fn withdrawals_to_finalize_with_blacklist( AND w.token NOT IN (SELECT * FROM UNNEST ( $2 :: BYTEA [] )) + AND ( + CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3 + ELSE TRUE + END + ) ORDER BY finalization_data.l2_block_number LIMIT @@ -789,6 +797,7 @@ pub async fn withdrawals_to_finalize_with_blacklist( ", limit_by as i64, &blacklist, + u256_to_big_decimal(eth_threshold), ) .fetch_all(pool) .await? @@ -816,8 +825,11 @@ pub async fn withdrawals_to_finalize_with_whitelist( pool: &PgPool, limit_by: u64, token_whitelist: &[Address], + eth_threshold: Option, ) -> Result> { let whitelist: Vec<_> = token_whitelist.iter().map(|a| a.0.to_vec()).collect(); + // if no threshold, query _all_ ethereum withdrawals since all of them are >= 0. + let eth_threshold = eth_threshold.unwrap_or(U256::zero()); let data = sqlx::query!( " @@ -852,6 +864,11 @@ pub async fn withdrawals_to_finalize_with_whitelist( AND w.token IN (SELECT * FROM UNNEST ( $2 :: BYTEA [] )) + AND ( + CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3 + ELSE TRUE + END + ) ORDER BY finalization_data.l2_block_number LIMIT @@ -859,6 +876,7 @@ pub async fn withdrawals_to_finalize_with_whitelist( ", limit_by as i64, &whitelist, + u256_to_big_decimal(eth_threshold), ) .fetch_all(pool) .await? @@ -885,8 +903,11 @@ pub async fn withdrawals_to_finalize_with_whitelist( pub async fn withdrawals_to_finalize( pool: &PgPool, limit_by: u64, + eth_threshold: Option, ) -> Result> { let latency = STORAGE_METRICS.call[&"withdrawals_to_finalize"].start(); + // if no threshold, query _all_ ethereum withdrawals since all of them are >= 0. + let eth_threshold = eth_threshold.unwrap_or(U256::zero()); let data = sqlx::query!( " @@ -923,12 +944,18 @@ pub async fn withdrawals_to_finalize( OR last_finalization_attempt < NOW() - INTERVAL '1 minutes' ) + AND ( + CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2 + ELSE TRUE + END + ) ORDER BY finalization_data.l2_block_number LIMIT $1 ", limit_by as i64, + u256_to_big_decimal(eth_threshold), ) .fetch_all(pool) .await? From 05739f55bf24149de1550cf2e9893b2a773343fd Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 19:17:06 +0100 Subject: [PATCH 020/128] chore(main): release 0.4.0 (#316) :robot: I have created a release *beep* *boop* --- ## [0.4.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.3.4...v0.4.0) (2024-01-16) ### Features * **contracts:** Add the WithdrawalFinalizer Contract ([#314](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/314)) ([aa71fcb](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/aa71fcb7cdac8c2dcc557a53431738b7be847da8)) ### Bug Fixes * **chain-events:** do not listen to withdrawalinitiated events ([#347](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/347)) ([08e6971](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/08e6971fb31c72fd55441b781ef185afd52953b3)) * **deps:** update dependency @matterlabs/zksync-contracts to ^0.6.0 ([#317](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/317)) ([6067bc1](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/6067bc11751b7cdede63a38053b897df9a095d61)) * **deps:** update dependency ethers to v6 ([#329](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/329)) ([a3ca0bd](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a3ca0bde3bb8ad1d69c6ff8ecde724b09b68e6ff)) * **deps:** update dependency zksync-web3 to ^0.17.0 ([#318](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/318)) ([2cb7d58](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/2cb7d5820b267c7ba4068deccdfb8ed72019f121)) * **finalizer:** introduce an optional threshold to eth withdrawals ([#348](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/348)) ([a4e91dd](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a4e91dd1fe20639314f9441185da6cb8ec0d598f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 18cac80..2537c1f 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.3.4" + ".": "0.4.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 899da6b..00b790b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## [0.4.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.3.4...v0.4.0) (2024-01-16) + + +### Features + +* **contracts:** Add the WithdrawalFinalizer Contract ([#314](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/314)) ([aa71fcb](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/aa71fcb7cdac8c2dcc557a53431738b7be847da8)) + + +### Bug Fixes + +* **chain-events:** do not listen to withdrawalinitiated events ([#347](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/347)) ([08e6971](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/08e6971fb31c72fd55441b781ef185afd52953b3)) +* **deps:** update dependency @matterlabs/zksync-contracts to ^0.6.0 ([#317](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/317)) ([6067bc1](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/6067bc11751b7cdede63a38053b897df9a095d61)) +* **deps:** update dependency ethers to v6 ([#329](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/329)) ([a3ca0bd](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a3ca0bde3bb8ad1d69c6ff8ecde724b09b68e6ff)) +* **deps:** update dependency zksync-web3 to ^0.17.0 ([#318](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/318)) ([2cb7d58](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/2cb7d5820b267c7ba4068deccdfb8ed72019f121)) +* **finalizer:** introduce an optional threshold to eth withdrawals ([#348](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/348)) ([a4e91dd](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a4e91dd1fe20639314f9441185da6cb8ec0d598f)) + ## [0.3.4](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.3.3...v0.3.4) (2023-11-14) From 0fbddd49d17945778574ef8ab27522753f85ae7f Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 17 Jan 2024 11:40:49 +0100 Subject: [PATCH 021/128] fix(storage): remove order by to optimize query (#349) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- ...29f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json} | 4 ++-- ...668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json} | 4 ++-- ...2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json} | 4 ++-- storage/src/lib.rs | 6 ------ 4 files changed, 6 insertions(+), 12 deletions(-) rename storage/.sqlx/{query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json => query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json} (93%) rename storage/.sqlx/{query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json => query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json} (92%) rename storage/.sqlx/{query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json => query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json} (93%) diff --git a/storage/.sqlx/query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json b/storage/.sqlx/query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json similarity index 93% rename from storage/.sqlx/query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json rename to storage/.sqlx/query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json index adb68a8..6a16780 100644 --- a/storage/.sqlx/query-e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800.json +++ b/storage/.sqlx/query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND (\n last_finalization_attempt IS NULL\n OR\n last_finalization_attempt < NOW() - INTERVAL '1 minutes'\n )\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2\n ELSE TRUE\n END\n )\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND (\n last_finalization_attempt IS NULL\n OR\n last_finalization_attempt < NOW() - INTERVAL '1 minutes'\n )\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2\n ELSE TRUE\n END\n )\n LIMIT\n $1\n ", "describe": { "columns": [ { @@ -73,5 +73,5 @@ false ] }, - "hash": "e3bccab1832ae37d7a5a274474f9a785f5128591f617d214d5929152d3469800" + "hash": "21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e" } diff --git a/storage/.sqlx/query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json b/storage/.sqlx/query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json similarity index 92% rename from storage/.sqlx/query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json rename to storage/.sqlx/query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json index 3e2e10b..460f757 100644 --- a/storage/.sqlx/query-f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7.json +++ b/storage/.sqlx/query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token NOT IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token NOT IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n LIMIT\n $1\n ", "describe": { "columns": [ { @@ -74,5 +74,5 @@ false ] }, - "hash": "f041b2f10b01842b3315f7d0354bf1622e1f15489530ccf7fd8a93088f4b6bf7" + "hash": "78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de" } diff --git a/storage/.sqlx/query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json b/storage/.sqlx/query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json similarity index 93% rename from storage/.sqlx/query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json rename to storage/.sqlx/query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json index e1f56a3..794981b 100644 --- a/storage/.sqlx/query-70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327.json +++ b/storage/.sqlx/query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n ORDER BY\n finalization_data.l2_block_number\n LIMIT\n $1\n ", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n LIMIT\n $1\n ", "describe": { "columns": [ { @@ -74,5 +74,5 @@ false ] }, - "hash": "70c7bb78bf525cf29c0d5bd1c3a59d0503e6498288f4f40911dd1b2decb4a327" + "hash": "8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28" } diff --git a/storage/src/lib.rs b/storage/src/lib.rs index afc7f56..54cce5c 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -790,8 +790,6 @@ pub async fn withdrawals_to_finalize_with_blacklist( ELSE TRUE END ) - ORDER BY - finalization_data.l2_block_number LIMIT $1 ", @@ -869,8 +867,6 @@ pub async fn withdrawals_to_finalize_with_whitelist( ELSE TRUE END ) - ORDER BY - finalization_data.l2_block_number LIMIT $1 ", @@ -949,8 +945,6 @@ pub async fn withdrawals_to_finalize( ELSE TRUE END ) - ORDER BY - finalization_data.l2_block_number LIMIT $1 ", From c5eb7e5be2f76911f6d797a7b6de44f9c78ea42c Mon Sep 17 00:00:00 2001 From: Danil Date: Wed, 17 Jan 2024 16:59:36 +0100 Subject: [PATCH 022/128] feat(l1): parse l2 to l1 message (#352) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --------- Signed-off-by: Danil --- chain-events/src/block_events.rs | 4 +- client/src/contracts/IZkSync.json | 746 ++++++------------------------ client/src/zksync_contract.rs | 204 +++++--- test_tx.txt | 1 + watcher/src/lib.rs | 8 +- 5 files changed, 278 insertions(+), 685 deletions(-) create mode 100644 test_tx.txt diff --git a/chain-events/src/block_events.rs b/chain-events/src/block_events.rs index 1150306..abd24d8 100644 --- a/chain-events/src/block_events.rs +++ b/chain-events/src/block_events.rs @@ -12,7 +12,7 @@ use futures::{Sink, SinkExt, StreamExt}; use client::{ zksync_contract::{ codegen::{ - BlockCommitFilter, BlockExecutionFilter, BlocksVerificationFilter, CommitBlocksCall, + BlockCommitFilter, BlockExecutionFilter, BlocksVerificationFilter, CommitBatchesCall, }, parse_withdrawal_events_l1, }, @@ -282,7 +282,7 @@ where let mut events = vec![]; - if let Ok(commit_blocks) = CommitBlocksCall::decode(&tx.input) { + if let Ok(commit_blocks) = CommitBatchesCall::decode(&tx.input) { let mut res = parse_withdrawal_events_l1( &commit_blocks, tx.block_number diff --git a/client/src/contracts/IZkSync.json b/client/src/contracts/IZkSync.json index b553291..3ddb0b6 100644 --- a/client/src/contracts/IZkSync.json +++ b/client/src/contracts/IZkSync.json @@ -6,13 +6,13 @@ { "indexed": true, "internalType": "uint256", - "name": "blockNumber", + "name": "batchNumber", "type": "uint256" }, { "indexed": true, "internalType": "bytes32", - "name": "blockHash", + "name": "batchHash", "type": "bytes32" }, { @@ -31,13 +31,13 @@ { "indexed": true, "internalType": "uint256", - "name": "blockNumber", + "name": "batchNumber", "type": "uint256" }, { "indexed": true, "internalType": "bytes32", - "name": "blockHash", + "name": "batchHash", "type": "bytes32" }, { @@ -56,19 +56,19 @@ { "indexed": false, "internalType": "uint256", - "name": "totalBlocksCommitted", + "name": "totalBatchesCommitted", "type": "uint256" }, { "indexed": false, "internalType": "uint256", - "name": "totalBlocksVerified", + "name": "totalBatchesVerified", "type": "uint256" }, { "indexed": false, "internalType": "uint256", - "name": "totalBlocksExecuted", + "name": "totalBatchesExecuted", "type": "uint256" } ], @@ -81,38 +81,19 @@ { "indexed": true, "internalType": "uint256", - "name": "previousLastVerifiedBlock", + "name": "previousLastVerifiedBatch", "type": "uint256" }, { "indexed": true, "internalType": "uint256", - "name": "currentLastVerifiedBlock", + "name": "currentLastVerifiedBatch", "type": "uint256" } ], "name": "BlocksVerification", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - } - ], - "name": "CancelUpgradeProposal", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -136,22 +117,49 @@ "anonymous": false, "inputs": [ { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - }, - { + "components": [ + { + "components": [ + { + "internalType": "address", + "name": "facet", + "type": "address" + }, + { + "internalType": "enum Diamond.Action", + "name": "action", + "type": "uint8" + }, + { + "internalType": "bool", + "name": "isFreezable", + "type": "bool" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct Diamond.FacetCut[]", + "name": "facetCuts", + "type": "tuple[]" + }, + { + "internalType": "address", + "name": "initAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "initCalldata", + "type": "bytes" + } + ], "indexed": false, - "internalType": "bytes32", - "name": "proposalSalt", - "type": "bytes32" + "internalType": "struct Diamond.DiamondCutData", + "name": "diamondCut", + "type": "tuple" } ], "name": "ExecuteUpgrade", @@ -182,17 +190,17 @@ { "indexed": true, "internalType": "address", - "name": "oldAllowList", + "name": "oldAdmin", "type": "address" }, { "indexed": true, "internalType": "address", - "name": "newAllowList", + "name": "newAdmin", "type": "address" } ], - "name": "NewAllowList", + "name": "NewAdmin", "type": "event" }, { @@ -219,37 +227,18 @@ "inputs": [ { "indexed": true, - "internalType": "bytes32", - "name": "previousBytecodeHash", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newBytecodeHash", - "type": "bytes32" - } - ], - "name": "NewL2BootloaderBytecodeHash", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "previousBytecodeHash", - "type": "bytes32" + "internalType": "address", + "name": "oldPendingAdmin", + "type": "address" }, { "indexed": true, - "internalType": "bytes32", - "name": "newBytecodeHash", - "type": "bytes32" + "internalType": "address", + "name": "newPendingAdmin", + "type": "address" } ], - "name": "NewL2DefaultAccountBytecodeHash", + "name": "NewPendingAdmin", "type": "event" }, { @@ -409,180 +398,6 @@ "name": "NewPriorityTxMaxGasLimit", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldVerifier", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "newVerifier", - "type": "address" - } - ], - "name": "NewVerifier", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "recursionNodeLevelVkHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "recursionLeafLevelVkHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "recursionCircuitsSetVksHash", - "type": "bytes32" - } - ], - "indexed": false, - "internalType": "struct VerifierParams", - "name": "oldVerifierParams", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "bytes32", - "name": "recursionNodeLevelVkHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "recursionLeafLevelVkHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "recursionCircuitsSetVksHash", - "type": "bytes32" - } - ], - "indexed": false, - "internalType": "struct VerifierParams", - "name": "newVerifierParams", - "type": "tuple" - } - ], - "name": "NewVerifierParams", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - } - ], - "name": "ProposeShadowUpgrade", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "address", - "name": "facet", - "type": "address" - }, - { - "internalType": "enum Diamond.Action", - "name": "action", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "isFreezable", - "type": "bool" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ], - "internalType": "struct Diamond.FacetCut[]", - "name": "facetCuts", - "type": "tuple[]" - }, - { - "internalType": "address", - "name": "initAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "initCalldata", - "type": "bytes" - } - ], - "indexed": false, - "internalType": "struct Diamond.DiamondCutData", - "name": "diamondCut", - "type": "tuple" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "proposalSalt", - "type": "bytes32" - } - ], - "name": "ProposeTransparentUpgrade", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "uint256", - "name": "proposalId", - "type": "uint256" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "proposalHash", - "type": "bytes32" - } - ], - "name": "SecurityCouncilUpgradeApprove", - "type": "event" - }, { "anonymous": false, "inputs": [], @@ -610,20 +425,14 @@ }, { "inputs": [], - "name": "acceptGovernor", + "name": "acceptAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [ - { - "internalType": "bytes32", - "name": "_proposedUpgradeHash", - "type": "bytes32" - } - ], - "name": "cancelUpgradeProposal", + "inputs": [], + "name": "acceptGovernor", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -634,12 +443,12 @@ "components": [ { "internalType": "uint64", - "name": "blockNumber", + "name": "batchNumber", "type": "uint64" }, { "internalType": "bytes32", - "name": "blockHash", + "name": "batchHash", "type": "bytes32" }, { @@ -673,15 +482,15 @@ "type": "bytes32" } ], - "internalType": "struct IExecutor.StoredBlockInfo", - "name": "_lastCommittedBlockData", + "internalType": "struct IExecutor.StoredBatchInfo", + "name": "_lastCommittedBatchData", "type": "tuple" }, { "components": [ { "internalType": "uint64", - "name": "blockNumber", + "name": "batchNumber", "type": "uint64" }, { @@ -706,46 +515,36 @@ }, { "internalType": "bytes32", - "name": "l2LogsTreeRoot", + "name": "priorityOperationsHash", "type": "bytes32" }, { "internalType": "bytes32", - "name": "priorityOperationsHash", + "name": "bootloaderHeapInitialContentsHash", "type": "bytes32" }, { - "internalType": "bytes", - "name": "initialStorageChanges", - "type": "bytes" + "internalType": "bytes32", + "name": "eventsQueueStateHash", + "type": "bytes32" }, { "internalType": "bytes", - "name": "repeatedStorageChanges", + "name": "systemLogs", "type": "bytes" }, { "internalType": "bytes", - "name": "l2Logs", + "name": "totalL2ToL1Pubdata", "type": "bytes" - }, - { - "internalType": "bytes[]", - "name": "l2ArbitraryLengthMessages", - "type": "bytes[]" - }, - { - "internalType": "bytes[]", - "name": "factoryDeps", - "type": "bytes[]" } ], - "internalType": "struct IExecutor.CommitBlockInfo[]", - "name": "_newBlocksData", + "internalType": "struct IExecutor.CommitBatchInfo[]", + "name": "_newBatchesData", "type": "tuple[]" } ], - "name": "commitBlocks", + "name": "commitBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -756,12 +555,12 @@ "components": [ { "internalType": "uint64", - "name": "blockNumber", + "name": "batchNumber", "type": "uint64" }, { "internalType": "bytes32", - "name": "blockHash", + "name": "batchHash", "type": "bytes32" }, { @@ -795,12 +594,12 @@ "type": "bytes32" } ], - "internalType": "struct IExecutor.StoredBlockInfo[]", - "name": "_blocksData", + "internalType": "struct IExecutor.StoredBatchInfo[]", + "name": "_batchesData", "type": "tuple[]" } ], - "name": "executeBlocks", + "name": "executeBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -850,11 +649,6 @@ "internalType": "struct Diamond.DiamondCutData", "name": "_diamondCut", "type": "tuple" - }, - { - "internalType": "bytes32", - "name": "_proposalSalt", - "type": "bytes32" } ], "name": "executeUpgrade", @@ -942,7 +736,7 @@ "inputs": [ { "internalType": "uint256", - "name": "_l2BlockNumber", + "name": "_l2BatchNumber", "type": "uint256" }, { @@ -952,7 +746,7 @@ }, { "internalType": "uint16", - "name": "_l2TxNumberInBlock", + "name": "_l2TxNumberInBatch", "type": "uint16" }, { @@ -967,41 +761,15 @@ } ], "name": "finalizeEthWithdrawal", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "freezeDiamond", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "getAllowList", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], - "name": "getCurrentProposalId", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", + "name": "freezeDiamond", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { @@ -1058,12 +826,12 @@ }, { "inputs": [], - "name": "getPendingGovernor", + "name": "getL2SystemContractsUpgradeBatchNumber", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -1071,12 +839,12 @@ }, { "inputs": [], - "name": "getPriorityQueueSize", + "name": "getL2SystemContractsUpgradeTxHash", "outputs": [ { - "internalType": "uint256", + "internalType": "bytes32", "name": "", - "type": "uint256" + "type": "bytes32" } ], "stateMutability": "view", @@ -1084,12 +852,12 @@ }, { "inputs": [], - "name": "getPriorityTxMaxGasLimit", + "name": "getName", "outputs": [ { - "internalType": "uint256", + "internalType": "string", "name": "", - "type": "uint256" + "type": "string" } ], "stateMutability": "view", @@ -1097,12 +865,12 @@ }, { "inputs": [], - "name": "getProposedUpgradeHash", + "name": "getPendingGovernor", "outputs": [ { - "internalType": "bytes32", + "internalType": "address", "name": "", - "type": "bytes32" + "type": "address" } ], "stateMutability": "view", @@ -1110,7 +878,7 @@ }, { "inputs": [], - "name": "getProposedUpgradeTimestamp", + "name": "getPriorityQueueSize", "outputs": [ { "internalType": "uint256", @@ -1123,12 +891,12 @@ }, { "inputs": [], - "name": "getSecurityCouncil", + "name": "getPriorityTxMaxGasLimit", "outputs": [ { - "internalType": "address", + "internalType": "uint256", "name": "", - "type": "address" + "type": "uint256" } ], "stateMutability": "view", @@ -1136,7 +904,7 @@ }, { "inputs": [], - "name": "getTotalBlocksCommitted", + "name": "getProtocolVersion", "outputs": [ { "internalType": "uint256", @@ -1149,7 +917,7 @@ }, { "inputs": [], - "name": "getTotalBlocksExecuted", + "name": "getTotalBatchesCommitted", "outputs": [ { "internalType": "uint256", @@ -1162,7 +930,7 @@ }, { "inputs": [], - "name": "getTotalBlocksVerified", + "name": "getTotalBatchesExecuted", "outputs": [ { "internalType": "uint256", @@ -1175,7 +943,7 @@ }, { "inputs": [], - "name": "getTotalPriorityTxs", + "name": "getTotalBatchesVerified", "outputs": [ { "internalType": "uint256", @@ -1188,12 +956,12 @@ }, { "inputs": [], - "name": "getUpgradeProposalState", + "name": "getTotalPriorityTxs", "outputs": [ { - "internalType": "enum UpgradeState", + "internalType": "uint256", "name": "", - "type": "uint8" + "type": "uint256" } ], "stateMutability": "view", @@ -1242,19 +1010,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "isApprovedBySecurityCouncil", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "isDiamondStorageFrozen", @@ -1272,7 +1027,7 @@ "inputs": [ { "internalType": "uint256", - "name": "_l2BlockNumber", + "name": "_l2BatchNumber", "type": "uint256" }, { @@ -1353,7 +1108,7 @@ "inputs": [ { "internalType": "uint256", - "name": "_blockNumber", + "name": "_batchNumber", "type": "uint256" } ], @@ -1427,93 +1182,18 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_proposalHash", - "type": "bytes32" - }, - { - "internalType": "uint40", - "name": "_proposalId", - "type": "uint40" - } - ], - "name": "proposeShadowUpgrade", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "address", - "name": "facet", - "type": "address" - }, - { - "internalType": "enum Diamond.Action", - "name": "action", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "isFreezable", - "type": "bool" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ], - "internalType": "struct Diamond.FacetCut[]", - "name": "facetCuts", - "type": "tuple[]" - }, - { - "internalType": "address", - "name": "initAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "initCalldata", - "type": "bytes" - } - ], - "internalType": "struct Diamond.DiamondCutData", - "name": "_diamondCut", - "type": "tuple" - }, - { - "internalType": "uint40", - "name": "_proposalId", - "type": "uint40" - } - ], - "name": "proposeTransparentUpgrade", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { "components": [ { "internalType": "uint64", - "name": "blockNumber", + "name": "batchNumber", "type": "uint64" }, { "internalType": "bytes32", - "name": "blockHash", + "name": "batchHash", "type": "bytes32" }, { @@ -1547,20 +1227,20 @@ "type": "bytes32" } ], - "internalType": "struct IExecutor.StoredBlockInfo", - "name": "_prevBlock", + "internalType": "struct IExecutor.StoredBatchInfo", + "name": "_prevBatch", "type": "tuple" }, { "components": [ { "internalType": "uint64", - "name": "blockNumber", + "name": "batchNumber", "type": "uint64" }, { "internalType": "bytes32", - "name": "blockHash", + "name": "batchHash", "type": "bytes32" }, { @@ -1594,8 +1274,8 @@ "type": "bytes32" } ], - "internalType": "struct IExecutor.StoredBlockInfo[]", - "name": "_committedBlocks", + "internalType": "struct IExecutor.StoredBatchInfo[]", + "name": "_committedBatches", "type": "tuple[]" }, { @@ -1616,7 +1296,7 @@ "type": "tuple" } ], - "name": "proveBlocks", + "name": "proveBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1630,7 +1310,7 @@ }, { "internalType": "uint256", - "name": "_l2BlockNumber", + "name": "_l2BatchNumber", "type": "uint256" }, { @@ -1640,7 +1320,7 @@ }, { "internalType": "uint16", - "name": "_l2TxNumberInBlock", + "name": "_l2TxNumberInBatch", "type": "uint16" }, { @@ -1669,7 +1349,7 @@ "inputs": [ { "internalType": "uint256", - "name": "_blockNumber", + "name": "_l2BatchNumber", "type": "uint256" }, { @@ -1691,7 +1371,7 @@ }, { "internalType": "uint16", - "name": "txNumberInBlock", + "name": "txNumberInBatch", "type": "uint16" }, { @@ -1735,7 +1415,7 @@ "inputs": [ { "internalType": "uint256", - "name": "_blockNumber", + "name": "_l2BatchNumber", "type": "uint256" }, { @@ -1747,7 +1427,7 @@ "components": [ { "internalType": "uint16", - "name": "txNumberInBlock", + "name": "txNumberInBatch", "type": "uint16" }, { @@ -1835,24 +1515,11 @@ "inputs": [ { "internalType": "uint256", - "name": "_newLastBlock", + "name": "_newLastBatch", "type": "uint256" } ], - "name": "revertBlocks", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_upgradeProposalHash", - "type": "bytes32" - } - ], - "name": "securityCouncilUpgradeApprove", + "name": "revertBatches", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1860,38 +1527,12 @@ { "inputs": [ { - "internalType": "contract IAllowList", - "name": "_newAllowList", + "internalType": "address", + "name": "_newPendingAdmin", "type": "address" } ], - "name": "setAllowList", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_l2BootloaderBytecodeHash", - "type": "bytes32" - } - ], - "name": "setL2BootloaderBytecodeHash", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "_l2DefaultAccountBytecodeHash", - "type": "bytes32" - } - ], - "name": "setL2DefaultAccountBytecodeHash", + "name": "setPendingAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1953,58 +1594,15 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "contract Verifier", - "name": "_newVerifier", - "type": "address" - } - ], - "name": "setVerifier", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "bytes32", - "name": "recursionNodeLevelVkHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "recursionLeafLevelVkHash", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "recursionCircuitsSetVksHash", - "type": "bytes32" - } - ], - "internalType": "struct VerifierParams", - "name": "_newVerifierParams", - "type": "tuple" - } - ], - "name": "setVerifierParams", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { "internalType": "uint256", - "name": "_blockNumber", + "name": "_batchNumber", "type": "uint256" } ], - "name": "storedBlockHash", + "name": "storedBatchHash", "outputs": [ { "internalType": "bytes32", @@ -2021,74 +1619,6 @@ "outputs": [], "stateMutability": "nonpayable", "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "components": [ - { - "internalType": "address", - "name": "facet", - "type": "address" - }, - { - "internalType": "enum Diamond.Action", - "name": "action", - "type": "uint8" - }, - { - "internalType": "bool", - "name": "isFreezable", - "type": "bool" - }, - { - "internalType": "bytes4[]", - "name": "selectors", - "type": "bytes4[]" - } - ], - "internalType": "struct Diamond.FacetCut[]", - "name": "facetCuts", - "type": "tuple[]" - }, - { - "internalType": "address", - "name": "initAddress", - "type": "address" - }, - { - "internalType": "bytes", - "name": "initCalldata", - "type": "bytes" - } - ], - "internalType": "struct Diamond.DiamondCutData", - "name": "_diamondCut", - "type": "tuple" - }, - { - "internalType": "uint256", - "name": "_proposalId", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "_salt", - "type": "bytes32" - } - ], - "name": "upgradeProposalHash", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" } ] } diff --git a/client/src/zksync_contract.rs b/client/src/zksync_contract.rs index dc6669f..ab5ef0e 100644 --- a/client/src/zksync_contract.rs +++ b/client/src/zksync_contract.rs @@ -21,7 +21,7 @@ use codegen::{ BlockCommitFilter, BlockExecutionFilter, BlocksRevertFilter, BlocksVerificationFilter, }; -use self::codegen::{CommitBlocksCall, FinalizeEthWithdrawalCall}; +use self::codegen::{CommitBatchesCall, FinalizeEthWithdrawalCall}; /// An `enum` wrapping different block `event`s #[derive(Debug)] @@ -75,32 +75,32 @@ impl std::fmt::Display for BlockEvent { match self { Self::BlockCommit { event: bc, .. } => f .debug_struct("BlockCommitFilter") - .field("block_number", &bc.block_number) - .field("block_hash", &H256::from(&bc.block_hash)) + .field("block_number", &bc.batch_number) + .field("block_hash", &H256::from(&bc.batch_hash)) .field("commitment", &H256::from(&bc.commitment)) .finish(), Self::BlockExecution { event: be, .. } => f .debug_struct("BlockExecution") - .field("block_number", &be.block_number) - .field("block_hash", &H256::from(&be.block_hash)) + .field("block_number", &be.batch_number) + .field("block_hash", &H256::from(&be.batch_hash)) .field("commitment", &H256::from(&be.commitment)) .finish(), Self::BlocksVerification { event: bv, .. } => f .debug_struct("BlocksVerification") .field( - "previous_last_verified_block", - &bv.previous_last_verified_block, + "previous_last_verified_batch", + &bv.previous_last_verified_batch, ) .field( "current_last_verified_block", - &bv.current_last_verified_block, + &bv.current_last_verified_batch, ) .finish(), Self::BlocksRevert { event: br, .. } => f .debug_struct("BlocksRevert") - .field("total_blocks_commited", &br.total_blocks_committed) - .field("total_blocks_verified", &br.total_blocks_verified) - .field("total_blocks_executed", &br.total_blocks_executed) + .field("total_blocks_commited", &br.total_batches_committed) + .field("total_blocks_verified", &br.total_batches_verified) + .field("total_blocks_executed", &br.total_batches_executed) .finish(), Self::L2ToL1Events { events } => f .debug_struct("L2ToL1Events") @@ -125,7 +125,7 @@ impl AbiDecode for L2LogCompresed { let inner = codegen::L2Log { l_2_shard_id: bytes[0], is_service: bytes[1] != 0, - tx_number_in_block: u16::from_be_bytes([bytes[2], bytes[3]]), + tx_number_in_batch: u16::from_be_bytes([bytes[2], bytes[3]]), sender: Address::from_slice(&bytes[4..24]), key: bytes[24..56] .try_into() @@ -163,33 +163,36 @@ pub struct L2ToL1Event { pub tx_number_in_block: u16, } -/// Given a [`CommitBlocksCall`] parse all withdrawal events from [`L2ToL1`] logs. +/// Given a [`CommitBatchesCall`] parse all withdrawal events from [`L2ToL1`] logs. // TODO: rewrite in `nom`. pub fn parse_withdrawal_events_l1( - call: &CommitBlocksCall, + call: &CommitBatchesCall, l1_block_number: u64, l2_erc20_bridge_addr: Address, ) -> Vec { let mut withdrawals = vec![]; - for data in &call.new_blocks_data { - let logs = &data.l_2_logs; - let length_bytes = match logs.get(..4) { + for data in &call.new_batches_data { + let logs_pubdata = &data.total_l2_to_l1_pubdata; + let mut cursor = 0; + let length_bytes = match logs_pubdata.get(..4) { Some(b) => b, None => continue, }; + cursor += 4; let length = u32::from_be_bytes( length_bytes .try_into() .expect("bytes length checked by .get(); qed"), - ); + ) as usize; - let logs = &logs[4..]; + let logs = &logs_pubdata[cursor..]; let mut current_message = 0; - for i in 0..length as usize { + let mut l2_to_l1_compressed_messages = vec![]; + for i in 0..length { let offset = i * L2_TO_L1_LOG_SERIALIZED_SIZE; let log_entry = L2LogCompresed::decode(&logs[offset..(offset + L2_TO_L1_LOG_SERIALIZED_SIZE)]) @@ -199,61 +202,120 @@ pub fn parse_withdrawal_events_l1( continue; } - let message = &data.l_2_arbitrary_length_messages[current_message]; - let message_sender: Address = H256::from(log_entry.0.key).into(); - let l2_block_number = data.block_number; - - if message_sender == ETH_TOKEN_ADDRESS - && FinalizeEthWithdrawalCall::selector() == message[..4] - && message.len() >= 56 - { - let to = Address::from( - TryInto::<[u8; 20]>::try_into(&message[4..24]) - .expect("message length was checked; qed"), - ); - let amount = U256::from( - TryInto::<[u8; 32]>::try_into(&message[24..56]) - .expect("message length was checked; qed"), - ); - - withdrawals.push(L2ToL1Event { - token: ETH_TOKEN_ADDRESS, - to, - amount, - l1_block_number, - l2_block_number, - tx_number_in_block: log_entry.0.tx_number_in_block, - }); - } + l2_to_l1_compressed_messages.push((log_entry, current_message)); - if message_sender == l2_erc20_bridge_addr - && FinalizeWithdrawalCall::selector() == message[..4] - && message.len() >= 68 - { - let to = Address::from( - TryInto::<[u8; 20]>::try_into(&message[4..24]) - .expect("message length was checked; qed"), - ); - let token = Address::from( - TryInto::<[u8; 20]>::try_into(&message[24..44]) - .expect("message length was checked; qed"), - ); - let amount = U256::from( - TryInto::<[u8; 32]>::try_into(&message[44..76]) - .expect("message length was checked; qed"), - ); - withdrawals.push(L2ToL1Event { - token, - to, - amount, - l1_block_number, - l2_block_number, - tx_number_in_block: log_entry.0.tx_number_in_block, - }); - } current_message += 1; } + cursor += length * L2_TO_L1_LOG_SERIALIZED_SIZE; + + let messages_length_bytes = &logs_pubdata[cursor..cursor + 4]; + let messages_length = u32::from_be_bytes( + messages_length_bytes + .try_into() + .expect("bytes length checked by .get(); qed"), + ) as usize; + cursor += 4; + let messages_bytes = &logs_pubdata[cursor..]; + + // reset cursor, now we are working with messages + cursor = 0; + let mut current_message = 0; + for (log_entry, position) in l2_to_l1_compressed_messages { + // We are assuming that the messages are sorted by position + for i in current_message..messages_length { + let current_message_length = u32::from_be_bytes( + messages_bytes[cursor..cursor + 4] + .try_into() + .expect("bytes length checked by .get(); qed"), + ) as usize; + cursor += 4; + let message = &messages_bytes[cursor..cursor + current_message_length]; + cursor += current_message_length; + // If the current message is not the one we are looking for, skip it and increase the cursor + if i < position { + continue; + } + if i > position { + panic!("We should've break before this point") + } + + let message_sender: Address = H256::from(log_entry.0.key).into(); + let l2_block_number = data.batch_number; + + if message_sender == ETH_TOKEN_ADDRESS + && FinalizeEthWithdrawalCall::selector() == message[..4] + && message.len() >= 56 + { + let to = Address::from( + TryInto::<[u8; 20]>::try_into(&message[4..24]) + .expect("message length was checked; qed"), + ); + let amount = U256::from( + TryInto::<[u8; 32]>::try_into(&message[24..56]) + .expect("message length was checked; qed"), + ); + + withdrawals.push(L2ToL1Event { + token: ETH_TOKEN_ADDRESS, + to, + amount, + l1_block_number, + l2_block_number, + tx_number_in_block: log_entry.0.tx_number_in_batch, + }); + } + + if message_sender == l2_erc20_bridge_addr + && FinalizeWithdrawalCall::selector() == message[..4] + && message.len() >= 68 + { + let to = Address::from( + TryInto::<[u8; 20]>::try_into(&message[4..24]) + .expect("message length was checked; qed"), + ); + let token = Address::from( + TryInto::<[u8; 20]>::try_into(&message[24..44]) + .expect("message length was checked; qed"), + ); + let amount = U256::from( + TryInto::<[u8; 32]>::try_into(&message[44..76]) + .expect("message length was checked; qed"), + ); + withdrawals.push(L2ToL1Event { + token, + to, + amount, + l1_block_number, + l2_block_number, + tx_number_in_block: log_entry.0.tx_number_in_batch, + }); + } + current_message = i + 1; + break; + } + } } withdrawals } + +#[cfg(test)] +mod tests { + use super::*; + use ethers::abi::Bytes; + use hex::FromHex; + use std::str::FromStr; + + #[test] + fn parse_l2_to_l1() { + let input = include_str!("../../test_tx.txt"); + let bytes = Bytes::from_hex(input).unwrap(); + let block = CommitBatchesCall::decode(bytes).unwrap(); + let withdrawals = parse_withdrawal_events_l1( + &block, + 0, + Address::from_str("11f943b2c77b743AB90f4A0Ae7d5A4e7FCA3E102").unwrap(), + ); + assert_eq!(withdrawals.len(), 19); + } +} diff --git a/test_tx.txt b/test_tx.txt new file mode 100644 index 0000000..1939a96 --- /dev/null +++ b/test_tx.txt @@ -0,0 +1 @@ +701f58c500000000000000000000000000000000000000000000000000000000000618d3230f3a35bca6728344d0d6a1cbd7827c2c0a1f8c39fea26404b2c3b60af2d17e000000000000000000000000000000000000000000000000000000000c6d60a90000000000000000000000000000000000000000000000000000000000000000c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470c7bb425fbce41bdaf9701abe5e2f7c0bcb3e68dc9ba8489739014f0321d216ee0000000000000000000000000000000000000000000000000000000065a7d1e38f5892656422bb92ccf9ccbce6e582ef22fda0728499f7af1124a11f8befdbaa000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000cf8000000000000000000000000000000000000000000000000000000000000618d40000000000000000000000000000000000000000000000000000000065a7d228000000000000000000000000000000000000000000000000000000000c6d626b7cd38408cb6037fe8a1f9c5e72a6cdd324b91c7cdcc95de1e9c0c06f934cd1630000000000000000000000000000000000000000000000000000000000000000c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47056120cd01ecd793c04292e6e2cd9357adf18c21f034d7d875207287736b4999a8908b701590aa5fe88fc82be05b704260159e0531d5ee0c98e09c891f788067b000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000026800000000000000000000000000000000000000000000800b0000000000000000000000000000000000000000000000000000000000000004230f3a35bca6728344d0d6a1cbd7827c2c0a1f8c39fea26404b2c3b60af2d17e000003e8000000000000000000000000000000000000800b000000000000000000000000000000000000000000000000000000000000000300000000000000000000000065a7d22800000000000000000000000065a7d269000103e800000000000000000000000000000000000080010000000000000000000000000000000000000000000000000000000000000005c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470000103e8000000000000000000000000000000000000800100000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000103e8000000000000000000000000000000000000800800000000000000000000000000000000000000000000000000000000000000006a6947b1b7d28a8656c25c8f8a4cb707ec9e42f09565419234b154ad16ace967000103e800000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000001c1d115c6d61e9fb17620b5a1272da139589aa917760cab34eb5fdf12e7952e54000103e800000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000002404d767fa1adcb686597d5a179dfa403cf1387881753cc2625b8d863d0142edb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000cb3600000005000101870000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800a966c8816e6e1023fe60ceba89b5755c3898bf496f3f4a90d49106f8cdfbe7cda000101a10000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800a89ebcb7f34c55e4236de734539af7d1b90dd032965d29e5c76d22f2a1cc88ce6000101cd0000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800a4f2f7eb07ce4d62d3cfafcad0efa13142eca3617a4cda0703bfd4e8b3c021504000103660000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800a4c7d8d17149481cff615110e3d21dce9837724c6f72d31d97524b18f9beb8493000103ac0000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800ae5ac95856be09f492a364772f1a4e43c80ae10b9ea93003eb3a7a314fbc657cf00000005000000386c0960f97a7b97ea16a9b505725a4dc39428319b6b850189000000000000000000000000000000000000000000000000001643d07bfb5d15000000386c0960f990a2f06feef126b21bd87bb204db53af9a0ed15f00000000000000000000000000000000000000000000000000153446c6a79b25000000386c0960f91542be541573306cfacb71f9e2d269223f02312b00000000000000000000000000000000000000000000000000189c0dd56563b9000000386c0960f98e2466dca3d76de08024cd81e3568fb72e5a7948000000000000000000000000000000000000000000000000001644fe05f51415000000386c0960f9f873e6eb2951b7a22740ab4c3280e34bb5e3c7390000000000000000000000000000000000000000000000000166d2f702508000000000000100c8410401c2caa2b907baa4ed7d68e726da567ea4e7e5a182edeb03adcc091890a85a560efe0001000727d2308686dfbd3af07990542407e5394c44f4c81351e6bfb91a966e6941a096f9f8fe2e5ee3c57c90b308ca341ca0a2bbb02e05971c6c16df89e5b86900010000a580e6ee8ffd39da0b01df8b667264b03a1a6e47b352168527ea56235bfa12aaa1216bad1ca57ed7323f8129da56d35e132099f021948980ebdafb05a909016ba45c589f78fb54d0e0ffae5908a9f41763414db81ece985b0a2cff4c7493dc0901933f98180e23c8dac6434ca388f9b3091971371bd414526403705644edb38658090311bf97942365bb9b6a84cf60f87a14707ee84d9b9965ccc12cb61bb2e0fcd0d40901a7db8c3417630482d57d1ba30eea1a1f44ca791eb49b2866ddaebe7bd62a616d0901b6351772b07cc847a81ef370d3c5a90afdbc59511e84a776778478a0078e1a550901997846c4b5e480a125425c1f108202dc317d46000cf1d99baa57bca3519250480902eba276a49fd3a3b2c5dc57df0feac55272b0371d763593dde0e26cf24db15caa09012c91130303f39c26b9225bcad8b6c56b44d0751ed4ca197e07a754194be449350901cd7e713bbdfb7b9f55c6bf0c94ca1f411bb14ebd00a139dea6d6e9f62e4263cd3903a814488acc00daddb15401720626de8808c333c26183ae3c4e305461f29aa0c5f37bb446c5f831886c98b76000983f3485bf407ddab3d80709c6a52f381f6909172b2a87891c9b342eedd324e23906ed83c14fe000735a0c1c4021263bd76d5740d081255d9d8839ae315c30be0641141af13e551a3904c2b90fffc0002a3f7810e00d36f102e2b714eb2fd9bc2d4ca3a40b1952a592abd7da2ec43b5c41013e3040042bad001e81fbfc48c93d4e5f12ef7f9fcb4c06a8cf24cf90566a1c8396f467b6ad118300230f3a35bca6728344d0d6a1cbd7827c2c0a1f8c39fea26404b2c3b60af2d17eebd2fe2c2df9a0cd879d39f1455d5e316342e33a828338dca62098cad6c1da65e103433db75c7a5877e9024c580000000000000000000000000000c92a8dede906e94ba6d85529e2984205813be4d0186adff73405c464e7ea58f3fab5e103433db75ef5424b92e9069c0000000000000000000000001f67561fb1da7bafbee6cfc04a76a02c41d2a5f6d5ce517480d6b92853127d3ec22d97a1e1034d0efbe13fdd4cc32e8d67000000000000000059a7d9a4f6fe303fc4afd4a06ff7066aa3cd29f0f00c79ef955c972f1dd0d72d2d0e521e7c612db8090aa9befaa99988e35d9e8a11b1e126e3af7a7e0f19ed220b22046e93a00c997f2c09087b69560a59b10d4ce09e3fe09bd7ed54070de6d7ea6d9f148d341deceff8e6f40901880890cb5712e7fb1d7cc2baea45c788032d4b9624928da57e51b1da432c5000a13b12363be89a99dc9d53a21dedfef53e0ee1897ca726d3a7e4ab789e8b671cbac71d5048c715c430b4b31d7105fe67ecea41bcc121678a5728d1ac7fdd8c6531788f92a296400db9cefa62753a3c3d44f4094df9c70e8a42330074727565616e796f6365616e2e73756d6d65720000000000000000000000002628b07319ee6c541a48310c41107242233ef6a11753dd882a9309f62c703edb8f311979017270c71afe155d4db239ab04a55d9a5a88f569a6594f7108ce60178e7d3b9403ece4afa15f19bf731437db95f630cf7b03a47506733044ef158666c756b52c5fec795b8c4589bfce16ee27a83b277f8f8fabf11ad8fe9d670901e436f79364bb6bc5560ca63795d1f7fb0c2e05ade0d06976893a0223ca63bdcaa167353586d23bcee18e003752e4be7de4825b48eba902ed9a73af926919cc17ad3c0bd5316fb0c716e6d9c2fa37fde1920983aca90901e5fbb0c8c188b26547074dc62bda86a1b54ac1d89262c63c6e94d1a52912a27229d60172709d352cd84288bc391f30f65fb6deb12f66e881b6950aa0ffaaa0098072b09ded74490ed5d2a3a02d9046b611532c11673943b122866d25c1098e11348f455f2d1709f64839bf65520f91d70a015f8b186b59f8386e9e77334b6b840e0fd46eb0cde20679f5adfc03ca23519a8f51038d7ea4c680000000001858b7d829306411575baac44718fa7b472985e04868a07429a508a123719bd24101ac57738af04eaa0dee481d7b33d5cd4be9c6da82907d44a0db51010175078e62415995c6502abf41018df85603bc655fb62f0b684a50e56698f43ba43d0e3ff5be82703d899302d9640fefbfe6a0ff0f0901cd529249b5165bf06b55a48d2920eb5aecd088c8d6102507c34b3f70d1f1b7e20901be4f296fd3a472bb315eebae42849434024d09b1d2eab820948d303a747068afa14bd49374bcbe3704c7b482173049b1002eed3b2e5c1d2cae26b90c2ef9b92eddd00aed16bf67f2bf892ac36060dfdb85e7cc55b7a1b4beb1106b02268fe7a065f21d2fc7852553a4309e7d0719e6f1e51bb42b0bca8c55b1f7dcda0d96a5a416111a8f1d98a40c3ee3312732017270ab26e9b642405d170e2ac3a3ee6d5b47884bcba8e03ab4a81b5fef4190f8ecbbf1090105b6c3b33ec77b27e821a62a163bd66ff050a55a53aae589f6f0e9dfd025a03919027063fb07d16b10b57a61a07d70a3abf543cd47133faeabb95a9e3d59a03292d0ada719a92b963ec7c3ec7241fceb4bdda798762de81c930729326ba71929a092cb741edcb6f74901f0ba352790d66a2b54ce516634a04ff338bbef780c47a87425f85dc375f5bc9f358a1c9ce3fb4e670a01c850e12e1d465d25954f8b268e16feae405df4cf78963fdbd9ca0e1b83e3e145292820667cd2ff5a024fb06a6cf168c89c56bcbe8d67106b6cfeda6337ef896c0ea92d6835587a20965afd78e3c4be8f3e5f11f284b1772446d72a6320066bd67a91650350bfeaff94ec817b711e329c268624d8578b9a0392d70b0d30e9046d82f34353216f1e2ac12effdc3bad68950069a600db42fbffa5ddd8bcbfdc36f6e25be113f95406abeed121f894a8c20ca8fb6071a0fac9685ffc6101cc405baaa82239821a3581616197051b53aea1190ee3be2d3bdbb0b1e8fe7bba8b8bef72096b476f7a71c38170ee9fadb5f7e895b9e0eaa1c5db68f30d21cbe0c9eac7be5ea83468d69297e6a5bbd888ee8da28691a8cf674ee825dc056eda87fbe55832f6ab25c2c7da76190901f9838381e46114fc578d6ebb26214cf6651a28c63f5acc3e5f03100864adc34309016a55011655363c7d4f42dcae89ec2749a50db1f28a1ff85d630cbc6c7a4ab760410ed7827f817c828b5ae578aa34a828cb81d24746b0d3c481dd76b51722a6cf8b81ae1bd5beedc01ba10e595bfcafb552f83e25d24e8a383f88c1ab48a451e8e82802fadbf500280b6342f06bab66c5b6880d5b2ce980b7f12fec94bd9009010906dc5d7fc11850bd62c2c61f1d39a4b947b5a672e0a90fa8893a93a57d69dda15603a110e73d9d7a1da2ebb57456b1392944a765a92be06ef52fcc02fe3f0ac26a58ec329ef2efa0f85ac06215e1f15eea23fec4a12fe24395472c7dcbd65bf2c1c6821121b56cad6f588ff3d128e22987105d97c56629172a94122f2b3a9f15d07f8a5061391bc0843118e3017270927959fef0d3c3cbf8215305ad7c7aaeac3ca800f8dc575e252e25aa10ac186b2f3118e4017270b6703713b87ec38df8042e46bf94f6885c4ea904f8ab8c6a4356327ee48e7fa4b1090160aca8fee48e13f6a2424aed77febc3663dedacefc0b77c558f80ebdd8baedff51016775f775a7edf4599b84f54bbc11ae09acd627791c6b8b336d5fc328cead3331ec1c17a566d40ee2750a012e0248ac00f92ba91f36f8ece45130ab122c07fce6bc60dbe7be1ded7cab3c3319f3a4410ec0220622904363511368ee256233c4a6dacb1c5784c19ebc86684a78f243360a0176831b481e05cfed5098b0bd6ba83b5d7c8dd5e74f7ec4af63053c79e2062ff00a0141b4876787eeb027a838d67e578404cd22706523964733267bddc919f26af4d50a01f6a637d1835a210700c4c7afdcc7ca6a212eea8cfd717c8a22f87304478ad8b80a01525f13b0217d3133508d1cb602616bc6bbec5d42aa90ceabb684a5d0a49f63940a011ce7b71a7700c2ce3f3a5327d03233bc919e231380a4539bdcc4c6c2ca5339f01927235d77ef3d5356c34063c1da2978d88dfdf802efe2d287f61ee43525d3d579aaed8a0a0164aabed9afee9d7a6a5870ce0c3f4bd4e11bb901914b6f4df6aa853c56f8e317218fcd979082e03c7e6fc0fd8af4e922cbfd20f44cf085bb24ac29bc0ec8dc1a70fd91928d212b459029f0bca4c3e647d62538ff52694a131d1e5885e26e7dfcd40fe24b01e35f0f386b0a01053789af1abff3fa13134e8f03b0d0bf838cd9e3ee73a421436407b49c17dd2a0a01dce6347065331627ad1d4b50878140b6fcf2e5e5c3c62b1a8a4f051d5807a5dd19bbed80d2bbdea1b9f8e4481592a7cd32ed4547af16d2970ce55a4736577a2880eeefcd210102f22836e7dcb2c2776575a3a0446ed43b73c273a5671fba667592b8fe7a5141dc3b7919bf87ef686d7740a20fa7b677aab9d74895b2670107b095833a1d297aa7daf300e0e5891127105a48523cd4ca3195811823837b36414249bc191faef83515580e0c3168bfd8a00a013ddeea638f5fdcf59b97bbc93dbfc3367f1810e11936678d983e3d574fff67bc191c0b95f5c4c18b8324f05b388e22ba2dc88014bba382a8207ec9616a0e048c8e7cb1ae0a01baad15b216740084ff94108752d13546520f9ba6ff729525d8a6c80d81b7cb1719a7dc408a1c5de8cd302c7a8a3f9a4e6474f529eb933bfc837f783e0e3bdb0e352a1ce71158f03189906780a96e9016ff3ae96cddc4d921bd092940b1e3d74a51bacd39ada5230a015f03a38952814693217b42c56d27fa37c28a5ed19aa03c0f394241c8b20e38b00a01d65e9802b8f97f4b6a9326997ffe99ee56cb3a483352467967eb1f871b3ead2119a70da00682f2d9a45ddaf16bd5bdc2afb662b8dbefff9b7b49afc01e963f837fe908000a01cf2759c6808dacc3aeef0868486a001b923eac1d9448ec7d739a7e4b8a6887362123d9683c416e546720ffbc6cd803266b6b6bf3f06b6352a0c7fb5de44a7f09f961ff5fed0a016ea532ea1dbdc8a77ee073466898350f0e89c05dc2a20a6c4b578e476fee6c7321015ad599d2e394931ef9f913581ea6be24e997e4ade1a0e2e225e3352ee26f479208ab600901c7f090cabf1097e846306f343758f984d720b5275d884a6dabb9019cc86da6401945d7125a277b21fd52964484b547b209af2b2a77ea8607d0e7e331d9c5005740ba043e1118978a46a4373aa0ed88fc688230e7af223271a30ff1b0e72c03638263c73cf0f137210f72f6312dda64d6420479f65f7c6ecf387aeb97f70a2994dac62c81bdde1b025f5ebf4c19c30f170b28eb43e215edd2f3a26c5e96a8a9704a5f0c5f65594f8bc4e961438c95f7d0194fc16aa6e0df8cce4835e08f558bc278c0a3f09fe35f29e476a7548c9ffe350ad60deb2119be293c7f346475f8f919c0ea05e2eae10089c6de7c36aa180728c05af248bc73ef62280a013767823acd687dce30b92d0622699c8c542eeeeef12c1d9d4b6e4530d91557a4a13b12363be89a99dc9d53a21dedfef53e0ee1897c1cf9c547e82180da547c8582b5fa98595655e787ac7a829afd7ff6911ceac7b2a1ae661e1e59cb4184a2428eac60a4cd349b688993bd8546776528f4cae65203f18144df09807ad7c45b739770ed7ed26957a162f0a1f9c04952c18c3849d120a490ef8bcaa527bfe61ca2e8f70138e2bb60d679f9e420e99a73701eb180dc6deb0db316c20f370d5199a1c2c2c3ffb3e2470e48327e08197549af609c66fd41f7e4789b7a53b8d213247c18fe686ed0cde54b9f587621f2649489abf18676a110d39646e379882ee67e2af3cf62e6383e5a5cea152202de020f6a1ca915ce0997e9ab3778c7693ee224e666f2b0d0fd01fa38ac2165a7d2555714b67cee518a302bdcbcefcf487d92e85a0752f5c202071838b1335b5ce9832165a923d569c4ef29c05c8c1e915bbcdfcc952ac178af4cb4106b0f9e77f5035c310297d6311e070172708b1ed2774d54ec0317111057d627be2059fc7d62e4e4758323cee60292e0b6ee44a1c2598cc2bb8674b73c0d6cb92e597985fb527c1b3c1f6ce4885b67254496f99e4783b0120c88f13457ad1883f2177acf54523cb409014ce1a03c58eb0566c286e480a26949e5e1c20557a76646ad1e900410639e98c3414238e84c7bb163adfce302520335fbafe210ffdf8e71ce647df72d4e7a3524991e3b28aa117471510901869b70f00267aaf88abf76a77ea67fd5f72ead26d8925a09de1ac5bcc07b15f20901d9770d952937b7f3ec70b838f8e11a27835b885181c70b4dfd525229a307eecaa10ec9a2b522bac8f7fe0cc80cfe9246e0194bae1e4b0b89611403683c5399fad26d8713d46a135ce9d6a4f5d320573c086e7bf69da1f531f66e7c965220b8ea56f0623bfdb6af5dfe756e506507b7e05d743bb02bb4556e5da7774c8f3824d50ce0fc8376f9ec8741e831358f017270c35407d410997d3c2dcd5fab159c7a360323ed16b2757481e3f6f14c31b7bc8e5b09017c7d5497814bb4906aee97231eb93ea529b3d34020dd1961ed59813c37dc4758392386f26fc10000377d9a4bf779481d5387798a01a0b6096134639f5b4b8f1429750228662e0d9721053606151247f14fdd1fc4db40a6b921255f89556b61fabba99082231d802e14ecace69881ffffffffffffffffffffffffff985ae4bc7b67cec08d4ebb51e38e606f53f95797e6ab576139209b926db2ea519fe2c621acea0106c6bbe1527884ebc7bd1cae188092b13490ce1c3e214eeece9b51fd60414fcfc11994211961f62b92eea2c20aa2101ba1dc01045e8b9e558bce4167bf4b31714a1a2a70f70a01500d41d1f8de371dbd2ba361cafd62bebfa9f1fd5a94e6fc50efadd9fe4925b30a01d96e841f23b2cd8c3fa39dcf56cd6e14447a7e2e13bd635d3bd288a758408f6e21026d2944b657044de6f4b9770c6a8d97f2984e442516fef4daebe16264213cc377ec0b7f2106d4ed6d4473e80af27ed6c2cd1fd7e6d3f7f463c3aa32595471ad3e757c4ce946d241650a01893e857b5ce255e49ba7568dc753d32e51d5eb6c735cb937c9fd2951db2bb63321010c6f026ed77abcf9fd246b320fb5e3779c3b297b1a6da91de142cc83f512b2836cc65f415b97e9081d9400000aab430f9f4a9336a35369c9b24b1c482ce57379cb73daef1fc35a8149c47e84a1a348ad257ca18eb85801aa82f95be28b3a60240ee60de51a6af49361f4cef81f0408c478af670d4d57939565230c0c05b181f834311c6f017270c8ad5884cf4c667846247fcee486da535d728b7bc89cf557e98dd3b022a8c13f6b090125880d7a690fe3f76f8b0a531dda6bd46ee5753b5c3dbe9a05932138654795c5492e3beeb067becd4f0a456f6c6e7f7a4f50d91115f4b1be5b1aa27b5dd4ccdee834389211181ae017810920fb90fa00381b12ea208c1033ec285d184e751661525b4f1ee568246cc06a981209082a54342d1e001ce0e0e42a4f7577ccc19c43656f1fbcb644bfa8092d6f487a470902a03bd201ff6b83581548d55eab77857d01e593d52d85f2e2ba35a0a335aa98b209026e7665e703b9b1eec0c11773a854788bad735538439b13ab9b79b2827f53985e09021373063cbfe423e00098019599a0fd4ba6b0ce004f29e32bb0c4becbda13744a090147c8497fca450affd49779d0254b9ce40836620da853c5cad0fe6c3812ae494c4901106539334231e2fa36889b8a4461b7cc5e9f87b5ca16a83c69446347b264a8f9e8c8ccd181885617e10340097794dbef6f99099eb300000000000000000056e2fb3a8fe016d9a830e9a82bcb6dc827c616292769be8730cf142fc0b47f204bf517843fa58de10340097860adddb8d94735b400000000000000000d5711a839333257c8aa927cbe042c26c37b3c9b773f8f3aacc73d1f57af524f715e07326d0c2fb0a1e4c42b3567dccef88d2b4fef27a103078c25bc8dff7876fcf221db4fc07df1a31ce71e6f8356ce46f5eb89173702b67cfbbb3dbb19014cc40b1564c2369ab3e3cf506209e6ba1f787a316eb968728400806d243fa65e81a5090168e8278821d3af5f7da46e61916bf4fa5bb9af18ca9a608af86402dc8c3a874b216b4b6cdcfe5980076ddf5348744147e22f3f69687b71190d59a8a052414c054e140d9f7e000d8fac299de54c855cbbaa04dea81f8679b9eefe5a660ea9cea1448526254e6c0284f1f3e0a10113a09e19d17b0525e0a0e594d7612b56f13eecbeddc0adfbf800616e64726579000000000000000000000000000000000000000000000000000c24752fcfd4ac2cddbef0670ec243428e7e164e938604f7f47357efbfe128fe58000d8fac299de54c855cbbaa04dea81f8679b9eefe5a660ea9cea1448526254e6c63ff02ccabb680ddca766f1ba013b2768ab2c3d9504c44bff364e6f76442ef5d210134d6f5fb297c51684cf82a35fb393ae41c1de1d27ec6c5a6086c07ef6f495b4ce3ebca098cfc74010df3e0e8c523cb58b0358ff2024aef6dadb185f6a21053bcf18a1635fd0978118d7d8495a8988decb33fb8cba729851ab95c8d6ee31c057aeb22dbf840b1b4210134d6f5375e22fbeacba0c068efbc4c3180ed573e0c176ca785bd2f59929168a16e21bc210134d6f5a3afe1021ab9de7a1eb92ff53fc56e9bb74d9c4d6ccad3721279cf7be25aa7f1210134d6f56970aeb19557f56a24413cdebc45d6501d47a158f0eb8ad3d30ba80e0632cb1c210134d6f58a509697462a5b67f43dfcce0f8881360aabea37cb7ec3a912409b35014df1da210134d6f56923362a977896d65d1cece561eff140fef390881dd3da6ff21fcdaa3d4f57bb0978291a544ed45ab776b99d57e736578e057111095d78eff95e576e7b0410c4b6b4210134d6f558b089e4a5272f6b73efb78132b8cc0c6284bf97a4132eaefe62a04c61fdac62096e80e94eb530be567521ef885cb526044a557cfbbbfba6d20d20e2d40e3119094809822790e7cd3c1969ed50fcb9c1ff88d2a777ef28422708bb462c1e4568b6e7ff06096ee5aac98b24322eb42f3114f9824c65e8ef0851608de60314f038577f7851bf040982b02612fb6c312ff1feccd6271288896559dd6fe6514bd483adc6e13f65858e144124390154ee489437feb1aeb3b7ff731bbd654087659df0cd00b4cf8d3c05bd566239b99ff3fd20744934607c1114c98b7ddb4b9f3a765bc3525b0bcea6f7743fcaa2da8c0fece84b1829006abecfd3909a69399622d954713868a75c8db4c7a456d0cc768002f23bb28ac58ce1891e9e107a29eb3095585c987c3902089a6340076426ff9ecd320464e708509fa67d77538cbd0cabaa7be116257603f60a06329939410c0e5e79f5e2f11269dbd027d325c4d7bf8aaaa8335c4767ea98b3521619be82bd8749655dae6269090144764501785aa6ddc44a3190c08dc84b2b33893a382cbaa5e68dfaab9421494b310e09fa2a59826362224e205cb0554038f2b6f3364807bfcbf1a0745e04671d0453b42ecb26e45102f0aaa320700c4543741bbdc622e69ead62ee6de1b8dfee3dd4a5e5fbd284292d031230fc541c71c095310c40f9ef7267b03b93bb5c1680d06cb0b22403300f18bbb3eb6b7b904fc53c8782d45766d93d5102f0aaa308ac09190123ede8100e454e65591c11ec548a8cfe81542d01cd0680c49ac356ceee64e954e4a11b3fc689bbb8fd00001416625686ab196279764dad503d0eccb0c5521e58f21dc0542f1fe81225c8a9fb511f3a0272051739607639571a923ca04ee186b9434dcef21aa126b5fa84383faf560e7b837f146619c16746ca9bb09cfbde39571a923ca04ee1dcc86e23f3f2b522bef635fb0e0df4b3bc1cebed73b901606063dea8394da8c1310e09fa2a59824fa33a86aadf7c1df79db101972087bc753f1be3c84bbf0cd92a574902953ef2491d30b2a70ffbd8455c0579016217cb5d155d7de03e235a50aa55bacc56d22cb7cb045a4e58e6b7b20c517f6a64ad93df56754230447fc7baa9c2a96900f6182a329ead79be742a825bc4be5861fe38b8da50138b59141662307a9d11857cbd09e0499e4e0cc6a8230aa4d1c17cbaa7ac738eae6b2d8d930a2cce44de399669e54905f68e8131ecf800003c06ee86ecc9ac134ad980f1b5c1f2f4e422282b45b28a6b754d7c3e738d8d6c399c8c8179ebcdc8141b52fc9cc28744a24ecacf711cf03096b83a4d0305788560d0b1535a44a7ab31b5e620f48000d7a06249a7fa8a3b473c5fd80a4c0f11044bdd91232e53552ad622363a6575290a01f1b16d40f1f0c07d83f7b6b2bbc4f951e9ed4973f2557f598cb67d24732411b73902ceae3a975cadaee38a0582c15247dc764e59a92c52b85fab1b845e10c70a3afcc9146b94e739390b8141bd6c98c163e2d0127f83b3b134be58bdbcab176c4dfeb0e26c39d0f039639e899f482a620a01d1f65182e5e3cf1ca17d3581ea92e53414ca0f42ca648d8c00bcb784aed9276e39576591d5798000f0320afaffd3f55833ee281fbe2536a28c8622b6913bf9698f0fdb2910ffcfb6a1157704342eef8ec7dbbc2b078e7174afe279138a6a049d22e3702d2ba811405fc93bf76e6fc2ff3462892c754755369ed003e0f6090169b5fe692e8e9dc6c390b119ca74091db0b5295ca02b39585e221f21a44f4aeba1f531f66e7c965220b8ea56f0623bfdb6af5dfe75609d5fb57cbc1430fa7018684c5aa954e74aac0724c1b239a40bea0bd7b3d49fa117363c3bd0483bbe57bf594ec2895be12c7e3a8654f240297ebb94af77627ab3c821a4223ab470d851072e2e145dd96f0eedff7f3132940172708e1cee4fedbe70baa266ba1030cbbab8e1f760f57549771a43cb513d73de202ff1313295017270a59450a7f366362f5e2f7eebe40494e74a785a6e99acf78b74796187cb86cdc3040901aab778f4685f386c5c5ea3bc52dfc054769754c268ddde10db8fb737e495df0809012b3ff5e8cd106d04e81d376244ee9b81df2fcf88c6e636d2b7b180ea759acbcda1313a8600f55531196d9ce6755c60cea51fb0624dffb6684cf79cc996ad1a38d2d894a8a282802f66aaba6724b49d2fc2ad6021ad09012806ece2bd7d1bbc2434388d9fc116df66b3b19180090207bbaa32111f818b3929dc0172708870cda2077c9ac9c7c375a00f4221fa7f9e8c4c268abc3737a2f748c735d57cf40901f654e681cadc99cb500fa8f2ac7f08cbccce8c7e46ba24691ad9777568214100a127194fbdaf195fc7de77374090f1dfeaf34052cc94c7128a6285b83083bfc505cd350eb9e00e3d069623bfd06b5360bfebfe31a4291b017270a9aaca54d619a696a43c45162c51348ed28ed82c143d59c99fc54c8396ee8a085c09557b96ed3daaa0ade54239d7232b44dad0ed4d962ab4510d58421004ed17aa7fbe2165a7d2284abda4d478d87ac6303a9715a65214139fb99f2ebef16360219bb528ebd4d22b0030783362313233363362653839613939646339643533613231646564666566350d034557bbe4934f03c45519a0ff52f5a497f01ac3bd253690921c2a64781d2a0033653065653138393763000000000000000000000000000000000000000000001da9254cd8d2fff9fda63d54fb2bbe953d59c7ef95557fa19a56ca5346b05e9ca15889d57d00a7f048ec8f9b0863a8ada480970daaaee71bbcb86efd735bc7ea405b83bf4308f4b44f6dafffd131e9d1730eb2c4c7a15889d57d00a7f048ec8f9b0863a8ada480970daaba359a380c7456595d668d47f46dabc157682f799c22f5f3afd06476612c066409022d5bce8cbe0600a90a8c84d873d2fba21d264c47c256a5bf715b1c1e7463f8f6a1f531f66e7c965220b8ea56f0623bfdb6af5dfe7572871b5ae1d027d04b555beaaf85d53ee4a18476e0318eff8fdc57f26fcedebe3131ae017270ad41b74a2447f2d77320b34ea5d3d75d75c306ba2e7d734e5b0a09a5052a4b5d610901df0f3e973337b0d8b9799114a098789c4da04171e195ba90d7568866c1e274a80901a5aa97f3c19863c2bdd411a086fb4984b0a9e0d7efdbc1b38f5a930e464c77d20901376c8491f931775924dd1efdd74775997bc0a9cb4017c3ff23195a367c5c09ca0901973a84de944907a15494a4f9a1adad097236976846da1ba1634b6b4bac5cf04d0901c64ea730e13fabb898531a491ec81ce398d17b79db5369b37f6b772dde24ab2da16dd28d2e86ab774d635c49dbe7b8e968839117c9591b97a8ea780c1d9b89eb38dcb5a42e623c69c253d5ce70ce8c7a872492337b0901245d40f6f23af64078a077e011b37ab530f55aedd72383eb27bd33bce16322320917b4e0ce34ab509148e6eaa987880a9597b499f8c73fd2bd74db39b6cc1c0d3ded4118f996ef63c57fdb2a9efb395a68af07ff2e47fe3dee157387bd578f45cb73afa03ec7f7550dc54e0901b9479d89dd1a68854e9faf11bb614ca02191093b5bc699c3070e8d247a66491f09018672a8c4526afa668654ddcf70079e7e6b45f0707255a99a03d8934614e091a409011921ef425bcdf9cd58812a5917ea1deaf90ff5f5e8e63e20512e4e238675788509016d1b4dcdb4d3932f2870df6b11264838de771ac0180ee3a5a11cc163c53c93210901afd0a09a5acd7d84187eeaba5e300df8549f0614aa36a3a9243880e0e513ceb30901bd61db36c212589bdda9ef04dae799c6aefc8c131f224aed9570e79389cc9825e103496c7da868239584f6637400000000000000000000000002ee065a451efaebc5e3994ea21d369c2294c5c03011d393e08bcc75a836343a1b6705eea1e4c42b3567dccef88d2b4fef27a103078c25bc8d13d03490efbb21008a5a29b7e897f6b7f4408d5ef8b75a37bb440d4c8c9e951fa191b93e6d46ba99bd8170034441e8ca52b4608bcf8d3f8786f79d6294053182ab8f289eea1c3b8db149d60768b72c85652914b3c90901f7fa006eadeae651bd0e5865477a0b03290d29cf39747639e9f62011ccd3304ca1e292f74d768bcdcb6e31146ae7ee34f337b410782aa685f143106ad4efc1b850910d465b4cda558f57d155bdecc76a1c145fd36c0901ebf6d85d3052748c50c9d8b06ac832e4a641478c116b6a03260630fb13193587a1ba13e12a58a7ab1fb1148f73b867ec5241f29fe76e2d34aa53159cae4977bf128d14f34c92b58f6f2fd748a0891b0c05656d1d8f09015c4bfe61fbf8e19d3272f3aae8a2a24655a53644eb9e890c9d351e6a5c0e9a2f310609017270c441fda435e2b1064d9be502d79626e2353ad57566466b3cc7f53f7cabbec6c3b50901355780540afe68fdecdbf94c52144240270328e6c02f8862c3d383a78d8dd867a1bb520774339288a216e5c865ffbd40c5e4aaeefb4d49761891c7a77fe079c63ec11b703dc7879bbb438527c8afe9cf3807db2e4da1bb520774339288a216e5c865ffbd40c5e4aaeefb596a03d8ee7aac8e5ad75a5e4e506f403269c1b91b63e3c5d46d168d0650f281a1bb520774339288a216e5c865ffbd40c5e4aaeefb42f18d1a8f4243eae476c04fe3ac7f0b216a20828b508a67be2b77570fd42eeaa1bb520774339288a216e5c865ffbd40c5e4aaeefbc74a076ef5fb3cdfd06ff070d97623bd1e84fdda6e0dcde19c256bb19fcf3181a1bb520774339288a216e5c865ffbd40c5e4aaeefba54f315e846b0458c0d91a0914c21be2ae44d43ad0490c54a855bf9df11533b3a1bb520774339288a216e5c865ffbd40c5e4aaeefbc0f69bc0e35508dbf1a0e171ee276e91366dff0dd7c456f56c313c0fd177edf0a1bb520774339288a216e5c865ffbd40c5e4aaeefb65d8b9ac0db79e23b99df5b2f13bba1fdcd76026be21184c41478af88217f9aea1bb520774339288a216e5c865ffbd40c5e4aaeefb6a5eb06b932db3b1cc92117badea3a6200fb07f0492a166f971c9211041886a6a1bb520774339288a216e5c865ffbd40c5e4aaeefb8d61016ffff7efc45643fa4b69d6c4955f422d85e5ee2f1cccce631087bab6ffa1bb520774339288a216e5c865ffbd40c5e4aaeefb08f8856a066e7144fe69c41a7995492a5b5ce9abd9c318ef289d25a5b957ee5fa1bb520774339288a216e5c865ffbd40c5e4aaeefb5176a67303708c265be122ee529f67160bc379f75d60a01927f9fe1fd6053641a1bb520774339288a216e5c865ffbd40c5e4aaeefbf0bea67d6cdd398644aff764f2f27da9dfeb0f9a2c514c3cf958701bc2b5fe67a1bb520774339288a216e5c865ffbd40c5e4aaeefb8c7b7c1cf7e83fe2dfc2900da37012db289bc377936b95e901a7aa3ddc8480d7a1bb520774339288a216e5c865ffbd40c5e4aaeefb1eceaff77063a184fade54adfb5464a246f2bd4c98444788f41f79dc6b37c9c1a1bb520774339288a216e5c865ffbd40c5e4aaeefb01a1943a6d8d9f9f3789186698857effb23ca8d0b888ac75e928b8467a7e9911a1bb520774339288a216e5c865ffbd40c5e4aaeefbfa8bb717145f1da21aca96ce33a3d91654f718cb2e579543a49ec3774b9dfd75a1bb520774339288a216e5c865ffbd40c5e4aaeefb1b0e5e4cd573017c9390862d00f0f5c6795e84c6f0198da6c9cf615a87ca3051a1bb520774339288a216e5c865ffbd40c5e4aaeefb171a955ba6cab70918529513271b49c34c8274bc506abff15c0dc5907fe2ca7da1bb520774339288a216e5c865ffbd40c5e4aaeefb1037458f7f6488a46eacca0470cbf92b766ccaf851205427aeb915e12226c752a1bb520774339288a216e5c865ffbd40c5e4aaeefb07c0a50039dd0ff46a7455286a3dcce81ce314e8d3a71798c22b9b592fbf9520a1bb520774339288a216e5c865ffbd40c5e4aaeefb18db98786d3c20370139f00cfd6e47df60ad78cc641cdad843a52374b9fb9d16a1bb520774339288a216e5c865ffbd40c5e4aaeefbac104243fcfe241e9b99756835733151d6be0c21788c0feace85bfacc53ac7efa1bb520774339288a216e5c865ffbd40c5e4aaeefbe7902bef820717e20f3e9dde8b471a8bb02824f99f5cb867d67a9ff67209b1952925017270bc16ef208f068ce1eddac16d1c54bb0bd544d6dab4ce55700e07b21626193a463ba1bb520774339288a216e5c865ffbd40c5e4aaeefb3d896f38f4692887f1c8774ed731d1d9d4e859794c2c96a322666bdb815a2a9fa1bb520774339288a216e5c865ffbd40c5e4aaeefbebb94ebbcce224ce31b328f276d7d9eaa647792eab9fa1c36edee3f740bfd0c0a1bb520774339288a216e5c865ffbd40c5e4aaeefb1802ceb556cc7c5460c38700c8e6a75493f0a7503a9b06d463c1bdf77c89b0bea1bb520774339288a216e5c865ffbd40c5e4aaeefba7266978a78adaae9ead48421dd69de9df2c6d7684e364e03811e788c584de59a1bb520774339288a216e5c865ffbd40c5e4aaeefbb57d38223d9e1b37b82713e1fc23ff217ca62bf6027f66b53947a326dd6a21a9a1bb520774339288a216e5c865ffbd40c5e4aaeefb0b3ccdd0e80c2c34de3431ce010481acdde75491ddb14879a77751e554acb8de092578b57d910879d9caade8b3a33495d399a0652dadb7ed7a7b73181014c9ab6e24a1bb520774339288a216e5c865ffbd40c5e4aaeefb6f9d2a8fa9af9476646061d611db87656c54d88f867ec9c92e934f8789ef8ebfa1bb520774339288a216e5c865ffbd40c5e4aaeefb16d9ad291e969981654ce74bd6e25bbf5b40dd14a5fcb4b607a2cf919b296ec7a1bb520774339288a216e5c865ffbd40c5e4aaeefb2b72b580d31ac9cac61b21fe863a0bd03a440e9c435f1421acb3eeb121f23c04a1bb520774339288a216e5c865ffbd40c5e4aaeefbfd1ec5aa09ac306dccb90f6d8c48b84829e95810f762dd8fda552f8636bf29b5a1bb520774339288a216e5c865ffbd40c5e4aaeefb56b8bffebca989082db3b63f6d0d4dc8b9a3b6c22d2bef3ba625695352f0d7aaa1bb520774339288a216e5c865ffbd40c5e4aaeefbfb22d584b37077fb0e3a7c2606116d37dcdee9e328689552b766d5376c642d9aa1bb520774339288a216e5c865ffbd40c5e4aaeefbcb710ddd4b7aad8ed0d7e6efb834cba60046001478c514913218aff5a69b5007a1bb520774339288a216e5c865ffbd40c5e4aaeefb89921af1967be2117410f71d112ade075b845f61eadfee0111033a99ccc235553913449068c74e1e223d539e90ac2bc6220ca9f6443a09d3655c3fde709556db7817de6ef4744738418ac7230489e80000b4ce9c9eb963931423708cb835240a3151a5832e2e50c99110c603b2c853d114418ac2604b79e84000b2ab8de1cc9ee2569c1697c6e3352aa4e6d4aabd793ef28125c0ed3843047e762165a7d4aa2bea112ae66b2e727d0db5b5140f3cdbfd7c8eb8f5aa513d9c1962d95d9c25b609019d48a8da07c2353e6058f11bb66ee52557056f2906baaee2b894e3f8dcec365d2165a7d25c364f66e1b21f486749b1e148227606f76f2d8ee8d963aae07cf4dd28e4869c8b411caeef0c42f8cd9ed57f776567f057c8135efc7a8515ed17da7023a4c52d5e43e20f133ef54df6953a03832dc6c6e1c9d6178594d04828cca1e7951e1fdf66bbf3e2b2435a72eba32e74d49b60e6a54ce10342aa4af823dc201cc1415c00000000000000000000000000abf796239168a2b01ad4e14f6566500609c7fe53c85e6e92152612c38b7b40d255a1d6193b4076a4fc11eb4bd08c1e75f5f740c9f8bfb44f5bc02a8763de05f4597484fec69c88e10342aa4abfba8c6a99bc1aec0000000000000000000a595ee544413b8b68f1898302540d390be18d47d858c75f72fdf545ad454c853973995fa0e82a2123c34600ff2f6e50a29c4439a87191b1eb816c117a32b247612b71871474b663d971c5b141107da255c8e685fedf35a041d4a1d5c99df2bfb259314c69f1dfd13c257c22e5e745960fbf53426500e4c42b3567dccef88d2b4fef27a103078c25bc8d000000000000000000000028e172f0e409be38895a9ef34397b698a9731d31004631465e9b52e204afda529ce9010000000001731953b7d3c5c87795d437da4d6adfc00fec1051b9a80f2246d5723dda6cab77c545229f2408ac26fabc59fa401729343c245c65c7b055e901000000000173194f88bd2a55b5e3703c93e225c48102e12bec29383591f88dc7bafb3d4a7234856f38ece5c6f88c0908388d302febdb5cc7ced48d72a1ba01ec38a66718d5b4ff8daba8849487a7a00465d7488024373329ba021d1d190a06eaa98d7f84743d1f1dab0f2de57f8f47b7ed0901753d5799a4a4fc672ca0912833a020abc890f0716d73eb02e77f4b355866313a1902bece7c9c0078c4cf93ad4ee4f43327bb69be94b02bb675c60a9585d227c40dcca0241902ae62833053cc2c5c39b48d3e9ebb0012370c44bf9054abe3a501c34346242a69c4601902beced946ad48529ebf9aedea8ee5db42b3fa3bcabdd2072bf50cd68c96c315fae08e592820667cd2031b20031600c4da16a9657008cacf14c2847ae11260441becd76211b334fb0edf1c552bc6f27a20965afd78e3c4be8f3e5f11f284b12f1f7f0672a827f894123ffdfb1fcad2f5fb173825ab09b3d8bff691ba3dd6559a0392d70b0d30e9046d82f34353216f1e2ac12ed320643f7c2da9b148243362af336b83abc9488a4388fb88bc040759e3c5cc6e0904a8dd7b74600b29be96190971ad896c1453eff72985c255367f1313d60e18e8ffe103471531f8c76bae8faa665c000000000000000000000000001f08854a3bb5dacaecb75d1a36a7bfec0aedc9d7f05624e968929242a52c4ac05d9c454101fa42feb87e4000ca0ad7bdd8bb43b89c702d2fd5514f8be7b1898cba0d67fcbf069dea521e114ea155e1e3776eda96fb2fff8faf9d4f5140fbb80ef5a416d1015bcecef939d3b7d4a2800c44b35a889d9aa3f40b597c16c9171102f53105610172708e43762a6ee49c69bd16b6cf7ae16c27c370f8e23fd0b2bf93966e3427c21b20a6090106dadbfeba16481c5744f8f134f7c3d612120a43761bb37c717f28ab317d9d7ca1ce2fcf732de54abccec639c80abf7289359949c64658a97ffc853ffbdda796af853b3168fe982dd4889896fa5a518e523f7402a2312090017270c3e669dd786763aa37421292a0c08c1145001ed5de146adc70a9eeb1a8cf24885d0901a77bd1817593f7ee572c9cf5b78413df3d20ca6c5d8884b02dd45b5f62e427b12902540be4009b20c38a424e34c8081177dee705c9744a7d8fd98bb683e8dc638a5e705c92bf0a01e2cec0816002069e4e85cb459d8dbe18f26696c9f79289b8d88af90c1742b9e10901bd95e96a7550edf90860c9d7140a2023da5ef027a9570f9226e2e50449b9b2aa19090cff96cb98966faa0167d44fdf3b4bd93e736965baa75fee15c56a6187be5843d36e0a017c63775e6c657817a67ba766c6309717e6eec102b5b4b4bd61c457920b99324d1904869d495bcb48e202f136aa6ac3cb1a094f5a05cc4a88f733367911647d3299c64f3c2165a7d2552c65ad4254a94fbb3ce026c2147fb9967f4fc764de7c25d7d8a2e6ef897625e16101aebb54087a76d51fc7e6a51920fc66c57f466aed57b20b8a460c63a6012cf621b642f8319b083ece2ae507711195832ec84fd71fcf06b7b748dff5543f50f5f5292a4f5499343d3a7ef6c2d1ba7b6df7501450508e9ef2d5f4ad2165a7d2283aebd910946f141c118be8149bf8bcf62d157d0f22004d7b53cc22a6058d2425612bf9ae7f1c2c032659239e19da9916156a2339e2d4e5f045f0ab60b04813ea67ea2cfd27c051a56163c4ff80590104c8238962d01a7ec6ce8d34337b47ca16b6345201371c3fa5d6ac0f3943593b9c7f3c9ef582e369c1b349028a1d29f79dd84a85e40c4796d0d55021436f3f446671708c83912e67fa209cd15326b6c58c72c2ae114d1ba3ec15c13ed76be605d23e88d50f6838b5e7a024fe433e729b4070a15cc1b6b4114d1b4025a1e4d346bd41181a71ea114395c38b7c4d24e73d51070ad3751057ca5ff879c097ce7bc90715b34b9f100000000099a67861ca69c3b977e7f3b315e3faea4ea570ca45e6718e22b7d124534a613e0901305d95d7be41e1cd2cf384ec7a3353db95e00d7515daf6a48ac0123c413f4ca3a190973213e2a230227bd7ccafb30391f4a52439ee781a6d80a0556a79a2d21dca0931e9f21c3eb6dcb7a3ec6f17b7f09b8108fa0f79c097ce7bc90715b34b9f1000000000eca3ddbac25f72694a0c567c640b70fa9c499909aecb82b72c59c9f76eef134779c097ce7bc90715b34b9f1000000000fd03a6f66e58d7a9daa021d2756b7f7ac5022af4b1cd0008d247d96a30801b300901975472e1b2c86f3957037a9bdd09db1335484e9fb8a60d9558037b2576652a6f090106bf067876a8f66a21700ce3e6334a94876bb5451aabb1c46a6a750004bdc7db0901883a78f8c7672d8e7d4554d5aea3d6d25003814fac07dd8b0a23acfc1dea0e5f09015870af2371f8a10072cfb370347af6c04b1943786f987d7b4bac4b8a48480344006465636973696f6e747970657468726565000000000000000000000000000022b2ade344ebcb1659b45e3c0bf2ebacbe612d0d9570fcef1dcef923db2b8d610aa1ae661e1e59cb4184a2428eac60a4cd349b68899395e44ca93f38b0ca2b4a709649d661ed48c531db801c35ac41067e5eb04c551021678905b17ac9afd5f20b6f465598124c2e8d237fe50e6a59bfce72e8126a032e46940fbd006339c85dfb7d0924617c632332ad9154268baf776f0b53de3f31e633adcd23cabdcc2b251ae7456c825480bf2756ff3b5bc49197511276744f2b6bec64a4b23fa13b12363be89a99dc9d53a21dedfef53e0ee1897c5f88e55ea4367f9f47a13550f302fde05a9f865c13d05892136f7077baf2cdf5006368656e7469616e72616e000000000000000000000000000000000000000016f5e1e8435f8d96e0ce854a51f6ac65a50bf06ffd31f93810e3702accb55b2180007a797a7a3433000000000000000000000000000000000000000000000000000c3ee773b466b095628802ca350fa028b77cbc318b9360d4a63d0dcd4b65d14c24006339c85dfb7d0924617c632332ad9154268baf776f0b53de3f31e633adcd23ca50f3831f1ba19d17c05436272f83a4f826567b09680c3bd399d4f879ea57e5880901956989ed47aa8e1ef6d8e97a3c255d055e120da96d8e54f9f0368e43f26f8562090101574b5a624c171177b8c8bb3eaccb931ad3d1f891eccd8ddfbcc8ce98a4da31a1f9c04952c18c3849d120a490ef8bcaa527bfe61c1a345745ea2cc965a83b6f17f3c7b69837ee6806448b4fc435c7750b4ae075a4a1ae661e1e59cb4184a2428eac60a4cd349b68899344e997157439a8c167e93ed5ddd3a28284f2008da0635d80cb766560ef029255a13b12363be89a99dc9d53a21dedfef53e0ee1897c8fd46efec9d2e62e83977ca9b5967c73d4bf50985f3992ee92a9c3aa3624006300e268d904524e853b5efffd4b0e2439a32e6348b5c7bd7ccbbcaf48296744e21c8f30ca4e2bff9158d7f4c3afeee89fb03373625186ac4ddd520eef9694068b4921678905aa617ea25f556d2678937f210781bf23e7ade787a7e285a3789096a8e82c72029921678905b7b987e84c8dc0291f63d2c101b9a6258c63cb2365906e13a7f171c037eae632d500c3bc320e8435d10ddd2fb260a29d49ee9bedcd7dfa03033c0a3a89e574396367581637087afece1a19a814fd827b6292f89a95a318f1e92af3a28db449e2392241015bc0dd6dfd8c90ef4c292325c0aa7e35dd0640d60f71afb33c4aac671f05c1a8d80234234bf90600516d595945316777557648765377706f426348543273734e3776614550564c7ae4d10984c36fd076655da86b26c097e6e8d3c87a96d699067e624f417ce718f9004a69633866714c6e79334e4b5074000000000000000000000000000000000000a7a27987ccaf8e9dff5a55936f9ae0c19f7f9b8b2401c54aa5bf68fedbe4971a190148230d547ccdb7ddf4b58f7a3c08ff0cc0d885ec8524363ee235f0feefb67cad1dbb190148231d6975d62ccc1477d9b2601e8356aa12ebf91a307287e24f7e17476727c7506fc1412cac000fc50acb458c0905a9eb1c50e95bca7dbed827689f6e1b12e1bc9e3b36c3704bc4919b0c8375463aee3a1383af393bce0d501e39007a6b53796e63000000000000000000000000000000000000000000000000000cd0428ba187cb9f142510e53a65def1bc5d3d3c3707c6904427eb92073434ef9a990148230000000000000000000000000000343992b96fc93b76836dc56f90139044f2f49eda76a9af613d4a0ac3cf0d7d6b7fd7a165a7d1fd00000000000000000000000065a7d2572df94b93dc1881f805571d428b2fd32d27e2323209356e1ddd4eaa10a9be7c8f095d3751e654b7c198c25ab4f21d292b5f0cbf4fa4119e765fc0400d2edaca6a01fa1901482325ab4a8739df21019d437ad3b1da357df245e227191238eba6a8ffd4675afccd0901fa65cf12e40e68e14da939e14c40a4388b478addbfe385afceaa0725b56b00ff1901482215764db6192419edf0332692a97bbc67f1a377cf8cf8b7cffa9ae1e35e897c98a10fc50acb458c0905a9eb1c50e95bca7dbed82768668fccaad0a81b4bf3d80f177559656143dc6e3c0d9557b2a3827ad51bc098900901619ab2ed6bc90baf1f3781e95c46bd450a1a6ce3aefc6659b0520f74ba5cd5eb0901be5a1c397520d15a1903602aa7616ed3a03103541c37b55aa33db867b4d79cd9090188bd69660b77dc6d9af8289766405504542ae13b0317a5c27482295d820bce47090156b465fbf6f88f56f6c18e6214fb722f625c403ab840cd9cf94ddebffa8c13cf09010a61f0aeeefa5c7fdbb23a2c4070466e46763b104db2ff702ceeaa526d5ec422090183b774973bd02d3e4254f70b05628888b84b9a3fd6a60bcdad2baf7802f532640901505ec4bb8d67cd7083b45738bd153e32394d5ddca1f6aa240a8db80d645f2c1909018befc904dfeacef2ddc97ae127508f69c4d83f9c6c39fd3933577ddd958ddf7009013f31ac47cb74a7e2230bb42a7e9ef5d3e1de70348766c0b5610532f4977152500901d3338b79f7892effff7cdc3e8e51946a1aba46d84a07b2f6060d649da145ec820901971ca6cbd6d6b80a5fccd17be6bea4d2e9512c46319d12e83d6d64a74add77a90901cac331832db9f9c60adf83d8094f06ecd69898ddc8846d2fe5ea84dce41a69e8090105c3a652009a6883bfd2c2c38f81fe6d6581bec21ec467ba61b59c030d86f6300901119629878cb581a5f968903b6b7dffa30a100bffe436696fd90c3e4faa5a06b30901954cf8820647b1c6bddd396464d1681bd49c9430925857c8946bb767796fe5e7090144d25ea459d16acbd039f579e73bfcef971664537addbdc7ddb7ca8bffd7f27c09016d4c1764eb14052a5f29c22f100508bd544cf884e26612e6c1ac6632d29fd3230901eb25a49955253ac58390e4941096798ec3c02199aa508be327c45d8a762868c80901e5d0b4c6a2a514b381f9e802e430f091c0b9c77fe76bb3d03c59fe7a63b4d2d40901b6d786c87a4dc035f443301606ff7fc57650ebd54cb2903e0a1596610fc4b49109017366a1fa9a6951ded70497778c32456480ede1089df6fe9e3118a785022a92f4090150da4bfbcbb59712e35de6548d33e2d11819ed14ac03da571a359715099bd9770901f756d0ef624437d05d5a8d605add990e66eb1f8c5859b9199195fe671d43d9920901ca6fe37b352384645061e9d45b15f44d969fd7280739b805bc1d475d663c3a6ba10ec9a2b522bac8f7fe0cc80cfe9246e0194bae1e37fdff979d7bf53414da78574b90a7581bac6b0194b8d1d1fee00f47fea32eaa09015eb5edd2dc5496b52726fcb654ec5d805c9bd869ae185243c7c1ea240154d0385105fb99239130c7540000b0a451a12582e154eb28dd91226fdeb290fbda61c52aff64502b604949b587094975870b417196e00000713da8907a81ac64f8e0a1b5ce8d59654930fbfee44f0a3838e8c6e17fc106ff4906659436cf28180000e5963e7669c6a4249272b3da49ba4740f13c50b2bf22611c32e832941cb86fb951037c22c10313bb840000aac95447aa398f9a3ab7735fc8d33bc2c04727757acbccbd07f3c1f4286ee0bda1cc2a5ef9fcda02c0a601dab0bcb12c11f477160d4bc6647e3543df5316447ad905d34a9abe7d2ad8442d7545f200426467a1f297311a7e0172708aef01104090a347076897f086043a16a14b78910cf2d3c32fd4c4a9598ce1f18b0901f3a87ab6f904ea5fd78442c458fc7c078bb3d9b95263c040736056f1b9d2f3e129d248afc67dd47bed58d3cda32e551174357f5c151372a10d198383ac75b711a46880f5768021017270bde189b87f3fee8c92f2967e884d4944e699a6fcb3da282ee95347d10614d3d87029d248afc67d1c86b97eb2af334dd9449c44d4176c2eb0b0c1562f8b8001ca85e2013ae9ff432101727095a2723ae59d2cf033f4ea85dc534ef36ea135996b7a1a67cfe0d2c617111133b229171548cee3575244e959dfd8b062f0bdb0ce966bbacadb7a22edaea95552f987ec3a337909a1af5aff535e6c44c6872ffe7d0295cb2e17b8da7aa178e64ac9ea1c7dfcd91b5d9d5bfcd0d8b5a9b7daba5fcb47c035772d1a41a6510100e1cd726a5371e6dccca000edcc1a371fa0d90f9a06a2bc26ba9794eb57acfad1cada351f18e92d703107d375c690c47452e035357ffd14733049e94181a9f6e0209cbf3bbab10fe5ab2833e9e42102510100e1e9cda064338891032c4370e8e9e6be50bfe4310d5b681f6e203eacdbd0969c3781156d347f83dea1281aed00431ce69b7576c010020127ede0a62d227cee221320410d2a71901f70c4a55536f267a6bea138de018317560756c7ebd93107d375c690c4a9f00649661ae28d96ae31a8a54cd578c6c186fbb492dfe102434264eef5cc2a09018adea8e2b681a6ab31fd47d334d4b0f4e646f9f7e7bb45073165e4ae5649c7c829171548cee32140d71c7e852b7767f7b039a77a54a6b2fd5d419fcd5c95174d08dbb47f162f09013d91c91879c38d8775ffb89ca0cb3768276db3f99f48b10c3186451f79e82f0a31168e017270a9ac8618bac3c520dbb47499113ec1624e6b541a49d48a75ec68773bd25a060e40a1866f4746a88d44caf295848395b7fbeaec7499a3ac591dfa0e0b7b98ed02c186d965ecf1e4057f301903d8484e3866f45fbca9f70901bac326a65890c5f11c0d6355a0e49c9102479cd64f739090f49d00850baec20da10ec9a2b522bac8f7fe0cc80cfe9246e0194bae1e6c740fb84a4beedffb30c9fa0d925d7ef84764dbb87db7b931e4af18557a98c80901114c23711e05dda8e74781acca208aee4b7722dd91204f1114cc24aec5accd860901dd2bd93c0630fba193ac42b81c4371e7bc380c27bf3ba362b0fc3021be1195f5411bc16d674ec80000fd4954900d3566366739cd302f26d8a7855f9da9a6be61b4078164080e47edff0a011656390e7511fc7214ca2b41499e267ac084d3cb0c1fc18688bf15226080c530a1ce2fcf732de54abccec639c80abf7289359949c6bf1643f8ab52230dbad3da38bef7aeb8a4aba6d36e885ffc4fc82b4714ba22493126cf017270a308954562b35cb180e1552b240104a40f0c9d4e06e380b75b036b72cba0b5f44409019ae345ecf54d6f94a9c8f81ec163496d4373cf1230e3b7aa28eabb7119d61bc6a10ec9a2b522bac8f7fe0cc80cfe9246e0194bae1e65ae56dd8e584e9ed2585c4f28351f87f2a1df4d87eb0867f34863f543d114660901ea7e11f2f80a9b61437ceba0e1148b580135590bed48359ae88c96755df10ca5004869207468657265210000000000000000000000000000000000000000000012220b5a08d408c81d4aa3586cf0ed792344258d6ffc09d925df33ae8cd8d5e71aa1ccca484b4191303dddb9db60ca1120ab667e22a2edd861cd3bbe1fe6e6941f688f26b146e10d141718f2f9f6fcfaf41df7de7b4d3102c2017270b1197b6e2ce618e80dd280d6345a638954653c8321a009ab6c49426654756ae3f80901bfed4f95d8e980c3d7b5bf17f785fdbf5da15a04d69c91bf7562690a1f91790e513636610d5ab516b339802b4b33afc19f559c53b5d8613002def0df9375d73e3a96bf581e538dde058a48310746a5288000ab9f3f322611e276e1dcac278d80a428f6aabbcd3d0ab5035717687f960908252165a7d263393b1dc697168074bb4c0d2529a6a135ea56af00d40a5ce46b18d3905e32cb022165a7d24210b8d1f9e678c0382052298d7193805de27be725b37a335e008f0349198834fc2165a7d23d74a542a2f210b49616aa7ec250380a088ef02f9d268ded17f1a9916ef32db81a2165a7d2577f6a152944baecb816b59eb528f629792b76edfc52578630408c0bcea87cc8be51363460da88542f095680fe991face68f0df79fff7147c93826b674302d0631ea06548eaaf0354c187ecd5983ae815f9a9f658d7e167a5ab7a99dd994e2fe68af98060d431d194f2ead8af2d4623728d24510db693cd009010bfa9af0f4411b68b0320adec93a22061de4b75cd4888ac8eb022aa7a2b3bab3310746a5288000343b413383c784103d3a889b37d650264b8382100d8b7f93d3bc26a0345f55472165abc6c212478aa32a0e0310fef28c61f518641224cbe1212af84a0a04d5dbe3c9e03b4c0902336427c898c51efb0ae22856f1592ba78f6e04064a44a6d051c911103d42cff409012a3bb333eb2a53b493873faebdaaa21a6287b404e35329d0d122a4bfb260ca635983ae815f9a9f658d7e167a377ed9d9e71ee1b9a987cedd26b923314c604c92fdfb0ed4decd844d6db17abb193ba41511762252e67214b042a7243aca7b356e1866257d3dc9a54e8a7b1b77a1b6a2b9a1ba13e12a58a7ab1fb1148f73b867ec5241f29fe7b887b4da20a889ea275d10d21517ddc3e62bf08bf8af08ab1aa2aed88b5d63b8090117c7771921177e6619cbdd58c7db0f3166312e82dba67754be39689137f42ccb31260d017270a0b1d9722955fc411baee3fcad29ee6ea912448bc33f1cb5e9dfe619f0f076ca06a139e098a153ad69834a9dac32f0fca92066ad03f4c0cade34a68385f4d8eb9668c756e6e3e20b2db7035f4463d7dbe6406c649c54090120828f81d2b9a6cb7be29c23e98ab8a59b51580592f42cc02dbb13ed8ecb2074313c5d017270b502ba19b831f21196f93083f9a004d4450e8461e0e53ebf5567c78b2dd4d74b1ea10f5ac9d4920f529af410f33db8c5c51a92ebcedb05cd460009010c6d12fe09010013ceee0901069ac8ed0901009a25070901012bcc2609010bc2d4980901022bfe0f0901034d0acb09010c6d3c4909020c5e35b40901084bb055090105037a5a09010b7e99170901095a2a800901054ed0cb090105cdadc209020011f39e09010768505209010550d12909010ab6c14009010be1d84f09010086c3d509010ba19092090200e364e70901090c3e2e090206c0583309010366fb4909010afc0c15090105931d2909010c6d55920901009716c2090206249339090107f86f78090107da6108090106c15661090102f4e2c809020a8d5c51090100583150090109548f1909010a4ea49b09010024744c090108e9c0140901081a9420090100b73fab0901053962280901014c004609010209f9d809010b90000c0901022b83380902080735470901058faec5090109fe1dcf09010c670e120901012dfa460901067fd2c209010081620909010669d82109010c29d83e09010171ebc80901030f9e4e090105a6e7ea090109014bcf09010031626209010c2e6ebe090200ce973809020918234609010363fede090102f6f0e009010480808b09010c6d1bca0901022725f909010120d6ec0901029be2a4090102b22431090103f2eaa509010be5273009010ba06c8609020c6011b009010171ebcb090102f5577509010bc2bc3c09010b6147ce090105140745090102411bfc09010a20a15d09010363dba109010a1f650a09010c3f37eb09010171ebcd090100f844b5090108284acd09010a050cf309010482181709010644d9fa0901068b034e09010c6cc7a509010b9d8a3309010c0f9f1e090205ab6cc5090100d253ed09010c3df07709010c06abf809010b2a490a0901009d281a09060b9739fe09010434051c09010b07a459090109db00920901066b14e709010505acc5090101e41fa709010025847b0904059f9f5e090101cf673909010227351609010937b857090108e92cb0090108f362e809010089fa55090101b5a21909030c480776090108c683880901055152bd09010039864609010c397b3809010b48009909010b16c35009010091b9400901095f85458901000000000000000000000000000000000c12fa3309010c6d1633090101e389550902011681ed09010004767f090106995df209010100099f09020983874b090106402e9909010268f71f09010529a7c709010171ebcf0901097e22ac09030c3e8bf8090100246a3509010bf09e73090100d45e6f09010be525ad0901000caf53090305502bd209010547abfb09010892694409010328b94409010051915109030454bb02090100b4483a09010ba6dd4a09020a10547409010b4ac45f0901006a68c409020596a90009010c12fa34090106bfce8b09020688ab5f0901036cec2809010a9ecfc60901018561b20901059543b9090103dd43bd090100352ad0090102cad1ea090201f3de2a09010afd1c1209020c2e620b09010b9ffbff09010028bee009010663a17009010be52732090104a373a309010becf00a09010c5d8a9009010269cef209010c6c4eed09010c2af1bc090102301f270901003a8fd109050c4a122209010bc8913209010bd4b9ef09010066184109010b2f5ace09010c5be43e0901055117a509010169fc810901079c5d4a0901055a3a4809020bbe57fc090104f851190901022722e609010645e3ee09020a72a2ec0902077b16a909010c4177cc09010c634dd809010c2de8b7090109d69a290901003b7cc009010016a3c3090204f93878090103f0c23f0901066cdc5c09010a60dcf909010c6d5bad090203db1f4709010353b714090102b2dbf009010987543c090201edcba609010a022a4d0901005290c609010b4abd950901055063ac0901055fa3f10901010fbb5a0901045d31af09020c15a970090109c885e2090109581ec8090107e30c88090209f928c50901048250170901012c19b9090105367ed509010c2f9e2f09010c67c0d109010bd990830901063aef3309010c4ab01709010870c3b80901039a199809010a35cb3509020a5864e30901071419e209010536551809030b3ca9700901063f79a309010a85b1d8090106909d4b09010c6d5d600928038cafcd09010be1d4760901022b5c6e090101954d5b09010b1a08d60901027ed3ab09010b91846109010536343d090206ac2a55090105a970bb090100f90aab09010484743c09010bdb6a1b09010126112d090106909d4d09010c12fa36090100e0ebb2090106eab391090101787456090100b527ab0901066db9d80901007054d509030c44979e0901089984220903049b60ed090100b4b63a09010a29110a0901036415cc09010005cfde0901064a8d7e09010b13f1dc090102552eb6090100c87aec09010b23bee5090200f92929090105159a6b09010c6d5bb0090105ddab1e090105e50bbc0901048bf568090104e80745090108d84b2509010bd00d990901000501ca090106c1a70a090201c677bc09010bc2d65b090103671489090107c39786090109f1102c0901022bee22090100274f2909010b9e9e0309010bfdbc290901017c35ed09010543354d09020c5a4bab09010c6c433e090100001fa309010ba303ac0902036440e809010a6fc3f4090106bdab6409010a3a4745090102488a2f09010ad41f470901054b286f090106909d5109010c02043b09010bd099df090103a2f6cc0901038a6177090201d968c609010af01fbd09010698e33a090100e331a909020547a65d0901064ad21f09010484cc42090103af5b6a09010c6d0d7a09020c358c5a0902014fa2f209010c6d5f1f09030014537809020c13cf4f090100ce9ada090307e5b7b40902013ec5b609010192a8f0090109a1fd590901081965eb09010a1e12d7090209d3797e09010c6c66320901062988da09010535e590090209936fc8090105074bed090104e7a83109010c02a8f209010c2bc40109020010d0b6090100cea21f09020c45e2670901007054da0902082d0d1d090209f4a934090106eb4ccb09010a12515409010c6c0d960901064a890c090101d1586c09010551741709010241c1ba09020c3e094c090102ffdd2b090109e93b4a09010a09dbb1090108b9bdb5090101e2114e09010328b6d5090105aadef6090101aa3c130901014fa2f70901005d8bea090106a998b5090103565da809010699234109010b8ab6e609010401d21c09010c383ce609020c0ed46c090100167b8809020679c14609010c6c4bba09010b5f4a9a09010c6d4bf3090107aa834e09020c2a81cb090204bf5d6109010c3aa038090103a447090903009b60890901014c0afb09010c3eac3709010c20d22b09010085f6c109010547954709010849dcd30901058cd84b09010be527340901096c2628090206bfd62f0901038cafd209010426204309010b6891250902052d85f70901012ff29e09010c3a759b0901001b49b60901054462c309010c350b230901000003f00901055251d809010005f8e709010786755009010ad88f2f09010212e27c09010bc2a1bc0902008774ab0903061bdb5f090100b51040090100001fa4090302f786770901071549ec09030395a0b5090102ff90c409010c226f8d09010b542b3009010035b19209010c0498cc09010b9b700109010764f5cf0901004d1c5c090100cea5c8090305a3923a09010c5fb8f809010c2f9e3a090109c53ffe09010c1f488709010bb41db20901009c28c909020c68998309010a5fc4b609010b48851a0901001cb90409010c12fa3a0901019f30a009010b6a45be0903024f3a8a090106973de109020604fa4609010535eacc090206204bdb0901064a754909010086226d09010a6d23eb09010bc8384e0901043095b2090201711b0a0902025e4eb60902032bd0f00901050eb561090101ff7a8c09020551d15b090104889ed40901098ca38c09010b85d7fe0902000627a809010a26aad909010bdc44c80901013b032209020b2a123609010c1f4f6a0901005c85580901038cad360901038f5c6e0901006a995009020a10127b090105bb21dc09050c5b66d60901042620460901000029de09010192a2de090109e41783090106bfd43009010a1eea8e09010aa39930090109acb80c0901045364f609010c6d5598092b0160452f0901084962b6090106405c7a090102318e8e090105f654410901057755e60901038f8fe209010266c62509250c5a098d09010a8c3177090109fe19b50901054ba744090105ddbd8e090101ed3d2d0901074d4e3a0902020badc5090100e00b5b090106f0ab520901002045e5090100538add09010be525b20901006e00c9090103408cd109010683bdaf09010454bb0709010a0dbb290901006b80db09020a588d6009010023e4a10902007054df090104516a6a0901019246cc0901018b717609080034545a090104de67940901012e5dc309030c618e490901008c3b95090106c7279309010c3149c409010290a2090901017f88f209010451703309010552057d0901097abceb0901011f4bfd09010346d38409010a161d9d0901021767b009010a15772009010c6d509889010000000000000000000000000000000108f325c309010b95325909010123652609010a288f490901096a50dc09020c6d377309010b3c165f090e076ef6b509020adaeb1909010c6d1f350901052ade9309010363fc6c09010c604dc809010bdb22f609010abd6e7f0901029c76300901044b3eb2090100a65ec409010bab048d090102288e1709010486d9f909010c6c6dae09010c5f8f95090200cea95009020bd8f177090101932c6e090102101f2009010b15d3f309010a551b10090107e0bd5809010a20b10909010010b36e09010bba99b209010535e1df0901036485ab09010c6bf51c090106f5f04e090103aca9ed09100536403a0901065177d609010010c8e009050307b06e09010b87a4ff0901068a745609010a05109d090109ea9d5409010c12fa3d090100525d9309010c13029209010a2f9f4d090101551753090209e4d33609020014864d09010b59cd2a090106aebc0509010c6bef9509010366287d090107221d0e09010089f34709020a771039090100d17ca20903000ca088090205dd92110901048c5f940901001ac23f0901048faa0a0902083846b5090105615a6609020328ad3209010608c9b00901074ef01a09010a0d7bf409010b216cf90901046dcd670901012c4c4309010081621e0902038cb2f809010be527380901037ca78b09010bfdc08309010b3baea4090200b538ad0901017112f309010bf845aa0901011f4c0b09010853403109020c6513c2090109c4ee7309010c5f916f0901045e18c909010027be2f09030be5273909010ba281bf0902080ef63f09010b9ed9b3090102b8d79e0901071f615c09010c2a8bcc0901042c73790901005ee61b09010ace89280902055237ba09010c6d4d5f09010171ebe609010be5d243090105527e9609010bfcddc7090207842ec1090100e007ef09010b3e868f09030bc46f330901004b88cf09010bcf9a1a090102ff816809010b29a5f909010c014c5b09010be5273a09010c51f8b909010c682d9a09020a369cda0901025f0d9109010b563a0209010873216e09010c6bf3ce090107a3934209010057162009020b4eb86f090107599e8f0901065eecce09010a2fc27809010c6d1cea090200ceace60903054fc61c090106c43ccd090105c58a0709010c2f9e4109010285ffdc09010ba01ef809020bfdbe310901064ba41709010816073d09010b0b3c1909010326f957090108a6bcce090105a6b10a09030c6d5f2409010a4d1dd409020ad1219c09010000002f4201c12c1a204df00805cd390b32f4376da665000c6d06a23a03796834d3fe000013b08e3245b866bd970005c03e2831fc4620b70f9009d99abc33b207d484d7d0009a1139420186f9b1345a0c00069546553901618f0c32a46000ff7703322e23bb3bee000bc2d106324d203399a7000228be19410f2028e39af722dc0770e63e39068363f3f76e36030ee2643a02cd6d124d14d30c6d2cb941010069031e73fdea0c63b6dd3a0167e2218eff000c5c560a3226e34d851900084abb9132276b22dea3000492467d3a1c8fe7eb8cf8000b7e83d5322f2986b25a00092cee483a68910eb86b07950539751a322f2986b25a00058ab7cd323b63d62bb5d00011ec8c3237a41cf5440007684c8332abf52076e5000539584f322f2a57501d000ab6a589324f392dcade000be13447322d4bb60b7000007d8426322f2a57501d000b9b1d6b39057ad55d619c4800e3610b3275399c8be700090c35e03a01ece3cbf11b7a06c056e432a420f1a48600014ea25c322f2a57501d000afc03c7322f2a57501d00055a44f93a3b724bea015c000c6d559c32364a2074b8000097028f3a010639def1c6000624817632f91b49f1af3d03f34004410186cc6acd4b000007ed46c8328d1f2ab4e20007da2f9032276587c4e8ff017b63963232bab612ef0002ce055f3908df2f0ad6e3c90a642ceb32282796de81000058240d3a01bb984f6625c9095479063a9ed108887b29000a4e46b2322a310f645e0000230153329796a6d70d000b815656390b4b4b5575534008e86f243239cf40500700081a5fb83a23f50f55f0500000b73fcb3a0210cbd583a0000002d9613109184ed8986603ae8bb6328d56ca419700014bdabd322f2986b25a000209cf593a0237ae9fe763000b8e820b322f2986b25a000228a1bb41105fa2f93a1e9b0207cc6d9c323612396177000117fee83a05d993d88b970009fdf91939132f07cab4a96a04b22f8031fa1c6d5030000c66e46e3227e918fb8500012de171323e132837180006716843411178b2c244ef8100008132a4390ee7bff85603a2066934403a19fea47b234618056cd1af390580ceaac1d00b0c29d8433338929c7f6ce701718ca7323573c275a100030f7e05322e351fb37900059fd59c3b116432b7ddf4000861f7ef32bfa83a57b6f3003144213227f8532053000c2ab6cb39033ecde0b77bfc00ce844a3a01ed016f9cf47c091817ea322b6d5c4d4f00014f2543322f2a57501d0002f6ee263a0efb88d6187400048060cf32359a4b0738000c6d14163b466883713beb68022702113942f2310e7c6d9c00b7321c3b5bb16df4f6421f0296fe253227f85320530002b1c162323d89cf6f6d0003f2d50c3a3724657d43d5400be521933227e6b30dfe000b9fe7e53918a4b34dcf28c30c600fb13226e34d85190001718ca8323857589d160002f551cc322a411a26ef000bc2ba703227e9e99948000828eba5323572f1d7de000513c703322f2986b25a0002188d5b3235404dd53f000a1587a6390cf8b21a98146e014f2548322f2986b25a000a1f42da3273a2168968000c332f2a3226e34d85190001718caa323573c275a10000f83e683a3330a96ec62b0108283c193a046d8f0bf93b4d0893311d3228374e2ec40004717af43227f923be16000644973f3a194f68a4515db906716e9d4115661dc26c5f01000c6bd26d32357fa841c0000b9d7a423236be1f7d6e000c0f57503a0173727ac6690005ab3b0e325d1218dc82a000d2541c39c9eb2f4d344ef80aae0d12317940fb3dd0000c3212873226e34d8519000c06aab6322f2986b25a000b2a52eb3a085115f75e4a00009d24f532c50702a7e3000b97335c322f2986b25a00043225a6327cb7db4b3b000b00a2ca323572f1d7de0009dab1ed324ee107795400066a8b043272f6ef2991000505203b3a20a9fc2c9bc60001c5456a3235304312ae0000242b253a030c69332fc500059ecb2b3a08ff41a3d09c0001cf5950322f399174eb00022702143934b63a665fc93709376005322fa19ec5c00008e888c6325df809f00f0008f352a73a063dc12703f5c20089f5fd3235304312ae0001b52f633a0269ddbb08660008ced3b73906379da05b60000c36dfb532274f2664310008beec33322a310f645e000550c1be32353f7d377c000030a7af39162f767c49c3080c397677322f38c0d728000b44e8623a0ab09bafbbdc280b168beb39115a086ede45770091b4a03a0145eae8604e000c11e5b53227e918fb85000c6d0e8a322824cb9d090001e3868432f82faa0b040000deb3283261e4d7be2300000473d5322abfb1328c000692428b41146b5b45a246830000fe52f53a02f3a34407c5000962cc793a026e76453910670a4c1894315af3107a4000063138713227e918fb850001b682613a027a0d4aaafef20c23f3d632bd6f92af9500081273f4410fd2e0ee5a4d24000525378332cab33d18eb4001718992323572f1d7de0004702d45390110d9316ec0000974b16432a4121cd3a9000c6d5f27030c33d7a53226e34d85190000032ac43226f22255f60009ac206d312d79883d20000bee175b323664d51bd30000d4578c3235428fff80000be521963227e918fb8500000bb86c3a02dff18d0dd2b705393e9e322f2a57501d0005392945322f2a57501d00089263c3326dada8b7fac9031bf6d3322f48cb99b90000518c2e327132af19b100042da31d322d8a9f383e0000b43b4a322f2a57501d000ba6cf8632565fdb3ba10001ed074839667eec11c520000000214d42f092db7db1806cd30a103fae3a1562b42499c1ba0b4abbb73a0230357489a900006a5d8431cdca1a949d5f054072bd3270bb8b6754000c11f4903227e9e999480006587f433a029d6c574b420006845c3b3a09f4238bfc5b00036cdbb1323abc817215000a9156a2323169fdd631000c6d5f28336b6c02a4e14000c70966322f2a57501d000590ec884171845d1928a0c2e401d5df0c322f2986b25a0000300f8b32340117dd710002cab8b8324918b124780001ef3a5c3a261ec18b93a0400ac9b78b390a606a7698966a0c2e5f0d3a24e928b4a10a000b9fa62e3909f4181b7eb606000257bf3227e918fb8500066395e632344be6d65e000be521973227e918fb850004a32c6a39027ef66ea2649a0becdab1322f2a57501d00084a01e2311b48eb57e0000c5d85ee322e35f0513c000574e47c4102c68af0bb14008c0263389f3235a9c6bcb1000c3fa3c032369932317c000c2aec89324839e5753700020b0aaf3a010cb240590b000039dc8939031109f19eb3e30c48e44c32355f09a567000c64299c312d79883d20000bc88c6f3a7486139d9de3670bd4b9fd322f38c0d72800005bb2fa3acaf8f5a42338000b2bba6d322a6d098c6e000c2a59453a0cb9373a0f5b4b0550fcb43228eda88a5c0001660a81390374b3e5d3a0ee0797f4b33280615f5b4500055a36ee3a0106672e0220000bbe4187322f2a57501d0004f84ead32b64f5255660002270520393f64829370ff680b9bb0883123b687b25e2e064579d33a016751851d1c000a2a918f31c3096dd6af2f077aff593a15d3d75a3abc250c4177f5322a31e00221000c60499f32272177f5c7000055ca3939025b5e8540b41b0b9517d531886c98b7600009d659a13a119b0e42c5e77d0030d7bd3227f85320530000169eca32b51d7f60ddcd03c43d09328d183487170003e2f33a3a02eba26713c70006437414411062703f1d38bf0009cb1e91323e6c788e94000c6c39aa399d7e99a670c73303dacd8e3a0120de755454000353a595390687c4581e8a9e02b2d4b73a35ae9cd063d70005c643582152112b4d092e58fe3a012e8001d5b3c101ed75eb3226f5829a67000a020e613a257b25b3de933f0051fbf53913ab597fb278620b4a86a3329396a3a6e00005394ae9322f2986b25a0005535d793ab937b2aac1b80000ebe88732353113b0710004455c6d3a03102c500a351f0c15a7c33b5410fe08d9a04b09b1a9073230852a644d00095819653a8aee4cba80d100091b5bbf3151dac207a00007825aa93247bee2b02b2a09f921df39077da8bd441bf104824ddf322eca348e1c00012c101a323842a5c2bd000533b335322f38c0d728000c2e95263226e34d8519000c67bfe2322f2986b25a000bd9877a3adaa6b090ff013b063adcc032343904e693000c33c4823226e34d851900086feabd3a189dace86626000390aca13a012dd5f36e74dd0a35b3603a0155e59a38dc000a581eda32b4ae22bb280006f92f373a5611917c403a5e052cb65c3a0355ce5890b22e0b3c79c732872b9dc0c600063f7127323664d51bd30006728b274111c62364fe155f000c6d52fd3a25fbe3942c1bd8038ca23b322704bcbf3500034a6a64410134cdb7cb46b5000be191693a043b9ca0780600022b1d8432335eff1c7f0000f9d86c32357fa841c0000b19ff143a266ab515158c5f027eb76c32353f7d377c000b64887232292afc676600052cb0b9324c8c6c883c0006aba6d5324079ec51bc00055e4d713237bc65b8f70000e066b0326237eaae1300048211823228eda88a5c000bda729332a44d347c53000101ad36322e23bb3bee0006728cfc4112f0d09d3459bf000c11e7b63227e918fb850004c0fddd39c033a9d259400000e0dc5c3227e918fb8500065cd18d3a05dd8b860cc64201785d873236123961770000b521243a0189e5f9500e000642be0741138f3a726bd41b00007054f23a06f41b7bdf98540c3573863226e34d851900067828e33a02e6e3f54070bd049521873a116f46f7cecc0000b4b660322f2986b25a000a285aee322a4b9a52520001f5689b322f2a57501d0000026f42322f38c0d728000625f841411509bee5b03601000b13c7933227e68954d70002552be6324abd4ceee9000c6c7aa33b12826ee8b456d800c87b07322f2986b25a000b238f943a0143774422a10000f8f3df3227f923be160004e9a3383b0c2a1fa9b39dab0c6d520932cccdec03480005dd05523226b7287ab10003b1a77632364105ea1100048249a83228eda88a5c0004e7ff223227e918fb850008d84b2a3226e6309e15000bcf9ec7322f2a57501d000004fc0c39100ef09522ab5d06c1489132e2bad11af80001bb13d33908354a67dbbbc10bc2d4a2325938cd746d0001f54a80322f2a57501d0007bc7a0a326c6a6feaec0009f10a623a160d32087bc78502227bf232ef3540d4e8000b8f8651312d79883d20000020ff483227f8532053000b9e99f1322bc5e1fce9000bfdb12b3325a28f9d9980017c270232370b5463e20005433563325059ef7910000c2a4d023908b71cef3cd0a40c67d0a13226e34d85190000001fa5420a874cd9f2c70f390ba1dc25390817aa5dbee0b401f570cf322f2986b25a000a6fbf7833342dfabf1740063216334109b6e64a8ec6001006bd79c33a07495d4c6d6b000a3a3c7732ab94330d0200024880ad3227f8532053000ad3d06f32b52e9c92f600052da6f932b493b4460fdb052d7ee139043c4cb180500006728cfe4111816d3b29121b000c0202b732378f10b2bc000bd096c13a2b30cf6a66220003a2f2ee3269794cc5f100038a5d1a3903e628eb88ee07018c7339322f399174eb000aedb90d322f9baedaa10009e8400c3148c273950000095f8d5b3a0524ffc988cf0006923d674111752543a029010000e3096432b69d996a480005479b2639026adef55f1b9806263a28411449e62eee570100028cf8df39e5dc4ea4f7c000048237e63228eda88a5c0003a7ba9341066195bb9aa59a620c6c958d3277cefd801d000c3563733a017332c3f22381014f177f322f2986b25a000c6d559f410b19942e1c59620000144c07327d64b5c83b000c0b67713a163fbcbb308a2e00ce87f53a02dff25dab95b707dd2f67324937f60bd700013ec2963235ead4465b0000a09c773226e34d85190009949887323876b55bf9000819306d3235707ffe95000a1e0c813a0108dad835ae0009d3781032361c2489e1000c667f793a173a4ac6b320150629831e3234a35461a900052ca8e6325a13447e3400096ebe243226f4b1fca4000b9510cd312d79883d200003b2ad9f329a895f4bcc0004b686f732664bd5240e980c029d13322f2a57501d000c2bc0443298ec0135b2000010cb9a3ab1fc7af4bca70001b7f07d390f538f658fa00009e66e083148c27395000000ce87f73a01ed016f9cf47c00002a3b41087ab54345c380000c45564f323572f1d7de00007054fa3a04fa91d36d1188082a8320324918b124780009d484653227e9e999480006eb3a233227e9e99948000a124e65390110906603d9b90c6538953a09349b28d4b6000625ff51410fd1ece3acaa01000138ceef3a1964e4e0868600055160a93228eda88a5c0002417e70393d3d7845d2b0720c33a81a3226e34d85190002f7729b32353113b0710009e528703a05e5df7cedb35d09ac01c5312d79883d20000a09c3163a53ae98563bf4f908b879023b8db77abdc9ffc301d82e45322f2a57501d00031bdb85322f48cb99b90005aad2453a060edac91c530001aa0d8e322f48cb99b900014f1411322f2a57501d00005d82e1322f2986b25a00084632fb311b48eb57e00006a0b9f832292afc6766000354b344322f2a57501d0006923ee14112b4e3c98df201000b8ab48c399d692d71277ca7040104fe323fdebdd2d3000c3763c4390631f7f8391a400c0ba4d1322f2a57501d00001674c73a014c1538579a0002d9a53e3903aa99396880000656600b32609983cf96db0a4b1ffe312d79883d20000c67cb443226e34d8519000b5f2662393174285d1e4f190c6d41013a04b9620e053b0005413e8f3127b64ec701c0074b5479390d3afbbdc732fc0c29a649325059ef79100004bf4dd9322a369ff16d000c31f6343226e34d85190003a43b9e3a13adb8f7c56900005487653b1a51925e4b7c3e014bdafd322f2986b25a000c340a253226e34d8519000c1fd2113a03e8722623b6870085e12a32b3bf6a16bb0005354ce2322f2a57501d00082d641742313d594db9a87e00058cd6b53227e9e99948000be5219a3227e918fb8500096b9e6b392a279b3e5e76bc06bfcd443b079b4874dc3b02038c86f5322704bcbf350004261e2c32357fba2363000b675bfb3a4105b901eaf7440c6d56ff3bacee4bb9b77a0003ad4ce93283fc6df88200012fef90424565815ba086f13f0c315d433226e34d8519000a4c1bcb312d79883d2000000aef37322a400dee6200054431453a0b873544bc0f2f0bd59c2232347f5b76c0000000028e327593ff11d10005392ffc322f2986b25a000005eed632357fba2363000784b73832cfd26257c1000ad83e1a390d855e25365de90212d34d3227e918fb85000bc29fc3325da1199039000087720639103c3cb4eb7ce2061b994d3227e918fb850000b50d1b322f2a57501d0000001e0b416fafbd11a211f3ec02f2e79132354ce07bdb000714ba693a01b815adc09aff03958051391dfb3c08a0906502f9161c32940240eb2e000c2258b13227e9e99948000b52e01c329b2cb9ea34000013b5e33227f923be16000c0484243909f87e0dabead10b9b63a6322f38c0d72800075f36cd31d6d1ccf97fa90043d0ad3227f923be160000ce8baf3a02dff25dab95b7059d4ac73b0da6643e368b710c5fb6c5322f2a57501d000c2e952e3226e34d85190004461c2231f5904616e00009c5326e3a0bb599e04f458e0c1dd7813227e918fb85000bb3fe3b3227e9e9994800009a6a633938f5b7858bc6210c6797313907cb84745bdda205411f44410dc283ff2eccc0000a56c9d83226f5829a67000b29b3383250ab5541b8000002484d3236ae3e7404000c11ed7c3227e918fb8500019f1e263227f923be16000b6a3b273a04233e46cc2f60019457eb3a0347806fc94fc90676ea733a1fea720a6b36000604b63232b2402043f2b4052ca8e7324f514cd56a0005b2cca632a5128d61ef00005748b3410ad61e63f1a3d010062e188b411442cb31a4ca01000075d9423a1ca10c14cb7f9a0a6cfea03a10395f08297de20bc7ec3e3a78dbb5327db58204308bc03a044969e336cce000f9beca3958b82d352657de025e3c683a01351a619fe00003100f2132b3d58887b100050ea479324d188d25844001ff71a43a0130c1972f6e0005394300322f2986b25a000482476a3228f0bb5260000984c1b3322e23bb3bee000b803bb832791464f3b500000622b73227f8532053000a26a09132b49261db80000bd58afc32347ce99d770002115f5541018bf41810dcb00000a88d643a013b03509b34000b29fa363902f9ea40e789f90c1f464f3227e918fb85000058bcca3aa29fbb1bb9ef11038c97c3322704bcbf350002b9a1af390de618d46570cb0069af8a326992b3a3d4000a0fea9d32b4b0d6251c00051a105e32bc1e515ba0000c2fdeb13906fc57ed3eb5da04261e30323582fc9a6f0000002a5e322f399174eb0000b1e45942718381cd011a2ea301708b863a2770b71972de0009e416163227a32db52a0006bfcd4e3acad41fa69e01000a1e6ec73246fa207051000a704b1132276b22dea30009ac89e13a0c56104797a61504534fd6390ef4e0038a1b380c6d4bf83a28d2db1761e23f016041d53227f85320530008491a253a010191eaed0c000b1fffae3a04d78f6378d10006316c9c3227e9e999480002229a99323882b2ff9c0005f647bf32343904e6930005773bb03227f923be160002ba65fa325d791f72240002666a963a239d4e5e5248870c2f6f6b3907ace66a51ae230a8c2c6d3295e162c3296309fdf6063906bf84ffa6e08405204520327e6a7552e50005dd00403226b7287ab10001e07443322f2986b25a000b0072c13a03807ef71ec6a806f37719392073e03672eed001ef7a803b408abb2139215e0093aabc322e9a61c2d600067f35e73226e34d8519000a4b1e93312d79883d200001286519390e35fa931a0002001dfc93322f38c0d7280000530ded32fa0fb0f0903b0be522fa3227e9e9994800006de0d43a2f065c543e94f1034059213b06f1033a4399680680bbe93290327bd01900042daa61322d8a9f383e000a0db9763902418f4a948c6c006b60b33a01968acf0b7b000a584f2c39035305631897d2085e0f4a313205af7670000023e2383961a2246c66b2ae007055013b2216587be99100042da0ce324632eab46500019241253234b55fbdd00000f97b5f4211e9039e1461610000344f07326c7c4930c5f903b1e4ed328d1834871700012e41a33a014013c33076000c618403326a90b84eb200008c10f832c8071e61010006c639353a133ae89d1931000000406542056cddc93e9e17eb0c3143de3235707ffe950002906a5d32aebba4d77cf40171fc91323571509c5800042d9c6c324632eab465000539392a322f2986b25a00095c35333227e9e9994800011de56d322f399174eb000313885a3a0606a47d0c02a00a15f77f39065c4a4d5ad2c2021759e73a03c46948ac66000a1569823a1569738c6e46c50c6ca9423281e66eb7cb0008f310213a0d1ecf8186ab060b937974421bc35d50b51d823f0c6d5bbb3258cbb2b7df0001232c413227e918fb85000a2871633a11987352fc4196096a49c73a01f65b54b02f000c6d27233916cd11b16e442709e6425a3148c2739500000b341cc43a01cca6ed9f7b00073dded43a015e3426bdea390a68373f3228367d9101000c1b00113239546edccc000525c17d3233569d581700014ecd05322f2a57501d000c6047b43adea02e6dbfed000bdb20ed3a0e638dc9bb8f020aa931c43ad74bf1e55beefe01572437398ae93e2c2e3c55029c657f3a473e7caa456d00044b3c573a15ef36b1bab70000a65ee9322f2986b25a000b757e7e3ac40572cf712d00022887753235707ffe95000482430a3228eda88a5c00085eb4cd312c90b39810000c66815c3a16f78e4acc73150bf1f3bd39175d655d782c4000ce8bb43a01ed02403ab77c0bd8e7a3322e35f0513c0001932c8c3a0275b7ab6ff408021005ba3236fa8ae531000b02ebff32359a4b0738000a550e603226f5829a67000700f10d322b6aea7406000a20a5c63a10629b6c76e22e0010b3a8390346f9eaced2a80bb6b8183a229f0976834a00052ca8ea41015156ed0e618100014f4fc4322f2986b25a000c6596633226e34d85190006ec820f3a593a300e4cbe0003aca3b83a0f3540866d39a0052cb1fa3b16b4ecfed1bf0b06484f0032e84e37752dcb0010bcd03a04d68610a4e027021d9257322ea6d0a62c000b87895e322f2986b25a000682b70841128a41d9d4a401000a04c507390174b5927535e209ea8f9c3903a8905f89db0708127dca3148c2739500000c5e12493905543df729c0000c11e2433227e9e99948000036b80a322f2a57501d000c13005e3227e9e99948000a62ea180a020a2f9f5839018d469d1269f9090f73573a0112299c2f110001550507327e7743944b0009e4cfaa33f99d47f1f860001443e33a02aab1cc7cea900b59985b3235304312ae0006ab72d5322f2986b25a000c65a3413226e34d85190001f5808c322f2a57501d000721fcd33227bd3b77a9000089f0fd3256617c7727000a75a3103269b7ee6c330000d178c832dc96dc589d00000bb3733a01ed016f9cf47c05dc76393226b7287ab100048c2842322f2986b25a000a6fb4e2410179eb8b5984ce810004e06b32fa0fb0f0903b0a866cbf312d79883d200004696dd732a0aaa69a1400070221f93a0738be873036000560ce2a3a0159b812bde5000c6d5f2f329359a33c2400031b7e42322f48cb99b9000608c7753227e918fb850006c81e0a4117835df54bb5c5f20a0d6e6e39189b201ca317230b1eec9f3a012611da91d300044713c1322a4049892c0000ff815c322e23bb3bee00008132be390ed27e314e9590028e60ff3267574fe19700038c8a1f322704bcbf35000c5d9aa03906bddb6ded00000be5219d3227e9e9994800037ca795322f2986b25a0009d9de9c3148c2739500000bfdb2ee3320e7ff88f5600b3ba8f63a0154c346ebd11100b538ca32ad09de8b930000f9bedd3a5ab5dc1e8f40480bf70bcd322f2986b25a00011de575322f399174eb00085235af32a06dcfe87f000c65122932fa014769853b09c4e5c039041a4059fe80110bf1f3c0323588e68fad00045e0cbf32358078df83000c6d2cc03278d6db71c2000027bbea420fd397d33e143b280be5219f3227e918fb85000ba1f31e39066f717d8921b20806811c325ab7165230000b868a4332292afc67660002b8bd6d3901752ee06c2f2e071f5bd6322f2986b25a000c29a2c3322f2986b25a00042a2b823a593ef20a1e160000583c0a322f2986b25a000acc597532e2cb8eade70005395358322f2986b25a000c6ae0423a0345e4a1d3bc00017189aa323573c275a1000be5d06c322f2986b25a0005396053322f2a57501d0000313353391ab2724e8e8f9a07842d21325f279c1b524300e00818327cef86c3b2000b3e6be54103e1fbefe187c34d0bc46f42322f2a57501d00003ce0203918b8a20f392bf90bcf808f322f2986b25a0002f911353235713ebab5000b297de93a107ed94ed292f10c014ad0322f2986b25a000be521a03227e9e99948000c51cb2b323d4b813b79000c528fb63910c9f892f644190a3698203247e89d79f40001c794a63aa0c6f6e03c2efe0b5635c83238c53e018600087306653278a1e3633f000c6596653226e34d851900079f16a5322f2986b25a000056311d329617816fc5000b4e9b2b3293960ea3e7000b69e882312d79883d2000056ce31a3924bbb870a7b80007594f2d322f9e02e68500065e3a64391e48fa76af33c40a2f9c1f3903762bba8197b90c1ad8b43a396f10e08cef8000ce8bb93a02dff32e4958b70b95134b312d79883d2000053934d3322f2a57501d0006c432b032298fe50e940005ba3c793226d9c1babf000c2e95373226e34d8519000212b6e8322bd303b09d000b9fa641390c84dd39134d400bfdb2ef3325a73018d5600646b7ea411038f43c572681000811726c3234fab60132000b0b26c6324d4899018e000ab6f94c3901c6bf526340000326d283323ca9a415510008a55cd63235e5baeee000055078a83a020170fa41c3000c6d5f30323cc912b5d7000a4d10a73a088100a29713d60597bbcf4138b34626b3d4418e0ad104a23904b4927f840b6700000024890100000000000000000000000000000045070a5197894200000000000000000000000000000045070a5554000ece4717aa4dd7f7d26cc6a5658dd6503df02706ae4bc6b662b87d2ee5bc410a070a5555002d70dd15dbbfed285ece7d51b48a6c996c95aced672b54e5d75df4eccfcc67f3070a555600ea9d7d8d700234bb5796f4a4f0fd5f2d287b91eaf38531f29279cdea2a58dae9070a555700c32afd398a6b9a4489d11fd19487da3c6c3581f9dc6b7f96751c22b2e3f8d94d070a555800328f20ecf843d1d41b27a51dbeac369797036e281232a462c7e18eea582ad48a070a5559007fb009cd5da4f102eaae9412d036bfbc3b371980f419cea7d3a519bc29f70689070a555a00695c053892a64de66eef199294c542dfad3c13096cf57380f988d50e289acdf4070a555b00893c54240df3f736e505b0526e68f4046b19e530902b2d39f2d39e2e99c42a21070a555c00ecc471b28855efa79fee946ccaf2949a1ef276939cc957eafbea274eaea44e4e070a555d0060785a03a0c14b18c76bdeeae535919b34646528658c304705709b6168b74c54070a555e008a49f069219b81777e35025af257953b8565c44a744d8d2286385e4379da9ba1070a555f00782939a6fd134777b1d0ac8c98e18c4474eff5c8d3b6e2be16ae30d4f24f91fa070a556000a14cfb6af05dbb8d82aab24cc96cac265dbd6a73bf27f9931b49fa18e15d1a0b070a556100790f2f5c90f998b74d1e01d0de38ac588fc61cbe2b5baf4fc44af428f9a813ff070a5562007082d179734cabf75a61a64297c44d4ea86d7ac3ea5b339b0178db4e3cd02f0b070a56c300136ee0480df8b39149363c218b647396cd77db49ac8da6d1a5df718c646f4505070a56c400d8a7f77f1357a7e968ab015ae88766d6a389b3d758c9f7fb6ae4b5fc532458b5070a56c5004539d286b1fc403096a71cbc5fca0e3a68878c3dbbd21aea78916e2f683716d5070a56c60093f3db52f4721fed8065e4300ec5dd4f681c31b55a9782482207b614b181edc5070a56c700673d0d9046886d29af2e2a4f48c3dd68108bf0ae50d7dc043042608835b04661070a56c800b2c156c6a6a68f6ed28cbeaeb09529ff070449c3ee2f5351ed2146df374a6ec4070a56c90064ea822c2cbee67554e5cd8e4dff5b5d67d5a48f0e1744eaece9df1bff3de372070a56ca0087cc274a4925b678fe35a4b1aa9480dfb6e62da9a6683a36d11dd3e77700fbc2070a56cb0041c82bb6a594b47ad4ececeb74970644833529b8a7ac5c9f9195c23dfa7c3c3e070a56cc008e1d5c12f9cc7ff32d351da3a51dc6da250d60beb4f93e8c791684981beaa079070a56cd00195917fd26ce298eb40e6a6da3cfd06dd7ab5e20da88c1a01a71f17825263046070a56ce00d71c8eca35d6738dc34229c77366fa68daa008e4af36a9eac178d4a6d8679c27070a56cf008fee12db89070d44da0706e8ba0cc9ab021a82f5c7f0ed887077cf1bfd9a3633070a56d000bcc824d8ec15706c06b0735f63576ee37e525b1230f2cfec8f9ad424094d1205070a56d100525ee5b321d11dec665f42fc343ca6d4e5c567bea26034744ef2fb3efabe8308070a56d2007b5e4ccba1f2d986ae5a4d3cb3903b9edfa8ac51cb1c59518b49b1a0dca7af59070a56d300596398983425344c56b3c852cfd83d5355b4e1c613c41e95133a09573a40e821070a56d40080c2f731c8f8fe97c6a3b869dca35845d21beee4116ac00fc4febfb4bf6fa6ef070a56d50011c50dc23472d9b266c9154b86c3c7df245a42e4a8fe823524dbb75f07671bf7070a56d6001583c73c264dd4b09789d697f44ac7058b78f43fceff09084f8a886df18586e9070a56d700492ca951cdb5f2895314c599b5b3158667c564f7d0c392dd8a2d1cf543270587070a56d800dcb730df09342c319c6ee871014afb80ec1696e1ce6ae3e994f0573cfd637c4f070a56d90033bea0005e00071439549cb8a347a2a997fb047aa80f762544efbec44b3086d9070a56da002425e8cddcfc592a78e5464b9df8fdbc1b4fc2941819740cb9a81d3984e8698b070a56db003b05389c0085ba626c6bb8ac0670ea00b638447d0ba0d07eff6ec24ba52b9497070a56dc008514fcfa9f51ff3cc6df8570fd389bb6047fb639930a7722fa3e80b429ebc1e9070a56dd0010861a5a892c0a70bf76b875053f8c43ec8903ab5a9bd93266c011b300f48b6b070a56de001e64c93e610f2cf7f6347bee7d5d16e9a58940ce69daa3c7df16b693389d811c070a56df00e6ce9c89eb97e6ca65e5508f87345b896e248743fa58daa570970969b59f103b070a56e0006e5e8bfb8019f87043a26ca29808830bcb40a823685085d1a95e29b0301c39e7070a56e10023ff5e9bed4376b62be978f553bcb72fa15b5e07add9f2af9b5a29b6c65597a0070a56e200e7af53b6d80e25b5640920dc34951cbd088c5e9a2a568919c0ed85f7faf5097e070a56e30056d53d34562b6641f64ab92a4d9ec05e2b780623e4af9ceb6c230000a0cd1c48070a56e4006708da8cdb9ce98edbd6ed65bdb35416a824a5aff0b0ab5707de7ef021bc48dd070a588c001435d13727931da6cfa7b25ba9c30104dd8755352615d007196d6fd7e1a39850070a588d001367c4994bb49141a2d0fc0e01d4b7a74220defb33bb4dd9c4b0bd12e6f4adf1070a588e006ca806e22c418e0a12ea81376eb340ab6e9e6ca0487a54214c5529c155816217070a588f00333bde909ca3eb86a52b39a698b65db04d07a670db0421f0ee46c6886a85f289070a5890004c1193da575a3aca7387199dc69f0ba9b74d08984d1cf0ea608ac33e15a7d068070a589100486ce3a7f208ce50d491981b052dd0b82158439178a010bfece42c14cc0b44ce070a589200bcbd514b32e4224695620a218cdad37ddf3dfe00090d5245e41e8ed0c5927b66070a589300297e13820b1ee825dfc63bce22a79a1882b39ffc96b52feaebc2799415351196070a589400a5fc8ae6f71721afb5f1fa2a1030fc45021876804a844fc948377a3438be0e70070a589500e3fb377be3fe163642f5918cbfcdc692ad23c4dc227cea966bfd69c5bf9a5f1b070a5896004139e6f0928846924c9f5f2231003746c24d61f6b57bb589c6361fc318afd22e070a589700e6924d20d6f257dd475f376d0e77ad04cd4963c8935108d38f6853f6605477a9070a5898008a2ed31eab9253bedcffe4a641f1f14b01050019ae0b3b709656cf24f39c3bda070a589900506784f580e9244ca30047569c187765ece4d7a92ee04c0f8f13551472e33a2c070a589a00b273f7a41ad3461431c58896ba5ae5b361bbdd3e6d548a73e7c7ba181207fb4b070a589b008995c00ee5c7048e6af14c7b80bb82875d77893e5fd0e125102b4b06734d9f50070a589c00f356ac02a469458eb07667b5f8ff61de2e800a5740e905394f12d00149c822d1070a51b489420000000000000000000000000000004502d98f29093102d98f2a291926cbf3f6039803671113ee039805621104fb04cd9b8b2206f67fb50c55a188d108a9bcef407c0bf561cefffffffffffffffffffffffff9fbcbbf0bf0e9cbd10a7f896da2c5d6c230fafffffffffffffffffffffffff68dd7a20c167f80d10a4a32f0358e4ec604a3fffffffffffffffffffffffff9d4cfcc0bec4008d10a8377979f8dd7e2fac4fffffffffffffffffffffffff7e746610bf2ae2cd10961dfc3fcdc7a5e756efffffffffffffffffffffffff75ba77409d9e8ee4159a7d9a4f6fe303f0055ca673102d47ccae3b00055ca683902588a0875d06b00ae069b094300ae069c29187f3e6a2c00b1fc8b22d42f9f2100b33c1c11805a00b1e786220c8bcb3a0bf857400b040c6d5f32030c6d5f3329118f2c2b4a0c15c7be0b01053f6b64d2031eecfb04e7d3d80b31ffffffffffffffdb8c64a763961146a6053f6b65d202e7af4699fad9d2c55fffffffffffffff94c271cd24f276b1d8053f6b6611031705483710112510053f6b6bd2202500197c3b83efa90dfffffffffffffff28b5f6aa28c03e315053f6b6cd225187eecf238c2ee52b6ffffffffffffffc761fe390c332c465d053f6b6d1101ea0548f9f5310389dfd3c9760a46e38709010a4b200809010c6d59fb09010350e968412d5e9e7b440ed14b0350e9693a04ba8b54d24505091b08fa0901091b5bc909010bd2b85051010c570cb5c6a79800000b02f4774a1b1ae4d6e2ef5000000b029f8049056bc75e2d631000000b0070bf4915af1d78b58c4000000b4d1edd510ad746921b44096844800b77015e4b03cb71f51fc55800000b4ed69a510ad7ad02abbdd1570b800b02e5604a1b1ae4d6e2ef5000000b85936f4a1b1ae4d6e2ef5000000c6d5f3f4ad8d726b7177a8000000afcb38b5215aef394c701dabf50000b7e7c294902b5e3af16b18800000b03c6eb51046d12dc03003aa800000bf8920a4a1b1ae4d6e2ef500000022d529f41037976a85acbc5b7022d52a02214395883022d52a121144715df022d52a2410b34a21b7d3694f7022e6afd4101cd1f34cfdb770d0916d1824a04842d06ccd73c62dc0c2427af410ddf0577f83d4fa409e616e24218fec0d2cb9923630c38232e420ddf0577f83d4fa402cef96c39028f3b79effc050c382c02390274747a0a352200002efc4118fb8dc8732d285d0000015639915ae9d7d09b95064e459d03000f0f3d490481597345f89553f4091a87ce410242dc6be55272540000215042018df85603bc655f0afa902a09010c02aebb8901048d43f055ec35f73555f904c1d3cc5d0b98862d894e00000000000000000000000000000000085e1ad50901085eb4ee0901000f7641490481597345f89553f4000f76423a3a26927da33621005e14ad220eca769e005e14ae210ecade310153fa442201d53fb20153fa45392ae79e20bc94110153fa46095d015408bc31146220672611015408bd5101dd414a29df2f4eacd3015408be210daec1820155a137410197a074c8a537390054c28f3a02ceb0cbfd34980054c2904903e8a4e80a01888317035142b4422d5e9e7b440ed14b035142b51932095509ae9eb5429e25b8b8075a1fd309ae9eb6390fd696c7007df102d98b76096202d98b7729131c50c6a7039809cc29806e7604cb03980c0129268789ce3c02d9a56e194ea8880a4efa82194c38250c6d5f4b030c6d5a080302f2f1cc49019b882f8053f90dea04cc8e92691c971ea11724526deea30b7bed04cc8196890a5cfaabc4c81d430777fbd95b435eef9304c272d4a9020000000000000001fb44fc499e716438040d16c704c272d5a908a1700617fffffffffffffffffffffffedacaf92204c272d641014923750000006d04cc8e9311173204cc8197310866f59299750c2cf1827b0adbe7e1f65c9d7de024d4845ced500c2cf18393f930708824e41c683fb5d3504374a007277000b7d3c2a92820667cd200000000000000000000002820667cd202af894daa2820667cd1ffffffffffffffffffffffd7df99832e05918767093a05918768290b073155d205a4deda3103fed4ddbefd05ae0b3a3101ff6a6edf7d0597bbf12904bacdf1b30c6d307f2110543bcb0c4d92e70b020c6d5bdc21883528770c6d06c32904bfa1d8800c6d5f4d0b0d0829147ca260ed964a86d02d728fd007b16382ee355ade5d7a0c6d55c4030c6d55c5030c6d55c7030c6d5a10090100cf9819420ed7827f817c828b0529427bc10200000800000000000000072cfabe8717fc222f4af932be05408e8a590619e3b576d0e5c35c41aa05407ad7799bd2c8e0b0744c16314106be4304e205407ad8b9011c91e571aa1000000000000000000000000000000ae70529427d392e0e4e48954dd50ac46138b10fd0d8c77b463006da478e000000a89c3d82000037d60ac46139b10fd3a97bc5411ef9bb575a000000a8bd7619000037e105dc1e3d7203844a562454b651d9153cd0aabb05dc1e3e8a6505d78837dbef344169d58879a93aa7d005dc1e3f000164eec9ec000000000000029e43638fd39824bdd2ff9183400000909d71a1330000928a22020f657f0000928b393089002d05189f0000928c093f000093982962b03d6479000093994903053e2003d57d229002cef478210f9c958b02cef72d41022078f87e5284fa09a2711e090106534d6a8903e04d799b94700c9ca6a006bf618f0c050652ee33894e000000000000000000000000000000000a46e66309020a4c18f709020c20ffb4090106b203de4905359992dc8ff00000084d0ec40309234867493615af3a517586ae670c6d5f5f0307d2e0df492a30e36e3764506dd60c6d5f6003084d0ec603006a99e61bbb614f0b16f1ce030411395e0300d25f66030c67eab11a0186a00c6d5f63030a46b2121a15317e00b7405e191300f6029b178f2102ee274e059f9f9f195d83ac0c2e6f01030853408b0304cd9c33220707de5003d46f172230f341f207141a5c2103a422bb029ae04221417fb73f00b539441903ec17017113ca2103da00b90b0b3c521a2d4f240c5f900713012d067034e5210688513a0c6cb7f5030c6d5f66030000219f2220f2d637009b618d2119bcfbe101b7ada422010636d40b6407b1124d90009717d61a129f2304c2732f22053d425307aaea8703098387931913655908733332211209d70e09fe1dfb1ad7ae5d0353b7f61a4c4b4008f363521940ec17038a62290300aceddf2102625a000ad88fb5030b6eba590b03084ac5aa19172c6e0a0a21801a148a9108284b33192d1ce00153fa592201d53fb205a6e858216a36e7fa0b85d893225d355f8a0209fb0913037801cbc53622013ee4d7050eb60e11029b00c1478e11017b008ff8921a68de5700c116ed1a03dd310b31b4021a25410c069bcaf61a0f2bcd0a35e4142203dcbc310bfb7d0d0a07000092a922020f657f07f86e0f21063a93a30a0d7c32220112a78f0a854f37210205a42409581f272105ebc9b50a67fed319c3721a0a107b5319e38215086b5664225c219559001997621a13655906f5f08b2103ca702609e241121a45201e0087758d09230b26097521019c96a2041136e20306bfcbf119172c6e0c682de31301d30023faa70b0708def1cc1a0f2bcd037515c8030268f86119173ea8055a3a9912cb200add4b4412ef310a09deda19ebf4d00a4d1e191a4c4b40052942b62a011620965d08f3266f198c2d6e00571733190cc4b30ad6cf37195c07370bc891962104da2db105931d82210285ddb106bd5ed82203a422bb0c6c91031a4c4b40065d4f4022014fb18001e38a6c1b1ee17e0bfe63ee0a0109acb84819839ee20c5b6734030a09dbe321038d3ae500cf98451903dbb60540f4171905688d031abedd1258f00c6d5f670b030c04adac030a7f04e51a2a1c250548bba8220164c1a60546a94421061336700099d8fd0300050304030b8abc300b060c68662a21097ab4550548b655217aaf3d82060681332106a5eacc0abd6eeb21092f722a0597c060222aabb2cd0c5a4c31030c0fbf1e21055d44e40c049b0203000083301199410063ee33213234fdf0028ce4492206a5eacc042c74462103cbe370057575141102e30be1d4ba1926992a083846eb194b362109d4f6fe1a31c0060a8933aa1926812d0a15777719e5b751009cacab290211c41a880a20b16719ae0e590b4f56b719236ec50066515f1a01cd16015408d91903747e05d04be4290254eb71220ba282121a4b302c0764f632030c6d5f691aa4db91066830d321011801a70a0dbb861a21b07606eab403193c98060bcd8b032103aa910c00267c4d21076e77ff0c6c0dcc1960e56c058bc6461901f0840c6d5f6b03049b61a719b95da7000040a62157f8920402b2da32210246195c0c6d4ea1192026c200bf345d191a23280c5d07bd03074ef0a51b725f3c0c6d5dc112ef3107711d661a9259930c6d5c0a0303407460190375d005cdafca1a65f866054f83bf1901cd1603a7fd14220b4bee7e005c86352106eb07d0045e44e622417fb73f00f85f4421022a1f5502f8523321019c40eb00ff57761a707db404a342601a26992a080ef12e2106e86ccd0a1251b21a103fd8004395801102240ae193731a2dc6c00bfcde32193319270bef24ff210175094a05153423210160132b0c4e649f194cd92d01c0244a1a5c073705cdae6a1a0434c405037b01210133dcb80c6d5f710303a447f819cf5e440c6d0c63030c5be4cf1986f0d20bd7e0752101d1cb33025e4ffb1b0ee39b0395a10703045d32f5191c0b9509f92947030a3271b61919a9d00b89ce8c13189708e92cf121735545840be85daa1996d8fc01000ac41916e360006619432108a1857d01ec0adf030241c400030c61635321032de7a40b6340f5030039874a030c6d5f741a0186a0010e02071989790e00b528da190d3f4a099761c1191a6d200453adab1aa7d8c0004b89ad0304c25216221225b9e800b1e84c21c74d897b0b04684e03087c18e52101046a040192acd22101a6e8890c6899f7030bee0f8c217733fc1409de58851aa7d8c0054572bd2102faf08003db217f190f6611099245402123c34600007055ca210c86e53f0c5a09fb030ba191000302ff917b030b3baf260901006e01a72101fe011c096c267503000024ee191924b00c6d5a30192e80880b9ffc791a7056ef07e30d151a019e1006270e552108b9e77305488b1e1a19a9d002cef4d011748f05865b30215eb1807f079c578d21065b70490c6d32b60304de6863210989b8b001bba05b220f4c49ca02076ce321010f380003fa37091910d8c1078673e221082cec3a03971d7319b77ab40c6d5f781afa8d0f0548b67552054628a1b0bfe1cbec0f056816ea6120a1d21a7006d6dd6e30d5a4054da50c61097ac1e13d632ceaf3b3906b054da50d916c9e000000000000000000000000000175e907d2e107492a30e36e3764506dd607d2e1083a1ec6c1eaf177320a46e7f709010a4c1c350901076d03c0424238e84c7bb163ad03dfedf209020c6d5f8409020c6d5f86090203dfedf6090209e642ae09010b8ec3a009010b9511ae0901088a0e0489032042b18b4979be30ba439324f23bf4c40888d993894e0000000000000000000000000000000003d46f36c948fffffffffff08be8b55923ceffffffffffffad2469454b0503d46f38c20be6b4536064a3bc000000000000002c851cc7f5d650c5a70c59b2efb910b687ff18c90effffffffffffffff59b6a99e4f8b8665042b6310b9b00ea019b6ae30fffffffffffffff92850daeccca498f7080bec98c2106032acc57ae80300000000000000000000000000000000080bec9942106032acc57ae8120c3c7a4fb95bce8d7e72ff8ffffffffffffffffc6e90da3e6f7e2f4303d46f3cc1035ceaa3cdd3cd66ffffffffffffffde8a4ad9409e00eba90c6d5dd50300906feb190305dc009027a1390ab1b0fe1e5f93008ff8c41a6be4330c68d77f2902bab32a250c68d30f290e2237e6f30c68d57f4101cd1f34cfdb770d001a6671290e2237e6f3022d7a9a2902bab32a25022e6be64101cd1f34cfdb770d0c6d5a43090104c2642a6991378ab350d6884bb9925e9ed604c25506892ca58690928463ea68a1776d0d3203fc4504c2524fc1020000010000000000000000fdc1572ac46e6fe23e3b4ab104c25250b2015148c23d7e0000000000000000000000000000000006ff26294124b62b5c00000c2806ff262a41249afc4f00000c1f04c2642b1901945f04c25507317c535eca502a02f2f2309201c5555dfffffffffffe6477d07fac06f21602f2f2319201c5555dfffffffffffe6477d07fac06f21600246ee03a2386f26fc10000011ed857030c6d5f8e3302ff3002f4400c3f80e703038b431103029b17cb2202ede3830c6d5f92030916d20121027a10570c6b5fa30304cd9fb3191f7ad50be01a6821050d28d00c6d5dda215d39927d044b405319e85e750a35e4672103eab61c0574fbde1ab91874029b1a47220101e38b0a854f6d220205c0370c6d47c70303bb4fab1ac9b8a9086b56cd215c3737a8085c20662118f810820c6ae84b0309a26f6e1a0178fc0342a5471a0754800a7c67c119c9b8a90c6d5f94030a2f862a1a4a508f07aa83fe030aba66d51a1f7ad50c5dc5ba030548b6ac227ab0c2b50c6d4b5e030a445a3d03058bcb911184f20c6d5a520308ce493111b5040c6d47ca030589dffd21029d84390b4abe1c2101290d16022d539f22026d8f230c6d31a7030a288fe819b91874091b049519015ecd0871fb5b2205086f1803a7fd39210b4bd0cf0c6b84b2030c6d5f99030c2dfda31a03321e0c6d47cf030a1f65d01a19d45e08fff4290b4202f2f23d2201c5555e0ad7d6af0308cddc0a210125bdad0c6d5a542232393e510c6b1303192652a302ff98a321010a03a709eabf841a2d96fd0c6d5f9a030c6d511421026d29440a3e1f4e210111777005488b521919d45e0c6d5f9c0305865b6f225eb8361609d9e7e3425b97e9081d9400000b61b18b419e25b8b80751780009dbe1ff1908a7d309ac1914429e25b8b8075a1fd30a86543b09010a866d35090109239d4d492e3beeb067becd4f0a0920a3e209b603c56faec94f0000000000000ed5d2284e240000000000045e5070bbddbc03c56fb0c2289367ad6cc0adc3fffffffffffffffffffd3a981913400003cb15e1c202e6e023df3c55cfffffffffffffffffffffcd43f4d1f64803ee5936c216552c62e951a237fffffffffffffffffffe798bf5e03ca104010bb3c20f575b26a432b5bcfffffffffffffffffffef3c82e610d180c539cd509080c6d5f9f21010000000bf0ea61030579c80aca02bc39b9146a279320ffffffffffffffff852d4f0fba0397bd0579c80bca134230d838a67d931ffffffffffffffff92fd1f52bbd43d0fc0579c80c8946ffffffffffffffecbdcf27c759826ce0057d5ab009560c55a1e2030c2506b011080009d9e43ad102a4125ee57afb06dc97000000000000001ec8728c82bf041c5a09d9e43bd10d6c2cf3cc2e0717746600000000000000a63d397326da3faf1a09d9e43c91015d0000000000000d6c2cf3cc2e071774660b60fb324113b635f62b0e0b3c04b56839c91213fe79f29096c1b800000000000000015b2b056b342c99df04b5683ac93922dfb8a0b5eb276100000000000000089b3289a0633ec9dc04cd9cb2898c0000000000000007245bf71416bd64ec04d067681905e73504b56840c23a261dbf7eedb5b2ffffffffffffffffbe57402d5989a99e04b56841ca0231ddbf3e5891e430fffffffffffffffaf77a5dfcc31e599704b568428946fffffffffffffffdce2240c1a76e1bcf04ccbf03312e4dc8b9444504b56849c2a6497cea455e9fb1fffffffffffffffed7a4cb7dc50a107704b5684aca01f882d9e746bf0c33fffffffffffffff8ed6bf464a7b3ac1904b5684b896dffffffffffffffffc0efa4c317281e7a04d0f752190293000c167ff7030bf2aee7030bec40be03057a76e581cead754912a4878d10c54a7c5e828e9f056cdfd689400000000000000000001b5acddee39d3e0a6d0dcc91d499d850d7b36f19d966dc6bb8602eecc7640c6d5c3909010c6d5dec030c548a3b410675949957b8b36105f7af2d4102783b0e307ae72205412033410dadf4a373c3126d002efb7509010afdf70111413f0c48c05b09010b2455ee09010c21be6f09960c00c6e609020c00c6e709010bdbd72c09030c5d8b4c09020be69be909010b9b44b709010b825bf5099b0c48c05f09780c2d1e1d09780c3e04e2098c0c2a825209820c0ff94809640b61488709010c47c4cf09010c4827a509640becf0be09010c2a138b09010b9b70d509a50be5d31409010b825bf609010bb9588d095a0b87a61209010c2d1e1f09060b44177909010bd9ad2e11011d0bb7e3ad09d70b1ea75d09aa0b44623f09010c48c06209010be2d3a309960bfcd50a09020b44624009d70c276b0e09b40bdb092209010bedf1cb098c0c12acc6097d0b534c0709aa0bf980d909de0bedf3de098c0c4827a909010c5df976095a0bf00e6209010c014cf609a00c0dfb8f098c0c4827aa09010bd18eb209010c350bca09640b5a394a09960c32a3ae09820b3dfc8f09cd0b23e21409010bcace6309010c32a3b009010c32a3b109780bc46ffc09780c4827ab09640bedf3df09010bee140009010bb9951809010bc46ffd09010b87a61509a50b71a87709910be69bff09010b2455ef09910b90010109960c12accc09870b45166c09d70c12accd09010bcace6709820c33077509820bedf1d309010bb9588e09010bd18eb5098c0c45e33e09010bcace6809820c00c6e909960b24552709820c4827ac096e0bd4bad009640bd8f1bd09020c0ff94b09010c38a2f009780c21be7309010c0ed55509960bd81a9009960b5a394c09010c47ac1d09010c67c14409640bb7e3b009010b82604309010bcf9ab609010c3e04e509020bcedf9609dc0bf00e65098c0bcace6c09010c2a825909010bd4bad109010bbdb06d09af0be69c04098c0c314a7a09030b61488a099b0bd00e1609640c12ae7f09870c4827b009010c05177509960be3bb63090d0be3bb64098c0bfa976a095a0bededa709010ba288a809aa0c4827b209010c12ae8109010c0dfb9409010c48c07109780b45166d09010c48c072096e0bededa9098c0c014cf909010b9889aa09010c12acd609010c4827b409640c5e849309010bc2b8fa098c0bcace7409010c397c0a09010b21a04609aa0becf0c3098c0c12acd809870be2d3ac09010c5d8b55095a0c38a2f609010bdc458a09640c2d1e2409780c4827b609010c12ae8409870c5df97c09010c5fc42509960c397c0b09a50c2a8c8c09820c06ac9c09960c4827b709010c45e34409820bcad0e609820c2a1393098c0bbe592709fb0bb9951d09dc0b973b1e09010b1ea75e09010c48c07809010be5d31b09820b23e219098c0bcedfa609010c2a8c8f09010c4827b909010b3dfc9009070bfa977009030c5e849709aa0c4827ba096e0bedefd409960c4827bb09640b9bd84109960bee1403098c0bd8f1c1096e0b534c0809010c05177c09010c276b1b09010bd00e1c09010c0ed55a09010bdbd73409820c00356209960c00c6f309960b82604609f00bedf1de09010bd81a9c09010b973b2209640b24552809010bf980e409010be2961c09960b9bd84309010c4827bd09640ba288ad09010c2d1e2809060bd9ad3e09010c33077f09010c0042bc09010c314a8709780b90010309010bdc459209030bbdb07409010c06aca209010c47ac2509640c47c4d9096e0bedefd809010c02a9ba09010c5fc42609010c350bd609010be2961e09010b21a04809010be69c17098c0c67c14509010bcf9ad109820b71a87b09010c02a9bb096e0bdb092e098c0bfcd51c09a00bcad0f009010c12ace009010b9b44ba09cd0c32a3c009010b9b70de09010bbe592a09010b9889ad09640c0042be09960bc2b8fe09010bcace8109820c12ae8e09010bedf1e5098c0c00356409010b44177a09d700b1fd6222c90714bb00bc14924101ec9b41dc4f99ad00bc149349023d0da7a5f64d3cbe0c6c4f64030c6d5fb4590a5d51e0c7ec3873ff727200bc17a539052ecdb2b8a22400bc17a6420a587bb7c7dcc9e500bc149969ab0cab9f288eafa8efc6b0e28d00bc0e57694e5a034a67516ca7c65b01a0e600bc0e58410dc019b4a66f386f0c6d5fb50300b1e8a1220c8bcb3a00bc149a6971aa4293f59bc590ea176bf9b90c6c4f6641047f9b7b4c4646540b37e66e1bbf0e580bf857ff6110555744584b12a395b326300c15c8550b0100bc14a15901aa94fc746afb86df12cc00bc14a24128703d025ae86c1c00b214d43a01ac50a6a0ac680b37e66f49640047d0ea11dc5eb10c34e7ed41079f7e2ad5b9ed4e0bf858010b0400bc17ab6934f85a265dc2e85ddfcdee789a0c15c85a611118cccd539306ab1b567b2a00bc14a6590a5d51e0c7ec3873ff727200bc14a741b49bcb22f973696300bc14a86934f859dcbe82b6337f7111b70000b1e54f426fbf42e722c29d130c18b46f41077bc137850512de004c69d141025b570f6f351fe2004c69d2092006bad88389088989391d4539d763fcc1ffd9b144287d06ba308489a30000000000000000000000000000000004d01b80c9470000000000000000000000000000000000000000000000000575ababc96e000000000000000000000000000000000009f2d8bf08e94a057f68a44155734db298034b17057fca93c96e0000000000000000000000000000000000000000000000000a8b3bb2c9880000000000000000000000000000000000211f3805cb16eb0bf0ea8cb13f8f4bad72ca857fa7000000000066ac5e6c8d92654904d01b83c98c0000000000000000000000000000000000000000000000000bf2af13b133d9801401c6c8974100000000005b8c7c16e444911d0c55a1f6b1213cd5bb5595465f1a0000000000544c053a143364510c256b1e490eb996892bda0e46cf0bfffb0bb10155b3403ba8baa22d00000089107f11f5451eb260a60bec40eab1368ffc4c0994715dcc000000000066d40382d825a9ee0c16801bb128aa7d6118f0962f1b00000000006497304a6dc43bc0057a012ec947000000000000000000000000000000020dd089363564c8e30575a294c98c00000000000000000000000000000000000cfef403195fe50575a3a1c947000000000000000000000000000000002c48c9d8b51a1a9504b230e14905e8adca7e459400000c6d5fc20300d99b06399c8c817e14c54e00d99b07399e33cc8fd9200000d988c8f1314a000000000000000000002a0a26f600000000000000000012ccc5385c00d988c9213fba2f9100d988ca713149fffffffffffffffffff9622a00d9f43c210428f786031abf49d109e8fffffffffffffce634f3dfa2ffffffffb0fd92434de774c6031abf4bb108a9ad8daaf2ffffffffffffffffffaf1c8974466f130ae0f65ea9a11926f033fffffffffffffffffffa1fc0b09167af0328f399b108089466babdffffffffffffffffffb4fcc8c3b50763054bb4ede91e0000000000000000000000002ffffffffffffffffff8b029b0e15a7c054e942d51c46044b2a7ce1113088c054e942ea1049542592c9aa3dee1cc445e40e28f0ffa25231c01c024d52a16f5d329a301c024d71a5c073701c024d83a02ceae3a975cad01c024d9092d01d38c0929182e11a5d501d38c0a41bcd46d90b3b03ea0023a7f5a21031843a60bf6168503023a7f5c393e314112f179f30000215642f092db7db1806cd302db8c5631164cfec523f204b58913390a7157d0875e8e06df3e8f0300d99b0e399e33cc8fd9200003d46f52420be6b4536064a3bc000021a34103917e0abbda473301b7aea9390a00c9f9ec87c004c273d3397ab5916f58503d087330393312cbc28b4694036a4fd639031933c01862c90153fb38392ae79e20bc94110c6d5c5d0301cbc5f3391cfc9e205d315000c11e8e2922ecb25c00009038bf390ab1b0fe1e5f9300c117a0315ad023c7e4000574fc0d3911049776df6496029b1abf3917ad4f8c9edd4d01cc121431017c02fa06ec000092dc393089002d05189f000094b931103b2a5f3f000698e3f30303c56fce3902c567e6ecc000068b04710303bb4fca39128277a747a000000023f73903637196722225001997f13901c6bf52630667066dba603303d1e38210000b906e5d0306909e293301e8f1c108000394d0413a0330e12892bd9a06e67171030529433a411973eecc45ad4bd908c2ff7239071afd498d0000078a18910308bb62223312cbc28b469406bd5f3739559267a3e8b9600540f4793262ab124a7155031abf583108a9ad8daaf302db89a739081aa92d4babd206dfa9e8030548bc453920a59eef5febc300002f113a013a2289cfb660066cdcf433012eae09c800095a2b1a396863b66fb8fb95034fbe0d3905d857cd5b15a0004b248642025b570f6f351fe2034e6cfa39029f23992771d302c3bd653929655ae7ecdac600009e8e31e26f8b3052e50c6d4b7841313d0733af15fe000541562d3a0b8141bd6c98c104cd3eac4206623f9011f73e62053532ae11020004a5f40d3103a35294400000246f1929607b81f5b4067fd37903006651fd312b7c7112da400155a23b3166ee60115c000589e0193a3d1e59d46b05b305d043e94106e557ead4e44000000094ba290a009d9400054bb4f93a074fd64f1ea58404a342c439038637ff9e000006995eae2bba43b7400001c024e33a02ceae3a975cad06909e332b174876e800064ad2e0030699240103000021573113e8a9ac940008cddc483a1aecffe22467930c62c2cf3a4a9b638448800006909e362b4f29944800010e033b3a0c8cc1c05e8a99000024f129147d357000068a75760304c252ae4101aabac00ff2319504a5f40e3103a3529440000b97f05941013fbe85edc90000000024f23a01df0a1d8b29d005bc3f6003029c77e039470de4df8200000a3e1f9a3a18e1a6ca7d2d3d0c6d5fcd03083ca5093105b5363c3f6302cef7e3310fe119b7018b01bba0d3410166f005f992a58303fa37b832ffcd5ab667de05412040410dc283ff2eccc0000b64086bf1371a0000000000000010c1f85df8b0ffffffffffffffffffffffffffb2700b664885a90bb169fef1683d3c46287582d2737047949c99a8200b664886610103a85704bdab960e7c98aa0b8f369009030b9518da090200ae074549035d7c186d1fd7460800ae074f094700bc0f2d49035d7c186d1fd74608083ca50a420de0b6b3a76400000b81a426410de0b6b3a764000008e03ffb090108e04a3b0901000040fe42056cddc93e9e17eb005e15ae220eca769e022d53e22214395883000040ff4209b153d57c49491e022d53e321144715df09ae9f43390fd696c7007df103514389422d5e9e7b440ed14b026cebc3210f704b340b03c81c51046d12dc03003aa80000022d569622160f5e9b026cebc41a0935ff00e33eeb192dc6c007d2e149492a30e36e3764506dd6000f107d490481597345f89553f4066992df4a1d620fbd8b59a42bbe04d6d8af121e000350eaae412d5e9e7b440ed14b02649cc51a060ddd005e15af210ecade3100004100216b9b7c020655cd421a3d2cd1000b4f853a0400890ce8e4ee0a5fa7534287fb9415be26892f005e15b0210ecade31000b4f8639207db0d92839bb0a35b1085110ac871561884b0bc00001161211390576672ea73a5d0b03c81d51046d12dc03003aa80000066992e03904ba8b54d2450509ac192b429e25b8b8075a1fd30a5fa7543938e5aae787529b02649cc61a0ee07d0266e2e91ad74fbc0054c33c3a02ceb0cbfd34980351438a193209550b835c8442015bc0dd6dfd8c9000e33eec1a2dc78e0054c33d4903e8a4e80a018883170b835c8542015bc0dd6dfd8c90000f77863a3a26927da33621022d53e622026d8f230a35b1095110ac871561884b0bc0000b03c81e3a01774d38095b5f0a5fa7554287fb9415be26892f0c1ab8a341016345785d8a000007d2e14a492a30e36e3764506dd607d2e14b3a1ec6c1eaf1773209ae9f44429e25b8b8075a1fd30a35b10a3a026c6e406f093e000041012157f89204000b4f8739207db0d92839bb000f7787490481597345f89553f40c1ab8a442016e48d57b76f1370b835c8631105ef39b200004d6d8b0192dc78e011612121a3ba4150c1ab8a542016e48d57b76f13700528a731a3ba4150350eaaf3a04ba8b54d2450502649cc739f1a2060cfed1180266e2ea11815f0655cd43491d620fbd8b59a42bbe01aea549410204ebcfbc4b60a80054c33e4903e8a4e80a01888317083ca515f1013cfffffffffffff21f494c589c0000000000000000000005b5363c3f63084433da9103035ad37d52590de3af225803c312cf7530084433db698246a68749a379cacf12b1b17b0540f488e9daffffffffffffffff9d54edb58eab000000000000000000000005688d0543c8c89914060506a602c4ae9bee4d6e34f91f8b2d73750543c8c961095b3c081df14ed9cb5790260c12c76a09010c642a5c09010b835c8931105ef39b20000b835c8a42015bc0dd6dfd8c90029b1adee9110000000000000017ad4f8c9edd4cfffffffffffffffffffffefe1c7502a03ab899018e33aa7011ec4a00f87a2170601f007e423f02a03ab959b9cb946b5b52b33efad5a300bd6013a15ad023c7e3fffffffffffffffffffffffffc22cf0abfae4f4202a303fe4b5300000b04a4623b0b3d1e99c5af780916d2394a04842d06ccd73c62dc0916d23a21027a10570916d23b11030f091a886759150c24c85951cbd2601281091a8868310b835d4bfc71091a88694162a6d67d7c8aeb5b091b04c1193bc8e90019a0718110f13e163fc30b038458b569fc7fec4e001997f7a3b03d64c20000000000000000000000232e4c5d6d0019a07229e680992be309dadbea09020b8f21c209010b95147109010ba51491a204b6f866c96fefe390263e2ff68d108f3d65ed8b0c2ae237030446096c09010a3e47564906d499ec6c6338000009c75006030589e04fc101fffffcfffffffffffffffd19ec3d8310241a0ac31beb5d0589e0516102aee6d109ac76fba85d90080589e052111d220ac46a13b90215effd189a4b783d840bb20000008bc46c2700002e490ac46a14b90212c7a4216f09366c501eb90000008acfd23b00002df80c6d4dda03000b4f8a39207db0d92839bb010e0342c94600000000000041f441c7141fffffffffffffdba777c30334010e0344ba0c8cc1c05e8a98ffffffffffffffff82f81a6cca6920000229c717ba033d7d35acdf06ffffffffffffffffdfb801ad2c63207d0c67999fb201ff9d739559ffffffffffffffffffec16e819e869e4010e0347ba09480df8d49fe0ffffffffffffffffa387f5a9e2aa46b20c445773b20536f4697659ffffffffffffffffffcc0c2da1734ef203971e0cd1019a0000000000032b6969ab7e0b0000000000090ecc994e0cbd03971e0ec2f61275f9252ec150ffffffffffffffff592064f56250c00003f54193c2081f0ed309459d25fffffffffffffffffa7e16fc108a48d203a3cc8fc2608d9e1bf1ccdac7ffffffffffffffffbe85c83a2db3925f03c5d197c28d65c90a2a1c4964ffffffffffffffffa01c85bf2412e4d101bba0fbe9310000000000000166f005f992a582fffffffffffffffffffff0b3b636021967c599047bb8bdad39e3e3227bd4526fbe6bf9ed34cd021967c66102178b6598c95980680b22be0a35b1173a026c6e406f093e0a35b1185110ac871561884b0bc0000c6d5c70090103971e2e42f61275f9252ec1510c6d5e333bf66902d82572000c6d5fff41289367ad6cc0adc403c56fe042289367ad6cc0adc4052bf3c641dd18df09c16941760394d141412f29b2cff10ebfe90b80b0a65235a724874b7719701b7c0c0cf7e05135a724874b7719701b7c01000bbc1916e3600548bc6da901000000000000000087a25501c7fe91168d75cfc70548c0a8593081d2edcbbefe896ca9b10548c0a97906c2e43bdf8059816f81c8099baf2e0548c0aaa9ccd2e56061000000000000000000000000000005bb0548bc6f2907b2ff64fe0548bc70b101456e6fdb5cb43a732bc200000000eb89800000004e08a783127101b25d9027867561f146487d76fc08a7831389433f4ad1839690efaba1bd892f48d570f608a7831400016527d60a000000000000028cff4aa4397f3180e3410e0e7a000134413918f0098e8ee05915c542fe56c4660d1fcee6098e8ee17901fda8cbfc53c9f613ab0208da4a3a098e8ee2e13a00000000000000000000f250d367f247383908fe00000000af24b802db89f839081aa92d4babd202db89f912350a02db89fa092202db8c965102d3d056a44bf4a0d74402db8c9729128135bb1402db8c98396139acac234d8f02db8c9919019118057a5753113df90c256b53c9037086d7baa1de4dce000000000000000000000000000021ae0bfffb4bd111cebe3d973e9d9bb55d00000000000000000000000000001c4b0545731d2102ee065a0a8939981926812d0a9206865210ac871561884b0bc0000a35b12b5110ac871561884b0bc000000041042911a1e6233500004105216b9b7c02000041064209b153d57c49491e00004107293f598e9919001a6728290e2237e6f30a5b2a4029037fae3c420ab6fa4b0901066993023904ba8b54d24505066993034a1d620fbd8b59a42bbe08462a8d0901084633f709010c6d5abb09250394d8ad89091bb6ff85ecb8661ff92df297ef0423aa0394c54aa91d000000000000000016b7cb3055e3130550b60dce0394d191ba0316c2b166aede000000000000000000000000000000000394c54b412bef249e000022ff0394d8ae393c5e55850b98000054c3734903e8a4e80a018883170c6d601b030881efc303000b4fa93a0400890ce8e4ee000b4faa39207db0d92839bb0047dc2b0a010c66f3a111e5ed09008166030c66f3a2391e1c9c11e5d166005e15f64104119b6b54dad949075667f203075667f3030900852f42042c34d99ff9c8e8090081680307562865a164b24bec3aafeddd2f5122e9a523d09b7c8751450c6cf332030655cd7c1a3d2cd10655cd7d491d620fbd8b59a42bbe04b5893e390a595ee5f038d104ccd0ccc17eb20df2be5b2118000000000000000000000000000000000591735a09440591735b2916f05276a405ba423c2123c3745d05ba703011172e0597c1082a81357d04020c161ff8130f3604ac816cc90200000000000000000000000000000000000000000000000000e33fb0192dc6c000e33fb11a2dc78e00199821090100199822090108cddc77210125bdad08cddc783a1aecffe224679308cddc79091608cdde5231072f30e0743d08cdde5349a897c2ef10cf70076408ce49ab2101e63bd50a854fb3c92f00000000000038db62b3308a00000000000104dea62c8dc60a854fb5ca01d6e44326b6a7e845fffffffffffffffe293545af0a89c0000aed1a22c22d8c8b7acc43a129ffffffffffffffffd275ecd2d52e5fd50c5e5208ba1e15386599a595ffffffffffffffffffe1ec6935625bd30afaec0fc20461c11e2d93ac66fffffffffffffffffb9e7bb5d18f9eaf0a854fb9ca01a4d7e1555736f51ffffffffffffffffe5b3ef0bd2e6965aa076d0446891e0000000000000002eb5c47d3d0c6367a0c6d602803076d04484111fd84c4da78ad22054850f309020ac1831d090104bd3cf009010790c0c609020a5fa8723938e5aae787529b0a5fa8734287fb9415be26892f04cda051191f08850541567d410fb9f155e9d7c756054158095901751c9d842485499f8b4f0541580a89030000000000000000000000000000000005865bd0215eb1807f05865bd1225eb8361605865bd20930058bc6fe310b332062a41f058bc6ff310c7dd6cceafd058bc700296d180515ef0b03c86251046d12dc03003aa800000b03c8633a01774d38095b5f0b952d0409010b8d22630304d6d8e3121e0004d6d8e4192dc78e03fa3823f10165ffffffffffffffff0032a5499822000000000000000000000010d8c103fa55849920a33df1ae5e1aaef03c91a3f0d4334260151a03fa5585610f56dfdf2d36ef6db065dac203bb50abe9f100000000000000128277a7479fffffffffffffffffffffffff36475703bb55f6991601ab2f9f4f00c6c618929b3bf8b6aca1bd9c03bb55f7610a4f4372e340e295d49294eb014c114b418ac7230489e8000009f15df4418ac7230489e800000c6d5cb3090101cbc66922013ee4d701cbc66a391cfc9e205d315001cbc66b11019201cbd219297a2cd4b34c01cbd21a4903957bde65d7a6987e01cc12a441010fe067c4e9b647026cec08210f704b34026cec091a0935ff00fe3df0297097ea9b2301000cd83103fcb25320d501002f7e297097ea9b2301000cd93103fcb25320d501000cdd197e704201002f7f190df28e01000cde197e7042084643e10901084a0323090109ab38ce090109ac218e0901014c11502902540be40000cf99da8903dbb5fffffffffffff1287d807e837d7502649d3839f1a2060cfed11802649d391a060ddd04a343681a26992a04a3436939038637ff9e000004a3436a094704a3d114310194aa4eec7804a3d1154924f1e5b56b319efd8804a5f476690a6b68b564cad58b32f74123110000216f42018df85603bc655f000021703113e8a9ac9400000021710937000021d45954162d0e76d45cd53ac267000021d5510434de2854d14c97c2ad000024f41933f8e902db8d3f095c0c5d1f52124b920b0b4d56111ad10add72da1221c10c13e79c118dd20bedc63f1905273f0c6d40ae030a7c55691129000aad86eb1218f302db8a6112350a0c6d3e430302db8d400916054156af114b920b58a53f12b1fe02649d4e1a0ee07d054bb595113000057a578c113e1c03d90b0f124b920a7838fe11708c078d41db1201de0a894d8c03038f5e41030ac476c4114e9f0a77189a1167970b4e4117121c5b0ad55a4e1220d6038f9190118c55000094ef31103b2a5f3f00000094f04a028a1d29f79dd84a85000094f11106e10000961651028f6f8e15d67f9c2da10000961761668c9a49c615988659a002f2000094f3193aee04000094f409010266e39b1ad74fbc0266e39c11815f0a3e1fdec9b1000000000004674ebf455ad1ffffffffffffdcfb5f28ed910a3e1fe0ba18e1a6ca7d2d3cffffffffffffffff07489b8c9f7a24d30a3e28f4ba1569fa969c27d8ffffffffffffffff29f1d54a291c6a8a0a47afa7ba02c932e28ce38bffffffffffffffffe426d345062758a10c3f0b9faa0b5a5b61b4ffffffffffffffffffff8e83e4bdffd20a528342b2ae6df6f8c029fffffffffffffffff93064798b7861de00002fa54118fb8dc8732d285d00002fa63a013a2289cfb66000002fa711312d000031325904d777443ec6368a02a56b00003133491473598e1201f938d602cefb23315a9594fd1df000002faa090100665275f10d5100000000000000002b7c7112da3ffffffffffffffffffffffffe32ea006654e3a10140230a7470155bc7adfe56be6900e95dbc3b15006654e4618dccf9bf7b47fe20af14509c00ae07a6094a00ae07a729125aaae37e00b2155a3a01a8c9033cd69e00b33dd531068a4c824d9e00b1e60e426fbf42e722c29d130c6c4fe5030b37e7691bc734bf0b37e76a3908ee2ca19a55bb0af9fc7ba102e93981c5e1116f0c59d8ed6081a4a2a1561afb0c0da426910cd602e55613dc3bd68a8bf6346fbed8161b0748fabe410869424d0a8a816e0c319b844108526c763061109d081c54f499cb0fccac6a2d911b8de7f7c0b21efef0d4cd64081c5b0829021bd4a4ac0748f185a102aa908d7613f0f0df81fc0b913cb0aa1e1d59a2028ae522e99b000000000000000000000da4cba66ba7ea4f0badf1e508806d921921028ae847e980000000000000000000000001bf625920b34f0ee5b7636cf47004ff5a0c6d5b2b0901000095004a028a1d29f79dd84a850b3a5418091109d39c9a09010c5ee53d09010a2996d009010c417b7909010b9185e109020bf8a27609020c61850009010c6562f109010c48b65309040c33f2bb09020b9edaf909070c6d60450901059188b5e93a0000000000000000000000000000000000000000000000000000000005917581e9820000000000000000000000000000000000000000000000000000000005917585e94400000000000000000000000000000000000000000000000000000000025e6a3709010b23c7cc00e268d904524e853b5efffd4b0e2439a32e6348b5c7bd7ccbbcaf48296744e21c0b23c7cd0901025e6a6609010b23c7d509010b835cea42015bc0dd6dfd8c900790c12709020ac1837f090104bd3d4a09010548513c0902000024fae93ffffffffffffffffe20f5e274d63000000000000000000000001924b0000026759905d98dce855a388c988bf37c7045e043b8971f000026766102bc3146497db6fde8aa8bf708ced527090108ced52e0901029b18e8e926fffffffffffffffffffffd121c7d0000000000000000000002ee274e02b27be379271c0702f2def6cc7e5e0f14ad488e02b27be47926e40d3f85f38ffb84ea9fbaf3fbb50a35e54ef1025b0000000000000000000003eab61bfffffffffffffffffffffc2343cf0a381a4381025cdad7e84bae38b444a6ff62934fa60a381a44810259269cdeba7024c13d25037b200c5a00fe3bdc0902022d576c2902db925c9a022d576d22160f5e9b01aea60e410204ebcfbc4b60a8022d576e290c638a025209a272912120df3275022d7bb82902bab32a2505488c2df10474000000000000000000000019d45dffffffffffffffffffffffe6563005488e3f810476e8acab0f499314b07780bd0509fc05488e408104711938884befc33752438db0fe686c09e66f0809010c3efda34a20f5b1eaad8d8000000c6d6074030c3f43d94a20f5b1eaad8d8000000c6d51d1490a5aa85009e39c00000c6d6075030c6d5ede0309a2310b7199f9b84fb700439eafac715f2eba08a6213a7902d28ffe29c970b97b4dd3bd51f4d4086b5809a25c27adc60000000000000000000000000000000009a2310c1901474e08a6213b1905fff70a46d71209010a4b1fd009010c2e2a39090100bc4e240901000021ab29e95df89560000021b22220f2d637000021b34103917e0abbda4733000021b40951000021da39012149922838bb000021db511a7bf1e490b488b3044000002408392b8434fd0b656c0c1ab97c41016345785d8a00000c1ab97d42016e48d57b76f1370590b470c90200000000000000000000000000000000000000000000000005d04def290254eb712205d044894106e557ead4e440000b69dbb109010b69ea5e0901028ae55f099b028ae560290ce1633fda028cfe6029f416549a02028dfc7d29249cf31718028cfba921133eadc0081c55262102f9770c0af9fcf6210f779e3e0748f1dc19cd98760bd59faa0304f9a33da30474c4450000000000000000000000000474c44504e0c683a9023aa8b591fffffffffffffffffffffffdc5574a6e08752ea841051c2df24d75303b0c514555c9020e0e008823e4ce76fffffffffffffffffffffffffaa2b55f0c6b1b0d199896800c6b1b0e19989680028ae61a0952028ae61b29070ac9c7d1028cedd5110912029642de11015c028ce6142a7cdd323a4a0c0da47a130d2a0c29510a41016e48d57b76f1370c1ab99142016e48d57b76f137026e527c12210309d9e00209010c6d608109010c695afe49014ae0b00da80ea0000ab8e5be4298eee79d10ce00000a63f7cf3a05dd45503de2f10c6d5efd4183c9c9475e8c1e1f0a4476e64a014ae0b00da80ea0000c68e4843a10c1f85df8b1000b8ab9474201bfb45c930309330bfcdfab397573b8e9d3f06f0a5fa93d4287fb9415be26892f0b206baa410b67d4eda9ef05910c15ab273acc0fdc1660c8ef0bfcdd9e4206b3b484fa4635df0b6409993910c1f85df8b1000a5fa6c7421ed868fd15a34af70b8abdcd3903df9e29ccf3300c68e6523a10c1f85df8b1000c6d5f003b2ab90df98e34660a5ff1244198eee79d10ce00000a632bcc410b8a647754248a0909aaad54090109ac0313090103a7fe72e938000000000000000000000b4bd0cefffffffffffffffffffff4b4118203b933027937f50a7467021cf597506efc99cd9b03b9330379380af8e9f96c08221b6cae5bf52e2109e8418509010c3e71691106b00c3e716a124f3f01d1bb89090700fe45dc1108ff0a7cddf209010a7cee6309010574fd36e9250000000000000011049776df6495ffffffffffffffffffffff46e78c05752c659903638a149f3067a64a01a5c5790295daa2f7b905752c66610193f988fd2e7d68d3e5e21b0871f3fd1a26ebd308752eb3c90303e5ae2233f3a289000000000000000000000000000000000872e845192d96fd07941906414155d2c127bc835d078d42321201de07941907424238e84c7bb163ad0871fc2c91aad6fffffffffffffffffffffffffac94f1407711e8b390a44c018e6a117078d4233315d438e410a260871904c21055d4aa10872e8473a041e9fb3303d0707711e8c1a6b6dc00793c9631105410871f3fea2055d4aa1000000000000000000000000000000000871f3ff3901b6c80000000001b7af972a131c197ca901b72c92a90a00c9f9ec87bffffffffffffffffffffffef9c92c01b7af985a79329f2b1abdce3d1d60120c6d609f030c57b72f0302c06d952183f836720116137a390576672ea73a5d0116137b1a3ba4150bf898015983ae815f9a9f658d7e167a0b77afcc611017420c611585098000d7a50bf895ef1901fa400bc2ddbd621017420c611585098000d7a50b6c1ff4690288f46b21e1221b011f9a7a700b01b8485115aef394c701dabf50000afacf5c391983024774d5f20bfd927c1904261e0bc2ef7811a8140b02eba8192af2bc0bc2ddbe32e39b27f810270b6c1ff73923db8135eee9500bf89804310746a52880000b7edb93030b02f8f4192af1a90b7ede22030b6c2252190467910b7edb9a030b77afe031e39b27f810270b6c4455311cf8bb3e6c90004d88071a98968000528b931a3ba415007a19721a989680085e0d710901085e110f09010024713fe956000000000000000000607b81f5b3ffffffffffffffdc790d903f0000002793ab69e8da5a689c321f12c699d53338002793ac891fc3359281e68d1552b550d9781c27a5d60b8e905e09010b8f887e090106bd5ffb617f81080add9e3f7b3df86f3306bf75f4796237be4cabbe6c888280d42e5536700000000000000000000000000000000000000000000000000000000000000000000000000000000618d50000000000000000000000000000000000000000000000000000000065a7d26e000000000000000000000000000000000000000000000000000000000c6d64315ea84be34f8963e526932bd15ac28dcdf1f083c6e34058a5a5a8247b5a8658790000000000000000000000000000000000000000000000000000000000000000c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4705928518e90692d1ea25d47fdee93b4ed7f845ef670a24572f1bf9d0f9d597369686fec6c7ef322250666e0a93156b3257b3306dd896338eedaadd9391ee203db000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000026800000000000000000000000000000000000000000000800b00000000000000000000000000000000000000000000000000000000000000047cd38408cb6037fe8a1f9c5e72a6cdd324b91c7cdcc95de1e9c0c06f934cd163000003e8000000000000000000000000000000000000800b000000000000000000000000000000000000000000000000000000000000000300000000000000000000000065a7d26e00000000000000000000000065a7d2b5000103e800000000000000000000000000000000000080010000000000000000000000000000000000000000000000000000000000000005c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470000103e8000000000000000000000000000000000000800100000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000103e800000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000000019f73f98fbf05f807d0cf18cbf0fd707bd7b821a2ad7bce28fecef1e87cabb9000103e800000000000000000000000000000000000080080000000000000000000000000000000000000000000000000000000000000001d63141f04a47239db71be1201ebd7a9776d8ab78269bcd795d03f6171c91a481000103e80000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000000235671561753c8c59924133af0011f7b1ef920b7866befe18d33d6856286d0a72000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d3cb0000000e000100070000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800af7a443a74e40f39bac8ae5aa5e96d5faefbec43a41a918de0eaae1866f9c1aba000100e30000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800a32750d626f4ca66b27e6d63be858dd88128f827c4654917a4801a5cb4f5d922d000101150000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800aa863a5762026c4eeb5a0dd778c009cf159b46db510b12104eeca976fa99f5f5e000102500000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800abdcc3e407f502642b28d976f213544ebe6f6f309af1c1ed1ef31f5847a634f270001031a0000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800ab7156299b81a6be0c5cbd0eee76d62d1b864899acfed6ac497f9ac7f5a8e4ec1000103310000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800ac27b2d386308b493e73014ab67e7d9904afa4a920731f45ff236492349e7eee20001035c0000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800ad92532c6cbc4ea630e48ed485d04aa36e678e2335f972235b6a0582a4c353c9d000103880000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800ac72c6d16b51b694d9e5b17990b01ff2d18ca9daf87c2a9861e1e981e0a8551720001038c0000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800aad4e38b00268eccc9b494a3c97d58ff53273f33b2aa1e451e5aaf0a11e53aecd0001038d0000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800ae18cb5aa34dc325f7f3bb6dfaf316842c10a1614f4267598e54776148a6444c70001038f0000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800ae02f8c6ccc4d9fd88cb6021f382487cf9169235eee9c0fd040f29560ccbe227e000103900000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800af06296bd9348beaa87b5491ca13cc73c44ada0e69842c60d652c47fcb0f4217e000103960000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800a3e62fb6d8ad6cb16e262be655ba69ebcf2b2d351d8e6714de5d83759984afa5f000103b50000000000000000000000000000000000008008000000000000000000000000000000000000000000000000000000000000800a9a60ab7dcd725e889a93cceeb6bfaf29971a72fd47d2abd1520a6d62b5d2f0980000000e000000386c0960f916f896def10f87a035a9d6327497e680b7a61f800000000000000000000000000000000000000000000000000011c37937e08000000000386c0960f9351e2347ed91aa0f857dc41c023c7573d687ddd90000000000000000000000000000000000000000000000000214e8348c4f0000000000386c0960f9530200a82efe6647e1f186eb7d36a3843804b2730000000000000000000000000000000000000000000000000166d2f702508000000000386c0960f9f2b66a992e38a0a285843dd6f2eb40a4b0e6c8ff0000000000000000000000000000000000000000000000000166d2f702508000000000386c0960f9275f52f7ee429875145fb6e0d42a1fd6c8a0a6d9000000000000000000000000000000000000000000000000019cd348cae68000000000386c0960f94613aab4a5a2e6c7e8ea6550a6265106e81f9fbf000000000000000000000000000000000000000000000000019faae14eb88000000000386c0960f99008c734f9139dd75fd1c3a0654cf2e57974f5c900000000000000000000000000000000000000000000000001a4ff1f45e24000000000386c0960f96b27cc94c23cc2af63361069068c2f195cbc03fe0000000000000000000000000000000000000000000000000012795f58d50000000000386c0960f917f130e682ab259562daf2ceab5bcb3d3c4ce6eb000000000000000000000000000000000000000000000000019cd348cae68000000000386c0960f97e4fe4038b702a4ea0b7fa4a6c0196c34496755a00000000000000000000000000000000000000000000000001a3935303f94000000000386c0960f900d0636a5e44a4c2caa6d9abc278be9fbe63de2f000000000000000000000000000000000000000000000000019de421fc554000000000386c0960f99c9bf505c9d2e37038fc1e0ca66611645b5d1814000000000000000000000000000000000000000000000000019b677c88fd8000000000386c0960f9cf26b243c9bec5a84212f58e752fe7d62aa228f700000000000000000000000000000000000000000000000001a66aeb87cb4000000000386c0960f9c377372ae2560729d0f4d27c92990070615ee0d4000000000000000000000000000000000000000000000000019ab19668090000000000000100cba20401c689ca0ca8bef11bdca00441b999d871b172cd97111333b09c430205c7a3fcc4670001000021a88a3dee3b0944ff9cbf36cb51c26df19b404d38a115a2a2e3ee5b88920bf9dd8ad8672b81f7116b2f9e42c443cf1c43c6b57463bd35e3915cee80150001000021a88a3dee3b0944ff9cbf36cb51c26df19b404d38a115a2a2e3ee5b88c8efb2960224c6b494a82001f9359b208c697505d51f1dc6ec3e8e51d2c89ee00001000117285a242b48c751232df502f6448f1dbf4a1d9132f1cccfce399608c80d039dcde865b5a183b4edee7d0e3e41149a87cc73e85038e92765518b6c999c0001000117285a242b48c751232df502f6448f1dbf4a1d9132f1cccfce399608c800632c8d27a8ea7f899cba4431b5965a3776a2c3bd775415e2a545b9ea7c93e600010001954939ad3f2944e4a4422d0bdf76efe212b361090bd109b7add6bc0422eaf2466a0d300c7a0ff14557e41c64750c16f7c1674982d75432e945e4f02bd7090132fc1f42827cbcb2d28d3be3d06d627c5cba5fc4c4e324e0fc963a8a03dbce6309013adcdc56962975981d38d692934849b2bef585e4097c9896a5357bebbea8c19e0902e222291fdf135d76baef2d064b7698943cd669223d3d098437b4668247cdd6cc09015a35eb251fadcf34525460dacbf373b6e8dfb1d6dbadc77c306bf8fc6d6773140903ce12afbc3182b6fbb71a4a771ac8cdce95d4c16643a340623b5d2896622322d90901b4960461a8754d62477ff25f5c23a72ac0344831ef6b43b3db1718c0915cbfe7090140405ea1ae25b0361bbab50af88c0a0916422dfb6f37264920d375cb91c444a80901be07be24f32981abadde1ec6b92fa1ae94197534040b5300f15705f48b51204f0901069a4f1394f71bc86fd1eae10528e1b417fea8b04a0266644291ca1da01ed0730901934cc62956c78dea6093fe347587bf8a820e9bf3bbe7d99221badd17122ab0a70901ca19c536b856f1b32bb6814d1048f9d0679bec314a04bd1dcd777589860e94970902da1904e7b8a4c4446217b98b2a08b4c060e60ecc6c73ab18c2a093fe46508593310617f71eb80098ba618ffef474c3f1600a62c83050ed3f5b97b66db3dbcdb0ea074a0254f3b33901bda703f0a0009522489e75ec0620b06aa24237d9fe173b0b8e632211784e751fbe2e077e5fa4410c6d304b18011001101b1d367f849946541b81bf1e65a0e7b8cfa64d3d730a393e5757e478a664693920e47dc01e5800d17efe21d7bdfff838931f653af509c8df4ffb28fbba68a722055cd13dd1feeb3924d775c6522000fde65ea6ad6575fde1fa61c0dda9f7c6c3dde414155c4ea2baa678a65d208fe13908e1bc9bf0400060786919cac3179e0b9b300ae90119600bcf82d9aad34629fca81098931738673926b97e040d40007e7ee297493af084c99ff4ed44c1b9d60f088b6a506dcb43c11eb1cd155ad4d8390dad8dfa62a00062045b50c659505b703ef983e895c22ca1829178e5c06493d8c1bbc84ca270853906ed83c14fe000443923c184d9a360a153b71ece040a05eff2f6ff16bdff8f552a5b2cb6db3b4231069805acb4000cc5a8483718833a74c1edb1d14cf72971380a46029c925d3d2ef705106c50a139038d7ea4c68000530321e88414bd23996ed2e64083bd5274b3cc04d0dd364c9fef65049adf267e3922fe85d709a0003f3ea8cc53a6422506b3cf0fbd3e42936d1e6d22360078bdb3f78dce3511afa7007cd38408cb6037fe8a1f9c5e72a6cdd324b91c7cdcc95de1e9c0c06f934cd163ad28e6580fd4e1cf3e8ed45aed35ab96e00957924cce1ded536697c2911f774ed901000065b1152affffffffffffffffffffffffffffffffffffffffcb4b6b565ed1a00a0faa56e6db5530ad5ee9e6ded1bb3360cfb2efa4238fb4af0a011b254f609c388529235ed2de14f145d6f9ee940fff64c3fcc91cbebc9aa39d50499c9667a819586e18263e6e85f3921a20628cda5a98def61fa979d8e3d6ef8a1c3fdb237f6dcf1c661ba1b70e00813ecb32acae2aa5bb7b063efc45b05b4ade9d2a368cd01f162239549dbaa2cc01d5e309ae627cb69d37317521b761c73c0901731a6cedecd6e00a8d570c5b64ebb5df7a934eb671e63be80cf244d0425fb52209010370b785c5ab73cca641872fe99c9e4b7c03500a4e0b22a3607895a3156609d1a1afe2d52343ef4c0418da42b44961a5e73a153854eb5e3f2123c35c243cd13ed8e4e63d0caac4d52d394e6179809f2e595b9ae88d0044a8addfbc1f8bd1e7a63c5014abb2d97493d9063c2d3f336ef7483ad8f2629731eeac7169793b4ba017f1c516cfbecf11a7c0e71221347ad9b5eb6eb4229433a117b0ff54def08e86239664be743aa7e3aad77a10d95816da96d1709df7e330d0e3aad25a48a90a2c1ecb14b8b1af9f006969ad7100797573756673616c2e7a6b000000000000000000000000000000000000000016fc62cffcbbdebf74aaeed996d8cec4691b3c739de177672ffe54654ae0049160007a6b0000000000000000000000000000000000000000000000000000000000049cea8f49d011c6872cf5885ec6324ce96b21ee8f49947bdd036db958aca4825900cf794b93fd32b70fe8dce1d824a74aa9272cf9ca19edad48326d9e9826a16e65b52545c1adf4bbe6f7e9f13698fcc9fe52bcc32b669793cde8515342b7ae0bdd007a6b00000000000000000000000000000000000000000000000000000000000497ef33892a0adc31f4aadb52315fa9251f792090b42b958ca2bbc0ab065bf32600616d6f6562612e7a6b00000000000000000000000000000000000000000000129b5fd9285b65b9fe97447554e60ae069dbf1b53763ecc802f37aaa3e9b273d5b0015f8daa032128384cb7ef17650124ff5d5ef9c2d8262eddefe9ea81ffb349704a07048290a0dc69b3530853d51a7338e4ced70c01fba5e81820334277bbd235b00f9179b66e783c7a7c03c3af02080418ef2e4cdfa40f9f62874259721d6adabd0f4d0ace674dfbedc27ce2f905a9b45eaf4320a5aee3eaf955b4470aac201827d412e0ecde667f9ef9fea9139c8b6ecd7c188b6aa3332198b38f502b73f83270be7bf830040833a6cbb09014a915ae1f2017af9bae3254d31061abe6b7ad8293cb6aee469ffdf9a422ebaf8296e017270f6f020aa55a5164ff7a5bef41809ffd9f5415fe71f2e19dfc90e0578a01985f6e4a167353586d23bcee18e003752e4be7de4825b48eb78717df34a6abb2f373577a8f38e5b999c8a65d1b915b994116be108b9d3c4e80a01e75b1a27423c426d50206f2492b7ae28f9f17b8e9b6ff804e69b700b4b5938d04146b6f28058995e2518343f74495ed16e0dbba09282837e06261614fec535e46323b37d7260df79d209017bf1397d4e85508cdfb426a88c38e7853113fc2d1b7dbadd63da4e1fb9b019cf09014837e62aaab014958479c72615949a281c7500f060a5af969237aa5fed48bf48a104e9db37d8ea0760072e1ace3f2a219988fdac29907ebf4a73965241adcc0c3f149b50e60e2a80fefb7d2aebc013958ea4f9d27b0901f066615f4d2489f622fe872d6a571ae871bff0b1a3b1b3fd46949fbdf1cffb42a1c5db68f30d21cbe0c9eac7be5ea83468d69297e659a01e8d0ec4ae3989d22016feba85a222e35112025b4226d1aef41fc58d0bf8a104e9db37d8ea0760072e1ace3f2a219988fdac296cdfce1247a50cda9b4818ea753e4ed7b6f259342f5197913c89105a7c4ffc4e0902bc2521d32a449f185e71855055e79f5f01c8ba3a06cced423d6c6ec9f1b19ba20901b39b3d18c3c9f1b44bd85a0fddd68cc43d3b7461de1f1272de5605de2d4987a90901e95614fbc72b4c8d4d896ecd69a1d486af67b9ee82425f0dfdcec38eef3cff33a10e595bfcafb552f83e25d24e8a383f88c1ab48a4540245aa8146d4326301299e88a69ee71c1f6eb2e69e386ced540b2863e8908ea180115c708e12edd42e504c1cd52aea96c547c05c39231312c390274efe7bd02e2c8bd88df34ef854654f0c05eb8a084ab13e3dec0901e45aed04f125a5b712136c6712fe358a6ad5a6b8d6ded28fe5a5650e263ecd5309015ea426772d46fab7e5eda5b71a8d7f1e2c380c504989bc37898329cfbb3d4fd0a180115c708e12edd42e504c1cd52aea96c547c05c918acae695a8b3d068e4a0ed6d99f38f1389416d540f163df0629d02c6e7ebee0901b2a51fb110af5fe789a26ea3f437d40527c183700b05883b06a2affd5fefc5330901038ba65af69b24b09da0bda800c84f4cd2307ad4dbac2f6f7a5d421adb08cd943118e501727106f4eecdc72e5755c21f4baf0f7dffac45e303d09c9c2a9f5c98ec6c01071af00ba1f8e02981f978f11dd730b768df7e714876fcd6ce629991121e1e0104b45524975505a74b603281b670709011c5dd85285d0b66ab493aaafbe0cec3ad26f42ca32e10dfcf502bee474bf6f0bf6cfa3bbd67230ef5c5f01fcb93b91499c8790a019499f4746b2587c66d42a9037e7f87470982ba95590fd5b92e70676ddd3ca79121019c40eb182beabf1ab9b67313b5c8fbdc2ddc1933a7e7e71d3fa5123ea15d3eb0fcf8bb11019360ddc36632855560798902d5bb853f551887d26453bab20e075b4af612bd21390a01594f7f7c0acefe3cfb2c0d974a3c6bed4010af6fef6a0b256b662bced66b9e822103085a2b5eb0d1f055cb0c2023090fe51623d3e0bc619904f77808db85fb870ee79bbd962103a422bb6eea24755e624417fb0e307e853789ec86447534d0b42b461a7c6e7ecca502240a01902f478532bc478dd0e26d4917177a2037fb6710c95ab8f91dfffc527619b4ee2103da7e31ab04c42959010f633dfbbb7e786d437a1977672eeb3d7c339bdb806682631e71194fe139a270a2d8acc92b3923df2cb3746118917961c68ae3a9bb1d834cfe45453cfec519016342031df0fa9248c58df24cbd078110f40fddea4218d04881bb19d7c84a3905267519c0f9905168531c12c1cfcf6ae94eb374fd73b6c3f97a080807fd2a41fdd96acda0666d1985ce53e38e4e1e745ccc12018000756e85ef20716672b2aac50e3e8df4204ea59052d30a01d42db26441d15acf977ae1704c1c34c0caa04b838efb56c3bb626c33b0c77bbc090138849c56a0600fb6c2d7727ca26ac9a3496ef395d2e955f103f58cb2d5709f150a018a4df95a056a7e70360b3492d8d0342affa837077a9a3ea2ed2680aa0fc73b67190f424073271b0a40b20fdb3aa79fd55a22dd158b4c1118cc843bd54deae4dd66633546210644bae3f09a82eaf690ac05cb00746c8208be1d7b6501e212ba068db8b1fa8e59e9c49119ac913702c6c2a86550adb4f5d80386890cdc228d42aaf9bd2635390038988590aa75210a0131083491196fd35e0d04bf85493c518b8fa22ce9cecfd9210638195d3369f38e19df1eb130c4c80c202016d7779aa07cc069c4669ad5cee7e30fc681c3185aacfd31d3f7198bcde2d94377dfe82efe077e9f27a77a8e9324d4e17fb7b8ca294dd0fafcffa971d90e21014e8722accee8aabd63cb59557e77524805313735f761299a7db398d00eb99fe40170a70a0139425fdfed5101d0a91e77d193397736fd761ed1c29fff3ca6991d8a911498420a01df0fbbb3fdd93da56295336cb849285ceac9768a574cf8ee6e1dd55ee05adf251906fb76fcf7266cb3df17671a8cf3092836a65e18ff7bf8cb047b677aed456b900ecbfe0a01ca7e23ce5b93f2f1caa8da8a02f71d15c6d5253baadd3fb5e3fec87e17420b0419aa8320256ba25f6ca71b5f7ea7ed42c33143986e127b915a03484f4726a59977b5d0b819e9f2f9aab452eb9689cf967c4015751dbfc92948b5f44606662ab598de994935c34f160a0105d52fb262185545635dc96bbf14dc331b0deb08c0c5a96fcd5665a48950ebcc1903e41bfdf6b60d96af2a1f88783e7a1a3a2f2fe2ae9ad7d060f87122c1250b0497f318210bf0fecb1189f73144a7a583c7e1ebee88a19c7be99d905d62254edb70063bdd79c7567da14a792abeb8c9deecdeda2010dd1598a2e5ad1f6554d65c8c542d8f8b2d972860a18d59bc1e4d9d15e8e7d2d815e6eae4d3b161eea15c200f5343bde75110d2e324978fdb3bbc808b9bdfc4d0689ca99a09630826f769596e1a6eda7538939c7f0401a8307c46d7a791090177b9ac1fc5eccb594a75b388ff08bb40cb45a0a3fe89325d921e0b710c28378a3107e2017270f47fb4ba5b5689e23f8c1a6875006c1d317b955a7558bb18e091b411207bb8d4e9a10c68091103e5e12a91bc55a537c0c6dbbe3944ddd32ed5d62c0c2dbcccd67fdd273965cecbdab1de3544130a1a6821c20f2e6e9c49027ac74958d1be7a78cb289b3632943e87cb3faa88487826c7f90db593b03559627275b659ee0fc49709018b6b08ac8a1bac677567e054c53e1b7b6d5dec028265eae74fd51bf3a2b8058fa11e8f1099a3fe6d2c1a960528394f4feb8f8a288d7d2df0ab0b9f9fbcba6c797eab827990c604b935c90e2018aacaf82c469df796090190ab235a37e19bcffb5627d4b8efe81b494e81f9552c8ea884d6ced454c215a80901990d2bfcb7f867ba65763f9ae631ec5f00fd59968e522aa0113d7ba46257941d3135900172710f664c5c14290e77e58ace81df68ae3283f72907aa3928549060599802c0106722a1ad0767e1b25068efce625053c982c7cdf26297e259ac4f125d0894b4d438280c4e802fcaa9c9131d7ccf16df29755090d23f303209013ace2a65e389a860cb53155c9b82f6a08f02ea896587a98f2b736498775f7d1aa14aa5cc5f01876266b9a0abca2a77fb4af9425cc3bacd98aa14f9194c5e3f764c16f9f4aa9f12edf150c11da1db9b00c7aca3da60a165d8e9461f9018596fe0ab94fa050ffb3bca242f2ae968b1a1ce9fb985d009282f8c8b18097fb9c65d01c31a62ce89d3e73d1e6239065815f32a6b526e0458aa24535ceeeca2c6f2264f7232db951704b8cda8c81e7c9e7096261198391c0da2eaf12cfe9c66bee23b2f533f4d78849e637e24cc5b7a95bb7b8c5443de60a1121233678a391b80125035b08c5f4c72097600625006c2034bcc8f9abfb625ea1f72b2db5efd98816ddb7893e84902f5e3b62a7f84f8233d345e6ee81337c94b1203025ed807be0680500cb93c9bbeb641242355efaff839063aa5f8e8809709286560af7a8432cbdaab706e68ec25916705ab9e68ccd0c0c9e5a3ba4d51103911cd46c2c5e94b227695953579a486f73adfde3d65c2062770c9210e27126b576c4abb3e1563333910e0a5dd4a2aee9178869ae297f25f3c33ea486b6411d6395036849d35237778be00d2af74f1d1392bde91afeec421bf6dad4795d2514f6d14ce9bf6c9476022ab9f014daa9e1abfd1777bf05dfe36390a5df8bb2ca311de5e7c251cccb60b48d3a055542e67f24fcd9ffa14b4b1133f74af727d88f29b390ab02b8fb02240ea89baea973a796fd1252b04dbb415914493e7e224ca1c67568fa3fd126c19e23903bdacee1b7eb540120a1a0ee1d2508502246422ce81748d52735e64bb0d850ede39551be6f9c43903b744003af109759b1dee86b3cd9ab3b0c5c5d8bbc91645472aac92036acd6a3a7aebaef0f3810901413ea6dd42158cd238f3cec4c0a9a868a9e0faffe75272dce25e86d39d3de912a14aa5cc5f01876266b9a0abca2a77fb4af9425cc39e8c44bbdd898e86e5a27a462acf142235355edc2e7630a66c1f8995aeadf699a165d8e9461f9018596fe0ab94fa050ffb3bca242f6a91f1a6510d6c44fe4e1d3541f9ec79e59ba241929a0ed43584911bac951a522102034690f5b9b01ece5efa38b460708be50a5fbf586f0e3a1102a68cfb2e836a8aa49cf00a014ea1e7d4721d451dbe39100f09734642f8e076b8916270994c905cd8c0aa15000a0132d31ae5e49a8452c81b49715e099b10b11b765530ffd139e565b04c5b2b1bd5090162ffa78be4157b9de4687c6e2fe56da78bf17d75f92008c343286a89866bacd911635d6707f810f8d52697eb390cb16271cfe23e09be84b46f7e967fd620f964f78ab519110f80568c5940f2ffaf4e5f69958a25f292db11344012ba85876b6aea2ab6270ae1bc0901dbf084b9dcbdf3834129e06cdc278af3f4f3fb8e3d6e964de1c81d3bbaa14b8a11635d483bd7a7d8d228158e367b5718ea601ec8abb27374b8251426926441245aba0d0a01f2e7f2d2dfdf2a5008171b734000a825767e30f2093eb5475b2aed31d8e5f7ed0a01fb3b04685d89d8357ae3eb085719b82aaacfa66861366ffbcf0aeed7e3fc00e309082c7db604eb4d8996844ca833815e736521f6498e7a8510f574abe4c3a2b5590f0908adc58da51ed086f76023b1577dad8841b67c9c2900dd337818e13e2e12dba7b20a01a35a547b032a0235b3c0e6f311d68b7d53426182185a0bd8e560cfe5a26d41fce10352366b755cb138795d8e3e000000000000000009613605b936e1ebccf1ecce8d3369210ca7f73e65abd8c3a281ea4eb3849055bcf284debe875bbf096e8e943824d259a325e3a822a572e49d2ba92162b72b6b7859acfd40bce4672cf2096e448cdbf97630f20c354f365aa88410f83562932dbf8ebc3efa95a1f57d31c72b210134d6f59a6d0c1a19eb7ba6778ea6e6fa45f0048d1368705659cfb037eb34dd71b24431210134d6f5ccf093220fa70a2241b6b3c7d34469556c0e93d2977dcef1851783468acc7f31210134d6f5d5fef07ba1cc4cdc63dc10b359dca3035a1a3c4aa6043291fa61730aba55ca99210134d6f5d4225a8989d2d253b01c5540b83cd491fe4970b8836978f1660252a1fc4713a9210134d6f5c9b58bd6d5b831c69ba80c93f3860371bc5d6b74f2587b62722537ba62b65ba0210134d6f502285e1c638ad292ca9ccc58e174f09e35025f0d39526c3229bc70bbb1018dec09aa62b592399550c1cc8de34c2b4ef71458784136e718ff17be189e6ad5e5a06d47210134d6f587ab8414e74255aeb674468441bfec19f050c8281254357adb2cd4d9227f26200996076e8deccca28a10bddd6d8803b158903540a3668386858b79556eaca4b8ea2c09786669672b923615ce2188abacd14cc096058a9d0b6909f94dd1c297aa4da85e31210134d6f5ceeecb578ab869ab5abbedf17316c13fcc15ef5fa4baa9f7a40e2bbe2ef6009c210134d6f5c4e9c832a84d81f30d511e7f4fcd8e465f880cec60017852d858c5a1d4de922e095ae9129a76283128e0e671b1f0d6017fefcc502b00c8f85f36efe61a8f22ff07ce210134d6f5808690e0534554692ce37dfadd42a12787734e5191de98b90f019778f4c5a89b097840245dc52e25b225c3dc834900abbfb579a8e7d96921305a0312b5807c5e790f210134d6f5e496ac5a7e4aae22c82f398244ca97e97870e0ee68540cc38fe9b53bb42d85da09788c3600cebdccbf588327d4ce138268b6f0e5044c41c9d3579075205d9e425234096e2a9b0785674e8321866559b2440103f3c343c973a7611af913033f65a8c04a5211010492d9eb361dc65f8a7bb24f87b8526979416fe9d4528d480e52213f099761665f09aa58ee89681e2e87a6ac7a739b047ac0ae23f0a4fa2ca96b8fa271557ffc32df190901911d78873fe8bd73ec50435cbb0ef6ece42348d68051f7fc545f60991d0ffadfa10ec9a2b522bac8f7fe0cc80cfe9246e0194bae1e7952eafa5d2580b7fa98113356dfb348f420b3f824a75bf0ffa8181dc669680a41063da4039b86ddcec9969ecd2dcf1897363ebdd1e8074ed11c2f98359315da8056bab5540fa4137b0901210eb5847c7ba40c3967885353581cc8b8a000b0ef2c8366152fb6d641059571090167f18df7384b9e1d309255ee6abeb6037f8765172ceeab42dec36beaefb6449c591416626ed9ec5f30b64838be34be27896c48f4b1dcf9ce1fc1a98fb8c67b0f6556ffc29cb23fb20fa831a8591416627fb11a2e3d2476a4de9b1c22fa179141dfc5ff910c79cccdef2054e547c8347f124c86c46c2cc34739571a923ca04ee1da163cc5b9b30297834d0ffa14eac828d46eb8b79f33b1f7e0b50cff470200d039571a923ca04ee1c9d1c3c2ce384cd0a5edb58b175949931915fe3ed01f3de129c18cac6432579a0a019ca59d056b3a8393c54edaeabcf380f1f4fa8176fec088b75b5ccd23e59e4e1f31048c27395000d5cdd6daaf3476d53e19412144f45aa0e3efdc4307bd63d59cf2f395e8cae077493635c9adc5dea0000055622d8780c03954b62056df259bbdb088bef01a3a1f94c5897d661823760edd391475b9c3d290da3a3ced9ff0eac0aa53860c0f9b63515be463f0af2a507e101f44e7a5be205f0ba1493abcb50436a8a8598a1b495a1b8eaca860c9cf596ea21d8d8526901f825419ea184a18ac6e65fd685afcfbbf75c7c610057bcf31157f0172710fdd470ed41ff9de815cdd344ce37b406dc544d29a9b53c28a470800fed3e899640901ad3c27cfd766dfb5e69b9ea54f89d5ed2f27e80f5e76be692d2d764a4f8bab0b091024855a2fbb5b044886f05ff536b01d9f8754081851f77090101e30548be68ca8a1412e6f2896aee8188ce4cb63f03c22c4e16db7944c40859a0c5853e7c6e9bfbdfdb15cf0d84ecdaeeac21bde609917c9b04af5e581386a88b779c54a668fb95b0dc7afaa03f103db4f60fa25ecc68ca4254d09e656d6c31fe85922224c8f64c2e54f7b8c15a144eda514b24a835e84ebb8ac622ed2944c7a01ce0d0fb1cb4542e50c3a1b3b1725016ee039619133e645a906be9d1849a6b7e98b8132e29a48f6954a16906bb70129b1afab55b59c15daa2bae4e463971eabaa54780a423e2808ddede32bb62fa44f7949cc413c3622cc0f9bcb0b0b9a7eb15147c025f93ae78e38b02f44b8cb6974add5d85912856bb76a26d7c43115a7017270ddfaef9ef0501faff812dccadefc102f2c6fe7e902e7093812a649f0fe687ebcdd0901cb8bf693cded6ded242bad16db05e583f059c0323b63cb5c60974fa1fb0def93a1b556d94bf379915c34033140cebbfdcdbf7b9d0b8a5a6708be01d4184a83df754016c9fc208574d10f1c21d53b63981581f1f7783902a8d025e4695bdde4a6c2ad8f43c8c6a416feb4bf6bab277d018f1505eab8976fb2561e4e631ca1c2c2c3ffb3e2470e48327e08197549af609c66fd3cfa49e0ea7e27b74372620adc482301d90ec052f71ab96504d75fbeb138e412a1c2c2c3ffb3e2470e48327e08197549af609c66fd4a63d2cc2e588e0a22508cd1647f6379cfd7da3a7b9a36aaf39e2f656d34943d490100000000000000018316d8b6d41e540a9fea044c39e87090d2fdd1608ace16c68fb54515df090347e9020000000065a7d2b08c4a50bb9140d6c7a8b4e018c366214937475dace312bed041cbbe4052334708cdfbe10180fde79cd8512f9d4c5e385a402bf92f09014fba1f65036cd4adb7bb888f70547ff012407318815be8a07dc69059b4071ecd399371ee1432c9f5fd3e2dfd3c751799ecb14a624ad55f6a50d490ad266b28f2136524d5194355ea39147af56f90ab7f4ff23acbb4963585918aa0d4fa1d4a526e58b8256bfbb947a53583f4c64ede0e4109a411f82576c0000a316626cb84392c71210ee600355397acc90a99dd3aaf364547c53424c6c26db95bf39bde21b95d77fb18f27bbcb07f3648720a2e00000073635775f5741817866f89adf873e5c6851c632ccce9bd8720d43dd13bc802e0c165a7d2ad7da8481aefb8c6b0271e1c411cd0a81b1b9c154ff8444ba1e9b743ff3ca3d10b7bfa38aae85b504a65cfd588e5a5607f22ff8cbf0901a405e6ee87c09cd8aee040723579ce236be46d8e26c2fd6c378035cf13b200eaa1820a62adac7c62a8292107e553514860c9163b24bacdffbf2850b415cbad8e5fa37f97ab8dac7beb6fd3e5cc8943e2d2a68a52afa1ce70b7f5bb44be2f8a7f37f8c162240440fc62189030c4ea25a7dd1cd740cf92d29e2d5f154717c969b7d0d7ef29c7a740cee4830a01eb15f97ce4dc29cc22e38a4f35b9b960ccf79295de87cd50c9def7d3319cfabd41dd18df09c169417656b1e4bdde0d25cccc6c06cd36875006b101558e64e972c76640becc51ac7bed0901b9c76dab2476bfe17166049269464feb6362d82e63976179940c0f11cd6d791b09018d9bda3e1c015229a5d9109a81ac5b82bc967f1f3a6c924a910d76700671ef42090164f5787242c4ad90b673e6b90cec844fbefa3b4c3e3c06d2e676231108614aa00901917b0b6eb598e3d671670e036e9e289460ca4ad55827cf833176ee5fdf43d99709019df6e1df17998e143b5a7cf9c3e4a99cc4776717c476fd2c0380ba83e260c07c410e6ed27d66680000786a396e116639701f6a39a696de6524e0a675d7a29a87e479c37f945c63211b410d99a8cec7e20000237ce3b7694d24fdc857633ee46efd1acd87bd8f7d73ca6a75c016c2eb642f4411e7dcd60c0be2cde0bbe03d20eb5e173715be66585b5421787b88541dff3f6bc04afe410ad31dde0cce000091587cec471ca5af9077ac5d3025c2130a8fe350711faf03610429cc751002e311b88b2e14e6f2d562f5ddfeafd67dc82c7cc8514f15767e722a49ea68969d579cb82d410d7621dc5821000000125ef1effe3e3decb978f3d9120c6ad7ab44df2c0be5f97edce66d48384b4811e57ea11e7c29858dafdceeb5ff633cbc877c7604954e2aaec9e50dda086c90e11b7a410905438e600100009eaae50a984e7950d7fb2ab682518ff88aa5f243443096b146a771ef15aaf2874108be35a9807f0000596c9564aca9d3933e77cbd6edbecbd2930f0805f66115ee358d6046c35d66e511950d4910a683d59dfe1ed209f03830131bfee248dfa458d820286e4ea12a63db746b410905438e60010000e3e726fb9fe911cc76d7a216642275964192df92370e4bcac79b64e9fc75967e1199c92358586c1c2530b1a250f43e7398807afb6f7564474eb300aa798abf71610378410ad31dde0cce0000383bc611ba3a76877aa4cd3f01b0f4126cefa9d59fef8ae9b77d5c947d20002e4108be35a9807f000011001716583d8f6f72f6f80dcf50a57cb105b20955c1d0ec92f6d33fd007b1bd410ba8478cab540000fd5a9e6c6f3da7adfa3fe0c70a37532ddc6ce312e4c806867902d7fa3c8a4ff9410ba8478cab54000055e85b494688efb741e63283423f711bc3bcc2b41c7824d6955d8e6e498eeeb811c6bde2bb12b119d712e1fae4473a420f52bf3c393e053cb731dc2ce825a247b66484410eb5e06245ea0000f314c02bbf7bf242a3cb1142cee3c6962e270fff307e38326c42abb2adbf9c4a11facad52700dd444b637adca0c3c3d8375b15b69cdb2f619cf51460195633184971e6410e6ed27d66680000a9cbadfb0326d4a54c87d7b665a612e763d947cb56e9dba48e48983b38e443ad11f60e9db7456d847d0fbe78905a2a050ef6ac0f6f75c7fad4f497ea971353729a1fc3410eb5e06245ea0000c557c2dfff901eb39d50a8291973886d584f321858c0ab675b01b66f8a0c442d410ad31dde0cce0000d4268dd38974dc976dfa3a5a7303ce485dc9202a995890eeb716d5055c5b8488410d99a8cec7e20000c05fd74977fd0ece1b55da55d6b10f339f520c0c8a4ae1af96b0f6abb06202fd410e6ed27d666800006f3aec27a720f43a7c874ca6ac4e99cef2de6a776b66b8ddc1a99087585d4bfa410e6ed27d66680000b64e9bd5cc9990f8abca392fffd6e555bf3a90f1d637bb7d329a982b8843847411f60ed667f3d104f8e7a03cf9287bb3ceb4563a7da2c45a8565a05ea7b3abf40a76f14109fdf42f6e480000ccd134abda3e1e668d300b61232db6d6e8e985a45bb3b26196e52152a4275b2841106033bf82f60000d876f890277d7e52a6eb4d95943ac8224c11face379192ea2f1c5e15921cf03b1901172e3e832e459f9c774e16bdd21e151f7ae3cf6277dc1e61ad417a9fdae231eddbf3410d7621dc582100002daba0d33e425e55163632a13faa025ff13bb0a5916367257f963097ce83373e4109fdf42f6e4800008ce9ea8f9c2a2cd37d2dd7fd3ebe103392d2bf2b759b983c6dc1dfad2db947ba11aa58099d1a48f76f73347c885a6aa3d61784510b3965c1c9575aa988fb2ee6869d20410ad31dde0cce0000025ecc3a1ce20b2fb7f08b7777d8c40660f86b82741486f8b6a07c6f80dbc43011b88be93b729ea2a360e852f81147d4605890d533cfc10128317307d2a54b464ec1f441106033bf82f600005882dadbe5a079e208462a69e8cd8f5e7958b8bf7d16a857b5e74e947d37bb8e0a011374302c288ed653d748dadd5dc461575851f4f2b0b2020e602abedb6e3e4ec50a01598d84778c6bdd9f559879ed6cffc5cad254ff71e1e5131c02c71d6148ab869ca1f2372788b23df335a260d88f349615b9d7d6918df407f236e72b8796326892c668962e205ecc2336ef884fe37b88defb9b91e224a191b93e6d46ba99bd8170034441e8ca52b4608bcf01235d9dc15bba179ad96f0d26ca043614b8b876d63eb88ea3c55b20c78b8d8e0a014191e7816dc072f924b09d0a636fd132d613bb2b72d23f5c631914c79b2d9cb60a014ed939742d580ed6077871b889008bfbc7e918d601c02e28d95d877314d402540901de291af131f249bb28b8334eb9441c4138c0d4b804dd4360a0a3ac3569700412090193051a611218a2049eb8cd7c566afcbabc174e61cf592d8ab4deab56bef204642931e948824b45ccf01044c6d2ba1b924dda026d4287d531263aef36c3d297efe1254d73bdf1a15799c8c7ac1f5fa04137d206474d6457b607a6054f1f6637b33200138e99cc8aa77d56f0f7a851051ad1c4246a2048e02716d080a1cdec51e5aeae4fb870dff34f430a6782721ee48e986f99818ebd7897cd8864b63b69e8e900742559d65485437056deeac87e18da090100efbd7dde10dede48d50abed0d80db14c480365c1d982703498f4bd090f503f09011da23e5da6590faa21d1ad86e6a9cfa64e8bd68957f6b6e3fa6c17cb05b79d5d39017dfcdece40004d62640872b3d5a5e366a8600d248a78dd73ef51463fdac9797a11e6af05eb8ca1e157d39611f31e0ab09818bb2bed8e9343ae3b1bc9f4d2fa105e7bfffbda2ef8e9f512b162be31cf7facb0928f3f7c8f7822b0c509043de06bd5f084fc3af98e161279382c40554c00434dc68b5525040d0bf4bea2cd110c412f4f04917337d12bc067c68993b62cf154c50f5d68c65cebb6611a87e2509f6b19033c603da68fd66c193d1f2e55d90367fc314cdc9f5b7adcd7185721b0f49855f8a76d09013aaa198d115baca37b93764e5489fa8affc1d791fa0ce1e18de7db123fde19780a01cf474f6e8ace6d2aa0882b80022b17b670df2b14cd6a8e911efd04162193eda2090128fbb9c3bda8173e727084486004982d29735920aef6b316ebe425e449efa89f0901aa75134736f5b9864cb05d345fe281d41da1baed0441213279d98ae87a19ded6190121abd3bea83588ebcf96d29beab562e94cbc7c96e380d14e0ec4027feca4d93a11292907bd58fe71970d81a6a86553b09885fd0312dc85d65d27077803844daa38ad90d76e5239ab0036ce086c4507c3735935edff0169e255a7b08594047fe3e1956fa313188d5c860af1fd2c8881ce7fd8fe77cf0705326fb3872b2d692a8923d204e9cb003334f6a1820a62adac7c62a8292107e553514860c9163b24ba637da108e2473594aa45323206c7a22a795ffade4309a7924ecbc0625bdb9a0036ce086c4507c3735935edff0169e255a7b08594047fe3e1956fa313188d5c862c820dfc9970f311a18ce376194e9f4414406415c924832bc5482b1125c86ba2006d6f6f6e77696c6c636f6d657368696e65000000000000000000000000000022584136680c5859b14b39693712a18071f65ecf23793cfb9b22f5a48ca6cd0230a192fadf9ccee4cb0fd4fb91cb0ac5a5a22a7d214f47179a646773eb5465ddea92b6d2eeb63d5b084e7920c2c3b339794a25db221e090176aadbd6a59a6613c668a672adb47b6a8e4a7ec7967ef3c12c48d5c2053d7734e10342aa4b352d3ac35e77e11b0000000000000000000001726d653e17b624d859cf8b8e83535de16bbe8017cbff96694c09480b2fe2e58aa39cf2eb1e39354a6ba7b09d874ccb1d7d0dec9c4a7aafa54965bd7df403a0f633d9febb6166eb6a6561ef08e63a0619199f7385c8c128c0dafaa88fed209db164bd6f5f074453c0994bc2c77bf79efeb0250105fae10342aa4b1c34d9c74965b5100000000000000000000000f8fecea94d67b7852b0aacc970b90d03a3f6a2ac03ee435c5e9f444e80990a510cf77c208f11134f63278db2da12203839aabc4669e9250235dda008592c87e2bf36f0a56824b43700616e647265792e7a6b00000000000000000000000000000000000000000000121709bf8e5c7ef17ae0203305d8772239e753bc71046094b661e515200c9820cb494d312ca8d2b37d7e7789a4d7624808b8e738900b172229c881a3ef49372a7496a988ed1b1ade1202d2a1b93a14b884d491802d1a803218f04542a63be4482890d76f4b7444799095da2e44e0c1329b3cf05324db1805e2c1723330ffe48f31152b017270d5fee403c334b20e4c5016779d6b9a2ec7e2f17f310acfd07264843c494542b8c64101c6bf5126bbbf39ed3aa333ff434da05f2a74dc5aa0f3f9d30cc79bcd23d178b88068f038faca7441011d7a9c6e8c64afaaafe5fbee24469d6c00f108293120fde434434833699600ef75da1702c9100a81187ffdf440880e24f5d4a232bba621eea551b0918152a5a27cf7105b9cbec57ead58f420ec82bba5d3711f48e00d481d7903741ec2ddcd883817608a8d05f117402bc96a5d5be1efa1186842df640dc8485eb1f8348b0da0261ac153c38e24f0a1f531f66e7c965220b8ea56f0623bfdb6af5dfe7567b72d1ce6af7da93aec624cf959cc8db98fd1e2167d7e801c8581d993c99dec313775017270d8755f25c258b9dd7ec3b40a93e82d38c332154800838a6c4161d1c1b9385f370f090111040f4f3abe6b6dc158f45fb8e0e5a62678df8970a784fd9014e80f480aab8609012a0ebd92120de8b02eafd48365506759b3f240c910cbc12075e90997582f5a48a108f98deb72d7bd58848420060a6fc924868392ffaedc69873e170c8d8dbf804d969de2290e622e2f8e4bbee43d20ac946d951c61090156606d803f6739237083cc44f52660f081b4dd53d6bf6ee80196b86a2b5fedac312ff5017270daebb69d9753988cacadcbd5cfd26278a43be1e646a3f28b174a33fd834f8ba9b209014e19eb012d994dce22a2795ea391e625c41b826df6ab8c2a7de3577db3cd344719038924c86a9e2cc7df8a91977b3433adba010262103511b0509ce8c6ec5a3f24f75091190389291c205b6ea3705fbb6ec0254d94825a00b6a56877e4b3603d014344b71cef6b3f1903892932dff6d15191d7a2eab5d59170e204ab4c57c105dd92d41d789571c939b6696ea17db8b3183806517c403302ebc25cd02b93aa9d0e744b5268ce1fa1e017596c69d65cd6656f68a6382e6db390646b1a42b60e7139c1011d7a9c6e8c64affecfb4fecbae0000000000000000000ed8e37ee1509748065366b30aea67514cfe652430e5bd8faf9f0ac2d03f6a4acb81187ffdf440880e24f5d4a232bba621ee384049de3da9334f13471cea1e29cc204a1b85599993b23778e2923fc079f2417903741ec2ddcd883817608a8d05f117badfc43b93589d833170d80ad210094c2b7dea2f5efddc01e3e267f4a5368e9f090191400452c67267de3299edba2b97cb8464bbaf09c21c93a91d576a8c3b488c811938f87905b132a11b305856a8eb9ebf98aa236b647e0ce767603270076fbf2dfbd3538219089524826e218b3481d2d2ef6dadb5a09c7ae4ee9b7e61ec14fbcc2d6c27e87614bb361952b7e675d0447cb38b5319c1f81e4983653fc733d33adad72ee27c5445aaae5e1b1390410e4f732467bbc534368c7cb285730424a1f37f9ea433126aeb78eb0724298f1c6968f23f634834d8410e4f731046318bb01ac6e88bde6c381bbc919b8eb2e2a9a41359552ed9b6f55723eae35fda2e1541410e4f73720386cdb9a45e997f60e6d60b071ca610c0aa048c1adc175fd170db8a7116eb4d75f92d0da176c02dffc49cd6d5dd6f46e5c00ff87d0b53da7b137f083073b309bc981e1a45cc94d640ca15e61ddf22c2b8049dcd9d99c999410901292f03dc0e51c9f48068d464dd96bdc34533b539eedee96901f537a5d1e57ed93103e8017270fdedf4964838b80f031c05bf152b7cc72cc1394429d33f4a01cf641f0ca9b6811d3103e90172710baee3fdf1188ee231dec934e554e068837a15d0bea51befad0c7cbd60c8c05e37a14cbc44a03ffeb1e6772e363a05630af98dca9845350a910c82d8fd70aa72ef9aabd94c66cee6cc79870296133b22e03541107a3709018718f9ab1c48811d2f1f495c6859439d17116165a0c087af5756abb963d77637411b0501ad06754f9a8ff367bff1ff7575ab72a129a18e86361394c84bb70a12eef33de0a8cf7ed0290a016e4dc3ab483b74122e462730d4851eb4260f83425e3939cfaf68466a865bedee19011f16661dc0f25208e2eba2fe03f1bae00af04e2361298125a82b67a7afdbc88db11009010c003861dc88cff04bf64ae2c0e074812b5588f4496afc1e58a780b635b136ce0901fb632910c52ff9b53fb074516c2f9163f121dd233b080bbf388952669baf54c4090137cf18b6e82597e884fc607dfff2acda2def907067dc095eeee688a65012c9d9a1e4622a57ab8f4168b80015bba28fa70fb64fa246e40b35aa66cde0bd344b4f3af655c50fd015ef0e98fa4723e4ea8bbf82a8eb7f090188e4b34922cc37ee9e658f0ad3b15fe71fb930915956bedb8c185a8e84ba83a7a901b2f4db04dbc8ba0e32f4901bdd1f39fa8e6de3eb5417a4270cfcc41286f5204fd32d204b903ad4775a369b9cecace169d947afe80901d65c06093154f542f3c266c900b01623877077381cf303f136da9e7d7e5ab0a279c097ce7bc90715b34b9f10000000005962fc2eb4ed8882c6d10bc4a1cd203c3ce4effa05419cb5d7a7168452205a9c0901beb3e4bc8807a0e0fdfd98493ae6a21383d8c9108c18c3f0452991f9c9634edf09015eb3750ac50989b1eea4c6e86c0f9c04e0e688d6c18b6d4da4dc5eb8c876de7f09013cc80473f78ce7ccac5b128875df391cacc79d0240f24fa1ab4caef0f71fe1e409017948c7aeb2b5311c1e1693bb47c3544f0bf51c82f01c5945d99d49db7a5f604a09010192bf5eca206e493ff32863b7130e50c76e2cc0e4b2b2d3d2e2c3b4934ed0750901d0fae637de392bb1185d506c043aeebb758767059f2a783120bdd08353cf6fb000f8f4c7fc7a358712f427197621ed89364bf3d1504f0fb8a966417e8c1a83e5c21578759c87827ad718ab0299754ad5dc245dc900135202c53b48f5fbb2af7c9921678905fd19b5e1eba3f9a2ed6444a7a3eaecda4ae21d7ce05c855d15fab5969ffd04e90d006f7579666f757966000000000000000000000000000000000000000000000010361e90609b214e4fe24935b766c7630f3fb5f59cff7ef51abde94f99d35904aba15c200f5343bde75110d2e324978fdb3bbc808b9b9ff3a3384af618df45295e87e3276bdb58b15e375da1904615284d297566e76e0901ff5fbda2fc4d72d5f2b2304b0e36fa6157c904799512944552d9e3044dc28513090171a57862db61fe0e0d2e1c2c6e14c20a6808c9a7a9266531dac3b705c0bb71e7090175a2dfe749e2abc468d88bcc95fab31c00949a157ef8c0ae731d1b5f627aafaa21678905f57c001e807db456e9c2358bab210ab0e5d9255a9aaa9b9f3b19e6f697f246d78f0073796e7468737065637472756d0000000000000000000000000000000000001a283a93743fc8871c0b0e08e74d75b65669decb0b44c22596112a4a279598abb700f8f4c7fc7a358712f427197621ed89364bf3d1504f0fb8a966417e8c1a83e5c2512180af562a30c6bcb748bcdfd3804e475ed6fff65413c0f48f3e79f0bb8062a1f9c04952c18c3849d120a490ef8bcaa527bfe61c115426d455060c89313450f0518d021890612da7b499312e63267278a6f323e30002f27cccab9fbd9d14fa5332131a8e370ac1669e8dedb8545bafaf3da47af47d3d1df21e7110a5fbfda79ba63cc448fcc8d8578e2ab315b453af2856b587cf25a15c200f5343bde75110d2e324978fdb3bbc808b9bf3f154731b26c6efdfe53b95cd4e4b5e81e202d19b2da83dc0bebe1d4c108fd4a14a792abeb8c9deecdeda2010dd1598a2e5ad1f6527feb5960b1467dd5adf09a191cd34664fb4392d2099289f2e45eeacc113aa70a14a792abeb8c9deecdeda2010dd1598a2e5ad1f657f243478d7acc6bcbe4ebdb4f5e78cf8cfc24a5668b7ca644354c80c4d7f6a0d0002f27cccab9fbd9d14fa5332131a8e370ac1669e8dedb8545bafaf3da47af47dfd472345a5f267c54b00e749fb6033e3904bb59384db526625854738fe9ec50200820a62adac7c62a8292107e553514860c9163b24000000000000000000000028cf6a12478c91f76eb210ffcac39ede43324f714d2131c361c26d2033869e8a5e0901e098b1b65f2b688a05b39ab47684ef557e3c07393eb199c63970ddd797e00f93a1b81ad3b05dc4e3e1228c9f0b84013638bcb997ac92dcc3f098fe60f331b72cb4714fec119406f6bb4395ab50e75cb359a0edbd76a1b586b3d3417af681c06752811944b871a217a1befd1f387b4efb7f8570f0f7bf0ecc4f6b023a3a6229367767d8662edebb255413190b5b8c12797c4ec2c8b5ae3a17e2254c0ebcaa50ded48857bf526d69ba7b8050d6d21c190b5b8e45d5a6a0f7eb81bcc6ab1e6a013bfea52fe5382640f7e7aef9e0abc053cd0d71190b5b8f7a41aff730e4cb25ed9848c010702b6fc2a4dad32b28076b51b20476f1595ade190b5b8d9c70562d5d0a019431827d2b9d4941744f0f9c788772b2fc2d56ad1dba58cb06190b5b8e1a97d26c94da37fbf9990cf4ffc363f136f4aaa9f4bd28cfc33d9a90054e6aa5190b5b8f87583f7ae7e52041f8584b2f7dc618c889613c3360ccbe2647bf697cd69786f10901c667da7c7767300eec40ea609144be4232230ede17e1ed4c5c71696f6143e2cd0901c243b197158fd27fbbf54cf08e18b6e34232c19184ed300ade4e28ce9205a7f7190b5b8d43bd108576a85795f457225c18c55c00cb0df7104e5ac27f3d8622e97af4f111190b5b8e5eb243dbd4727b8c1667429be446336eb0e42db0854dfdd07a453f7577febf00190b5b8d54132bbd36e5fe405c8f16173e78e5f9df2b8f774ffdbe34519168e37303b988a1dcdc7eda3cfef3c37d813400d7c88d5504e737a4b8c6ca9cb51d7afe2e3cbb659b9b5969c9775fdda48c9eb8145c4d791521f7db09011c4ce34e92ed5c9b82ae0f5cb4a08cfbc176379bd9cf1c6f1352d128c8f6d0df09016b75d2d413e211d6cf632893e56efd7c7b7be587151371d6908e990d459b63130901ae11d291e62b344b663c5dd206b9d9405469322c05c126d03bd38114e3ad9aa50901302929ec60eb479572c9280e9cc25a990f305781ae51fe0f694a3c69a2375eb30901fba850aff03e042110a94f1072eb03ec51e01458422b19d69f237c409b8973d40901a2baa9d77dee7d95b08eec307e6a06f32c5c27798d19059b40375a37466aeade0901812507a876d19cc037105dcb2afabeb6212733f2e22f308221c2145602eb088909010f2dbd20e103f5a5ab8a03dc396c04d1136f9a863b7168822065ab74dacc9fb409018ca194f7263ba4d1ec8017d7175016e0d0554af42a5e7e26cf4bc7e164d3865f090196eec1c6394eb00d50f8fc76bbea583f26a1ed9683cd26cbc7cea0a9fddb3a7e09014b4d7eb9a081d04a5a753df2d15d1d31937b4c0d905612250306e0c382c85ca209013c9d0be58679c058913c3abbf3a53df1c57f3b3c3df277e214eb3b1632ef7690090145f70053196dc2e9a3ad14fb8be94e5e417db8bf0c3aaa9b7020d7425a36ff0c09012e0ef0cc329a23b6949f59e79468a401a885c18c9a9472995b4e0ea045be47a3090108e17675889cd42445e662a0a2c1fff6156ade920ce4c710f5be850af981230f0901c1d70dda0524ba0116645052759c4fdc069a2c44a6987659213b08bb1ba738e50901b138800252b963455f5db81445db87a2c4d8262b43c78594cbafc5984e0a9a3d0901e48d15071a6f8a37130cd52876262b6be4547fb89fe400860b984a620e2614e30901b54ce651022d1650026ef4faceddda04c4661defcd23a517f0bbd9be984aaa210901e0b56fe5094c6d415ff8986627581017ce2f8d59734f2774e246fdf4a05997e60901cad3801ef7649a176054e8628f00e9b413f9523a596861afbc66c85b8c50c91b0901d0afaa8c56f9509b5e144d2456634712207a6b35f4e65004a92adaef97bb4fcb0901891410c977b80743948bf951a422245653ddc855d0691db4ab9c460412fd49ca0901e8921dc151b064a7bcdf2b40435d181f48b4c61538454ae1eda2c67345de1fc20901cc4e5c6ef0624fd24167cc4b900de85a0cc4906046c308b3e855f736e5c6b59f510385e4c179656dd40000c6a7fb5f14f02f3be45ab95772caa50824dcd48f24a9f3eb49192dd9c458fd92314fa5017270e3c8fac5d6a05056cddebabafb37270b6ad51f59eed4cdd1ffc61f9a58c037befaa1a348ad257ca18eb85801aa82f95be28b3a60240e995dd368f12fd480c1504d34d87bfb30add5ee206e4f5b46fc308388f671bb730901a9eaef3cd40abb88a4df932015e458ed2bacbafd08193b8002785f068f1ca9eb21017270d505b80917c687a41ffbf68feba571c7a9cbfff70128e8e49142e3974f88527d0e292da5922c89ca463f843f0d88742790db5a35158eaa63e67c69669a0931f3924ce4a88c8b5c210fc3c3bfa2c669a0a2b7a41008f7cf361e82ef3f906d898bb3fe452825f11508507a1478b9041ba0fdb72aaf5f971888f6d2243ef3b208b701d7ead911c505cc0a235a393c46d475c9f3108b59a89e139046960cc4832355405ec78c09015b5eaad686cb74646c812ca4abb60c110e05af3ac02eafa5554cab3f2bed687fa165ae399500000000000000000000000065a7d291364c2ee971c2e26c3c03a984b4c714286d6b49760ae9150f38127eaa8820f25b41016e48d4bbf8a000967eacff378e5031f770239fdae22fff53684329e1e1702d926933ed5e55b8302105f8ab5a913dc9e760ead076187a0d9a0dce02cfeecc1df8c645cf148ca657769f136500090de66f74c7f9456c422a6ecedfcaebeac415c3ce69b178dd433b49b08f10cc06de0916949d1af6deadaa79b205f71f23260d7466474bf934f8040ad1138abc34a7dae0091b95f5f70c584b35b385616cc6646ecff3441d5b715da4cbaf5e2ff91b5b39de2ee90100000000017319a76b0e451ce0ed629002ec2576571d546680fd14d4df7eb457388513fb855769af50645ac521ff5ce61500858447baa625edfdaba00a01d317f588562c7de44ac555f996736e0693ae2c2496eb20d1df5976eb3c91b4280a01c9ad0b73828e4e831b51c6a424a2f9489b0963967065ec1044b4147302606ee30a01b68db960d81ca25e3a912d0c25484343b2af0abc25ad085789ecd097e803f98b0a01ccbf9545ee7bda12ec43037403d913a779e1e7cab45458c939cdb95968bf884f4103a49ac6b3c212dca9414fc45a62e08594981a5655f19b637d6e770fedc590ca77050137de1b58290a0173efe5e26429a1b21db700e7922bdb4ade1cb73878b3bb8c7a4a87a2cda029b20a0198880c975adfeaa1a334cb4df958e0f775cff8a909b905a5c9702a20ff2c0a3a0a01e0282fd91eed4dd75689ac0b3059665c8486b83f9624e38179eda6477f9033690a010093d40b62d49ee402fc97bb3c22c512ebf74567f80b1bd4683d1549ece6df130a01a4413b59a3e343b36eee32b0c33bb5051a5e6bd34942c8079f30c58fad412b8c0a013dc63b2e51496694bf26ac1ea3c452e987cddeb40af8b73133c991034a89b1350a0167267f49a9cf716ab79c6efe6b6f807b2b3db27b9d7cfad737feb3fa1a09d9550a01f54c32237a4aee66d8045236818b90599551fdd10be53e66b040787d42245f1529c1b37abcdb5c1f1e67a84fa8729533a000f7f227ca753d0e615915a8dde3a763ad92fcab38c165a7d2ab4fad72fc09399b9d825e57809eeae56d509cb77b600334e1c479a3c2e3e49b91623fca539053fcc62ffddc41301f095b82228d75510972a4882eaaa66b3500ba13ef2b4f6ec89549929f4ee16bf5a28b72cf495d85576bb3e748f4c7df740209018b1e8212d9854ab00feb8311443ec307b619c61eaf366b10d0e052a67944e9f3512f3d36a8e95540180900a912af9b403dcc9717c25c7d5239fb7ec947581ab97d8db5f8f9417fdf1ef1d50901498f4d994af4e94ff3d9d46efe6f16b3fe6725d7299f6a3eb1bd13fc4c37167a2165abc70bc027638363fddc22894321634c5525c1386f73abadfd004b60e23692f4e788af5102b8cdb8dca181545218c90761885c7164932fce4d5ab47bd6263a315c074974f7e69b7ef1638cb369082165a7d2adcce79c5013b58c48542376bfe22315fa8575ffcb3b1a49284a4f63cbb90a8def5983ae815f9a9f658d7e167a69ced38e4c39e04a2ce748a0c139c04bfa079aa7463ecbb183144a03abe9ee112165a7d26e3c965b674295c9d340040c98cf53cabb7b95c39db64cce7c4486d8a3547987560904462a1f8aa5e60bc905c2e6860b3e59b0fbe5e305678ee737a5fbd6cb01aa4d8e310746a52880006327410350991cad195da351553a364622788cde8903730804ff22031e6bd6ec2165a7d28b8144f0eb72830046f96baea30553e89223f5cb1f52101a0cd1d5544c0675b1861937810900c41f1680eddca4df163f2b1eadc7cb203c1f707fad04ac2e98297588606f00418ac7230489e80000d325d44035f2b7fcbae226871a1b1842c1c87d2d1a61d9c9f72bb199468a51bc00686167656e00000000000000000000000000000000000000000000000000000a2e7bb6aad81fcd8597e31c5d042c539068a8b50ab35f45f9e682908290991842004800000000000000000000000000000000000000000000000000000000000002bac63e44e33c8d452cfe1c490278f57964dc1db0cf3776d222ef2e8fc4a10800a1bf9685d625e3bf3cc64d8ecc0be3e0ff3d0c2fcf9980f4bc571fe46b934bac4feb136b6e64f306a46ff2018fa8b85c3e566b4bd4418ac7230489e8000099691dd9acace5e28784e302cbafb6b10edc3d104c1238d4aad19d48a2f362f4a1f2851100f2cf57795e38c37bbdbef79c4978c62f245390e0a71e029e0cdcdd540f05bde5fa04fdf5ee3a635ef7781549049778a0090186cf83c0d4dfca5b8c6a0c3f36620e8453229e6e55e503acc6885e88ce4846b7190412c170b7f199536a358a5a5aba8e3c8527b0c0e58dd674524d7af974c30ce30be351190412c2d3c410a3010e7e66fe10f2d4c80e8e84982f189460e859f2f736a05f8f52d654190412c2c578a61595e4ae39155ec1c16f68f9822f499f710222717a5559c4421de8cb51a1a588803d26be431d4229885c22eeab669ec042979a36818d9222f0ff84bb7e5584f16f413d61af147feb9f66a108ece0d31c325209018081845160b5bf8e25b76f4bebb27fca720eacae7e9a20888a65e98e1a937ec7091565f089038e85ad5c352a919cee9b0f9049ffeaed78ca0c72b320225a4ef5f31d091b154f746dc2d6f0b898297e915fee3bfe3f81f54f97c71064bf561959996d5126091b0c34560909020bb7d2e709010b2e3f600901069ac8ed090100003567090300468a6b89010000000000000000000000000000000108929a4f090102233ced0901055f7da4090102731a86090100cdc61209020011aa9909020b4d4b8e09010a8e7f9d090100930e34090207b21d0389020000000000000000000000000000000008881afe090101d3a8b009010bf2ae1109010c6d60ac09010b75810309010800225609010983819509010b153a4d09010a286e31090102279d99090102cb5d4d090101902fa30901041a08dc090201c89c570901095a2a800901021e07a90901021d472509020c6c4929090200534a84090100e364e70901014fa67c09010c6765200901090c3e2e09010b9bac3409010205e1ac090105931d29090209ac9ab509020110d61109020ac8f965090105bbe30409010b6046b90901021d1d7c090106e75b08090309e5cb1709010c599ca20901022722de09010c6d5087090108086c3009020562307609010ba281bb090100c11896090109548f1909020024744c090105bc85a5090108e9c01409010a5aa5570901003818a409010af261e409010209f9d8090204554d6509010837504f09010bd8fecc09010a0796ea09040057160609010bd7c9ce0901041a08de09020c4a9140090102155fa30901067fd2c2090105a6e7ea09010c34428709010c3ecfb2090100ce973809020b2aad9b09010ab1a29709010972c18d0901017a1b7a09010c484abd090101264dea09020480808b090200b2b46209030c6d1bca090209db31e6090302f11b9f09020c0bb0e0090105b0b6cf0901084a0adb0901070e5e2709010154da5b090103f2eaa509010a880d5409010b8e240009010c006961090109ec132309010ac9b02c090104803bfc0901010c568f090100da8dbd090102bb92f209010688a79b090307418ccd09010c5b2f68090100f844b50902000c951d09010c1f98d70901077f727c090102080364090101d2703e0901068b034e09010c6cc7a509010c34f63309010c5303cb09010b07a45809010c0f9f1e09010c5b8c59090100d253ed09010285d21d09010630a5f20902009d281a09030c682d9509010c4780a20901040d1ea109020434051c09010bc46258090104f210ad09010c6c504e09010025847b09010792df4f090109ca9d250901059f9f5e09010937b8570901007b44ff0901066c5d76090107418cce0901055f5ba90901084c130709010089fa5509010b95d198090105545722090101fe1082090104fd2dac09020119aeb409010305e8e20901035789d409010b89332e09010b77c3b10901020088e50902007b4500090101e3895509010004767f0901053851150901031034af090106995df209010002c69609010944f78309010100099f09020b2136fa0901040d1ea20902082014d50901027573f2090103fe22d909010ab290a50901097e22ac0901013ef01709010aab32b309010234c8d909020c28143b090100bf32db090100089f64090106dee522090105e4b48709010815a7ae09010843bf980901000caf5309010c2fa02709010175e0b309010454d0ae09010111f9e4090102b458a509010a5bc1fc09010596a900090206bfce8b09010a71ff750901059543b9090100352ad089010000000000000000000000000000000102cad1ea090201f3de2a09050c2e620b090304b9470809010a7f2f5309010a4886fc090109a25507090108e1e943090101365ab2090105e658460901021cf2cd09010c60162f09010c4a12220901053f1ba60901040d1ea309020a4d1220090102273b3f090105ddc13909010c6d5d5f09010186f45209010a72a2ec0901005e4c5309010568f3e109010c634dd80901034cb43a0901012ce121090107154d0c09010459d2d30901050fd8c709020016a3c3090203f0c23f0901066cdc5c09010437ecd909010c6d5bad09010353b7140902003e2a4e090102b2dbf0090100a5d14709020987543c09020bf8e5010901005290c609010c6c4d880901008c574b090105622a4a0901045d31af09010179eff409010c15a9700901021b793109020740eea109010be54f36090102b46ba709010c5f934109010c3b56d109010a0c868a09010a418f3009010b8434390901012c19b909010c4ab2340901019024700901013ee281090209f116b70901071419e20901011717cb0901053655180902063f79a3090101d7baf509010c06dc81090102840157090105f284a509010c4b19d209010c5d72af09020b12668d09010c6d5d600912027ed3ab0901041a08e309020536343d0901014fa9d509010adae69c09010149b0230901055f5bae090106909d4d09010314e3840901034aa50709010c3e015a09010bcf492f0901097ca21c09010712613e090105621d8009010c59b67d09010bfdb485090100e0ebb2090101ff68ad09010b3d4289890100000000000000000000000000000001066db9d8090105c00d1709010439d92b09010899842209030c6c399f090109d4f0cb0901007b450409010bcd62e40901000389880901049b60ed09020740eea509010c492687090101efdcb909020b8e6e8909010a29110a09010b83dbf109020c2f9e320901064a8d7e090100ce589f09010c6d60ae09010a35a50209010c29d2bd09010a5b616f0901037d585b090108b1d0fd090105e50bbc090107ab720809010aaf94670901055a75ea09020c3c0dc70901000501ca09010c2c836f09010b9bb07a090107b21d06090206c1a70a0902034a91f009010005e4dd090100d74507090106bed42a0901001ce0100901001c9af10901022bee2209010b87fd940901011f4f5f090105c72998090100001fa3090206e0bd870901097befc309010b9ddee409010641054b090106bdab64090101b1615f090109db782d090104ad86a309020c3bb064090102ffe1e6090106909d5109010bd099df090203a2f6cc0901038a6177090301d35b60090101177cf709010698e33a0901022722ec090105e4ccca0901064ad21f090106e1f82209030b8e736909010c3c9ccd09010001769509010c358c5a09020849b99c09010c3eff6e090100ce9ada090104ebb8c909010282319309010a3aa6d40902085a681909010b0d00e3090105e50143090109a1fd5909010a1e12d70901054b95fc0901012d5d2809010535e59009010c67a83e09010240667409010bb2544909010032c3bb09010c5fc8e9090100c44f66090100cea21f0902041a08e40902065b8ba9090104b06e8809010a1f29900901078a003b0902052f62cd0902063f959709010026fb6309010ba838df0902066c695909010c6c0d960901064a890c09010c3eed5809010426203f09010554450709010c6d2713090106909d53090109fec7b60901040d514709020bdb4c2509010c4a8f48090109aca6cc09020938ea80090104f3dddc090100119a7309010c1f73c709010349a07b090109ea71ef090100cc0c8c090105aadef609010622c264090a0699234109010bce5cb009010647352609010300575a09010243293709010573ae6a090109fe96f6090108e198dd0901054b80f109010b8252e309010c6d5bb109010679c146090103b167bb09010142ddee09010c6d4bf309020002f487090103a4470909030b9baa570901009b6089090106a9fc7e09020c09704e0902076bfef20901058cd84b09010458680809010bab091e09010b9bae2809010bf46bd909010006226609010141e438090102b9ec0d0901000b99e70901000003f0090105e586310901014201c509010bee71cd0901056045e80901008774ab09020aeb250909010222c8f0090100001fa409020a34830f09010251347b090107b19d2409010be5f3cf09010b9b749909010a27d2600901066c6180090105c2d8b6090107418cd2090103a655b709010a8c364609010491086409010226beb1090100cea5c80901003c4e91090105e48c3309010c07aa03090106a0426a0901000bb32409010ba3e8df090209e52ee009020454d55c09010baa0365090106973de109020604fa4609010535eacc090101ba78580902005752f30901075116030901064a754909010086226d090100a4022509010076cf060901096dfe4509010abfa23a090101ff7a8c09010b85d7fe0902004714c409010a26aad90901081eb899090107add8110901013b032209020aff566e09010b85fa25090109f3b111090100c41b680901005c85580901007b450d09010822fbf9090100457c380902040d514b0902012f6c3409010189de9c0901054b9ead090105bb21dc090300a14f6209010c6c8c2609010192a2de090109e41783090100c6adaa09010175fac70901004575f7090201b817b10901001f119b090104082025090202283f24090106e757ce09020c6d55980927017b7242090209a3de12090102318e8e09010117e87609010c2a0ea009010655dfe3090109d7d0100902006e05d0090104554d7009010266c62509220006875e0901012d12a00901055f5bbc09010aa77d050901050fd32e0902054ba744090109ec1c1409010090faf809010c3dff8d0901020badc5090200538add09020a701e8e0901034c3ed0090107fce71209010b9ba44a09010c3eebf9090102de1cad0901007054df0902056d1ecb0901018b71760902016a60ea0902052a380109010386834109010c0943020902012e5dc30901008c3b9509010b9bb2cf090100cdb3ae09010ba91c8209010b2a11d90901021eca140901041a08e8090200975f62090105179f940901021767b009010a157720090108f325c309010133aebe09010c6d60b0090101236526090109a5a0bf090100fb0c490901012d885009010c6d37730901038f2f96090102d83999090206d509ed0901076ef6b5090209d3f65009010c3f088f090107e537e309010c6d1f350902052ade930902070e69cb090100922cf809020bdb22f609020abd6e7f09020c2fa0380901029c7630090109f31b75090303578c750901021e22db09010842a71c09010c3e24220901044b3eb209020b82b59109010c5d7ca8090109e93eb009010bab048d09020c2f9e3d090101fe0b190901017f88f4090105c33f7009010a0507f109010ac4e806090100cea950090202283f2809010b15d3f30901040d514e09020016a10a090107e0bd5809010010b36e0902027233e10901056b955d09020535e1df0902002024f60901013682c209010a16bef50901055d7fd709010b8646c8090106f5f04e09010536403a0902046ec0a20901002b95a8090109c670f10901068a745609010c4b9c2f0901028ec6310901071b2bd209010155175309010c6bef9509010476928809010815a9800901007d8623090207b82815090100091e4d090100affbfa09010bb9a65e09010ba1993509010a09e338090100d17ca20902007057410901000ca08809020b9ba6430901001ac23f0902083846b509020124ab4209010c6d60b1090100c4567309010ba1260809020896b44209010451a67e090100786d1d0901054b8bd609010b4b545e09010a03f2a7090105d4e7d509010c5b139e090109fba485090100a9e16109010bacfce409010b3baea40901050c3aa50901017112f30902015f77b109010c6513c209020c5f916f090105ab6cd009010c3e2134090102b3e4a509030027be2f0903056bb7780901000dcd04090100397a290902013d5b37090101535d3f09010b07a46309010c2a8bcc0901093a25e0090109b82eed090100508df2090200dd91bc09010ace892809020c6d5bb509060bfcddc70902012dc30209010c3ece3509010b3e868f0903047d7e3409010426204c090102ff816809010000610e09010c014c5b090100626a380902018a756e090105d79051090100e734dd090109f9e82809010a238a59090204149c550901046f84180901063e3cc909010a1ae1c709010c65f2e909010526f25609010aa5ba9c09010c6d1cea090100ceace60901002a6798090205ea01c009010be1d61d090106c43ccd090205e1c6cf09010081622609020128355f090207418cd909010a4be1df09010bb6ba2509010507e51b09020815b8fe09010a6885e00901064ba4170901072ed8a009010c098516090108a6bcce09010665c5b209010c5a2a4f090105a6b10a09010c6d5f2409010a4d1dd409020000002f4213a31700c52d80000c344e67420b1ab704a5bc08000bb7788c3255bbbbeb38000b29492732355f09a5670005c03e283a0123424bb175a4000026a632ba5e06932a0000467dc5325442c209d900089295b83273129fd5a2ea0219a18f3b09da04432a4627055d81a33227e918fb85000271fef532e60e9abce00000b2a80f3a0758b7da32db000770e63e3a924b996c596320001079003247f99c9d8e000b4d0e8e39073fb6c82ecd440a8e75083236740f40a1000092e9c43a1f8df7ae60568e087d7e8c3226fb4ec2400001cea78e322e452a760a000bf2a1e23227e9e9994800053e6f1631026ffc72b0000c63b6dd326889e5f27ddb0b757e74322f2986b25a0007ff13a332abeefae6dd01096572b3323e6add48ef000b103b77322f2986b25a000a27b8833a0e8d6c4876b9d702277e5e32353f7d377c0002cb4eb1322f2a57501d000166b00e322e23bb3bee000408fdaa32b559c150930001ae8b4832353113b07100092cee48396839099a805995021e046b322f2986b25a00020492d33a011358af8cca000c67ce1632470d1a37a00000534877322f2a57501d000a8b9c5a315af3107a400000e3610b32856037d41300014ee6ac322f2a57501d000a82cdc5391cf22a8106f29f090c35e03227e9e99948000b8e6c94322f2986b25a0001364fba3a0493ca3cf242cc008e84a13918de76816d8002055a44f93937a16920b38cbf09ac313e39100a8c4e8635d8010d07453249e64e0117000ac87bf1391a52f4ac91968905bbdf73323854e6c3cd000b60413b3b262a8e75ebfd77021935883b2053cf4d805d8706df0b103a02dff25dab95b709e5c1d83227e918fb85000c59670f3279db82d81d000227020e39384621248993e80c6d271d3a0a231555549b000b98ac0c315921673020000800f85c32bafa3b54bf000561f2403a0839cbb0842d5e0ba27fa2322f2986b25a0000a71b9e3908f0c5f6d0428d09547906399d6845237293730092331939038d7ea4c680040023015332887288a27f0005bc719b3226e34d8519000b8156563904fda2db7a578008e86f2432a5772296cf000a5a9f733a0b8d07dec787550016a93f397c585087238000003765be3227f923be16000af003983a120e0686bc83390209cf593a013172ae7a6400042db29b324642adf06a00082d5af0413115a56af1214b000bce6bce322f399174eb000a05ac163ab1605d1054bd0200145114322a411a26ef000a4b3ae7312d79883d20000bd7ace3322f2986b25a000408fdad32b552361fcf000c333b843226e34d85190004b22f80311902d7bb380001ba982b322f2a57501d00067168433b20fe394a61e616059fd59c4109b5d8bf7355c6100c343e00322e351fb379000c340f013226e34d85190000ce844a3a01f15c2ebb3a760991db9f390bb9551fc240000b1b4e4f3a0239cdb3bce0000a81e7d0319bd86cba86650972ace23a0748720be4f3000178be873b19d7fc7d4dd84c0c44cc6b322f2a57501d0002118aab410188374e3a8ef00001264aa0327540fe0384000c6d14fc39311765d581a000048060cf3ab4f1f2c9e2806a00b2b1ae3a11dae4391b31470c6d14163a01820f8e494f0009db2421390461326c5013c702f0b9c732ddde7a0ab4000c074b513a0743b2db55364705af16423226bf6c71b400082d605d41315cb3111725830007013a783226b7287ab1000154d7063a01cc4447228e0003f2d50c3a7c11e459d89fd10a63a57d32280db2d529000b8e21c7322f2a57501d000c006610322f2a57501d0009e779353227e9e999480000af040e3925a4a45e2ea0000ac939ba327d21a1af1a000480257832727e185a0b0002d458a0390100a8cec17000010c52fa3248064d118f0000da8a2d3a0ed0e9b1a06bc702b52639322f2a57501d0006885d393a0ba55a0b5b750007416eef322b5165c8be000c5b2d3c322f38c0d72800058b00f04107889732e852200000f83e6839320f63b67363a9000c88293227f8532053000c1ec3aa3227e9e9994800046db0a6322a310f645e0001749a473270b1c4023000013584ec32cd9a5ed9f50006716e9d3b07f8f75e3977c30c6bd26d39b04b2d2bbae3990c2acfee322f2986b25a000c51b632322f2a57501d000b00a2c8323572f1d7de000c0f575039422c207b5819b90c2a87703a0eddb98cd805400047521c393a62171973b0000c64bd2232642dfe22cf0000d2541c3ac944adbc6af9020285d23d322f2986b25a00062484d4390112b49e774c9a098ef5074106cec8a03e916000009d24f53265ae71534f000c52916c3235f0a06e34000c477c0e322f2a57501d000408fdb032b55a91ee5600043225a63278a54f9372000bc45ce43a0113c4a043660004f208b2322f8f995f7a000c67cb3a3226e34d8519000b951582312d79883d200000242b2532cbbcb1f651000792ade1390d52ef2a9bd7ba09ca489732b4f514442f00059ecb2b3226e34d851900093760053911875706fb154a00618a183227f923be16000636ed12420d54d6793aa46f000713a4433101d1a94a200007416ef0322b5236668100055f4b30322f2986b25a00084abb973226fb4ec240000089f5fd3227e918fb85000b95bafd332c5c6c073a1205544149326ebf7625d6000134e16a3a14b30b43ef950004ce93d232642adf6f090001197358322f2986b25a000305ca4f3235342678750002f51f033a0121c7e90d70870b892a273227fe2b33ee000b710d273a329c88d2b38b0001ffefeb3a054b72fb6af900006181b63227f923be160001e38684411bbf5bdae7f136f3000473d532891129477c0005382221313089c690530003101235322e35f0513c000692428b420f64f76a30f5e5000002c46a3a10b16554ce74120943517332434df4e2150000fe52f53a02f1e63bb65b000a4c1894312d79883d20000b20f09c3a14a66d6a4a19280408fdb132b5f2e34a2400081273f43b3131ee3eb186050275439332cf20e5b8da0003b3f5d541023f304d0a544d800ab13f9b390e5708800131610211795441018c4996257890000974b164324e4d465dca00013eecd932361f551f4a000a7031df32270b5984d1000234c8ee328bb4ffae7f000c280b1c3a03c64359b0cf0000bf29ca32b497576fb5000000e33d322bc5e1fce90006de9966322f38c0d7280005e4a928322f399174eb00080f88af32a0c55b412f00084335e73a7602aa3a706e00000bb86c32fa10818e533b0c2e96b83226e34d85190001667c68322e23bb3bee000000214d41d7b5c63731af9320042dac5b324632eab465000111e3b43261e4d7be230002b4520e322703ec2172000a5ba9cb390f9d72868d4eab054072bd32944b56d1110006587f43326d1e8e1224000a69c4f339076fa5a59211630590ec883b342759c39c98f204147a5939f3081604970c0000300f8b3a010badd48d7a0002cab8b832491a525ffe0001ef3a5c392416cd5cd743ca0c2e5f0d4207bbeaea5635c7000992c8be3930ac13d16c4002016f87a7410f83c93e549fbe2f08fcea67312d79883d20000a7a78363a0c1ae7522466f500001cf609010a4883f33295002dbe8800099a4f083a0bb89940c5325c08e0d2213b82ec0e8bd7584601361aa2322f2a57501d0005e62b5a3a4762b419074a00021b135b3b09696f561b5e1e0c6011ec323516f40c4f000c48e44c390317472bbaf4170521ded932ca2b38a4b59e0408fdb232b55165820c000a4d109a327c44d825ec70021c9d863b1b2e7a38d0bdef05dc87a43226b7287ab1000c6d32673a6f33da2e61798b0b692e47312d79883d20000166be16322e23bb3bee000a2a918f3227079fd83100005e11bb4202c7a7e498d8bf00056420d3322e35f0513c000c60499f32272177f5c70002fb1434322d3fa09049000055ca39390361855c531b1c0b689f87312d79883d20000101ad34322e23bb3bee000714a8333b153ff86b6d051c0459cb72328e4f5c2ccb00050efb313255eeb956060000169eca324f514cd56a0003e2f33a32fa0fb0f0903f06437414420c4c7755b6538f000153a21d329f1b55d3c5290c6c39aa3a8161871a07fa900353a595328206fb7281000038400e32522b4b46c30002b2d4b73227e9e999480000a5ca1e328d252c81a40005c643583106a884ee14e2092e58fe3a01026f4b05b0000a9ca949323e6a0cab2c000051fbf533303f44da28480c67cce63226e34d851900008c5297322f399174eb0005602a0731b3451d39205a04455c6d3901fbe2866d75a10179ecfb3294d52cc431000c15a7c33a01714515416500021929a4325da1139a58000740c96b322b5165c8be000be454a53a091a7d677ee70002b46420322704bcbf35000bf1f5a0323585b00463000c31b55532274f266431000a0c7e17390a40b88be151530a41789a3a023034743cde000b84328932353113b07100012c101a41010444773c3edad40c333d6b3226e34d8519000bd9877a39d50e65b32e207e0166a275322e23bb3bee00013ed6fb3a01eafa2d55967e09f107763a100ab9d0dcaa4606f92f373237a16f8131000116e3cd32293ca8657d00052cb65c3a01ca5d087eae1a063f71273a01d60d11e74a0001d7b805322f399174eb000c06d5dc322f2986b25a000283fde93a1b8ba449c9150005d4e9783226f5829a67000c33cc9b3226e34d8519000c5a027f32d9cedd57a9000af900943a089b049888ca0e0c6d52fd3a1119b542897b6e034a6a6441013a6e7b86475300027eb76c3a0a4d92817b1e120700171f316d23ad5f80000408fdb532b595eb27ab00052cb0b941013f9373d6810100014eeaa2322f2986b25a000a6835aa3228367d91010001493f11323641d091f300055f4d02322f2986b25a0000a4f4e939082bd67afbc00006728cfc420e5b0e7560396f000314a96832398270bd8400033ab9e7326e307aef79000c3311ea3226e34d8519000bcf4537323571509c5800097c86473a83b592d2a56dce070c4fdb32361f5b152b000561df723a0625dce8813efe0c2f51233a09b4df1cb823500bfdb12a3320e28e6ff68000e0dc5c322f2a57501d0001a66d463a1d95460ba1a0000b44f84b390f46d3c488c0000c6d559e3a08389fc0d7aa000b3d3ad4324c548b6adc000642be07420f80988c7a256f0005bf61b03240777a787300042c99cf322e23bb3bee00067828e33a02e6f65ffaa78d0c67d61e3226e34d85190009d4d8603a20cade380da16c00618a233227f923be16000bcd583a32353113b071000001cf0332a79099f37b000495218739118b31c2b3bf850740c96c322b52366681000c33fc673226e34d85190001efd1d439488fd710c9cb280b8e6847322f2986b25a000a285aee3a0eb67d22b09af90b83d7c4324ed6638aab000c2e95293226e34d8519000625f841336fe47a97df0000ce551639265b3b9f93da430c6c7aa332359a4b0738000a35a50d390360bad55c56ce0c29d103334e3a88b355bb0a5b5eba390ff3667123fd5f037d51d3322f38c0d7280004d1b703410116173342e9d39203b1a77632d22f53217f0007aa618d39056979b466e08b0a669a66394c33e95bc59c6b055a725632140200c025af0c31ca5a3226e34d8519000c5401d632a59cf26227000004fc0c3a0808c7be6cca000c2c39c7329390545db1000b8e6aa3322f2a57501d0007ac1aa83a02df3f2def1c0006c148913279a0358a8a000349752b3227e9e9994800000271a4322f399174eb0000d6411432366c8a05be0006becd87396731bacec6ea320115ac8f39365b44d9104000001cd7a332a2679d09db000c5d9cf7390691bf24a778000011d71c32353113b0710002227bf232583868d1e9000b87ee7c324f1847a7f900011de551322f38c0d7280005b1895c3226d9c1babf000c6d27203a24ebdbb309316c00001fa54209733866b2c2246f06bcb7a5329ffa1e5c36000954eaff322704bcbf35000b8bdf423a010088213e6480064054e8323fe22a03060006bd79c33a01c218ac27be00080b141c390110d9316ec000016f420332d0524136b50009c024683245b7e39c410004ad775532fce0475ab2000c31bd873226e34d85190002f755f13235304312ae0006728cfe420d36eab58c580f000bd096c13929ef33698d386a03a2f2ee3234605e15ed00038a5d1a32d2abdd4192820134d0213a1935d64a16110000dfbd813261e407206000095f8d5b3a045624f2d9960006923d673b1db0f77631e6d10227021f393b83bfaa6c938a05e4c798322f38c0d7280006263a283b08373c2f035c00028cf8df41728170c8c9bf800006a9db0d3a02db1f985b8c7e0b8e6848322f2a57501d000bd558c932347ce99d770000016b3b323a75b9a235000c3563733a017033479acd1000d3f275390188e6d68b0000082d4fa932378e75b9e2000c33b75e3226e34d85190000ce87f532fa0fb0f0903b04c053f13b6d651a9aac3ddf0282228d3235404dd53f000a3a97153a015f89e2fb780007b22795327bf6898eac000b0ce48e3a0f8a712c57e24205e4fd9e322f38c0d72800099498873903dd5feaf0138a0a1e0c81323665a5b9960004b901473a143eeaa83c33040101b0eb322e23bb3bee00052ca8e63b1f927daede6f0e0b9510cd312d79883d20000a83c48233a069040d710002187bb53235404dd53f000b2a55813a08548c0cc3f62a0032bbe63227f923be16000c5fc8f9322f2a57501d0000bec65c3a23dbf0b169ae00004a69ab41030b894a846e300000ce87f73a01ed016f9cf4760409455532b55466686d000609eabd421bd631a24dceff2900002a3b4202fe9be75370940004a9e668322a369ff16d000a1f1d74390508d7a8a7f4a5070347dd329a3b1e2ccb00050e6ae931befc94585ae9063f84e9322f38c0d728000026f16932353f7d377c000ba831813256617c772700066a2193420e410868e93e9f0008faa6db392be04272f9e0000c6d55a032a5d99964b4000c6538953257e6e53bdc000625ff513b0344ade14bbc800c33e3793226e34d85190004261e29322f399174eb000554432f32814d171951000c6783dd3a103f5fdd4103e40c6d1a783a5adbd9a960360006728b2a4212e9a6805cd8750009bd46d7324f0bb5015d000408fdbb32b559c15093000bd959c5322f2986b25a000c333b8a3226e34d85190009ac42213911b23c0d5b7ff40938e1963a01064a5af40a0004e681cd322f8ec8c1b7000b6eca453127df64b66fc9001195e13a0477b386b988800c1f697b3227e9e999480003499be9323e6add48ef0009ea638e392ac8b1168d99bd00cc08fb322a31e002210005aad245323d20c1d1cd0005cef3cb421838b002e5eced0006923ee13b1e93ad979a5ced0c1cf73e326427f6602c000bcdb5903a1a8d6cd5f035400646d462322f38c0d7280002f93ec43235d5b02c4f0001a6764c3227e5b2c133000573a11c32f91c1a8f723b09fc298632775d7646910008e0d2283b829b539b31df9804b97d763a143eee382fac040b8244323227f923be16000c6d587c322847470fb2000656600b326650ea8021db03b15e6f32507c5314350000e9393232c4eddc530a9e0af6f14431a3b5840f40000c6d4101327aa8019a8c0005413e8f310740d640d5e80002f2b0322f399174eb0003a43b9e329d482b46a8850b8e6c9a322f2986b25a0000548765326bcd4cbe2f000609818032a9b00aa151db0c096cf33950281c343601e1076b1281322f2986b25a00058cd6b532353113b0710008c9471c3103179fcad0000458555e3297694bdaf1000bab0935322f2a57501d000b8e6aa8322f2a57501d000bf4684f3a7566180983610000061b86322f399174eb0001323624322e4459d8470009e643a73148c27395000002b9d1b73227f853205300000b82ad32e4c97acfd4000000028e3272ca4cf3b400053d9be03a12ea5ef2ac5f000b18e15e312d79883d2000014202003a1907b0170af9000b58bc563a2b0507f31975000c63d3cf3231f6bcd82e0005602a163abcda30ed87f9000087720641024673278e1ae3d40aeadd4039213394446adf22021bacec3b24315eba9e602700001e0b4154e823d15bc40d970a3481993a4b68e4dc3ad39e023de21b3a23de16d93a5b0007763a363238bc94b692000be5f07e3293b5833a4e000b9b65df322f399174eb000a27b146390b27665dc178d3064d80e3420c737b498caf7a0005c2d7213227e918fb850007416ef7322a4b9a52520003a510d83901095ec5a2e0fa0a8c35093294cdf8fc23150491035b322f2a57501d00021d3bc03b0ab78157a4c37e00ce8baf32fa0fb0f0903b000fa2cc327e392b05400009d99ac233aef79c2785d005e46ca9322f38c0d728000bec8a473226f5829a670006967a7d397046593a118ec4000b7d393227f923be16000ba1e6ae390b2c4226627a0a070017223901b96e792e82ef09e4ffec3911e35b1652b560042db0b232462c302164000ba761bd3237bd3656ba000676ea733a5dbf7224e11a000604b632326356d6040cbf052ca8e73b216560423adcf601827e6e390dc90325cb8e1e005748b34209dd1c159a1ed43f075111f532a0bdd6064c00062e188b3b14db1d1742c7400075d9423297e4b847060000a3ff5432353f7d377c000076c6f432355f09a56700096de4ca322f38c0d728000a64f3a9322899122c4b0001ff71a43905659b46436c810b803bb83a01404f8da97e0000470bfc322f2a57501d000a26a09132b497576fb5000811e76632c7af15dcdc000765cad93a12bcaf9bcd180000a88d644106417467ec93063d0aff3e2339169487f5f8635c0b85f5ca322f2a57501d0009f379563917bbddab1c902100c4129d322f2986b25a000058bcca39a1354317bc730c0061860c3227f85320530007fbe6763227e918fb8500004533e73901d71afe86667b0408fdc032b625ced34f00012f69274202159c59e54f95000189ba8032353f7d377c0004b8c1833a143eef08cd6f04051a105e39017993b18c12ed00b1e459422b44709d90f02022009defb93a010c78a82656d20c6bde823227e9e999480001708b86322ab0dc61af0009e4161632280c4148ab0000c66712322f48cb99b90001668c4d322e23bb3bee00004533e939021c02604ef86101b80ed13a04c708e99eb213001f0ece3235404dd53f000407e2d132c0132d7bce00021cddcc3b2ac9462303863306df0b253a01ecff09af6d7a0c6d4bf83a2506f96213554b017b6990324918b12478000976727e3a054aec79d0880002229a9931970e3c12344700e185793227e9e99948000c242c1433463b1d73874f0655dc2032e987d0149ac906edcb9f3a014df54b28c500006e035c322f38c0d72800042db4fb324642adf06a0002666a963ad3a3e8170b52da000610a83a23dbfcdebc59000101ad48322e23bb3bee00055f4d06322f2986b25a000a9dedea323d7fc083bd00050efb593255d3c31e40000520452032393a611a4d0000ecc2c63108e9bd84d00009e6f9d33227e9e99948000090f18e3235404dd53f00052edc69390426ed2c5958000c3311f03226e34d85190001ef7a80328718d272eedb00530ded3a01ed016f9cf4760a700f3232fa0076cbc22a0349f0d93af335a86a9ad80007f4485a326d1ee77a53000b8e6aab322f2a57501d000c33b5a73226e34d85190002de17ed322704bcbf35000070550141012188e031142731056d0fd6410806dd539f0a01ff00f97b5f4201893695e0fd2000016a500e3264e2fec96d00050bdd4831751463e649b2038261393a019cbae534bf000c093d4e3a010f01bf73adab012e41a332ea013aa8ae00008c10f832d12ef474dc000b8e6ca3322f2986b25a0000cda138322f38c0d72800000040654204d421e62833c03f0ba9117a322bc5e1fce9000b2a10df322f38c0d72800021e884a323fe87f4216000409456432b5978c63310000975f833227f923be1600051410b9322f2986b25a00021759e732603dbe2ea7000a1569823262123ea6010008f31021390c85bf0f063b2a0133abfd32353f7d377c000c6d5bbb33493d3f125a0001232c41322e351fb3790009a5a0d33a64f37ecac9ab4300c031e7322f38c0d728000101b0f2322e23bb3bee0005f0aa3139043b3f63c9f1800c6d27233a23d4bdee7dc40002ba40013a0e6352dbcc0c0002d0f79639665857f6e6102706d49ab032ac1fbc1d4b00073dded43a017b5a3863100009d30b333972acb11ab990e60c33b9853226e34d85190007a189fa3226d9c1babf000c1b00113a0d4a1ccaf963660525c17d3241f338b0b35507019eff3226b7287ab10000922b1a3903b696da1634cb0bdb20ed3925b4511078d8430aa931c439d676e7eaf231530c2e96c53226e34d85190001572437396552c9f50f90d8029c657f3946e15c63f5310009f2d56d39187f8e40142ec402f5272b3a011f627abfe805021e1a8632f34cb6352400084082f1322ba5436090000c33177b3226e34d851900044b3c573914b05b5cfd693b0b82b5a0322e35f0513c000c59f4ca323003a453f20009e52a1b3a057e01a687f4440b757e7e3906d2eb66616e730c2e95333226e34d85190001e6c3413227e5b2c133000171e5a632357cb347210005b960373227535746650008926caa3228334705b7000ac48647390265b9f32b63ed00ce8bb43a01ed009eff3176021c9d983b4bae30b82e98ae0b02ebff392fcaa7f24bdbf60408fdc632b4c0045e280000164d1832353f7d377c000700f10d3287884866d2000010b3a832a5d2797dc200021e884b3a032245fe84ab5b056b8d4e3269515e939e00052ca8ea324f514cd56a00002025393a0fb1534e04d000013609b13915cbdee12eda490a1111683227798c65ae00055d6b1e322f38c0d728000b6400d432292afc676600001e837a31b5e620f4800006ec820f322ae185c09900052cb1fa324c8c6c883c00046eb13a322f399174eb0004eb082d39b11962c38c3731002b936b3227f85320530009c65375390891ddad87317a0682b7083b174d8f61df818c0c4b66f0322f2986b25a00028eb3d33a36c9bb0e48e0bc08127dca3112309ce54000071b25453a23df06aff8f800061a1cef390bf113506fe400090f735732c1b0e4fa17000a277d91315af3107a4000004ee4aa4107b3c18f3a5781550155050732376114c7e50000afad133903328b944c40000c65a3413226e34d8519000462d19d3a591ee49f39f200080f8a4f3263012103950000028f2132988f166d900e07b4572341037d13364a202bac00091bf53a0c98000ca3c43f00af3b3d3226f22255f6000bb988583a5c68c07929a54f0ba192a2322f8f995f7a000a09da2d3a12ade5cf17fb5500d178c8327996e55afa00007055063ae1a842f819169c000bb3733a01ed02403ab7760b8e6ca5322f2a57501d000004e06b3a01ed016f9cf476070221f939063c28b30f73d50124a899323857b7fb26000c6d5f2f33a033651a520009e8e19a3148c27395000000bec98d3a23dbee09eb7c000b9b23f33905dd821092043e08862ab1322a226a42890003f33c6232ea47736b760000786b413227e918fb850004b92d0a3a143eef08cd6f0404455c8d32d05fc24879000a03ef193a0eb1c5db5e4d220588caf33226e34d8519000c5b10e1322f399174eb0009e6526f3294b5a05646000b951586312d79883d200000a978673227e9e99948000b916aea32292afc6766000b6080df410e9d01ebc47c80000b3ba8f63ad571ce527571fe04c44993329ffdb9020dc100f9bedd3280a1905b6a00015ef34f32335fdba604000c6512293a01ece3cbf11b760bf1f3c039195befe24c2db105ab42243128df73f010050c33aa083226e34d85190002b3e3193a02c15290d51a2d0027bbea32fe46e8637d00056ba4b23a879e9af34cd919000d3d7939b0bc4155d517000039754e325dbeb7463100013d3c9f322f2986b25a00015352d5322e35f0513c000b0794c4322f8f995f7a000c29a2c33227e918fb85000939f3943237dcf273ad0009b817f132772c0e2b8700004eb23b324dc765b2140000dd8eb03274fe84e33d000acc59753913f21f0d2a8aef0c5c93b8390e823c253e9c5a0101b0f8322e23bb3bee000c340f143226e34d8519000b3e6be53b047925cfc980ef047d5672323664d51bd3000c6d60b70304261e35322f38c0d7280002f911353296169ef05f00000049d33227f8532053000c014ad03227e918fb85000062682232491981c23b00015c5b473227e918fb850005d40df2322fb0bb1d290000c1a9563227e918fb850009f9dac539024d3cbfe00b3b01b87863391914a1e61210000a2384053929d705773c4c7506bbfc1d410f4373bf6c36a0000c6d60b832afbce32ba20004146d46323fdebdd2d300046f8152322f399174eb00063e242b322f38c0d728000a1ae0443a0f6d2bae8dcf970c65c71a3234947f90cc000526cd593257d4866d67000a6336aa323cfee157fe000c1ad8b439382abfb5454a1c00ce8bb932fa0fb0f0903b002a67be39014b90d8e58be905dc123432e73b128829000be194d73a022c25efae220006c432b032611fea2259000582b271322f2986b25a0000813b65390ecab0f2fd052f012835a832cc9a3bc81c0007416f04322b5165c8be000a3e3cb73227e918fb85000b0ca5d0322e35f0513c000507decc3a47a61ee0f77500080eda1932afcb943939000a683dd3323fdee78bfa000646b7ea3b02a1939118b000072e6b2e322f2986b25a000ab6f94c39038d7ea4c680000c09824232292afc67660008a55cd63261e318b5380005ad30d13226e34d8519000c5a0f21322f2986b25a00055078a832b847a7f463000c6d5f303361f0b19e80000a4d10a739170b9daa6a0a2d0597bbcf4108579668a4b14dbe00000024890100000000000000000000000000000046070a519789480000000000000000000000000000004c070a5bd900b07014da4ec2564c7d415dd26086de57d5892db75a741b8a7914a569ea3e0d42070a5bda0001052bc651b4b2f3c4717452f8b2df5c1fe5d70a9764e23b3480a1e2cb51ecff070a5bdb007a19b96ea6f1e8c25e44d7044bd35e154f7482376b415639af9a6a5c75226058070a5bdc0059fc0bee7a75493ded34be59b2244fbd6fa601aca2166a2a502e7cb8f759db86070a5bdd009ed4c7d22ee24171a7d88a9ac51a325cef4ccded0d8f0001cd7b0a343c0b4144070a5bde00fc3ebd22b2b6a8ac6b9354b2899fcdfc4b8b48bef6cd006bda7e5448e086ed26070a5bdf0052fe424a41522a8b5a135922c11e8d7a677bd34a4dd8a4ffcab16702712022af070a5be0001fce0618fe03a11641079772dfb47ea9c70977a4352da4e23242e99a62b7617c070a5be10034bb6e012724ec20df66d1c3afdd8f4d2aaf9e4a34f71a01e92cd5905e582245070a5be200004427d1ace82b592ccc1f6203976f303867563ea73ae38d02a79bfef1a6edf4070a5be30089643cf1f5a9c9546c0d20463f38d581b137bce2cf72c00ab7bbf0131c22f2a1070a5be400aff9eeac65806d1c66018f86da1f38ce6b27ab29ae3aa632814746a044882e2e070a5be5003a47bd191ac24092ce50ea8e453e59cfdaeba1b200abc548b0bb7d091ec9497a070a5be60050c43f02a40a6d9556a6c840188342f6eb7c2bbaa896d8b2265d05aaacc4a65d070a5be70024c64df2f5eb446eaddce1a37a6ce46c75776bf92de146d07a8d4cb69d351339070a5be8007f752fb729bf0a467781688864ca409005b9a964a34da91168504dc0ef10f462070a5be900181466e736a1dc90a16efd13ccecc9b84f6b5f39e25ed44c2c8e46e8bfb5b55c070a589d00969e41df0e2217d02a31d8ebac73eb0cf2b45d57ed199845058af105b41d901f070a589e008ab1c60c33a91ea287dc4079b2fb7b5eb8ef807bcc8cb957cbfe2d102cc89c00070a589f00e0e31549e4bda379a13f03eb9285418bed284e0f522dde569bf6ac1c047e323c070a58a000844c9f3a649b69e3213ab713ebdcab15c145e85aef72f45a4f616468fdc6aa48070a58a1000219c741a1e12162fe37b357c3ac37e96fd939b5844d5a119eaa6076f7131690070a58a2004d4f4425e195622436426bd2c8a9ee8629101d4f80e03dbd5dad1c0dfadc1cac070a58a300f6a94d8f94e59ace4879bc3204ad6a0cc2efc6b3acfd5d43178778d89e09f4c2070a58a40083e2ff8ed5502443aebc3612421ef9228e68ecd8d73cc6b0b903dbdf68fef413070a58a500aa7a24c43765fa3697f75eb6406c945b513deaf565a044e1ff2293356140ac21070a58a600fb632921c2e209e29aab606db5cb6d50da5ca9851d53539f6f2722f02afb42dd070a58a700c9c583e5a03fc42048095c1f0819ede651f621ce071ea3f1c0c9ec0a686c8812070a58a8006accbfbbe6ed139abb0bafc88a4b45702cb420dfb7d7ded9511474bb58d96776070a58a900761126e907483ea2b8970b4ebdb0a238232dfb441b1c8f2ddea27ec9b1a71de0070a58aa001b0f40f23f75a59f9370305b7eb807e05b9800cd0fcface9146eaf6069f9ad88070a58ab004e7b5259c647f7ed408e7849a1a9fdc1babc3f5683ad2b7f46d578582c8820c9070a5a4400483f690a940438c2ded7a60851005b47fa493165b8b43ef6924dbe160d4aee6d070a5a45009e6c570dbd9843aed510c565f4535af16d0fd421770c0422e546c7dd0d5b8583070a5a460047452685d7a5cd8355a1ce26626569fed1a1fdc0faa7e2445bdd845c43067313070a5a4700833bf1d81e5f19cd5b10c47262026cf771e74f41dc120e6088ac3e84ab24522b070a5a4800f7239f9e20d0c1c89580de60037915044f1063e531d5decc3b009dfb4986bbe7070a5a4900ccecedb6040125baf8c4db45697cda7b7aca59f21881de33e209a7da5f3b6772070a5a4a00e92d739f170b10bca3a612a42017251e965f96c07134ddee2d1bd7f08a758353070a5a4b00cbd5c1dbf026d3016e24617c3ec58dacebbf52053d498cdce73fe288e35736ca070a5a4c0031bb811f4b442e9064058eec7e6af8436807d5b6e18c6f55bfa61eb09a9a74e5070a5a4d00fecf1f2b854d4475d03d5fc2b273fff943ed8761a4cefa61d736c14fab964056070a5a4e00d9fe134bdc81711d0cc0ad49000eac09c26fe8056f8123275859738bef6554f9070a5a4f00dd3d0f000c2757f5d7cc6dc1cf8d206e389c2096c7245115407ec6dcbdc66ae8070a5a5000a66557de1c011710c5c0959f6115ac01feb52f15d442e777e001c10a100c22c5070a5a5100b8e95f24133c706b73456be9f8ae44fc78910b8d5f4ac8288dcd04e641670db5070a5a5200e60bcc15a211b87e78291de31bc83c15e9bbdbe37bf0f9a9a31df3b2f1b7171f070a5a5300c055373834e863debcecf8d98d5080d24b87dfd25e5c6a64727c242ce2c36916070a5a54004ec607c9ecd47fc7709ac41174bd6252a1fada0d315ff9e557670580abcbfb50070a5a5500522ad9528d5573d6c2fd622528c0f8772323b5917b68fd9203236601edfaafaf070a5a5600fb723db3442a4f97502dc1ec395c7c314c179ac09cf83d0464cfd6a17086505a070a5a57007cdad97921458cd551b6b698bb613bfcdb794119645750f501a15afdac8f8175070a5a5800fcce22de3b7e5baed5e18539cfbbe0034433a54bef36b1dcd18cfe3bbe018a3a070a5a5900ba2d1cf8b0bb4e1b7f654692280c6272eaaa99d1f039e009f079788afe79f511070a5a5a00c2d5ed043ed89ac456d1c6437b30052acd27e72efe333253955de80bb17bf7ea070a5a5b002ba9ff3a179c20f7098527f59a0436dcea645039374fb8b5e9a1e8f04e66cb89070a5a5c00a7f90eb65ec0ae0ca0a287da1ca4549db2d39ce48ca428e1bb086a1247d34029070a5a5d0038e2ca4316d7cc8e4b05aec85e45edf2af7ce33208d854adf8b6a07b180a2b9d070a5a5e0040ec7e54e7adccd265b101112a16d24b62a4be8da94b079e14130002018f2a49070a5a5f00a03775c79a9b5329b903efb5f30d201e7dfc8ef989e5551013282f6ba35f0755070a5a60000dafa13fb06390c0d25cf4d9f2aec84a523dee101ddfa376fdac461d6fe0ae2a070a5a6100c98a0223c4bbe9fb0e68baa7e3b02e2e168a9550b2d9ac46b6e74b0ddfd09e76070a5a62001a7c9638d897c0b00964a9d0915ef72ffbaca9e688024ab2c67b1be1426a5c6c070a5a63007b6a4f8716bb07b55a43c9e13559496461ba76f9e466cfd957eef6e724f3c7cc070a5bf3001d1c90cef2d564ab17f59b63c8788f3be066d482525a85a3fe3e43b7a22c86ff070a5bf400192576e86759208e7aa01ee996695330ec3bcc6c408b69f234e3cd95703b6322070a5bf5004d5dba8ca25cbb3168ca282d3e34537d0f7fb8dd61b845303e510c9ccb99fdda070a5bf6001484accca40e59a45debcfa2009363ec9704434d5166c0df4ac37eb4d3e18344070a5bf7005fa09184cc16008608b7215232cc8e63c8a1accbd64214c3b3ed93884be5b111070a5bf800f2293ba50253e8df6a47e95464ff5b61e95878c9c53f4d205c8aa487278c5b17070a5bf900276aa770734e4fbe34b9fc1dbab4a14178a093479f334629236ac6878f60ec05070a5bfa00075b036c3c3bfc87c7bd423add72d400962c1b2bb09685229fcfc14a7565bd9b070a51b489480000000000000000000000000000004c04cd9b8b2106a6feed0c4f106fd10b6d30c1bb5f8f65564700000000000000000000000000211f200c523b09d109e03f3b8056af5c60bcffffffffffffffffffffffffffe9e13f0b83b5f9d132b6c17ef5018020ba12000000000000000000000000069bfe8e0a44533df10195ffffffffffffffffffffffffdb7d00000000000036bc435a98934efd0a44a69451011070ec340504ef26d40a44a695b1025d0894b4c99c538cdacb56dbda11ff0887cb0b1a6e0055ca6731c49777a929640055ca6839029cede4a9f1b800ae069b094200ae069c2918196deca400b1fc8b1901a3f100b33c1c117dfb00b1e7862a01baa543bc0c193b32210f09889f0c6d1a7c03053f6b6bd153bbc006202568e5e5a10000000000000001cb8ac9168b49b753053f6b6cd16055527534040d9c1cf400000000000000079b0881c03aecc408053f6b6d09420548f9f52979b07dfa730c6d60be090405456c9c4109a411f82576c00000f2114c3a27009f217ebe4300f2114d610469925f4a1f61b689639ea50bd2b85051050ce93d3d48ca6800000b030e284ad8d726b7177a8000000b02f4774a1b1ae4d6e2ef5000000b029f8049056bc75e2d631000000b0070bf494328a5b5d58c4000000b4d1edd4a6c6b935b8bbd4000000b199e9f4915af1d78b58c4000000b4ed69a4a6c6b935b8bbd4000000b7d1cdd52032d26d12e980b6000000c6d60cb030b87fdd74a1b1ae4d6e2ef5000000afc3f94510360051c8960000000000b4eeab3510a6b416f503214170b800b78f73b030b038c8d495150ae84a8cdf000000b73e520490ad78ebc5ac62000000bd892f2520333202ad91289a140000b7dd0e0510333202ad91289a140000b82bc754902b5e3af16b18800000b4d2ea44a6c6b935b8bbd4000000b02d4c74a1b1ae4d6e2ef5000000be93e154a6c6b935b8bbd400000022d529f499c850dc9f73c57cb8c022d52a02158c37cee022d52a1215bd28a11022d52a249a44128badd005e6a41022e6afd4101795c4a1090baed08f339cc4212d33a6c2ca707870916d1824a04e5f4dc8a0adde6c00a7f326e41e461b77256e16be7000f0f3d490401932517b3fc7ad90afa902a09010c02aebb81e67cf72d3850f4a9741ad2708413f9b50b98862d89450000000000000000000000000000000004c7e4bf422e0ecde667f9ef9f0a273f9109010a277da60901000f7641490401932517b3fc7ad9000f76423a337c122fc743c8005e14ad22033b470c005e14ae21033b5e6d09ae9eb542b56cbbd59d68c50509ae9eb6391231e18ed2a25502d98b76093e02d98b77290c1721db33039809cc2951409e219d03980c012918602f707b05776b8b412db9e9dfb91d30270209fd9c5101e1565400c1547796fe0572bbb95201e14f63a56780c596fe0c6016a14206f05b59d3b200000c6d60d60309fa845b030186bd794246b6f28058995e25029afc2a4acbcf470ecb4611b1640180c4214901f0ba352790d66a2b0c6d316503059cba7c420169206012d66d950c6ccfcd49cbcf470ecb4611b16404cc8e9271020d237aadbb9c28fa0ae2d118f604cc81968908a5ccb1b2277690de0a117060d26aa67604c272d4aa0a0000000000000009e7d717ac5d7457e053acc2d704c272d5aa0efd83f871ffffffffffffffffffffffff09aad0ba04c272d641013d0f580000006904cc8e931901a9dd04cc8197310702d6fd34000c2eaf1a81017289b22aa3b16ff45006e60b3be9010c2eaf1b992cf4e86ab5dd1e784e3e0f64598a0466709f5c0c2cf1828101701beee7e095c8e392fa622bd5f4980c2cf183992cc31bb576c0995cc38063a08e62721bb41e2300b7d3c2a35c86a7970000000000000000000000011d24ab6d02af894da92820667cd1ffffffffffffffffffffffd7df99832e0c6d60d80305918767094905918768290dd812e21905a4deda410853a5d6d71a276705ae0b3a31028252ef13af0597bbf1290163f41e590c67016429019ee4d4b10c6d307f1a9f51bb08ef74f3190390d20c4d92e72152fa90ee0c0fbb8622058c16920c6d5bdc0a080b0eac701b441e120c6725bf410853a0d232210e5f0c6725c0296cc8a9e03f0c438b180b650829147ca1bb04f95116eb5ff9657ca7f42afdd693f0cbe10e02e6899e4207dcd2c90743f2ec0512fe413103c27d7b9e2e02e6308e09e20c6897ff030afc3fafe969fffffffffffffffedfbc248ff1b9000000000360051c8960000000000b0070dc612378ec2cd291cbbf2cf305e60b0070dd99013cc0f3c85538ff6749a641faec2326f41b120529427bb9fffffcfffffffffffffffd55d0a66dbac5064d66fb828b05408e8a6102763c4996a171f6c0b3482805407ad81904a10d0ac4613ab10fe36165698d92d3222b0f000000a96c9c030000381b01053f42593414d4f0a652a04798000001053f433a01ff7b6dafc4e90000928a197b47f20000928b3a0b6f52d6e4f0dc0000928c095000009398297d520a8af0000093994903d5da2ff04d2720c002cef478210ca1ce4102cef72d410100c8e86d71f8520c191f16090106534d6a8903ad6a528d098b1fa84f4f9d603bbc395a0652ee33894a000000000000000000000000000000000a46e66309010a4c18f709010c66f49d090106b203de49088c62a7c2a6c755e40c6d60e8030b469a100306b251d4510139aa72d1558ca9d2e60766ecd0030b469c0c030794a2f949088c62a7c2a6c755e40a45d5720307d2e0df491652a365f24d502879084d1080030a05a0e2210748ee8e09f413cc030c6d60ea030937b8ac0300d25f66210892e5980c6d5dad22031048560a29115113d28d081eb5a8030b2e0aed19585f040507e5a82103085a2b04cd9c332106b7973603d46f172a0109289554017113ca030c6d5db20300460834220329c85b0000219f1a846074009b618d030a73f07f1ab43b6001b7ada419c65d400c0996ec134ee404c2732f211aa3927f03fe2c1d030353b7f60b380c6d5db31a3abf100c6d60f00300aceddf2102625a0004c7e4ea11c6da01e86e1b22028cc29f0a15bb362206eb07d007f5733c030209b01919dbb01e084ac5aa030b61a7281a0bafbf036e1acb22b70ce7ce009245d6194e2cba055a764b1a0563b001c4218f21025d6acf07154d67210e9fcb4305a6e858030b85d89322576d35360209fb09030a0ca9731a75e1a3008ff892222309b67f0aaf94e92203473bc009e52f1a1ac98df60afddb6c19bfa5a109f3b14e03069bcaf61908c168064e39021a0a3553000092a9197b47f204da6b30210782e8e40be1d65f1910357b05af91230a010a67fed30301e86b88030c4fa61803086b56642214c5e370001997622205c1155b06bfcbf1030572bbe3290211bc7b010c6d260a2102a67f98099feac52901cf513a6300d1a9c92111dd4312028be870211c97a7490b2354b1030a4d1e190b0100fa17f621018376df052942b6216a5e0b5708f3266f030ad6cf371ae4e1c005931d821b1e848006bd5ed82110642ac00885103b2203146d930803586a1930a2740c6d60f9030c0970970b050a48873f1a2171c00c59b6cc1966bdfc0ba126651a45ace30540f4172101bada2a0a1904cd11b5fe0803586c1932810402723509191d8fe70803081119325d0e0548bba8220256583c0a27d2c20300922dad1a2dc6c0085a6865030751124a290111374137080308121934135109a2556b197bf8f509f96ba8193084ff08035872192f94f40548b655213234fdf00799169219232c410c6d60fb0306a0432a0309c671701a62595c0abd6eeb030597c0602a01ab469f0e0c6d3c8c2101842cf40c584ba82103996bc002757fc41a554bf0056bb81b2105c1155b00a39949211e51d1e107e45db72204d3c2b605f7d3fd1a4efea80a35ca191a287b57000083301127050063ee330306900f9b19b71b00028ce4491ab71b000070581a21098d0a7a05e4eeba1bdab0310820170d21ab78c2a8097ca29a210597d598083846eb030a8933aa192e349d05849acd1998e4a004a3d00411e7640a1577771a72db3d009cacab2a0211c41a87080358781930826d095a486f19087d6409f5567a191655ef00267c4d0303a656781a1049d1046b17bb03058bc646113dd2049b61a71ac65d40000040a62178bc2f7606468d3f1a127ba4060706d4030c6d61031b16223b0a61e83f2901d637ac6b09b27e6a21046ea0760a286e9c19994a5d078fc61f0300da92ba199af5a40110b794290185dfbd4007711d662106ad3c1a0c6d5c0a210581026c0a1f29d11a3ccaab0c5f91fa1301360b00ce12210bbbfaef05e178911a4553d7071b2c33210183719903a7fd1422026cb41b005c86350300f85f440302f852331301c200ff5776191cd90002ff82260304a3426019c7760102734c4d1a3abf1000f13792030c6772942201406f40074909a119f03b040bfcde321a6684dd0a68933f1b64cc100c5b8cfa199efb8904ad88552210642ac000d3f2ec19127ba4010054072205e69f88028ec71e210251c6ae037515f40309fec80d22044b1f00078a061313019308b1d16d0303a447f812910c04ab1b7d030bd7e07503045d32f5030c6bf55821dfb0279b08e9c0842167cd0c810a5bf5121ab19a4f0a3a2019210329c85b0c6d5f72030be85daa0301000ac4191b774006bc1d362101da643f08a6c4450b2b09ac9b69030004dc53030a6a1ea31b64cc1005bb227a1a16e3600c6d5c0e1a08d9a0078fca2c2105e69f880c6d61071a127ba40b15e642030ad94bfa223234fdf00a07975921076d8bef0792dfcc03020762a21a08d9a00ac584a41a1fede904c252162104f720b004a3426911e76400b1e84c2a01c6c4b63a000697952101837efd0c191d91211fc694ea0c6d610903099245401b16223b007055ca0b0105931f7d190fde80042355df210183784d0c67a89419cf9f1102008a061926dde20b3baf26210919bb2a0bd7a01d1a0bafbf005483bd2267cd0c8105621e4f1940b15b0c5d790b1907a2fe0c6d5f762203104856000024ee2205c6db000c6d5a302201c9c3800bdba60221011b3970028406a02101288fa00c5f4041190927c009d3f6a2030bfa701e2103c14dc005d8529e2101a6e8890b138bf619a4c4f10bf5e5bd1ae4e1c00a3aad2021064fb49f0c6d5c131a554bf002072c9e21010d47640c6d53350305622b3003006c1476190a82f402cef4d0115e5005865b302217c942110c6d610c0b2b089fa0d10300fa12d521018376e40843c0022104fea3ea05fcf7e7210306c46401bba05b211a5d5eea0562314a19575562052adf930309aca7331ac688e7016a621b1a989680052fa5d21a0f42400aff56df1afb73e2029afc8322dfb0279b0411399f0309dd5306d1018a00000000003da355fdfecff5ffffffffffff3117f297732009dd5308ba498ca0218f3827fffffffffffffffa0a4b5696014314b109ec7a50ba05eda97152fc05ffffffffffffffff8505a65464a9dbdd0c44f30bb23baa590292defffffffffffffffffb2a4d36437a941309e7ef9aba43634c5739a943fffffffffffffffa8a1b630b591ea4c30548b6755202285dd075c478ed2543056816ea612a1a20bf3a2bd2dc26c2d46e054da50c6120a2f03602e8d23bb6133bff054da50d990175f50000000000000000000000000001e26a07d2e107491652a365f24d50287907d2e1083a103e43ded380e10186bdead10116fffffffffffc55095ac3f19800000000000b2881f897482d0186bdecb9071afd498cffffffffffffffffffffb9490d7fa766a1db0c6ba80cb902d66b4c4249ffffffffffffffffffe3c287f8c8325ff70ad1b9dcb10f58441ccee8ffffffffffffffffff67491bc46d1ac5019052e1b90349ec089b2e5effffffffffffffffdf4505fc263cbf900c4537a2b1eb4db092b8b5fffffffffffffffff6da366ef48a678d0b15e10a09010b18e1da09010bdd266e030bdd266f030bc8325711040b0bd8ddb8191e04fe09dd53134905f5b4a969febceb4f0c5cd986030b8ec3a009010b9511ae0901088a0e0489021fc44ab0b1ecfaaaf4b7c32983c647210888d99389350000000000000000000000000000000003d46f36c949ffffffffffaa4fd5141f7215ffffffffffff355516d3bd2b03d46f38c1193e4bcffaf2e75bffffffffffffff0ed6f814eb36db90c307d0f1edb9114561b41e1fc10000000000000000000000000000000007d0f1ee3910e0a5dd4a2aee0c59b2efb95cb65316a1c57bfffffffffffffffc65c2a294440b4b8f059c9355b903bdacee1b7eb500000000000000000000000000000000059c93563903bdacee1b7eb5042b6310c103fa29d7624b1f69ffffffffffffffda3ced7c199abbc5c2042b6311392bde91afeec421042b6312490120511469a4741000042b6313391c0da2eaf12cfe0464115041258127ca03d25000046411513903b744003af10904314d91413e731d9a03d9500004314d9239065815f32a6b520c3c7a4fc101fd47dda2b6a53dffffffffffffffec36031b53edc8894a03d46f3cc112a7c4a3e7780db7ffffffffffffff466dd12496661a76100c68c56e4902f70b5bc4b89af0000c68c56f4902f5e3b62a7f84f82304c386e441ad267a09c1b9a00004c386e53911cd46c2c5e94b07549a23b9063aa5f8e880970000000000000000000000000000000007549a2439063aa5f8e880970454e752b91cc225e624756f000000000000000000000000000000000454e753391b80125035b08c07d0fc18b90a5f497690baec0000000000000000000000000000000007d0fc19390a5df8bb2ca311046917344167fc86b6ddbd400004691735390ab02b8fb0224000906feb19042a55009027a1410335a46c074a940c008ff8c422230de0d40c68d77f2104fc6f5b0c68d30f290a06a70e030c68d57f4101795c4a1090baed001a6671290a06a70e03022d7a9a2104fc6f5b022e6be64101795c4a1090baed04c2642a69669afa6fd16cb00d516affbb0c04c2550681d60bd4c8db2956e704d8b18e2b18ad1704c25250b1017fb35bbf970000000000000000000000000000000004c2642b19011db704c255073102540be3fff80572bc1ec989fffffffffe95c0030ca62b6affffffffffff8a29afb1e40e0572bc20d101e1cad51e09eda801c9fffffffffffffe1eb09c5a987f3a6902098df594c90226ed30c55a03d2a2fffffffffffffffdd99ff750ca036d800572bc24d101d06e84ef626978371ffffffffffffffe300879d42a97c1604c0b1f6cb4c90f3562fde22a2bf803fffffffffffffff0ce828f1d1d759b33016d84810301053fd3593414d4f0a652a0479800000b989d590309d51ea521016028050a6666c721031975000916d2012102b3620e0a446b452103da27d80ae061821979f61a0c47ed2d09150c6d61221a08da500c6d5dda0b0108929ae703044b4053030c6b2d89030574fbde1aa7c597029b1a4722010a5e5e0bfb7fa80a07086b56cd2114cee3350359f34419f3edb2085c20660b290a0c3fe119431edb0c61d6fd21048c5b5209a26f6e030342a5470b1d065bec07030b7c8a780b010548b6ac22322dced30c6d3ddf0305f80814194eefc6058bcb91119e860c6d5a52213236a92308ce49311901b1640a3137a31972c59b0c6d47cb030589dffd1ab709540c6d5f9603058bcb9311ba97022d539f21766cd91409f1175f19a7c5970c6d612603091b0495110e290a0c96091a1c1fad0871fb5b1a5dd66d0c6d5f98030a48bd3a210138ffe00a3cec2019a3aa9303a7fd3921026d29440a15c4251999b80a02ff89f419f3ac720b6191901a55c9a708f759f52201d8740b02d83f1f030c04e6032119bd803308cddc0a2202704fb605544c30210532080f0c6d5114030a3e1f4e21050347a60c6d47d4030c6d5de421052444b90675d343190b34e005865b6f2117cabbc50a4453cf4136bc435a98934efd09ac191442b56cbbd59d68c5050b294cf041b56cbbd59d68c5050be7f4774236bc435a98934efd005483f32267cd0c81005483f42167c27f8b005483f51101f00054953531048949dd69a000549536310395f09496300c1078db0304b56839ca113dfbb7e57d38baa1ffffffffffffffff410e02df01669c4504b5683aca367e8962f0834758a8fffffffffffffffb443b75086f66f89c04cd9cb2894cfffffffffffffff9302ed3a1ef9714eb04d0676819033f2c04b56840c910162fa925ca19e5fc00000000000000003d095ea341b69fbf04b56841c99b6ec194acf87123320000000000000004adcb412784cfc44804b568428942000000000000009b6ec194acf871233204ccbf03312b0b3c519ff60b83b68d0902057a76e581deeb33a799d884124eca68e55126cf1d056cdfd68946000000000000000000000000000000000548decc4109613605b936e1eb01a5f91f4a02344b6bc864ac68f200d1e3c34902344b6bc864ac68f20afdf7011149e20c2a278b09010c2b60d109640c33852209820b83dd1c09010c5b119109a00bd6192309960c6617ee09a00c5b148409b40b9bb39509010c34433a096e0c4424bd09a00b8e48b709010b9bab0309010c4424be09010b8e745109910b8e1a1609a00c2b60d309010be56f7209010b9baf2b09910bcf49bc09640b21bd1509010c6617ef09010c33852409010b539b0709010b85fb2a09010b92406509dc0c34433c09010bfc6e6c09010c337c7109010b9bb14e09910b50f66a09010c334eb509010c33852509820bdb6ad709030b9bb14f09010bfbf54c09010c484bad09010ba7cd1a09be0c5a2b2109010c334eb809820bcae18809010b8df7fb09a00c334eb909010b21bd1609aa0bb84c4809010b9bb39809910b8e24b009910b85fb2f09dc0c1ae90809820be3355909730c006a0009780be3963509010bd6192a09010b5d84ad1101910c5e472c09aa0c00525b09960ba809e709010bad859f09010be3963709b90ba809ea09f50b2d981a09010c21be7209960b75827a09c80c34f6e209010c51fcb809010c5a2b2309a00c5e53f709960c0690a209010c33852a09010b8e24b209010c5b306d09010c337c76098c0b8e6fa409010bdb6ada09aa0c5b11a909010c334ebb09010c01bcc409010ba19a1009010c5fd9ad09960c484bb009820ba7d48109b40c1d4dd709820c209e9709820bf44ab009820c334ebd09820bdbdb3a09030c51fcbc09870ba8e3ec09010be42e9109010c06dd2e09820bd64ba6098c0b8e6fa709910c33077809010bab09e109e60bfc6c5809010be3bb67090d0ba7373009010c657df7098c0c34f6e9095a0bd7ca7b09010c06dd3109010ba7cd1f09010c334ec009820b8e1a1809010bcf1c5309020b83dd231101000b8e48bb09a00bad85a009a50b92406909010b29f52c09960bfbf54f09640c33852d09820c47818409010be426ce09010c334ec209010b90c5d109a00b9baf3c09010c5d7d6809020bb84c4909a50bdb4ccf09010c5b149409010c006a0309010bb3eb1309af0b2d981b09a50c1d4dd909010b9b758109a50c5b308409780c20c29409d20be56f7809a00be3bb6a098c0c3c9d6409020c1ae90f09010c37f83b09820bcae19109820bd9c3cd095a0ba7d48209010bd7ca7f098c0b9b758209010c21be7909010b61579209910b8e0b5609010b50f66b09820c33853009010c37f83c09010ba2826e09010c478185095a0b90c5d309010bfc6e7909640c5e473a09020c2ab40d09010c5d7d6909a00bd9c3d209010bb273dd09b40c292197098c0bfc6c5e09640c4b9cf909010ba19a171101550bb3eb1509010c20c29709010b539b0909e60bdbdb4009820c33077e09820c657df809010b8e0b5809a00c33853309820b21d77209aa0bbcde1209b40bf44ab109010b9bad1d09910c00525f09010bb273de09010c339c0e09010c12007609a00bd64bac09010b8e745809010b75827f09010ba8e3f509b40c4ea6a109010c2a2799098c0b9ba51109010b9bab0e09910c5fd9b009010b07a55b09010bcf1c6409910bcd942709010c339c0f09820bdb4cd5095a0bcf49d409010c5e53fd09020bf209fb09a00c29219b09010bcae19709820c4b9cfa09780c12007909010b07a55c1101a00ba2826f099b0bf209fd09010c4ea6a609b40b61579509010b21d77309010b9ba6f609910bab09e509010c2ab41009dc0b9ba6f709010b5d84b809010b9bad1e09010be3357809010c334ec809820b8df80d09010b9ba51209910ba7373809960c209e9f09010c3c9d6b09640bcae19909010c33853809010c0690ab098c0be42e9609960bbcde1609010c01bccb09b40be426d409a00bcd942c09b40b29f52d090109e6446709010c6d614f392053d3595d99a50c6cd5ea390c0315baf80cf30c34f9f129070b685ddc00bc17a53906d448083f6acf00bc17a64121cbcadf9290f39b00bc0e5769446b6a69fd4b2786e530063b0300bc0e584902aab71ec71558278500b1e8a12a01baa543bc00bc149a6948d5718b061ec79a493290f3b70c6d1af3030c193baf6120966fb6b4e4817184bb260b0c6cdbc8390d388c67e9fc8d0c6cd5ec030c6d5fb63b01441994a7e8e500bc14a159011158531538f4f56839cc00bc14a2411d59da6b0bf091b50c6d1af559307183ae9580382da4c66100bc17ab694585ef56b89a065d9b5bdd857b0c6d5fb839106b94941aa5a400b1e54f422a9767c8da4f117e0c193bb0210f09889f004c69d139b11962c38c3731004c69d2097704d01b80c9420000000000000000000000000000000000000000000000000c4f113bb101225031f8587e9bf800000000006fdedca9fca88bd4057f68a44115d48fd1c82ca8fa0c51b36db1012045f3294fed69cf0000000295fb39dfb7579c5f010a3ddc0ca9047b9487797d6607000000098bf0b7ccc55b6dbc7f04d01b83c94d0000000000000000000000000000000000000000000000000bef234c5302f0aaa6eec25b87ff710c523bc2a98bcedb82ac2155ca000000000060710dd2c063adb80575a9c8c9e800000000000000000000000000000000ba35896a8aefa31b0575a294c94d00000000000000000000000000000000000725d67ab1ac4c0b83b6be49022af9a8a41c15a4ce0575a3a1c94200000000000000000000000000000000292a6f14daab00570b09956cb9406be424d82254515094000000025ef22a6bc3a38bddcf04b230e1420de0b6b3a76400000abb158f420de0b6b3a764000000d99b063a9c8381812de02e00d99b073a9e2ab4416b547300d988c8e945000000000000000000000036c91100000000000000000000187fed5700d988c9194d4f7e00d988ca6945000000000000000000069d6e0c6d615f3308fff8b881c100d9f43c19056bd904b58b1439ad5ba4006958c40b09956dd149d68d6240026fcd97d3000000000000000000ad5ba4006958c40b09956e3ab1a2bc2ec50000054bb4ede96fffffffffffffffffffffffff7cf2000000000000001413c0422ce528054e942d5902ddac98c3901fdb0f94c0054e942ea11118f63ae980516a22f25c72dc0299f76cd7f1700000215641d7b5c63731af93200186beb439071afd498d0000066c69de410e40d9a0df03400004b589133ab7b7ded950e2690b97edf20306df3e8f4110391f4e6e6e800000d99b0e3a9e2ab4416b547303d46f5241193e4bcffaf2e75c00460884394a29a5a968cf35000021a33927bf93fda8221801b7aea93a1228479e0e038504c273d342026ee27b64ea16460916f8220303f2ed89397c11e459d89fc8036e1b564110bdb94960073f9501c4226e3a374d5243d1c6cb012e7f3c410160ebfbd37408e8009038bf410335a46c074a940c0574fc0d390f76ddf4bfcd46029b1abf391885d5d08f252806909e274112e977b94cf40000000092dc3a0b6f52d6e4f0dc0698e3f3411158e460913d0000068b047141155f2dd73a1a000007511a944218fae27693b40000000023f7311ab0e8654c1b001997f1398700cc7576db1909dd53503a498ca0218f38280c599dc43a6a94d74f430000084aca313902238b943b21b6066dba60410f8069c46fea100006909e29410d36bbed821cb00002e68a58420807457dc8e2f8ff06e67171411442f643bc1200000529433a4209ba0465eab1b327078a1891410fee83eaea2600000c6d4ef642315d00a77a107e0006bd5f3742017ee001ccb7e78206b252463ae38a0c0297f3610540f4793a285ae95a4b41cc02db89a73a07fbc6adceb06306dfa9e8411509e9f7c77e00000548bc453936bd124cc17c6c066cdcf4410c4c488dac183000075127df4218fae27693b4000005776c123a0450c0f30e365d095a2b1a03004b24863ab11962c38c373100009e8e311b4b0068c44d08ce4959314afde938e00001a5f95c3939ae8e5492c000053532ae090904a5f40d3102540be40000067fd379411158e460913d00000589e0193910bc5bd5397df60c6d4a5d03054bb4f9391413c0422ce5280b906c8441013fbe85edc9000002d063e2310ae9f7bcc0000180c4f73a31ef3c5ec27762038f30b8390e35fa931a000004a342c43a12344e3ef290da0500463739087f721123b48706995eae410f64c8a0857f000007bd1d2841017ee001ccb7e78206909e33410e5adfad55fe10000afc40473a012043db700e4708f75a2d392b4c0a48ac9080084972db41013fbe85edc90000064ad2e0411442f643bc12000006992401411298a2e67f06000008cddc4839393b227481157f066c6214410c734bb6f85f800004d859c631331ef1dfa000068a75764112751bf40f45000000f1c646312fd27acf03e704c252ae3a740e2a59a7f80e04a5f40e3102540be400000054f28a315f67bf3e46820c6d4b7c030bbc3b68395c391c7a6c3f4f000024f23987bf0d277954d7072eabf33a4b5bb08fa3c60c029c77e0030a3e1f9a3a75307910a8ce72083ca5093105b536cace1502cef7e331077d3004e520066c5e11410d54a7b1306910000c6d4ff6423115f2c29a8e800001bba0d3420268b987dedaa1d805456dbc4109a411f82576c000054120404209a411f82576c00000ae07454902f047f47c1c107eb100ae074f093e00bc0f2d4902f047f47c1c107eb10b149a35410de0b6b3a7640000083ca50a420de0b6b3a76400000b68921e09010b68a0ae090109152ceb410235638dae9f490d0564a862420235638dae9f490d000040fe4204d421e62833c03f005e15ae22033b470c022d53e22158c37cee0313f97a2202799255000040ff420269c1fe52efc4120c6775ff3aa7ece383c37574022d53e3215bd28a1109ae9f43391231e18ed2a255026cebc3220ad19667022d56962111e27ba8026cebc419067ab600e33eeb2119bcfbe107d2e149491652a365f24d5028790313f97b4902344b6bc864ac68f2000f107d490401932517b3fc7ad902649cc51906b6a000f211b5610469925f4a1f61b689639ea5005e15af21033b5e6d01dfde8e3901d23cff6b6c7d00f211b63a27009f217ebe4300004100211448941a0a5fa753420b5ac0f2528354e5005e15b021033b5e6d0a35b10851235f0a2a0d57c470000001161211390515cd67cd6c4401dfde8f421b0501ad06754f9a09ac192b42b56cbbd59d68c5050a5fa7543904c049138d100002649cc6190918d40266e2e92106e6617000d1e4784902344b6bc864ac68f2010540db593414d4f0a652a0479800000c67760039c9100cc357bc4800e33eec2219bd657302544cc521044b0440000f77863a337c122fc743c8022d53e621766cd91401dfde90421b0501ad06754f9a0a35b10951235f0a2a0d57c47000000a5fa755420b5ac0f2528354e507d2e14a491652a365f24d50287900f211b7610469925f4a1f61b689639ea507d2e14b3a103e43ded380e102544cc622044ac11509ae9f4442b56cbbd59d68c5050a35b10a3a0523f1a8458fdc000041012178bc2f76000f7787490401932517b3fc7ad9011612121a378109010540dc3a01ff7b6dafc4e900528a73221e3fa791010540dd593414d4f0a652a04798000002649cc74201063827e4de612e0266e2ea1a0418820c6776013aa7ece383c3757402824e893102cf5ffa02a401aea5494201d9366ed7410d50083ca515e962fffffffffffff21f494c589c0000000000000000000005b536cace15084433da89f0e55bcefd67cdea6cde1365c45907a294084433db6928af84b2254b48119b39d07b7e0540f488e934ffffffffffffffd7a516a5b4be340000000000000000000001bada2a0543c8c89904d808fa09fc69db97666553889f0b08a4731e0543c8c9610243e8012fd45f87cb7d6e4807f799720920029b1adee94c000000000000001885d5d08f2527fffffffffffffffffffffef5a1a202a03ab89906f5a0429a07d5e0c5ffd98ba36cbba95a4f1002a03ab961033df28d45afa158b75c3326054a8c37423c3622cc0f9bcb0b0916d2394a04e5f4dc8a0adde6c00916d23a2102b3620e0916d23b0932091a8867590157304568996fd9aec306091a886829bcb1821ffe091b04c1190269c90b6922aa09010b692f37090102d064033a02a8d025e4695b088510cdc1010000000000000000000000000000000000000000000000088510cf2a18940f27a909e8da27c120db2632ccbb23fdf33af6d1380000000005e6d2000cb0ae08973f9caa18940f27a9000000000000000000000018940f27a909b097f52a18940f27a909b097f67106c830753bab4227de7bb21cec0609b097f77106b25655672148e46dbb4d18d2ec0b534a0091e7600000000000000000000000000000f394089a1190a918940f27a8ffffffffffffffffffffffe76bf0d8570019a0718905079e6e9aede7450b4a55db76f5fa273f00198dc6a90d000000000000000ce1d4248544c0d648d3d66541001997f7a90bd90e51d90000000000000000000000000000000000198dc741081166b0000002ac0019a07231446e2d790fee09dadbea09020bfe98a909020bebdea709010c2d0e3a312fd27acf03e700f1c653312fd27acf03e70453eede09010c6d61829201022b1999e9ae87624d1cf1d5d00b5a00610c6d6183030589e04fc1020000000000000000000000cb0687a99fe843b82b3ede310589e0515985520ace4c9ed820fa7dd405b6988c791d55c20869f2ef47e7c8c4871fcb310589e052b1013ea0f4d500000000000000000000000000000005a80ac46a15b9021433ed1a888f7a56e84fc30000008b2a675500002e160ac46a16b90212e0eb6cb486463d1ac6540000008aa88b4100002deb0c67761e3aa7ece383c375740c67762039c9100cc357bc480c6776213aa7ece383c3757405456dc4090100d3f3b9090101bba0fbe92cfffffffffffffd97467821255e28000000000000000000001a5d5eea021967c599041e11bcd7d8660bdec1eea38ac32ce6c6b7e1021967c66101ebceeb441c3ea78f17545c0a35b1173a0523f1a8458fdc0a35b11851235f0a2a0d57c470000002d0643cf106f2fffffffffffffffd572fda1b96a500000000000000000ae9f7bcc00002fbaaa48901b37941e3ba0da0c011f2597258dc420902fbaaa5791c6395427334a5bafeb5e96c6b1b24029afd1a3a0c8ef2b15ed550029afd1fe9c2ffffffffffffffffffff204fd864ffffffffff3430b8f134b9ee4e9c02a059f651d604e90a74003e979ec002a059f7a1b1abc61382a0d9497d3504aba69c8453bc6eaf48029afd207205d89b2e653738c469c50219888904e666ce29081d80e5a20c6d1fd5030b80b0a6522380216e2d08d55547a40c0cf7e0512380216e2d08d55547a401000bbc191b77400548bc6da9010000000000000000e3e89eae17e5e0d33422073b0548c0a859029419f9474d60e89b5f1f0548c0a9790424ab116fc79a15e3ca8fdd74a6740548c0aaa97d6fc15fff0000000000000000000000000000004c0548bc6f325359cb242c390548bc70a967e4f6940a056c5bf0ab000000004b7e1300000019098e8ee0710422b501e7fc761c7139ce723ec1098e8ee1898bda8b838bdbfd7ea9ab44040589fe46c2098e8ee2000165a480a3000000000000028e47df5fc8721407265ab8c7e50002b135e8770402db89f83a07fbc6adceb06302db89f911344002db89fa093502db8c965104684e0d7d3665c6371702db8c97291cd86de1ec02db8c9911eb6c0a8936a34194137477c96b00000a893998192e349d0aa0501b4b0ad78ebc5ac62000000a965d7e4b056bc75e2d631000000a35b12b51235f0a2a0d57c47000000313f9b022027992550313f9b14902344b6bc864ac68f2000041042ae8628e66d400004105211448941a00004106420269c1fe52efc412000041072af27bc9b178001a6728290a06a70e030a8a81ce030ab6fa4b090202544ce421044b044002544ce522044ac1150b6ecbce09010b631e4109010c6d2be919033c6008086d3e09fd08086d3f09f008086d407201f3b793168ccbfe395cd8c0000008086d41f11fb8fffff5b7000000fe000000000000000000000000000000000000000008086d426a24f3433e4590d2787f0c00000008086d43f10e48000019d7000000fe000000000000001544875507e75c10e30800000002824eda3102cf5ffa02a4007f02db090109e8e2ad09010047dc2b0a0109ebf51e0a03098fc11303088510fb3ae392fbe1b168d10b2b6f613ae392fbe1b168d1005482053924b6f4832e6a450c6d61c303005e15f639e392fbe1b168d100548494411c8a3817bfca6359098fc116030c6cc028a23e7da13e26ad2d99be39490b7db8d067298cfb230c6ccf030304b5893e3a06072c1b9ccc1004ccd0ccc1205e042c87d9cc87000000000000000000000000000000000c51b3a6d1039993eaf58744610778fffffffffffffffffff9f4e6096a87ba0a3ddc5ad10eedf9fc0d8339f792200000000000000000000001826ec4c4d20591735a09520591735b291bddd92bef05ba423c22240a62e805ba7030111c350597c1083221da1d25a0cc0b0eaf1f1a474eb80b0eaf203901309a2f680cf00c6d61c80b1d0c6d61c9290de397f4160c6d268a1ba9436d00e33fb02119bcfbe100e33fb12219bd65730c6d61d233031b2003160008cddc772202704fb608cddc7839393b227481157f08cddc79096908cdde5231224a472af83208cdde535103249e3b279cf19ef21508ce49ab21048c261f08ce49ac39c97052f4d9a4ed057592b64a4d312ca8d2b37d7e7705759db74a4d312ca8d2b37d7e770a45e6c909010a4b3bcf09010c6114c00901090b2cd54105a4dc8be659314f076d044842076b9bdd0d14f08805776c43aa030000000000000000000031acf25865339d1e26570577d0657129afcb8fdca1a5d9b1eb5664b3c40577cb663901edb9a26e9e9005776c4542f679bbca01d0c9f905776c46a12ae78ca84f82d8dd77fffffffb4ec9b4000003ec0643c9e4c1011d7a9c6e8c64af0000000000000000011d7a9c6e8c64af07de7404bb317d91638edd2e0000000000000000026c72ca40a7a68c07f21b1f7bfc311c85d8457468f08cfd811dd22207f21b207319a7c5400624782e190aefae247f07f21b2100010002c2c0000000000000000000006679f319947a4e1df3fdfffffcb32c24a705484caa090208c215c3090104bd3cf0090105484ee109010446cbaa0901045892df09020700180809010a5fa8723904c049138d10000a5fa873420b5ac0f2528354e50b8eab2b09010b9516e7090105865bd02217c9421105865bd12117cabbc505865bd2095e058bc6fe31160fc8c28210058bc6ff3118556e4d525d058bc700290d95452270058bcc2a2928ff4f14b904d85a2eaa080000000000000084b48713effee71b6c774116d304d953bd610622658e55fc48e402a11ec004d8672329416f4a140004d85a30992edfb84211ee2e43000000079a868c000001f40b8f5f7509010b9516fb0901066da89419060ea80584c41409b4052943700901049986b909010be4e298730bfffff7000000000000000000550be4e299711cb17f3f0b084b8530977e9ac1490be4e29a711cb43e66a40e21479a5b5ae4e8f90653d7cf199445830653d7d0190f4a1005849b6d1998e4a00653d7d31998e4a001dfdf153901d23cff6b6c7d01dfdf16421b0501ad06754f9a026cec08220ad19667026cec0919067ab600fe3df029871cb7f88701000cd82a60c9b5dbd901002f7e29871cb7f88701000cd92a60c9b5dbd901b59151111f0001000cdd1a0bfd5501002f7f1910bcab01000cde1a0bfd55036e1bd8c98effffffffffbcd073109ff81bffffffffffffc37067971fe1036e1bdac110bdb94960073f94ffffffffffffff598441351c055c31690c3496a6b916006fbb29c44fffffffffffffffff2533c17a921cc01e038aff47c10b6a6e8bcba542e1ffffffffffffff8e79a0b33108b29e1d036e1bdfc1033e22c13d803239ffffffffffffffdfc0a4e963e6fc1c91074b456fc101ff278c9bb80622ffffffffffffffec24c7d70c8390b6970a8b4ba909020a8b9d08090201a5fa1bc9c3ffffffffffc6bfbce3e746dbfffffffffff86034a753a4eb01a5fa1db939ae8e5492bffffffffffffffffffdcbb494379b53970e0a88052db906a38187dd2e8affffffffffffffffbf0df091857c715a01c24e73b9330b0cccb59173fffffffffffffffe0ca6a3a615d725b308f75bbd89464693f59956ef57371e284ab702b9120e08e86201a9030000000000000002f90991715bd3fe35d626c46908f75a7eaa15c005fe990000000000000000000000000000000008e8620241021f8a86000000b408f75bbe310b1583a81bca02649d384201063827e4de612e02649d391906b6a004a3436819c7760104a343693a12344e3ef290da04a3436a097104a3d114310283f99d6b4904a3d115493ace568f003a5b9ab804a3d116510296ba56a56f909a7e0b04a5f4766906ab244b21c97e6d914215352901dfdf36421b0501ad06754f9a0b097fe10302db8d3f09360ac978da030c6d61e1030c6ccdc00302db8a611134400873327919072f4302db8d40090d0a44544912248302649d4e190918d4054bb59512830e0ae3ccd01124830c4852801912355b0c6d61e3030bd0ba99190292660ab29211030b0697b113f1520a7db4fa0305544ab21309e80a664fd21a12355b072eac801901f0b40b21387811830e0a7aea230301c422f1c95600000000001234cc00d704d5ffffffffffff8a0ed7e174fd01c422f3ba374d5243d1c6cafffffffffffffffdd9605198e5e810000275d512ba28c13c495c7d8dfffffffffffffffe6a37c99a731bbd2901c422f6b2b2422ff164b4fffffffffffffffff91123c3aae0bd680a75a83aba0dd9d3ca83e489ffffffffffffffff7617643ac7eb95710266e39b2106e661700266e39c1a0418820a3e1fdec928000000000014af5e8628381bffffffffffffffffd743a2cc0a3e1fe0ba75307910a8ce71fffffffffffffffb70dd1ecd2587a0000a3e28f4ba64db9dc4de6f72fffffffffffffffc1383f7aae1e37b240a47afa7ba0d1f19c1e2d5b5ffffffffffffffff7d515ab53e67fde00c3f0b9faa3578ac8b17fffffffffffffffffffdeb74f15666790a528342ba03358c113afe33ffffffffffffffffe009e0f813e5c08700ae07a6092500ae07a729092feda8d800b2155a310ae99359cb5400b33dd5310346129af03200b1e60e422a9767c8da4f117e0c6d603f3b01441994a7e8e50c6cd64a03074902b4a102aa947b2ae077028217d33ddbe6d35967822379028ae844e991000000000000000000017a81d59604217b199923fd96dd51747c30850866bcbba105d1b7a1f37fa47cb1c708ef33b3011aead2aa1507490cd1410752123ece9f9398028ae522e9450000000000000000000005dec3c9c0f5d3df8a270f08208aab7bd47e07490699a17974ba254c97e7ee8ee50c249b18e925d6f8c93f0595640da11967ad3f8207d3c6573372218ec33e62e5fba6070a687bd0030a687bd2a111e50a7020d48209c44e9ac0a96fa4f3cf9824700a2a7f6809010c42581d09020c0e62a009090c65612709010bce3aa309010c09e61e09010c342b6809010c2d23d80901059188b4e9ab00000000000000000000000000000000000000000000000000000000059188b5e9490000000000000000000000000000000000000000000000000000000005917581e93e0000000000000000000000000000000000000000000000000000000005917585e9520000000000000000000000000000000000000000000000000000000006c5b9240a0109f14d980309f14d990309f14d9a0309f14d9b030c6d553912495d09f14d9d115db10c6d553b03025e700b00c3bc320e8435d10ddd2fb260a29d49ee9bedcd7dfa03033c0a3a89e574396367004608fe220329c85b004608ff394a29a5a968cf350046090009900054801e310a9bb7822f000054801f49f88d3f402b428d5cf008c2161509010700185909010446cbc609010458930c090205484f01090104bd3d4a090105484d220902000024fae94d0000000000000087bf0d277954d6fffffffffffffffffffffa39250000002675990709cff52ea828dda2e2d978355012c99d07ff0000267661034a632c6e17af5727cddb1800afaf4f090300aa90fe090300fe3bdc090206b252ebe996ffffffffffffff1c75f3fd680c9f000000000139aa72d1558ca9d2e606b258e0696da9c91ba4895ab8ef3b767cba06b258e189cfeb1b3a832f427d162ae6424aa7a497bc022d576c2a53cc5deff5022d576d2111e27ba801aea60e4201d9366ed7410d50022d576e2a5dec5f07440c678654235e7ef246022d7bb82104fc6f5b0c6d597f235e7ef246034cd2b303085868021902019604d85a855a05878e17545782f6001e1b00f73d0c0300f211fe610469925f4a1f61b689639ea5093982f35905878e17545782f6001e1b0bbd16d40a010365f46fa1593ee0a29dc34eef8b67d4852c3a35b1ab8db9b504cc98db6102f2057e94ab3904f143eb5e04c7e638aa5f9ae2b1d20000000000000000000000000000000004cc98dc09330c6d622f490727de34a24f9000000c3efda34a10e9deaaf401e000000c3f43d94a10e9deaaf401e000000c6d62320309a2310b719ebb30b97e0700c14fcc2da66fe608a6213a79011f05b93b2413a3b2bef00bf984c8086b5809a214c9529b0000000000000000000000000000000009a2310c1901516b08a6213b1902621f0bfe6525490aac1aa54a67b9f0000180c602e957ffffffffffffffce10c3a13d889e000000000001f0ba352790d66a2b018774637108fd4acaacdacc6184517cce76500187746489035d74f73aeb165f4c1bdcb2581a142cc808fcd692090108fcebf90901000021ab292da5922c89000021b21a846074000021b33927bf93fda82218000021b40943000021da31ef4350b367f0000021db5115e8d1d1a168ef401fbe00002408390156c7377472a90be86024292da5922c890be8602509010be86028291518a926590be860294901f95cbbc5eccf3187028ae55f0945028ae56029058ab0f8fa028cfe602969048f0e48028dfc7d290fc0af0eef028cfba92909963ccb350749032d19e470830866bd2221076fa99d0595647c29097e24ed560a66501fba2a6510a7f84b48000000000000000000000000000000000c4861fc030acf2701ba2a6510a7f84b49000000000000000000000000000000000acf27023a59e7210570dc21028ae61a093f028ae61b2905695d977d028cedd519b721f8029642de11010b074906e919b71b00074906ea391cca465e0456b00b693a7f09010b24220f42016e48d4bbf8a0000b4b725009010b24221042016ef44f4f64d0400c29510a23bf7e5137026e527c1a0a4b620b3a6595c9010000000000000000000000000000000000000000000000000c6d624a410851954cbcb6efd80c6d60863b1f32d37cde99b80a8937464194137477c96b00000c6d608933b05d56c50a290c6d608a3b055a7280a67ffb0c6d608b3b1ef721017284d60bfcdfab39036308a5976a000a5fa93d420b5ac0f2528354e50c6d608c3b07d4eafa4c104c0bfcdd9e4206b6afa8050dbe9b0c6d608d3b129b1774f6ce220c6d608e3b06063ded756bea0c6d608f3b1f4446d5fc5e790c6d60903b22383f346a77a30c6d60913b1ad34b0a17856b0c6d60923b18818ef5116d8c0c6d60933b06e34f093d3de40a632bcc4109bfdb4d9ada23a8072eceab69b5bb49cb0b99df676b3e25ea5e072e9af5a911000000000000000000000008edd440f724e484a7072eacd3a1127336a5fffffffffffffffffffffffffcb0095d072e9af64205ceb44cfffffe87072eceac097f0bb937dda298f2cbdc6474237acefd8cca4c1069c1b2d26a290bb937de7b06589c7ca5316c3478216985d0f98b054a8d19423c3622cc0f9bcb0b09154aa4398250581b510b620564a92b11c6bd0564b2c131ddd1204fd58f0564b2c2417162de1a2a3127d709154aa50303faf7fcaa1d0000000000000001fffffffffffffffffffff94c03faf7fd4a02000000000000000203faf7fea90f00000000000000370000000000000000000006b303faf7ff4a0200000000000000060003ca20b14de9ffffffffffffe70700000000000000000000038d0003ca215103b3fffffffffffffcd403a7fe72e92a00000000000000000000026d2943fffffffffffffffffffffd934be503b93302792a04f865599e8f70db595952ba4d9803b933037929fb083127fb6b86bc7d6d7716edae0c3e7169090100fe45dc09460574fd36e940000000000000000f76ddf4bfcd45ffffffffffffffffffffff583a6905752c659905e09a19d96d6d623a7723262be3601a7b944005752c666102b8e99d769010845a4daf000770e80331052d75da96bf0872e8451a5dd66d0770b5ec42076b9bdd0d14f08807711e8b3a9b04db6c1d32f90872e8473908b41489e9391a07711e8c2106ad3c1a01b72c92aa1228479e0e0384ffffffffffffffffffffff39a2c00116137a390515cd67cd6c440116137b1a378109001e85ab09010c5f3dee09010c5f3def8901000000000000000000000000000000010be947c91905cabb0b4eeedb311b48eb57e0000b4d309f1902a3000be941fc6101edce652684d3c3a08f74ba0be94e0919035eb00b8805ce1901fa400afacf5c39024d3e3d7736460b8811415983ae815f9a9f658d7e167a0b881142310746a52880000b7ee76319033a390be949af392aee557f6de0000be941fd311b48eb57e0000b4eeedd6101edce652684313c236a949e0b02f8e109010b7ee9b1030be945d831fe06cdf6a0700c56dab51901f32c0b7d9b881901f2f90c56dab6510aea2eb4a7ee092b8f780b4dfdfa31622e54da7d170b7da3773906dc29776de98b0b7edb936115a91bfb53d3b88dc631d5110b4d344f311b48eb57e0000b4eecbb1902a3000be93fa0190327bb0b4d34506101edce65268437eb277351610b7ee76809900c6d625e31048c273950000b5f66cc315b7f50d1c0540b7edb9a39013263e8f0c6460b7d2f4b190466840b7d39ea319e9567eb3ec00b7d34d2610cdc0aa2561a2f80393b70ae0b02d93b192af4df0c6d626259524d10dbc0a39f786ece0c0b7d34d931b5e620f48000004d8807290185dfbd40036215112119bd65730c11e59d21044ac11500528b93221e3fa7910a6a1f80290185dfbd4000861fb009010085ea5f09010b4b726c09010b4b726d090106bd5ffbaa0200000000000000023c357dc55a285c21048f288706bf77cf6112d04749979ddeb127f42c2106bd5ffdb107985a1fedc54df6b73b3e0000000f58bf6500000515000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/watcher/src/lib.rs b/watcher/src/lib.rs index c9955c7..e0453b7 100644 --- a/watcher/src/lib.rs +++ b/watcher/src/lib.rs @@ -201,7 +201,7 @@ where event, } => { if let Some((range_begin, range_end)) = l2_middleware - .get_l1_batch_block_range(event.block_number.as_u64() as u32) + .get_l1_batch_block_range(event.batch_number.as_u64() as u32) .await? { WATCHER_METRICS @@ -220,8 +220,8 @@ where block_number, event, } => { - let current_first_verified_batch = event.previous_last_verified_block.as_u64() + 1; - let current_last_verified_batch = event.current_last_verified_block.as_u64(); + let current_first_verified_batch = event.previous_last_verified_batch.as_u64() + 1; + let current_last_verified_batch = event.current_last_verified_batch.as_u64(); let range_begin = l2_middleware .get_l1_batch_block_range(current_first_verified_batch as u32) .await? @@ -251,7 +251,7 @@ where event, } => { if let Some((range_begin, range_end)) = l2_middleware - .get_l1_batch_block_range(event.block_number.as_u64() as u32) + .get_l1_batch_block_range(event.batch_number.as_u64() as u32) .await? { WATCHER_METRICS From 342011f28a9f43936bb139a6e162f1143c0b2d0b Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 17:07:33 +0100 Subject: [PATCH 023/128] chore(main): release 0.5.0 (#350) :robot: I have created a release *beep* *boop* --- ## [0.5.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.4.0...v0.5.0) (2024-01-17) ### Features * **l1:** parse l2 to l1 message ([#352](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/352)) ([c5eb7e5](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/c5eb7e5be2f76911f6d797a7b6de44f9c78ea42c)) ### Bug Fixes * **storage:** remove order by to optimize query ([#349](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/349)) ([0fbddd4](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/0fbddd49d17945778574ef8ab27522753f85ae7f)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 2537c1f..f1c1e58 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.4.0" + ".": "0.5.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 00b790b..ff0105e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.5.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.4.0...v0.5.0) (2024-01-17) + + +### Features + +* **l1:** parse l2 to l1 message ([#352](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/352)) ([c5eb7e5](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/c5eb7e5be2f76911f6d797a7b6de44f9c78ea42c)) + + +### Bug Fixes + +* **storage:** remove order by to optimize query ([#349](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/349)) ([0fbddd4](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/0fbddd49d17945778574ef8ab27522753f85ae7f)) + ## [0.4.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.3.4...v0.4.0) (2024-01-16) From d0820847435e37c94a5030a8632d5e044e4bc201 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Thu, 18 Jan 2024 10:05:19 +0100 Subject: [PATCH 024/128] chore: h2 security update (#356) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- Cargo.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cf7b37b..04ea835 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1723,9 +1723,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" dependencies = [ "bytes", "fnv", @@ -1733,7 +1733,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.0.0", "slab", "tokio", "tokio-util", From e12b357f8a59d297db09f30f64dea33c1bb53c49 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 10:18:14 +0100 Subject: [PATCH 025/128] chore(deps): update rust crate tracing to v0.1.40 [security] (#355) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tracing](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tracing)) | workspace.dependencies | patch | `0.1.39` -> `0.1.40` | ### GitHub Vulnerability Alerts #### [GHSA-8f24-6m29-wm2r](https://togithub.com/tokio-rs/tracing/pull/2765) The implementation of the [`Instrumented::into_inner`] method in affected versions of this crate contains undefined behavior due to incorrect use of [`std::mem::forget`] The function creates `*const` pointers to `self`, calls [`mem::forget(self)`][`std::mem::forget`], and then moves values out of those pointers using [`std::ptr::read`]. ```rust // To manually destructure `Instrumented` without `Drop`, we // move it into a ManuallyDrop and use pointers to its fields let span: *const Span = &this.span; let inner: *const ManuallyDrop = &this.inner; mem::forget(self); // SAFETY: Those pointers are valid for reads, because `Drop` didn't // run, and properly aligned, because `Instrumented` isn't // `#[repr(packed)]`. let _span = unsafe { span.read() }; let inner = unsafe { inner.read() }; ``` However, the [`mem::forget` documentation][`std::mem::forget`] states: > Any resources the value manages, such as heap memory or a file handle, will > linger forever in an unreachable state. **However, it does not guarantee that > pointers to this memory will remain valid.** This means that these pointers are no longer valid. This could result in a stack use-after-free if LLVM chooses to reuse `self`'s stack slot for a rebinding after the call to [`std::mem::forget`]. This undefined behavior has not been observed to cause miscompilation as of Rust 1.73.0. However, any use of this method with the affected versions of `tracing` are unsound. The flaw was corrected in commit [20a1762] ([PR #​2765]) by replacing the use of [`std::mem::forget`] with `std::mem::ManuallyDrop`, ensuring that the stack slot is not reused and the pointers remain valid when they are read. The fix is published in `tracing` [v0.1.40]. Affected versions have been yanked from crates.io. Thanks to [Taylor Cramer] and [Manish Goregaokar] for finding and correcting this issue! [`Instrumented::into_inner`]: https://docs.rs/tracing/latest/tracing/instrument/struct.Instrumented.html#method.into_inner [`std::mem::forget`]: https://doc.rust-lang.org/std/mem/fn.forget.html [`std::ptr::read`]: https://doc.rust-lang.org/std/primitive.pointer.html#method.read-1 [20a1762]: https://github.com/tokio-rs/tracing/commit/20a1762b3fd5f1fafead198fd18e469c68683721 [PR #​2765]: https://togithub.com/tokio-rs/tracing/pull/2765 [v0.1.40]: https://crates.io/crates/tracing/0.1.40 [Taylor Cramer]: https://togithub.com/cramertj [Manish Goregaokar]: https://togithub.com/manishearth --- ### Release Notes

tokio-rs/tracing (tracing) ### [`v0.1.40`](https://togithub.com/tokio-rs/tracing/releases/tag/tracing-0.1.40): tracing 0.1.40 [Compare Source](https://togithub.com/tokio-rs/tracing/compare/tracing-0.1.39...tracing-0.1.40) This release fixes a potential stack use-after-free in the `Instrument::into_inner` method. Only uses of this method are affected by this bug. ##### Fixed - Use `mem::ManuallyDrop` instead of `mem::forget` in `Instrument::into_inner` ([#​2765]) [#​2765]: https://togithub.com/tokio-rs/tracing/pull/2765 Thanks to [@​cramertj](https://togithub.com/cramertj) and [@​manishearth](https://togithub.com/manishearth) for finding and fixing this issue!
--- ### Configuration 📅 **Schedule**: Branch creation - "" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 04ea835..6c26795 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4308,9 +4308,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.39" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2ef2af84856a50c1d430afce2fdded0a4ec7eda868db86409b4543df0797f9" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", From ef5e14701d48534c12a5c31f4cc9b991b42e6576 Mon Sep 17 00:00:00 2001 From: Danil Date: Thu, 18 Jan 2024 12:17:17 +0100 Subject: [PATCH 026/128] feat(api): adds api to finalizer to query withdrawals (#354) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --------- Signed-off-by: Danil Co-authored-by: Fedor Sakharov --- Cargo.lock | 230 ++++++++++++++++-- Cargo.toml | 4 +- api/Cargo.toml | 15 ++ api/src/lib.rs | 54 ++++ bin/withdrawal-finalizer/Cargo.toml | 1 + bin/withdrawal-finalizer/src/main.rs | 7 +- ...e59ab42e1511a38989dfc83f0a240d85a511a.json | 41 ++++ storage/src/lib.rs | 73 ++++++ 8 files changed, 409 insertions(+), 16 deletions(-) create mode 100644 api/Cargo.toml create mode 100644 api/src/lib.rs create mode 100644 storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json diff --git a/Cargo.lock b/Cargo.lock index 6c26795..dcfc6fe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -137,6 +137,18 @@ dependencies = [ "backtrace", ] +[[package]] +name = "api" +version = "0.2.0" +dependencies = [ + "axum", + "ethers", + "serde", + "sqlx", + "storage", + "tokio", +] + [[package]] name = "array-init" version = "0.0.4" @@ -210,6 +222,61 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "axum" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.1.0", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "backtrace" version = "0.3.68" @@ -1339,7 +1406,7 @@ dependencies = [ "futures-timer", "futures-util", "hashers", - "http", + "http 0.2.9", "instant", "jsonwebtoken", "once_cell", @@ -1732,7 +1799,26 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.9", + "indexmap 2.0.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "h2" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http 1.0.0", "indexmap 2.0.0", "slab", "tokio", @@ -1844,6 +1930,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.5" @@ -1851,7 +1948,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", - "http", + "http 0.2.9", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.0.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" +dependencies = [ + "bytes", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", "pin-project-lite", ] @@ -1877,9 +1997,9 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.24", + "http 0.2.9", + "http-body 0.4.5", "httparse", "httpdate", "itoa", @@ -1891,6 +2011,25 @@ dependencies = [ "want", ] +[[package]] +name = "hyper" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.2", + "http 1.0.0", + "http-body 1.0.0", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "tokio", +] + [[package]] name = "hyper-rustls" version = "0.24.1" @@ -1898,13 +2037,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ "futures-util", - "http", - "hyper", + "http 0.2.9", + "hyper 0.14.27", "rustls", "tokio", "tokio-rustls", ] +[[package]] +name = "hyper-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdea9aac0dbe5a9240d68cfd9501e2db94222c6dc06843e06640b9e07f0fdc67" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.0.0", + "http-body 1.0.0", + "hyper 1.1.0", + "pin-project-lite", + "socket2 0.5.5", + "tokio", + "tracing", +] + [[package]] name = "iana-time-zone" version = "0.1.57" @@ -2242,6 +2399,12 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "maybe-uninit" version = "2.0.0" @@ -3067,10 +3230,10 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "hyper", + "h2 0.3.24", + "http 0.2.9", + "http-body 0.4.5", + "hyper 0.14.27", "hyper-rustls", "ipnet", "js-sys", @@ -3530,6 +3693,16 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_path_to_error" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +dependencies = [ + "itoa", + "serde", +] + [[package]] name = "serde_spanned" version = "0.6.4" @@ -4063,6 +4236,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "tap" version = "1.0.1" @@ -4300,6 +4479,28 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -4417,7 +4618,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 0.2.9", "httparse", "log", "rand", @@ -4612,7 +4813,7 @@ name = "vise-exporter" version = "0.1.0" source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d279666cc5ae6b84" dependencies = [ - "hyper", + "hyper 0.14.27", "once_cell", "tokio", "tracing", @@ -4937,6 +5138,7 @@ dependencies = [ name = "withdrawal-finalizer" version = "0.2.0" dependencies = [ + "api", "chain-events", "client", "color-eyre", diff --git a/Cargo.toml b/Cargo.toml index b8c3421..dd4dabd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,8 @@ members = [ "tx-sender", "vlog", "watcher", - "withdrawals-meterer" + "withdrawals-meterer", + "api" ] [workspace.package] @@ -56,6 +57,7 @@ chrono = { version = "0.4.31", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } +api = { path = "./api" } chain-events = { path = "./chain-events" } storage = { path = "./storage" } withdrawals-meterer = { path = "./withdrawals-meterer" } diff --git a/api/Cargo.toml b/api/Cargo.toml new file mode 100644 index 0000000..05cd0f8 --- /dev/null +++ b/api/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "api" +version.workspace = true +homepage.workspace = true +license.workspace = true +edition.workspace = true +authors.workspace = true + +[dependencies] +axum = "0.7.4" +storage.workspace = true +sqlx.workspace = true +serde.workspace = true +tokio.workspace = true +ethers.workspace = true \ No newline at end of file diff --git a/api/src/lib.rs b/api/src/lib.rs new file mode 100644 index 0000000..2540c28 --- /dev/null +++ b/api/src/lib.rs @@ -0,0 +1,54 @@ +use axum::extract::State; +use axum::{http::StatusCode, routing::get, Json, Router}; +use ethers::abi::Address; +use ethers::types::{H256, U256}; +use serde::{Deserialize, Serialize}; +use sqlx::PgPool; +use storage::UserWithdrawal; + +#[derive(Deserialize, Serialize, Clone)] +struct WithdrawalRequest { + pub from: Address, + pub limit: u64, +} +#[derive(Deserialize, Serialize, Clone)] +struct WithdrawalResponse { + pub tx_hash: H256, + pub token: Address, + pub amount: U256, + pub status: String, +} + +impl From for WithdrawalResponse { + fn from(withdrawal: UserWithdrawal) -> Self { + Self { + tx_hash: withdrawal.tx_hash, + token: withdrawal.token, + amount: withdrawal.amount, + status: format!("{:?}", withdrawal.status), + } + } +} + +pub async fn run_server(pool: PgPool) { + let app = Router::new() + .route("/withdrawals", get(get_withdrawals)) + .with_state(pool); + + // run our app with hyper, listening globally on port 3000 + let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); + axum::serve(listener, app).await.unwrap(); +} + +async fn get_withdrawals( + State(pool): State, + Json(payload): Json, +) -> Result>, StatusCode> { + let result: Vec<_> = storage::withdrawals_for_address(&pool, payload.from, payload.limit) + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)? + .into_iter() + .map(WithdrawalResponse::from) + .collect(); + Ok(Json(result)) +} diff --git a/bin/withdrawal-finalizer/Cargo.toml b/bin/withdrawal-finalizer/Cargo.toml index 7b52d51..a385946 100644 --- a/bin/withdrawal-finalizer/Cargo.toml +++ b/bin/withdrawal-finalizer/Cargo.toml @@ -29,3 +29,4 @@ chain-events = { workspace = true } vlog = { workspace = true } finalizer = { workspace = true } watcher = { workspace = true } +api = { workspace = true } diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index b544c9e..b571648 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -290,7 +290,7 @@ async fn main() -> Result<()> { None => None, }; let finalizer = finalizer::Finalizer::new( - pgpool, + pgpool.clone(), one_withdrawal_gas_limit, batch_finalization_gas_limit, contract, @@ -304,7 +304,12 @@ async fn main() -> Result<()> { ); let finalizer_handle = tokio::spawn(finalizer.run(client_l2)); + let api_server = tokio::spawn(api::run_server(pgpool)); + tokio::select! { + r = api_server => { + tracing::error!("Api server ended with {r:?}"); + } r = block_events_handle => { tracing::error!("Block Events stream ended with {r:?}"); } diff --git a/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json b/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json new file mode 100644 index 0000000..3f80961 --- /dev/null +++ b/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json @@ -0,0 +1,41 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT\n l2_to_l1_events.l1_token_addr,\n l2_to_l1_events.amount,\n withdrawals.tx_hash,\n finalization_data.finalization_tx\n FROM\n l2_to_l1_events\n JOIN finalization_data ON\n finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number\n AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block\n JOIN withdrawals ON\n withdrawals.id = finalization_data.withdrawal_id\n WHERE l2_to_l1_events.to_address = $1\n ORDER BY l2_to_l1_events.l2_block_number DESC\n LIMIT $2\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "l1_token_addr", + "type_info": "Bytea" + }, + { + "ordinal": 1, + "name": "amount", + "type_info": "Numeric" + }, + { + "ordinal": 2, + "name": "tx_hash", + "type_info": "Bytea" + }, + { + "ordinal": 3, + "name": "finalization_tx", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [ + "Bytea", + "Int8" + ] + }, + "nullable": [ + false, + false, + false, + true + ] + }, + "hash": "1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a" +} diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 54cce5c..17a35af 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -1288,3 +1288,76 @@ pub async fn delete_finalization_data_content( Ok(()) } + +/// Finalization status of a withdrawal +#[derive(Debug, Clone)] +pub enum FinalizationStatus { + /// Withdrawal has been finalized + Finalized, + /// Withdrawal has not been finalized + NotFinalized, +} + +/// Withdrawal event requested for address +pub struct UserWithdrawal { + /// Transaction hash + pub tx_hash: H256, + /// Token address + pub token: Address, + /// Amount + pub amount: U256, + /// Status + pub status: FinalizationStatus, +} + +/// Request withdrawals for a given address. +pub async fn withdrawals_for_address( + pool: &PgPool, + address: Address, + limit: u64, +) -> Result> { + let latency = STORAGE_METRICS.call[&"withdrawals_for_address"].start(); + + let events = sqlx::query!( + " + SELECT + l2_to_l1_events.l1_token_addr, + l2_to_l1_events.amount, + withdrawals.tx_hash, + finalization_data.finalization_tx + FROM + l2_to_l1_events + JOIN finalization_data ON + finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number + AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block + JOIN withdrawals ON + withdrawals.id = finalization_data.withdrawal_id + WHERE l2_to_l1_events.to_address = $1 + ORDER BY l2_to_l1_events.l2_block_number DESC + LIMIT $2 + ", + address.as_bytes(), + limit as i64, + ) + .fetch_all(pool) + .await? + .into_iter() + .map(|r| { + let status = if r.finalization_tx.is_some() { + FinalizationStatus::Finalized + } else { + FinalizationStatus::NotFinalized + }; + UserWithdrawal { + tx_hash: H256::from_slice(&r.tx_hash), + token: Address::from_slice(&r.l1_token_addr), + amount: utils::bigdecimal_to_u256(r.amount), + status, + } + }) + .collect(); + + latency.observe(); + + Ok(events) +} From fb9f6bde4c761493002ddf9b92ff16ddf2f65284 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 12:28:04 +0100 Subject: [PATCH 027/128] chore(main): release 0.6.0 (#357) :robot: I have created a release *beep* *boop* --- ## [0.6.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.5.0...v0.6.0) (2024-01-18) ### Features * **api:** adds api to finalizer to query withdrawals ([#354](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/354)) ([ef5e147](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/ef5e14701d48534c12a5c31f4cc9b991b42e6576)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index f1c1e58..bcd0522 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.5.0" + ".": "0.6.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index ff0105e..832346e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.6.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.5.0...v0.6.0) (2024-01-18) + + +### Features + +* **api:** adds api to finalizer to query withdrawals ([#354](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/354)) ([ef5e147](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/ef5e14701d48534c12a5c31f4cc9b991b42e6576)) + ## [0.5.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.4.0...v0.5.0) (2024-01-17) From a43e9553f16a3d8dcc486b4666f55bfaeb20f5ba Mon Sep 17 00:00:00 2001 From: Danil Date: Thu, 18 Jan 2024 14:49:34 +0100 Subject: [PATCH 028/128] fix: change types on api (#358) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. Signed-off-by: Danil --- api/src/lib.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api/src/lib.rs b/api/src/lib.rs index 2540c28..a1410b9 100644 --- a/api/src/lib.rs +++ b/api/src/lib.rs @@ -1,4 +1,4 @@ -use axum::extract::State; +use axum::extract::{Path, Query, State}; use axum::{http::StatusCode, routing::get, Json, Router}; use ethers::abi::Address; use ethers::types::{H256, U256}; @@ -8,7 +8,6 @@ use storage::UserWithdrawal; #[derive(Deserialize, Serialize, Clone)] struct WithdrawalRequest { - pub from: Address, pub limit: u64, } #[derive(Deserialize, Serialize, Clone)] @@ -32,7 +31,7 @@ impl From for WithdrawalResponse { pub async fn run_server(pool: PgPool) { let app = Router::new() - .route("/withdrawals", get(get_withdrawals)) + .route("/withdrawals/:from", get(get_withdrawals)) .with_state(pool); // run our app with hyper, listening globally on port 3000 @@ -41,10 +40,11 @@ pub async fn run_server(pool: PgPool) { } async fn get_withdrawals( + Path(from): Path
, State(pool): State, - Json(payload): Json, + Query(payload): Query, ) -> Result>, StatusCode> { - let result: Vec<_> = storage::withdrawals_for_address(&pool, payload.from, payload.limit) + let result: Vec<_> = storage::withdrawals_for_address(&pool, from, payload.limit) .await .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)? .into_iter() From e6f8b0b0269a3e9dd5a82f7a9eceec10213a2d3b Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Thu, 18 Jan 2024 15:02:20 +0100 Subject: [PATCH 029/128] chore(withdrawal-finalizer): adds metrics for unfinalized eth withdrawals (#351) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- bin/withdrawal-finalizer/src/main.rs | 8 +++ bin/withdrawal-finalizer/src/metrics.rs | 36 ++++++++++ ...58786961de485d7f109005ee54d78f3fdd55e.json | 22 ++++++ ...a5bc149d100f740be557d170e7f1e3a055532.json | 20 ++++++ storage/src/lib.rs | 71 +++++++++++++++++++ 5 files changed, 157 insertions(+) create mode 100644 storage/.sqlx/query-69b33bf2e4eeb6e6d37b8651fea58786961de485d7f109005ee54d78f3fdd55e.json create mode 100644 storage/.sqlx/query-a3dbb0522919f63706f3576b394a5bc149d100f740be557d170e7f1e3a055532.json diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index b571648..daf2c5f 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -304,6 +304,11 @@ async fn main() -> Result<()> { ); let finalizer_handle = tokio::spawn(finalizer.run(client_l2)); + let metrics_handle = tokio::spawn(metrics::meter_unfinalized_withdrawals( + pgpool.clone(), + eth_finalization_threshold, + )); + let api_server = tokio::spawn(api::run_server(pgpool)); tokio::select! { @@ -322,6 +327,9 @@ async fn main() -> Result<()> { r = finalizer_handle => { tracing::error!("Finalizer ended with {r:?}"); } + _ = metrics_handle => { + tracing::error!("Metrics loop has ended"); + } } stop_vise_exporter.send_replace(()); diff --git a/bin/withdrawal-finalizer/src/metrics.rs b/bin/withdrawal-finalizer/src/metrics.rs index e772420..235dafe 100644 --- a/bin/withdrawal-finalizer/src/metrics.rs +++ b/bin/withdrawal-finalizer/src/metrics.rs @@ -1,7 +1,13 @@ //! Metrics for main binary +use std::time::Duration; + +use ethers::types::U256; +use sqlx::PgPool; use vise::{Gauge, Metrics}; +const METRICS_REFRESH_PERIOD: Duration = Duration::from_secs(15); + /// Main finalizer binary metrics #[derive(Debug, Metrics)] #[metrics(prefix = "withdrawal_finalizer")] @@ -11,7 +17,37 @@ pub(super) struct FinalizerMainMetrics { /// Capacity of the channel sending L2 events. pub watcher_l2_channel_capacity: Gauge, + + /// The withdrawals that were not finalized but are executed + pub executed_eth_withdrawals_not_finalized: Gauge, + + /// The withdrawals that + pub unexecuted_eth_withdrawals_below_current_threshold: Gauge, } #[vise::register] pub(super) static MAIN_FINALIZER_METRICS: vise::Global = vise::Global::new(); + +pub async fn meter_unfinalized_withdrawals(pool: PgPool, eth_threshold: Option) { + loop { + tokio::time::sleep(METRICS_REFRESH_PERIOD).await; + + let Ok(executed_not_finalized) = + storage::get_executed_and_not_finalized_withdrawals_count(&pool).await + else { + continue; + }; + let Ok(unexecuted) = storage::get_unexecuted_withdrawals_count(&pool, eth_threshold).await + else { + continue; + }; + + MAIN_FINALIZER_METRICS + .executed_eth_withdrawals_not_finalized + .set(executed_not_finalized); + + MAIN_FINALIZER_METRICS + .unexecuted_eth_withdrawals_below_current_threshold + .set(unexecuted); + } +} diff --git a/storage/.sqlx/query-69b33bf2e4eeb6e6d37b8651fea58786961de485d7f109005ee54d78f3fdd55e.json b/storage/.sqlx/query-69b33bf2e4eeb6e6d37b8651fea58786961de485d7f109005ee54d78f3fdd55e.json new file mode 100644 index 0000000..adcb8db --- /dev/null +++ b/storage/.sqlx/query-69b33bf2e4eeb6e6d37b8651fea58786961de485d7f109005ee54d78f3fdd55e.json @@ -0,0 +1,22 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT\n COUNT(*)\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND finalization_data.l2_block_number > COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND token = decode('000000000000000000000000000000000000800A', 'hex') \n AND amount >= $1\n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "count", + "type_info": "Int8" + } + ], + "parameters": { + "Left": [ + "Numeric" + ] + }, + "nullable": [ + null + ] + }, + "hash": "69b33bf2e4eeb6e6d37b8651fea58786961de485d7f109005ee54d78f3fdd55e" +} diff --git a/storage/.sqlx/query-a3dbb0522919f63706f3576b394a5bc149d100f740be557d170e7f1e3a055532.json b/storage/.sqlx/query-a3dbb0522919f63706f3576b394a5bc149d100f740be557d170e7f1e3a055532.json new file mode 100644 index 0000000..bbf830f --- /dev/null +++ b/storage/.sqlx/query-a3dbb0522919f63706f3576b394a5bc149d100f740be557d170e7f1e3a055532.json @@ -0,0 +1,20 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT\n COUNT(*)\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts = 0\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND token = decode('000000000000000000000000000000000000800A', 'hex') \n ", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "count", + "type_info": "Int8" + } + ], + "parameters": { + "Left": [] + }, + "nullable": [ + null + ] + }, + "hash": "a3dbb0522919f63706f3576b394a5bc149d100f740be557d170e7f1e3a055532" +} diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 17a35af..4f09c8e 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -974,6 +974,77 @@ pub async fn withdrawals_to_finalize( Ok(data) } +/// Get the number of ETH withdrawals not yet executed and finalized and above some threshold +pub async fn get_unexecuted_withdrawals_count( + pool: &PgPool, + eth_threshold: Option, +) -> Result { + // if no threshold, query _all_ ethereum withdrawals since all of them are >= 0. + let eth_threshold = eth_threshold.unwrap_or(U256::zero()); + + let count = sqlx::query!( + " + SELECT + COUNT(*) + FROM + finalization_data + JOIN withdrawals w ON finalization_data.withdrawal_id = w.id + WHERE + finalization_tx IS NULL + AND finalization_data.l2_block_number > COALESCE( + ( + SELECT + MAX(l2_block_number) + FROM + l2_blocks + WHERE + execute_l1_block_number IS NOT NULL + ), + 1 + ) + AND token = decode('000000000000000000000000000000000000800A', 'hex') + AND amount >= $1 + ", + u256_to_big_decimal(eth_threshold), + ) + .fetch_one(pool) + .await?; + + Ok(count.count.unwrap_or(0)) +} + +/// Get the number of ETH withdrawals executed but not finalized +pub async fn get_executed_and_not_finalized_withdrawals_count(pool: &PgPool) -> Result { + let count = sqlx::query!( + " + SELECT + COUNT(*) + FROM + finalization_data + JOIN withdrawals w ON finalization_data.withdrawal_id = w.id + WHERE + finalization_tx IS NULL + AND failed_finalization_attempts = 0 + AND finalization_data.l2_block_number <= COALESCE( + ( + SELECT + MAX(l2_block_number) + FROM + l2_blocks + WHERE + execute_l1_block_number IS NOT NULL + ), + 1 + ) + AND token = decode('000000000000000000000000000000000000800A', 'hex') + ", + ) + .fetch_one(pool) + .await?; + + Ok(count.count.unwrap_or(0)) +} + /// Fetch finalization parameters for some withdrawal pub async fn get_finalize_withdrawal_params( pool: &PgPool, From 7f4a7e9fd002c191b982dd3036dfb6986f448ccc Mon Sep 17 00:00:00 2001 From: Danil Date: Thu, 18 Jan 2024 15:06:27 +0100 Subject: [PATCH 030/128] fix(api): Healtcheck and api fixes (#360) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --------- Signed-off-by: Danil Co-authored-by: Fedor Sakharov --- api/src/lib.rs | 8 ++++++++ bin/withdrawal-finalizer/src/main.rs | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/api/src/lib.rs b/api/src/lib.rs index a1410b9..0ead7c6 100644 --- a/api/src/lib.rs +++ b/api/src/lib.rs @@ -32,6 +32,7 @@ impl From for WithdrawalResponse { pub async fn run_server(pool: PgPool) { let app = Router::new() .route("/withdrawals/:from", get(get_withdrawals)) + .route("/health", get(health)) .with_state(pool); // run our app with hyper, listening globally on port 3000 @@ -39,6 +40,13 @@ pub async fn run_server(pool: PgPool) { axum::serve(listener, app).await.unwrap(); } +async fn health(State(pool): State) -> Result<&'static str, StatusCode> { + pool.acquire() + .await + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; + Ok("ok") +} + async fn get_withdrawals( Path(from): Path
, State(pool): State, diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index daf2c5f..457a61a 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -15,7 +15,10 @@ use ethers::{ types::U256, }; use eyre::{anyhow, Result}; -use sqlx::{postgres::PgConnectOptions, ConnectOptions, PgConnection, PgPool}; +use sqlx::{ + postgres::{PgConnectOptions, PgPoolOptions}, + ConnectOptions, PgConnection, +}; use chain_events::{BlockEvents, L2EventsListener}; use client::{l1bridge::codegen::IL1Bridge, zksync_contract::codegen::IZkSync, ZksyncMiddleware}; @@ -177,7 +180,10 @@ async fn main() -> Result<()> { let options = PgConnectOptions::from_str(config.database_url.as_str())?.disable_statement_logging(); - let pgpool = PgPool::connect_with(options).await?; + let pgpool = PgPoolOptions::new() + .acquire_timeout(Duration::from_secs(2)) + .connect_with(options) + .await?; let from_l2_block = start_from_l2_block( client_l2.clone(), From 5d3254aae521499e26099e706b6dd1bad4fff0be Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Thu, 18 Jan 2024 15:11:12 +0100 Subject: [PATCH 031/128] chore(main): release 0.6.1 (#359) :robot: I have created a release *beep* *boop* --- ## [0.6.1](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.0...v0.6.1) (2024-01-18) ### Bug Fixes * **api:** Healtcheck and api fixes ([#360](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/360)) ([7f4a7e9](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/7f4a7e9fd002c191b982dd3036dfb6986f448ccc)) * change types on api ([#358](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/358)) ([a43e955](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a43e9553f16a3d8dcc486b4666f55bfaeb20f5ba)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index bcd0522..5d02000 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.0" + ".": "0.6.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 832346e..1cf7745 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.6.1](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.0...v0.6.1) (2024-01-18) + + +### Bug Fixes + +* **api:** Healtcheck and api fixes ([#360](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/360)) ([7f4a7e9](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/7f4a7e9fd002c191b982dd3036dfb6986f448ccc)) +* change types on api ([#358](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/358)) ([a43e955](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a43e9553f16a3d8dcc486b4666f55bfaeb20f5ba)) + ## [0.6.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.5.0...v0.6.0) (2024-01-18) From dab6780de8699c9b4fb5f9dccc85be7fdfd0af58 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Fri, 19 Jan 2024 18:30:07 +0100 Subject: [PATCH 032/128] fix(api): use permissive cors (#361) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- Cargo.lock | 17 +++++++++++++++++ Cargo.toml | 2 ++ api/Cargo.toml | 5 +++-- api/src/lib.rs | 3 +++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index dcfc6fe..a26e36b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -147,6 +147,7 @@ dependencies = [ "sqlx", "storage", "tokio", + "tower-http", ] [[package]] @@ -4495,6 +4496,22 @@ dependencies = [ "tracing", ] +[[package]] +name = "tower-http" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da193277a4e2c33e59e09b5861580c33dd0a637c3883d0fa74ba40c0374af2e" +dependencies = [ + "bitflags 2.4.1", + "bytes", + "http 1.0.0", + "http-body 1.0.0", + "http-body-util", + "pin-project-lite", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.2" diff --git a/Cargo.toml b/Cargo.toml index dd4dabd..ad82552 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -67,5 +67,7 @@ tx-sender = { path = "./tx-sender" } finalizer = { path = "./finalizer" } tokio-stream = "0.1.14" tokio-util = "0.7.10" +tower-http = "0.5.1" url = "2.5.0" +axum = "0.7.4" vlog = { path = "./vlog" } diff --git a/api/Cargo.toml b/api/Cargo.toml index 05cd0f8..081ed7a 100644 --- a/api/Cargo.toml +++ b/api/Cargo.toml @@ -7,9 +7,10 @@ edition.workspace = true authors.workspace = true [dependencies] -axum = "0.7.4" +axum = { workspace = true } +tower-http = { workspace = true, features = ["cors"] } storage.workspace = true sqlx.workspace = true serde.workspace = true tokio.workspace = true -ethers.workspace = true \ No newline at end of file +ethers.workspace = true diff --git a/api/src/lib.rs b/api/src/lib.rs index 0ead7c6..04d0d26 100644 --- a/api/src/lib.rs +++ b/api/src/lib.rs @@ -5,6 +5,7 @@ use ethers::types::{H256, U256}; use serde::{Deserialize, Serialize}; use sqlx::PgPool; use storage::UserWithdrawal; +use tower_http::cors::CorsLayer; #[derive(Deserialize, Serialize, Clone)] struct WithdrawalRequest { @@ -30,9 +31,11 @@ impl From for WithdrawalResponse { } pub async fn run_server(pool: PgPool) { + let cors_layer = CorsLayer::permissive(); let app = Router::new() .route("/withdrawals/:from", get(get_withdrawals)) .route("/health", get(health)) + .layer(cors_layer) .with_state(pool); // run our app with hyper, listening globally on port 3000 From 8f1a621bd98754be4e0a7a84521116adb33e6af3 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 19 Jan 2024 18:49:15 +0100 Subject: [PATCH 033/128] chore(main): release 0.6.2 (#362) :robot: I have created a release *beep* *boop* --- ## [0.6.2](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.1...v0.6.2) (2024-01-19) ### Bug Fixes * **api:** use permissive cors ([#361](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/361)) ([dab6780](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/dab6780de8699c9b4fb5f9dccc85be7fdfd0af58)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 5d02000..bf5f1fb 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.1" + ".": "0.6.2" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cf7745..f7c18a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.6.2](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.1...v0.6.2) (2024-01-19) + + +### Bug Fixes + +* **api:** use permissive cors ([#361](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/361)) ([dab6780](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/dab6780de8699c9b4fb5f9dccc85be7fdfd0af58)) + ## [0.6.1](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.0...v0.6.1) (2024-01-18) From cfe74f20453a6deeba2aa5d051b4728066286150 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Mon, 22 Jan 2024 12:31:48 +0100 Subject: [PATCH 034/128] chore: finalize all tokens by default (#363) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- finalizer/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/finalizer/src/lib.rs b/finalizer/src/lib.rs index f339cf9..9445dd4 100644 --- a/finalizer/src/lib.rs +++ b/finalizer/src/lib.rs @@ -60,7 +60,7 @@ pub enum TokenList { impl Default for TokenList { fn default() -> Self { - Self::WhiteList(vec![client::ETH_TOKEN_ADDRESS]) + Self::All } } From b5a615243842a8d7867a0759e713776f801876d1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 12:32:42 +0100 Subject: [PATCH 035/128] chore(deps): update rust crate chrono to 0.4.32 (#365) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [chrono](https://togithub.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.31` -> `0.4.32` | --- ### Release Notes
chronotope/chrono (chrono) ### [`v0.4.32`](https://togithub.com/chronotope/chrono/compare/v0.4.31...v0.4.32) [Compare Source](https://togithub.com/chronotope/chrono/compare/v0.4.31...v0.4.32)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 83 +++++++++++++++++++++++++++++++++++++++++++++--------- Cargo.toml | 2 +- 2 files changed, 71 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a26e36b..7ae0c51 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -534,15 +534,15 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", "serde", - "windows-targets", + "windows-targets 0.52.0", ] [[package]] @@ -2746,7 +2746,7 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec 1.11.0", - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -5063,7 +5063,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -5072,7 +5072,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", ] [[package]] @@ -5081,13 +5081,28 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +dependencies = [ + "windows_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -5096,42 +5111,84 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + [[package]] name = "winnow" version = "0.5.10" diff --git a/Cargo.toml b/Cargo.toml index ad82552..3fb0f4e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ syn = "2.0.43" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" -chrono = { version = "0.4.31", default-features = false } +chrono = { version = "0.4.32", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } From 8c0ef40a228c27f9b7fae33521ed3fab84367ac1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 13:21:36 +0100 Subject: [PATCH 036/128] chore(deps): update rust crate async-trait to 0.1.77 (#364) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [async-trait](https://togithub.com/dtolnay/async-trait) | workspace.dependencies | patch | `0.1.75` -> `0.1.77` | --- ### Release Notes
dtolnay/async-trait (async-trait) ### [`v0.1.76`](https://togithub.com/dtolnay/async-trait/releases/tag/0.1.76) [Compare Source](https://togithub.com/dtolnay/async-trait/compare/0.1.75...0.1.76) - Documentation improvements
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 58 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7ae0c51..9d87e3e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -176,13 +176,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.75" +version = "0.1.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" +checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -586,7 +586,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -1286,7 +1286,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.43", + "syn 2.0.48", "toml", "walkdir", ] @@ -1304,7 +1304,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -1330,7 +1330,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.43", + "syn 2.0.48", "tempfile", "thiserror", "tiny-keccak", @@ -1360,7 +1360,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -1678,7 +1678,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -2360,7 +2360,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -2622,7 +2622,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -2868,7 +2868,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -2906,7 +2906,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -2991,7 +2991,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -3044,9 +3044,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.71" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] @@ -3071,14 +3071,14 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -3680,7 +3680,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -4186,7 +4186,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -4228,9 +4228,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.43" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -4290,7 +4290,7 @@ checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -4382,7 +4382,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -4544,7 +4544,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -4844,7 +4844,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", ] [[package]] @@ -4904,7 +4904,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", "wasm-bindgen-shared", ] @@ -4938,7 +4938,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 3fb0f4e..9969802 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,7 +28,7 @@ exclude = ["./github"] [workspace.dependencies] auto_impl = "1.1.0" -async-trait = "0.1.75" +async-trait = "0.1.77" ethers = { version = "2.0.11", default-features = false } tokio = "1.35.1" clap = "4.4.11" From dfd91ea04e5ddb02966e763538e8f49bf48af919 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:18:05 +0100 Subject: [PATCH 037/128] chore(deps): update rust crate proc-macro2 to 1.0.78 (#367) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | workspace.dependencies | patch | `1.0.71` -> `1.0.78` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 9969802..47d1e50 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ color-eyre = "0.6.2" eyre = "0.6.11" dotenvy = "0.15.7" envconfig = "0.10.0" -proc-macro2 = "1.0.71" +proc-macro2 = "1.0.78" bincode = "1.3.3" futures = "0.3.30" quote = "1.0.33" From d647b61eb4646e81799ae904f17d725781b99510 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:32:27 +0100 Subject: [PATCH 038/128] chore(deps): update rust crate clap to 4.4.18 (#366) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies | patch | `4.4.11` -> `4.4.18` | --- ### Release Notes
clap-rs/clap (clap) ### [`v4.4.18`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4418---2024-01-16) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.17...v4.4.18) ##### Fixes - *(error)* When lacking `usage` feature, ensure the list of required arguments is unique ### [`v4.4.17`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4417---2024-01-15) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.16...v4.4.17) ##### Fixes - Fix `panic!` when mixing `args_conflicts_with_subcommands` with `ArgGroup` (which is implicit with `derive`) introduced in 4.4.15 ### [`v4.4.16`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4416---2024-01-12) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.15...v4.4.16) ##### Fixes - Ensure invalid escape sequences in user-defined strings are correctly stripped when terminal doesn't support color ### [`v4.4.15`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4415---2024-01-11) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.14...v4.4.15) ##### Fixes - Improve error for `args_conflicts_with_subcommands` - Ensure we error for `args_conflicts_with_subcommands` when using subcommand short and long flags ### [`v4.4.14`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4414---2024-01-08) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.13...v4.4.14) ##### Documentation - Fix `find` cookbook entry to allow repeats of flags/options ##### Features - Allow `num_args(0)` on options which allows making them emulate being a flag for position-tracking flags ### [`v4.4.13`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4413---2024-01-04) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.12...v4.4.13) ##### Documentation - Fix link to structopt migration guide ### [`v4.4.12`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4412---2023-12-28) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.11...v4.4.12) ##### Performance - Only ask `TypedValueParser` for possible values if needed
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 12 ++++++------ Cargo.toml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d87e3e..d1b2f59 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -82,9 +82,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", @@ -557,9 +557,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.11" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", @@ -567,9 +567,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.11" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", diff --git a/Cargo.toml b/Cargo.toml index 47d1e50..fcf905f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ auto_impl = "1.1.0" async-trait = "0.1.77" ethers = { version = "2.0.11", default-features = false } tokio = "1.35.1" -clap = "4.4.11" +clap = "4.4.18" tracing = "0.1" tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } From 52da98a96c583aa1fa30cfa2f1771940ec7af1a7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:40:47 +0100 Subject: [PATCH 039/128] chore(deps): update rust crate serde to 1.0.195 (#369) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.193` -> `1.0.195` | --- ### Release Notes
serde-rs/serde (serde) ### [`v1.0.195`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.195) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.194...v1.0.195) - Prevent remote definitions of tuple struct or tuple variant from triggering dead_code warning ([#​2671](https://togithub.com/serde-rs/serde/issues/2671)) ### [`v1.0.194`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.194) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.193...v1.0.194) - Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1b2f59..cbd5780 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3654,9 +3654,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" dependencies = [ "serde_derive", ] @@ -3674,9 +3674,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.195" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index fcf905f..6cb1eba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.0" -serde = "1.0.193" +serde = "1.0.195" thiserror = "1.0.52" serde_json = "1.0" color-eyre = "0.6.2" From 0c084b71bc71347ec0a0e2369bcc8278da768ae6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:49:18 +0100 Subject: [PATCH 040/128] chore(deps): update rust crate quote to 1.0.35 (#368) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [quote](https://togithub.com/dtolnay/quote) | workspace.dependencies | patch | `1.0.33` -> `1.0.35` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 6cb1eba..23961b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ envconfig = "0.10.0" proc-macro2 = "1.0.78" bincode = "1.3.3" futures = "0.3.30" -quote = "1.0.33" +quote = "1.0.35" num = "0.4.1" syn = "2.0.43" hex = "0.4" From 78bd7d6183586078b53db05d46d6108fcf1a9317 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:53:31 +0100 Subject: [PATCH 041/128] chore(deps): update rust crate syn to 2.0.48 (#370) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.43` -> `2.0.48` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 23961b1..854e94c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.43" +syn = "2.0.48" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 49fb5259f32b07625c0f8528c34b53adf47cf30b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 17:05:03 +0100 Subject: [PATCH 042/128] chore(deps): update rust crate thiserror to 1.0.56 (#371) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.52` -> `1.0.56` | --- ### Release Notes
dtolnay/thiserror (thiserror) ### [`v1.0.56`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.56) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.55...1.0.56) - Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache ### [`v1.0.55`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.55) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.54...1.0.55) - Work around improperly cached build script result by sccache – second attempt ([#​280](https://togithub.com/dtolnay/thiserror/issues/280)) ### [`v1.0.54`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.54) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.53...1.0.54) - Work around improperly cached build script result by sccache – first attempt ([#​279](https://togithub.com/dtolnay/thiserror/issues/279)) ### [`v1.0.53`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.53) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.52...1.0.53) - Reduce spurious rebuilds under RustRover IDE when using a nightly toolchain ([#​270](https://togithub.com/dtolnay/thiserror/issues/270))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cbd5780..07a3329 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4275,18 +4275,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.52" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a48fd946b02c0a526b2e9481c8e2a17755e47039164a86c4070446e3a4614d" +checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.52" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7fbe9b594d6568a6a1443250a7e67d80b74e1e96f6d1715e1e21cc1888291d3" +checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 854e94c..139dea4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.0" serde = "1.0.195" -thiserror = "1.0.52" +thiserror = "1.0.56" serde_json = "1.0" color-eyre = "0.6.2" eyre = "0.6.11" From 88855aadb1b1681d847fb24922584b0f426d7828 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 17:44:34 +0100 Subject: [PATCH 043/128] chore(deps): update rust docker tag to v1.75 (#372) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | rust | stage | minor | `1.74` -> `1.75` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c73ae21..0723c8e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.74 AS builder +FROM rust:1.75 AS builder WORKDIR /app From 7c222388c2abf6edba06a2858f5a7b2483f8b767 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 25 Jan 2024 16:30:50 +0100 Subject: [PATCH 044/128] chore(deps): update rust crate chrono to 0.4.33 (#374) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [chrono](https://togithub.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.32` -> `0.4.33` | --- ### Release Notes
chronotope/chrono (chrono) ### [`v0.4.33`](https://togithub.com/chronotope/chrono/releases/tag/v0.4.33): 0.4.33 [Compare Source](https://togithub.com/chronotope/chrono/compare/v0.4.32...v0.4.33) #### What's Changed - Fixed typo in Duration::hours() exception by [@​danwilliams](https://togithub.com/danwilliams) in [https://github.com/chronotope/chrono/pull/1384](https://togithub.com/chronotope/chrono/pull/1384) - Make `rkyv` feature imply `size_32` by [@​pitdicker](https://togithub.com/pitdicker) in [https://github.com/chronotope/chrono/pull/1383](https://togithub.com/chronotope/chrono/pull/1383)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 07a3329..00b3879 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -534,9 +534,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a" +checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/Cargo.toml b/Cargo.toml index 139dea4..e9c1733 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ syn = "2.0.48" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" -chrono = { version = "0.4.32", default-features = false } +chrono = { version = "0.4.33", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } From f635101c1192886bfe1aace349f89d16eed35343 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 28 Jan 2024 23:32:26 +0100 Subject: [PATCH 045/128] chore(deps): update rust crate auto_impl to 1.1.2 (#376) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [auto_impl](https://togithub.com/auto-impl-rs/auto_impl) | workspace.dependencies | patch | `1.1.0` -> `1.1.2` | --- ### Release Notes
auto-impl-rs/auto_impl (auto_impl) ### [`v1.1.2`](https://togithub.com/auto-impl-rs/auto_impl/releases/tag/v1.1.2) [Compare Source](https://togithub.com/auto-impl-rs/auto_impl/compare/v1.1.1...v1.1.2) #### What's Changed - Associated type generics and syn::Error by [@​KodrAus](https://togithub.com/KodrAus) in [https://github.com/auto-impl-rs/auto_impl/pull/96](https://togithub.com/auto-impl-rs/auto_impl/pull/96) - Prepare for 1.1.2 release by [@​KodrAus](https://togithub.com/KodrAus) in [https://github.com/auto-impl-rs/auto_impl/pull/97](https://togithub.com/auto-impl-rs/auto_impl/pull/97) **Full Changelog**: https://github.com/auto-impl-rs/auto_impl/compare/v1.1.1...v1.1.2 ### [`v1.1.1`](https://togithub.com/auto-impl-rs/auto_impl/releases/tag/v1.1.1) [Compare Source](https://togithub.com/auto-impl-rs/auto_impl/compare/v1.1.0...v1.1.1) #### What's Changed - Bump syn from 1.0 to 2.0 by [@​DaniPopes](https://togithub.com/DaniPopes) in [https://github.com/auto-impl-rs/auto_impl/pull/92](https://togithub.com/auto-impl-rs/auto_impl/pull/92) - Prepare for 1.1.1 release by [@​KodrAus](https://togithub.com/KodrAus) in [https://github.com/auto-impl-rs/auto_impl/pull/95](https://togithub.com/auto-impl-rs/auto_impl/pull/95) #### New Contributors - [@​DaniPopes](https://togithub.com/DaniPopes) made their first contribution in [https://github.com/auto-impl-rs/auto_impl/pull/92](https://togithub.com/auto-impl-rs/auto_impl/pull/92) **Full Changelog**: https://github.com/auto-impl-rs/auto_impl/compare/v1.1.0...v1.1.1
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 31 +++---------------------------- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 00b3879..67e5d1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -207,14 +207,13 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" dependencies = [ - "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.48", ] [[package]] @@ -3018,30 +3017,6 @@ dependencies = [ "toml_edit 0.19.14", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" version = "1.0.78" diff --git a/Cargo.toml b/Cargo.toml index e9c1733..121218f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ authors = ["The Matter Labs Team "] exclude = ["./github"] [workspace.dependencies] -auto_impl = "1.1.0" +auto_impl = "1.1.2" async-trait = "0.1.77" ethers = { version = "2.0.11", default-features = false } tokio = "1.35.1" From 930625ba732b14e3c2fb9de2165a1fe60d0867cd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 07:04:52 +0100 Subject: [PATCH 046/128] chore(deps): update rust crate serde to 1.0.196 (#375) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.195` -> `1.0.196` | --- ### Release Notes
serde-rs/serde (serde) ### [`v1.0.196`](https://togithub.com/serde-rs/serde/compare/v1.0.195...v1.0.196) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.195...v1.0.196)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 67e5d1f..936fd6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3629,9 +3629,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.195" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63261df402c67811e9ac6def069e4786148c4563f4b50fd4bf30aa370d626b02" +checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" dependencies = [ "serde_derive", ] @@ -3649,9 +3649,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.195" +version = "1.0.196" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46fe8f8603d81ba86327b23a2e9cdf49e1255fb94a4c5f297f6ee0547178ea2c" +checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 121218f..e78d35e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.0" -serde = "1.0.195" +serde = "1.0.196" thiserror = "1.0.56" serde_json = "1.0" color-eyre = "0.6.2" From 70b317eb8b253f671c1d70f730701ba76f1987e3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 22:15:54 +0100 Subject: [PATCH 047/128] chore(deps): update rust crate itertools to 0.12.1 (#377) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [itertools](https://togithub.com/rust-itertools/itertools) | workspace.dependencies | patch | `0.12.0` -> `0.12.1` | --- ### Release Notes
rust-itertools/itertools (itertools) ### [`v0.12.1`](https://togithub.com/rust-itertools/itertools/blob/HEAD/CHANGELOG.md#0121) [Compare Source](https://togithub.com/rust-itertools/itertools/compare/v0.12.0...v0.12.1) ##### Added - Documented iteration order guarantee for `Itertools::[tuple_]combinations` ([#​822](https://togithub.com/rust-itertools/itertools/issues/822)) - Documented possible panic in `iterate` ([#​842](https://togithub.com/rust-itertools/itertools/issues/842)) - Implemented `Clone` and `Debug` for `Diff` ([#​845](https://togithub.com/rust-itertools/itertools/issues/845)) - Implemented `Debug` for `WithPosition` ([#​859](https://togithub.com/rust-itertools/itertools/issues/859)) - Implemented `Eq` for `MinMaxResult` ([#​838](https://togithub.com/rust-itertools/itertools/issues/838)) - Implemented `From>` for `Option>` ([#​843](https://togithub.com/rust-itertools/itertools/issues/843)) - Implemented `PeekingNext` for `RepeatN` ([#​855](https://togithub.com/rust-itertools/itertools/issues/855)) ##### Changed - Made `CoalesceBy` lazy ([#​801](https://togithub.com/rust-itertools/itertools/issues/801)) - Optimized `Filter[Map]Ok::next`, `Itertools::partition`, `Unique[By]::next[_back]` ([#​818](https://togithub.com/rust-itertools/itertools/issues/818)) - Optimized `Itertools::find_position` ([#​837](https://togithub.com/rust-itertools/itertools/issues/837)) - Optimized `Positions::next[_back]` ([#​816](https://togithub.com/rust-itertools/itertools/issues/816)) - Optimized `ZipLongest::fold` ([#​854](https://togithub.com/rust-itertools/itertools/issues/854)) - Relaxed `Debug` bounds for `GroupingMapBy` ([#​860](https://togithub.com/rust-itertools/itertools/issues/860)) - Specialized `ExactlyOneError::fold` ([#​826](https://togithub.com/rust-itertools/itertools/issues/826)) - Specialized `Interleave[Shortest]::fold` ([#​849](https://togithub.com/rust-itertools/itertools/issues/849)) - Specialized `MultiPeek::fold` ([#​820](https://togithub.com/rust-itertools/itertools/issues/820)) - Specialized `PadUsing::[r]fold` ([#​825](https://togithub.com/rust-itertools/itertools/issues/825)) - Specialized `PeekNth::fold` ([#​824](https://togithub.com/rust-itertools/itertools/issues/824)) - Specialized `Positions::[r]fold` ([#​813](https://togithub.com/rust-itertools/itertools/issues/813)) - Specialized `PutBackN::fold` ([#​823](https://togithub.com/rust-itertools/itertools/issues/823)) - Specialized `RepeatN::[r]fold` ([#​821](https://togithub.com/rust-itertools/itertools/issues/821)) - Specialized `TakeWhileInclusive::fold` ([#​851](https://togithub.com/rust-itertools/itertools/issues/851)) - Specialized `ZipLongest::rfold` ([#​848](https://togithub.com/rust-itertools/itertools/issues/848)) ##### Notable Internal Changes - Added test coverage in CI ([#​847](https://togithub.com/rust-itertools/itertools/issues/847), [#​856](https://togithub.com/rust-itertools/itertools/issues/856)) - Added semver check in CI ([#​784](https://togithub.com/rust-itertools/itertools/issues/784)) - Enforced `clippy` in CI ([#​740](https://togithub.com/rust-itertools/itertools/issues/740)) - Enforced `rustdoc` in CI ([#​840](https://togithub.com/rust-itertools/itertools/issues/840)) - Improved specialization tests ([#​807](https://togithub.com/rust-itertools/itertools/issues/807)) - More specialization benchmarks ([#​806](https://togithub.com/rust-itertools/itertools/issues/806))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 936fd6a..5970692 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2214,9 +2214,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] @@ -4932,7 +4932,7 @@ dependencies = [ "client", "ethers", "futures", - "itertools 0.12.0", + "itertools 0.12.1", "sqlx", "storage", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index e78d35e..0ef5693 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ tracing = "0.1" tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } lazy_static = "1.4.0" -itertools = "0.12.0" +itertools = "0.12.1" serde = "1.0.196" thiserror = "1.0.56" serde_json = "1.0" From b0628f17a29f954065f1cae4a632f82bc1f2262d Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Tue, 30 Jan 2024 21:51:21 +0100 Subject: [PATCH 048/128] fix(storage): return withdrawals for address for l1 and l2 addrs matches (#378) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ > When address A makes withdrawal to address B, api will only show that withdrawal on address B. While we want to show it for both A and B. ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- ...c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json} | 4 ++-- storage/src/lib.rs | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) rename storage/.sqlx/{query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json => query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json} (78%) diff --git a/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json b/storage/.sqlx/query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json similarity index 78% rename from storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json rename to storage/.sqlx/query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json index 3f80961..12fc497 100644 --- a/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json +++ b/storage/.sqlx/query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n l2_to_l1_events.l1_token_addr,\n l2_to_l1_events.amount,\n withdrawals.tx_hash,\n finalization_data.finalization_tx\n FROM\n l2_to_l1_events\n JOIN finalization_data ON\n finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number\n AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block\n JOIN withdrawals ON\n withdrawals.id = finalization_data.withdrawal_id\n WHERE l2_to_l1_events.to_address = $1\n ORDER BY l2_to_l1_events.l2_block_number DESC\n LIMIT $2\n ", + "query": "\n SELECT\n l2_to_l1_events.l1_token_addr,\n l2_to_l1_events.amount,\n withdrawals.tx_hash,\n finalization_data.finalization_tx\n FROM\n l2_to_l1_events\n JOIN finalization_data ON\n finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number\n AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block\n JOIN withdrawals ON\n withdrawals.id = finalization_data.withdrawal_id\n WHERE\n l2_to_l1_events.to_address = $1\n OR\n finalization_data.sender = $1\n ORDER BY l2_to_l1_events.l2_block_number DESC\n LIMIT $2\n ", "describe": { "columns": [ { @@ -37,5 +37,5 @@ true ] }, - "hash": "1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a" + "hash": "2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c" } diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 4f09c8e..48c8e16 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -1403,7 +1403,10 @@ pub async fn withdrawals_for_address( AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block JOIN withdrawals ON withdrawals.id = finalization_data.withdrawal_id - WHERE l2_to_l1_events.to_address = $1 + WHERE + l2_to_l1_events.to_address = $1 + OR + finalization_data.sender = $1 ORDER BY l2_to_l1_events.l2_block_number DESC LIMIT $2 ", From 43a8a15ab9d70d478f1203739279279e716272d7 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 30 Jan 2024 21:56:57 +0100 Subject: [PATCH 049/128] chore(main): release 0.6.3 (#379) :robot: I have created a release *beep* *boop* --- ## [0.6.3](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.2...v0.6.3) (2024-01-30) ### Bug Fixes * **storage:** return withdrawals for address for l1 and l2 addrs matches ([#378](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/378)) ([b0628f1](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/b0628f17a29f954065f1cae4a632f82bc1f2262d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index bf5f1fb..7e23a4f 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.2" + ".": "0.6.3" } diff --git a/CHANGELOG.md b/CHANGELOG.md index f7c18a0..8aa9c82 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.6.3](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.2...v0.6.3) (2024-01-30) + + +### Bug Fixes + +* **storage:** return withdrawals for address for l1 and l2 addrs matches ([#378](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/378)) ([b0628f1](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/b0628f17a29f954065f1cae4a632f82bc1f2262d)) + ## [0.6.2](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.1...v0.6.2) (2024-01-19) From b98d4d31c6898af9f708f1f1de1588ca7d1eadad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 31 Jan 2024 11:16:42 +0100 Subject: [PATCH 050/128] chore(deps): update rust crate ethers to 2.0.13 (#380) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ethers](https://togithub.com/gakonst/ethers-rs) | workspace.dependencies | patch | `2.0.11` -> `2.0.13` | --- ### Release Notes
gakonst/ethers-rs (ethers) ### [`v2.0.13`](https://togithub.com/gakonst/ethers-rs/blob/HEAD/CHANGELOG.md#2013---2024-01-30) [Compare Source](https://togithub.com/gakonst/ethers-rs/compare/ethers-v2.0.11...ethers-v2.0.13) ##### Bug Fixes - Update api url ([#​2693](https://togithub.com/gakonst/ethers-rs/issues/2693)) - Better file name to ident conversion ([#​2688](https://togithub.com/gakonst/ethers-rs/issues/2688)) - Missing `AbiEncode` implem for tuples of length 16 ([#​2685](https://togithub.com/gakonst/ethers-rs/issues/2685)) - Allow missing base fee and reward vecs ([#​2683](https://togithub.com/gakonst/ethers-rs/issues/2683)) - Metis is no 1559 ([#​2680](https://togithub.com/gakonst/ethers-rs/issues/2680)) - Normalize signature S ([#​2679](https://togithub.com/gakonst/ethers-rs/issues/2679)) ##### Depedencies - Update coins-ledger requirement from 0.8.3 to 0.9.0 ([#​2687](https://togithub.com/gakonst/ethers-rs/issues/2687)) ##### Features - Add Base Sepolia as a chain ([#​2708](https://togithub.com/gakonst/ethers-rs/issues/2708)) - Add viction ([#​2710](https://togithub.com/gakonst/ethers-rs/issues/2710)) - Add support for Arbitrum Sepolia ([#​2705](https://togithub.com/gakonst/ethers-rs/issues/2705)) ##### Other - Accept 'input' or 'data', (but not both), in transaction request ([#​2697](https://togithub.com/gakonst/ethers-rs/issues/2697)) - Rename field camelCase ([#​2682](https://togithub.com/gakonst/ethers-rs/issues/2682)) ##### Styling - Add Scroll Sepolia and update Scroll and Scroll Alpha Testnets ([#​2692](https://togithub.com/gakonst/ethers-rs/issues/2692)) - Rustfmt ([#​2681](https://togithub.com/gakonst/ethers-rs/issues/2681)) ##### Testing - Saner tx list params ([#​2689](https://togithub.com/gakonst/ethers-rs/issues/2689))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 44 ++++++++++++++++++++++---------------------- Cargo.toml | 2 +- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5970692..d549a5f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1221,9 +1221,9 @@ dependencies = [ [[package]] name = "ethers" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5344eea9b20effb5efeaad29418215c4d27017639fd1f908260f59cbbd226e" +checksum = "6c7cd562832e2ff584fa844cd2f6e5d4f35bbe11b28c7c9b8df957b2e1d0c701" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1237,9 +1237,9 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c405f24ea3a517899ba7985385c43dc4a7eb1209af3b1e0a1a32d7dcc7f8d09" +checksum = "35dc9a249c066d17e8947ff52a4116406163cf92c7f0763cb8c001760b26403f" dependencies = [ "ethers-core", "once_cell", @@ -1249,9 +1249,9 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0111ead599d17a7bff6985fd5756f39ca7033edc79a31b23026a8d5d64fa95cd" +checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" dependencies = [ "const-hex", "ethers-contract-abigen", @@ -1268,9 +1268,9 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51258120c6b47ea9d9bec0d90f9e8af71c977fbefbef8213c91bfed385fe45eb" +checksum = "f9f96502317bf34f6d71a3e3d270defaa9485d754d789e15a8e04a84161c95eb" dependencies = [ "Inflector", "const-hex", @@ -1292,9 +1292,9 @@ dependencies = [ [[package]] name = "ethers-contract-derive" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936e7a0f1197cee2b62dc89f63eff3201dbf87c283ff7e18d86d38f83b845483" +checksum = "452ff6b0a64507ce8d67ffd48b1da3b42f03680dcf5382244e9c93822cbbf5de" dependencies = [ "Inflector", "const-hex", @@ -1308,9 +1308,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f03e0bdc216eeb9e355b90cf610ef6c5bb8aca631f97b5ae9980ce34ea7878d" +checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" dependencies = [ "arrayvec", "bytes", @@ -1338,9 +1338,9 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abbac2c890bdbe0f1b8e549a53b00e2c4c1de86bb077c1094d1f38cdf9381a56" +checksum = "16d45b981f5fa769e1d0343ebc2a44cfa88c9bc312eb681b676318b40cef6fb1" dependencies = [ "chrono", "ethers-core", @@ -1364,9 +1364,9 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681ece6eb1d10f7cf4f873059a77c04ff1de4f35c63dd7bccde8f438374fcb93" +checksum = "145211f34342487ef83a597c1e69f0d3e01512217a7c72cc8a25931854c7dca0" dependencies = [ "async-trait", "auto_impl", @@ -1390,9 +1390,9 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25d6c0c9455d93d4990c06e049abf9b30daf148cf461ee939c11d88907c60816" +checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" dependencies = [ "async-trait", "auto_impl", @@ -1428,9 +1428,9 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cb1b714e227bbd2d8c53528adb580b203009728b17d0d0e4119353aa9bc5532" +checksum = "b3b125a103b56aef008af5d5fb48191984aa326b50bfd2557d231dc499833de3" dependencies = [ "async-trait", "coins-bip32", @@ -1447,9 +1447,9 @@ dependencies = [ [[package]] name = "ethers-solc" -version = "2.0.11" +version = "2.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64f710586d147864cff66540a6d64518b9ff37d73ef827fee430538265b595f" +checksum = "d21df08582e0a43005018a858cc9b465c5fff9cf4056651be64f844e57d1f55f" dependencies = [ "cfg-if", "const-hex", diff --git a/Cargo.toml b/Cargo.toml index 0ef5693..7b193b8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ exclude = ["./github"] [workspace.dependencies] auto_impl = "1.1.2" async-trait = "0.1.77" -ethers = { version = "2.0.11", default-features = false } +ethers = { version = "2.0.13", default-features = false } tokio = "1.35.1" clap = "4.4.18" tracing = "0.1" From df24985dcf5a304cd35830a0f418569503be1797 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 4 Feb 2024 10:50:49 +0100 Subject: [PATCH 051/128] chore(deps): update rust crate tokio to 1.36.0 (#382) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | workspace.dependencies | minor | `1.35.1` -> `1.36.0` | --- ### Release Notes
tokio-rs/tokio (tokio) ### [`v1.36.0`](https://togithub.com/tokio-rs/tokio/releases/tag/tokio-1.36.0): Tokio v1.36.0 [Compare Source](https://togithub.com/tokio-rs/tokio/compare/tokio-1.35.1...tokio-1.36.0) ##### 1.36.0 (February 2nd, 2024) ##### Added - io: add `tokio::io::Join` ([#​6220]) - io: implement `AsyncWrite` for `Empty` ([#​6235]) - net: add support for anonymous unix pipes ([#​6127]) - net: add `UnixSocket` ([#​6290]) - net: expose keepalive option on `TcpSocket` ([#​6311]) - sync: add `{Receiver,UnboundedReceiver}::poll_recv_many` ([#​6236]) - sync: add `Sender::{try_,}reserve_many` ([#​6205]) - sync: add `watch::Receiver::mark_unchanged` ([#​6252]) - task: add `JoinSet::try_join_next` ([#​6280]) - time: add `FutureExt::timeout` ([#​6276]) ##### Changed - io: make `copy` cooperative ([#​6265]) - io: make `repeat` and `sink` cooperative ([#​6254]) - io: simplify check for empty slice ([#​6293]) - rt: improve robustness of `wake_in_drop_after_panic` test ([#​6238]) - process: use pidfd on Linux when available ([#​6152]) - sync: use AtomicBool in broadcast channel future ([#​6298]) ##### Fixed - chore: typographic improvements ([#​6262]) - runtime: remove obsolete comment ([#​6303]) - task: fix typo ([#​6261]) ##### Documented - io: clarify `clear_ready` docs ([#​6304]) - net: document that `*Fd` traits on `TcpSocket` are unix-only ([#​6294]) - sync: document FIFO behavior of `tokio::sync::Mutex` ([#​6279]) [#​6220]: https://togithub.com/tokio-rs/tokio/pull/6220 [#​6235]: https://togithub.com/tokio-rs/tokio/pull/6235 [#​6127]: https://togithub.com/tokio-rs/tokio/pull/6127 [#​6290]: https://togithub.com/tokio-rs/tokio/pull/6290 [#​6311]: https://togithub.com/tokio-rs/tokio/pull/6311 [#​6236]: https://togithub.com/tokio-rs/tokio/pull/6236 [#​6205]: https://togithub.com/tokio-rs/tokio/pull/6205 [#​6252]: https://togithub.com/tokio-rs/tokio/pull/6252 [#​6280]: https://togithub.com/tokio-rs/tokio/pull/6280 [#​6276]: https://togithub.com/tokio-rs/tokio/pull/6276 [#​6265]: https://togithub.com/tokio-rs/tokio/pull/6265 [#​6254]: https://togithub.com/tokio-rs/tokio/pull/6254 [#​6293]: https://togithub.com/tokio-rs/tokio/pull/6293 [#​6238]: https://togithub.com/tokio-rs/tokio/pull/6238 [#​6152]: https://togithub.com/tokio-rs/tokio/pull/6152 [#​6298]: https://togithub.com/tokio-rs/tokio/pull/6298 [#​6262]: https://togithub.com/tokio-rs/tokio/pull/6262 [#​6303]: https://togithub.com/tokio-rs/tokio/pull/6303 [#​6261]: https://togithub.com/tokio-rs/tokio/pull/6261 [#​6304]: https://togithub.com/tokio-rs/tokio/pull/6304 [#​6294]: https://togithub.com/tokio-rs/tokio/pull/6294 [#​6279]: https://togithub.com/tokio-rs/tokio/pull/6279
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d549a5f..74343bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4332,9 +4332,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 7b193b8..f37ec72 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ exclude = ["./github"] auto_impl = "1.1.2" async-trait = "0.1.77" ethers = { version = "2.0.13", default-features = false } -tokio = "1.35.1" +tokio = "1.36.0" clap = "4.4.18" tracing = "0.1" tracing-subscriber = "0.3" From 5d70fff184a362814c46361ce60df04d5f4429b1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 4 Feb 2024 11:21:52 +0100 Subject: [PATCH 052/128] chore(deps): update rust crate eyre to 0.6.12 (#381) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [eyre](https://togithub.com/eyre-rs/eyre) | workspace.dependencies | patch | `0.6.11` -> `0.6.12` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74343bb..34dbc4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1485,9 +1485,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "eyre" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", diff --git a/Cargo.toml b/Cargo.toml index f37ec72..f2e15ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,7 @@ serde = "1.0.196" thiserror = "1.0.56" serde_json = "1.0" color-eyre = "0.6.2" -eyre = "0.6.11" +eyre = "0.6.12" dotenvy = "0.15.7" envconfig = "0.10.0" proc-macro2 = "1.0.78" From 16a4159806f8001d65d1dbbbc6312124a660b49d Mon Sep 17 00:00:00 2001 From: omahs <73983677+omahs@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:54:00 +0100 Subject: [PATCH 053/128] fix: typos (#383) fix: typos --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3b25028..e9c98ca 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A Withdrawal Finalizer in Rust. ## Purpose -Withdrawal Finalizer is a component of `zksync-era` responsible for monitoring and finalizing [L2->L1 withdrawals](https://github.com/matter-labs/zksync-era/blob/main/docs/advanced/03_withdrawals.md). It does so by continiously monitoring events happening on both L2 and L1, keeping some state in persistent storage (which is PostgreSQL) and sending withdrawal finalization transactions whenever necessary. +Withdrawal Finalizer is a component of `zksync-era` responsible for monitoring and finalizing [L2->L1 withdrawals](https://github.com/matter-labs/zksync-era/blob/main/docs/advanced/03_withdrawals.md). It does so by continuously monitoring events happening on both L2 and L1, keeping some state in persistent storage (which is PostgreSQL) and sending withdrawal finalization transactions whenever necessary. ## Building @@ -33,7 +33,7 @@ $ env DATABASE_URL=postgres://mycreds@myhost/mydb sqlx migrate run ``` ### Configuration -Configuration is done via enviromnent variables that can also be read from `.env` file if it is present. +Configuration is done via environment variables that can also be read from `.env` file if it is present. Deployment is done by deploying a dockerized image of the service. | Variable | Description | @@ -48,7 +48,7 @@ Deployment is done by deploying a dockerized image of the service. | `API_WEB3_JSON_RPC_HTTP_URL` | Address of the zkSync Era HTTP RPC endpoint | | `DATABSE_URL` | The url of PostgreSQL database the service stores its state into | | `GAS_LIMIT` | The gas limit of a single withdrawal finalization within the batch of withdrawals finalized in a call to `finalizeWithdrawals` in WithdrawalFinalizerContract | -| `BATCH_FINALIZATION_GAS_LIMIT` | The gas limit of the finalizastion of the whole batch in a call to `finalizeWithdrawals` in Withdrawal Finalizer Contract | +| `BATCH_FINALIZATION_GAS_LIMIT` | The gas limit of the finalization of the whole batch in a call to `finalizeWithdrawals` in Withdrawal Finalizer Contract | | `WITHDRAWAL_FINALIZER_ACCOUNT_PRIVATE_KEY` | The private key of the account that is going to be submit finalization transactions | | `TX_RETRY_TIMEOUT_SECS` | Number of seconds to wait for a potentially stuck finalization transaction before readjusting its fees | | `TOKENS_TO_FINALIZE` | Configures the sets of tokens this instance of finalizer will finalize. It may be configured as a whitelist, a blacklist, a wildcard or completely disable any finalization. For more info see below. | @@ -66,7 +66,7 @@ The configuration structure describing the service config can be found in [`conf It may be handy to limit a set of tokens the Finalizer is finalizing. This configuration may be specified by setting a rule in the `TOKENS_TO_FINALIZE` value. -If this enviromnent variable is not set then by default Finalizer will only finalize +If this environment variable is not set then by default Finalizer will only finalize ETH token (`0x000...0800a`). You may specify `All`, `None`, `BlackList` or `WhiteList` as json documents: From a8717c3c5bc7df4495e5edc2aa2521be2ab39373 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Feb 2024 10:57:27 +0100 Subject: [PATCH 054/128] chore(deps): update rust docker tag to v1.76 (#386) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | rust | stage | minor | `1.75` -> `1.76` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 0723c8e..9165fb8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.75 AS builder +FROM rust:1.76 AS builder WORKDIR /app From c2054bd1fa2022b36079c9758598a894c8c76dba Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 9 Feb 2024 11:04:52 +0100 Subject: [PATCH 055/128] chore(deps): update rust crate clap to 4.5.0 (#385) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies | minor | `4.4.18` -> `4.5.0` | --- ### Release Notes
clap-rs/clap (clap) ### [`v4.5.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#450---2024-02-08) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.4.18...v4.5.0) ##### Compatibility - Update MSRV to 1.74
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 20 ++++++++++---------- Cargo.toml | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 34dbc4c..12eb17b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -556,9 +556,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" dependencies = [ "clap_builder", "clap_derive", @@ -566,9 +566,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" dependencies = [ "anstream", "anstyle", @@ -578,9 +578,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" dependencies = [ "heck", "proc-macro2", @@ -590,9 +590,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "client" @@ -4138,9 +4138,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "strum" diff --git a/Cargo.toml b/Cargo.toml index f2e15ed..f35f6e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ auto_impl = "1.1.2" async-trait = "0.1.77" ethers = { version = "2.0.13", default-features = false } tokio = "1.36.0" -clap = "4.4.18" +clap = "4.5.0" tracing = "0.1" tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } From a68ea5611aa4e2d7f81c503b4335d6633a40f30b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 11 Feb 2024 19:32:35 +0100 Subject: [PATCH 056/128] chore(deps): update rust crate chrono to 0.4.34 (#387) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [chrono](https://togithub.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.33` -> `0.4.34` | --- ### Release Notes
chronotope/chrono (chrono) ### [`v0.4.34`](https://togithub.com/chronotope/chrono/releases/tag/v0.4.34): 0.4.34 [Compare Source](https://togithub.com/chronotope/chrono/compare/v0.4.33...v0.4.34) ### Notable changes - In chrono 0.4.34 we finished the work to make all methods const where doing so is supported by rust 1.61. - We renamed the `Duration` type to `TimeDelta`. This removes the confusion between chrono's type and the later `Duration` type in the standard library. It will remain available under the old name as a type alias for compatibility. - The Windows implementation of `Local` is rewritten. The new version avoids panics when the date is outside of the range supported by windows (the years 1601 to 30828), and gives more accurate results during DST transitions. - The `Display` format of `TimeDelta` is modified to conform better to ISO 8601. Previously it converted all values greater than 24 hours to a value with days. This is not correct, as doing so changes the duration from an 'accurate' to a 'nominal' representation to use ISO 8601 terms. ### Fixes - Add missing range check in `TimeDelta::milliseconds` ([#​1385](https://togithub.com/chronotope/chrono/issues/1385), thanks [@​danwilliams](https://togithub.com/danwilliams)) - Remove check for `DurationExceedsTimestamp` in `DurationRound` ([#​1403](https://togithub.com/chronotope/chrono/issues/1403), thanks [@​joroKr21](https://togithub.com/joroKr21)) - Fix localized formatting with `%X` (([https://github.com/chronotope/pure-rust-locales/pull/12](https://togithub.com/chronotope/pure-rust-locales/pull/12), [#​1420](https://togithub.com/chronotope/chrono/issues/1420)) - Windows: base implementation on `GetTimeZoneInformationForYear` ([#​1017](https://togithub.com/chronotope/chrono/issues/1017)) ### Additions - Add `TimeDelta::try_milliseconds` ([#​1385](https://togithub.com/chronotope/chrono/issues/1385), thanks [@​danwilliams](https://togithub.com/danwilliams)) - Add `TimeDelta::new` ([#​1337](https://togithub.com/chronotope/chrono/issues/1337)) - Add `StrftimeItems::{parse, parse_to_owned}` and more documentation ([#​1184](https://togithub.com/chronotope/chrono/issues/1184)) - More standard traits and documentation for `format::Locale` (via [https://github.com/chronotope/pure-rust-locales/pull/8](https://togithub.com/chronotope/pure-rust-locales/pull/8)) ### Changes - Rename `Duration` to `TimeDelta`, add type alias ([#​1406](https://togithub.com/chronotope/chrono/issues/1406)) - Make `TimeDelta` methods const ([#​1337](https://togithub.com/chronotope/chrono/issues/1337)) - Make remaining methods of `NaiveDate`, `NaiveWeek`, `NaiveTime` and `NaiveDateTime` const where possible ([#​1337](https://togithub.com/chronotope/chrono/issues/1337)) - Make methods on `DateTime` const where possible ([#​1400](https://togithub.com/chronotope/chrono/issues/1400)) - Make `Display` format of `TimeDelta` conform better to ISO 8601 ([#​1328](https://togithub.com/chronotope/chrono/issues/1328)) ### Documentation - Fix the formatting of `timestamp_micros`'s Example doc ([#​1338](https://togithub.com/chronotope/chrono/issues/1338) via [#​1386](https://togithub.com/chronotope/chrono/issues/1386), thanks [@​emikitas](https://togithub.com/emikitas)) - Specify branch for GitHub Actions badge and fix link ([#​1388](https://togithub.com/chronotope/chrono/issues/1388)) - Don't mention some deprecated methods in docs ([#​1395](https://togithub.com/chronotope/chrono/issues/1395)) - Remove stray documentation from main ([#​1397](https://togithub.com/chronotope/chrono/issues/1397)) - Improved documentation of `TimeDelta` constructors ([#​1385](https://togithub.com/chronotope/chrono/issues/1385), thanks [@​danwilliams](https://togithub.com/danwilliams)) ### Internal - Switch branch names: 0.4.x releases are the `main` branch, work on 0.5 happens in the `0.5.x` branch ([#​1390](https://togithub.com/chronotope/chrono/issues/1390), [#​1402](https://togithub.com/chronotope/chrono/issues/1402)). - Don't use deprecated method in `impl Arbitrary for DateTime` and set up CI test ([#​1336](https://togithub.com/chronotope/chrono/issues/1336)) - Remove workaround for Rust < 1.61 ([#​1393](https://togithub.com/chronotope/chrono/issues/1393)) - Bump `codecov/codecov-action` from 3 to 4 ([#​1404](https://togithub.com/chronotope/chrono/issues/1404)) - Remove partial support for handling `-0000` offset ([#​1411](https://togithub.com/chronotope/chrono/issues/1411)) - Move `TOO_LONG` error out of `parse_internal` ([#​1419](https://togithub.com/chronotope/chrono/issues/1419)) Thanks to all contributors on behalf of the chrono team, [@​djc](https://togithub.com/djc) and [@​pitdicker](https://togithub.com/pitdicker)!
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 12eb17b..1afdb87 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -533,9 +533,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/Cargo.toml b/Cargo.toml index f35f6e6..0b76716 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ syn = "2.0.48" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" -chrono = { version = "0.4.33", default-features = false } +chrono = { version = "0.4.34", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } From 9470988b530f90ec061de83f2e45ed3ab3df0296 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 18:36:48 +0100 Subject: [PATCH 057/128] chore(main): release 0.6.4 (#384) :robot: I have created a release *beep* *boop* --- ## [0.6.4](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.3...v0.6.4) (2024-02-11) ### Bug Fixes * typos ([16a4159](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/16a4159806f8001d65d1dbbbc6312124a660b49d)) * typos ([#383](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/383)) ([16a4159](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/16a4159806f8001d65d1dbbbc6312124a660b49d)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 7e23a4f..eb5abf7 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.3" + ".": "0.6.4" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 8aa9c82..c5a5deb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.6.4](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.3...v0.6.4) (2024-02-11) + + +### Bug Fixes + +* typos ([16a4159](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/16a4159806f8001d65d1dbbbc6312124a660b49d)) +* typos ([#383](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/383)) ([16a4159](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/16a4159806f8001d65d1dbbbc6312124a660b49d)) + ## [0.6.3](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.2...v0.6.3) (2024-01-30) From cb414b01392e9966e6a1a217b95a359af0f125f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 20:03:56 +0100 Subject: [PATCH 058/128] chore(deps): update rust crate thiserror to 1.0.57 (#388) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.56` -> `1.0.57` | --- ### Release Notes
dtolnay/thiserror (thiserror) ### [`v1.0.57`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.57) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.56...1.0.57) - Generate more efficient `Display` impl for error message which do not contain any interpolated value ([#​286](https://togithub.com/dtolnay/thiserror/issues/286), thanks [@​nyurik](https://togithub.com/nyurik))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1afdb87..1111c5f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4250,18 +4250,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 0b76716..5946e9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" serde = "1.0.196" -thiserror = "1.0.56" +thiserror = "1.0.57" serde_json = "1.0" color-eyre = "0.6.2" eyre = "0.6.12" From fd1d765a44c97f5e4b5ae446f68fd98731bcde64 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 09:45:29 +0100 Subject: [PATCH 059/128] chore(deps): update rust crate serde to 1.0.197 (#391) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.196` -> `1.0.197` | --- ### Release Notes
serde-rs/serde (serde) ### [`v1.0.197`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.197) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.196...v1.0.197) - Fix unused_imports warnings when compiled by rustc 1.78 - Optimize code size of some Display impls ([#​2697](https://togithub.com/serde-rs/serde/issues/2697), thanks [@​nyurik](https://togithub.com/nyurik))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1111c5f..d94156a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3629,9 +3629,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -3649,9 +3649,9 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 5946e9d..ff7158c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" -serde = "1.0.196" +serde = "1.0.197" thiserror = "1.0.57" serde_json = "1.0" color-eyre = "0.6.2" From 4367cfc983c8f7ad5142389f6b75ba88b2498bfc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:06:06 +0100 Subject: [PATCH 060/128] chore(deps): update rust crate clap to 4.5.1 (#390) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies | patch | `4.5.0` -> `4.5.1` | --- ### Release Notes
clap-rs/clap (clap) ### [`v4.5.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#451---2024-02-16) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.5.0...v4.5.1) ##### Fixes - *(error)* Include suggestion to add `--` even if there is a "did you mean" so long as `last` or `trailing_var_arg` is used
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d94156a..2288b63 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -556,9 +556,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" +checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" dependencies = [ "clap_builder", "clap_derive", @@ -566,9 +566,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.0" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" +checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" dependencies = [ "anstream", "anstyle", diff --git a/Cargo.toml b/Cargo.toml index ff7158c..0059cfe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ auto_impl = "1.1.2" async-trait = "0.1.77" ethers = { version = "2.0.13", default-features = false } tokio = "1.36.0" -clap = "4.5.0" +clap = "4.5.1" tracing = "0.1" tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } From a7a5918f7edcc8f762a25db4c2e968e120e0c9c2 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 21 Feb 2024 10:24:55 +0100 Subject: [PATCH 061/128] fix(storage): add necessary indices for api query (#392) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ Adds indices for api-related query. ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- storage/migrations/20240221084958_add-api-indices.down.sql | 2 ++ storage/migrations/20240221084958_add-api-indices.up.sql | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 storage/migrations/20240221084958_add-api-indices.down.sql create mode 100644 storage/migrations/20240221084958_add-api-indices.up.sql diff --git a/storage/migrations/20240221084958_add-api-indices.down.sql b/storage/migrations/20240221084958_add-api-indices.down.sql new file mode 100644 index 0000000..7bd6130 --- /dev/null +++ b/storage/migrations/20240221084958_add-api-indices.down.sql @@ -0,0 +1,2 @@ +DROP INDEX IF EXISTS ix_l2_to_l1_events_to_addres_l2_block_number; +DROP INDEX IF EXISTS ix_finalization_data_l1_batch_number_l2_tx_number_in_block; diff --git a/storage/migrations/20240221084958_add-api-indices.up.sql b/storage/migrations/20240221084958_add-api-indices.up.sql new file mode 100644 index 0000000..a1076b4 --- /dev/null +++ b/storage/migrations/20240221084958_add-api-indices.up.sql @@ -0,0 +1,2 @@ +CREATE INDEX IF NOT EXISTS ix_l2_to_l1_events_to_addres_l2_block_number ON l2_to_l1_events (to_address,l2_block_number); +CREATE INDEX IF NOT EXISTS ix_finalization_data_l1_batch_number_l2_tx_number_in_block on finalization_data (l1_batch_number,l2_tx_number_in_block); From 6d7e7a402dc7deffba18fcfd74b50000cc995587 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 21 Feb 2024 11:37:52 +0100 Subject: [PATCH 062/128] fix(storage): remove filtering by l2 addrs (#394) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit b0628f17a29f954065f1cae4a632f82bc1f2262d. # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- ...493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json} | 4 ++-- storage/src/lib.rs | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) rename storage/.sqlx/{query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json => query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json} (78%) diff --git a/storage/.sqlx/query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json b/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json similarity index 78% rename from storage/.sqlx/query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json rename to storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json index 12fc497..3f80961 100644 --- a/storage/.sqlx/query-2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c.json +++ b/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json @@ -1,6 +1,6 @@ { "db_name": "PostgreSQL", - "query": "\n SELECT\n l2_to_l1_events.l1_token_addr,\n l2_to_l1_events.amount,\n withdrawals.tx_hash,\n finalization_data.finalization_tx\n FROM\n l2_to_l1_events\n JOIN finalization_data ON\n finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number\n AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block\n JOIN withdrawals ON\n withdrawals.id = finalization_data.withdrawal_id\n WHERE\n l2_to_l1_events.to_address = $1\n OR\n finalization_data.sender = $1\n ORDER BY l2_to_l1_events.l2_block_number DESC\n LIMIT $2\n ", + "query": "\n SELECT\n l2_to_l1_events.l1_token_addr,\n l2_to_l1_events.amount,\n withdrawals.tx_hash,\n finalization_data.finalization_tx\n FROM\n l2_to_l1_events\n JOIN finalization_data ON\n finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number\n AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block\n JOIN withdrawals ON\n withdrawals.id = finalization_data.withdrawal_id\n WHERE l2_to_l1_events.to_address = $1\n ORDER BY l2_to_l1_events.l2_block_number DESC\n LIMIT $2\n ", "describe": { "columns": [ { @@ -37,5 +37,5 @@ true ] }, - "hash": "2d4fbb21f9b73c5a557e688ea157c578e2bcfaee3a4b5f22bc1965acd67e488c" + "hash": "1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a" } diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 48c8e16..4f09c8e 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -1403,10 +1403,7 @@ pub async fn withdrawals_for_address( AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block JOIN withdrawals ON withdrawals.id = finalization_data.withdrawal_id - WHERE - l2_to_l1_events.to_address = $1 - OR - finalization_data.sender = $1 + WHERE l2_to_l1_events.to_address = $1 ORDER BY l2_to_l1_events.l2_block_number DESC LIMIT $2 ", From 2f17d2ea7c910dc8d21cdd4fefafab78983afc3a Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 11:42:34 +0100 Subject: [PATCH 063/128] chore(main): release 0.6.5 (#393) :robot: I have created a release *beep* *boop* --- ## [0.6.5](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.4...v0.6.5) (2024-02-21) ### Bug Fixes * **storage:** add necessary indices for api query ([#392](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/392)) ([a7a5918](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a7a5918f7edcc8f762a25db4c2e968e120e0c9c2)) * **storage:** remove filtering by l2 addrs ([#394](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/394)) ([6d7e7a4](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/6d7e7a402dc7deffba18fcfd74b50000cc995587)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index eb5abf7..5b530ee 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.4" + ".": "0.6.5" } diff --git a/CHANGELOG.md b/CHANGELOG.md index c5a5deb..d8164a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [0.6.5](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.4...v0.6.5) (2024-02-21) + + +### Bug Fixes + +* **storage:** add necessary indices for api query ([#392](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/392)) ([a7a5918](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/a7a5918f7edcc8f762a25db4c2e968e120e0c9c2)) +* **storage:** remove filtering by l2 addrs ([#394](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/394)) ([6d7e7a4](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/6d7e7a402dc7deffba18fcfd74b50000cc995587)) + ## [0.6.4](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.3...v0.6.4) (2024-02-11) From f1581d9b8611736f21d6c63e145b8a7fa99f0316 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 22:04:54 +0100 Subject: [PATCH 064/128] chore(deps): update rust crate tower-http to 0.5.2 (#395) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tower-http](https://togithub.com/tower-rs/tower-http) | workspace.dependencies | patch | `0.5.1` -> `0.5.2` | --- ### Release Notes
tower-rs/tower-http (tower-http) ### [`v0.5.2`](https://togithub.com/tower-rs/tower-http/releases/tag/tower-http-0.5.2): v0.5.2 [Compare Source](https://togithub.com/tower-rs/tower-http/compare/tower-http-0.5.1...tower-http-0.5.2) #### Added: - **compression:** Will now send a `vary: accept-encoding` header on compressed responses ([#​399]) - **compression:** Support `x-gzip` as equivalent to `gzip` in `accept-encoding` request header ([#​467]) #### Fixed - **compression:** Skip compression for range requests ([#​446]) - **compression:** Skip compression for SSE responses by default ([#​465]) - **cors:** *Actually* keep Vary headers set by the inner service when setting response headers ([#​473]) - Version 0.5.1 intended to ship this, but the implementation was buggy and didn't actually do anything [#​399]: https://togithub.com/tower-rs/tower-http/pull/399 [#​446]: https://togithub.com/tower-rs/tower-http/pull/446 [#​465]: https://togithub.com/tower-rs/tower-http/pull/465 [#​467]: https://togithub.com/tower-rs/tower-http/pull/467 [#​473]: https://togithub.com/tower-rs/tower-http/pull/473
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2288b63..5fd0d85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4473,9 +4473,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0da193277a4e2c33e59e09b5861580c33dd0a637c3883d0fa74ba40c0374af2e" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "bitflags 2.4.1", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 0059cfe..2ca76ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -67,7 +67,7 @@ tx-sender = { path = "./tx-sender" } finalizer = { path = "./finalizer" } tokio-stream = "0.1.14" tokio-util = "0.7.10" -tower-http = "0.5.1" +tower-http = "0.5.2" url = "2.5.0" axum = "0.7.4" vlog = { path = "./vlog" } From d847ed4a04ed0dff05ab8fddf61daf5d2fbcd4cb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 23:09:08 +0100 Subject: [PATCH 065/128] chore(deps): update rust crate syn to 2.0.50 (#389) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.48` -> `2.0.50` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.50`](https://togithub.com/dtolnay/syn/releases/tag/2.0.50) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.49...2.0.50) - Fix unused_imports warnings when compiled by rustc 1.78 ### [`v2.0.49`](https://togithub.com/dtolnay/syn/releases/tag/2.0.49) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.48...2.0.49) - Improve error location when parsing from an empty string literal using `LitStr::parse` ([#​1590](https://togithub.com/dtolnay/syn/issues/1590))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 48 ++++++++++++++++++++++++------------------------ Cargo.toml | 2 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5fd0d85..ffff57c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -182,7 +182,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -213,7 +213,7 @@ checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -585,7 +585,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -1285,7 +1285,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.48", + "syn 2.0.50", "toml", "walkdir", ] @@ -1303,7 +1303,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -1329,7 +1329,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.48", + "syn 2.0.50", "tempfile", "thiserror", "tiny-keccak", @@ -1359,7 +1359,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -1677,7 +1677,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -2359,7 +2359,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -2621,7 +2621,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -2867,7 +2867,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -2905,7 +2905,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -2990,7 +2990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -3046,7 +3046,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -3655,7 +3655,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -4161,7 +4161,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -4203,9 +4203,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" dependencies = [ "proc-macro2", "quote", @@ -4265,7 +4265,7 @@ checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -4357,7 +4357,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -4519,7 +4519,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -4819,7 +4819,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", ] [[package]] @@ -4879,7 +4879,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", "wasm-bindgen-shared", ] @@ -4913,7 +4913,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.50", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 2ca76ab..f20c974 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.48" +syn = "2.0.50" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 89454e06b19aff0e072a10b39ab59164bf3990c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Feb 2024 23:59:25 +0100 Subject: [PATCH 066/128] chore(deps): update rust crate auto_impl to 1.2.0 (#397) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [auto_impl](https://togithub.com/auto-impl-rs/auto_impl) | workspace.dependencies | minor | `1.1.2` -> `1.2.0` | --- ### Release Notes
auto-impl-rs/auto_impl (auto_impl) ### [`v1.2.0`](https://togithub.com/auto-impl-rs/auto_impl/releases/tag/v1.2.0) [Compare Source](https://togithub.com/auto-impl-rs/auto_impl/compare/v1.1.2...v1.2.0) #### What's Changed - feat: support async traits by [@​makcandrov](https://togithub.com/makcandrov) in [https://github.com/auto-impl-rs/auto_impl/pull/98](https://togithub.com/auto-impl-rs/auto_impl/pull/98) - Prepare for 1.2.0 release by [@​KodrAus](https://togithub.com/KodrAus) in [https://github.com/auto-impl-rs/auto_impl/pull/99](https://togithub.com/auto-impl-rs/auto_impl/pull/99) #### New Contributors - [@​makcandrov](https://togithub.com/makcandrov) made their first contribution in [https://github.com/auto-impl-rs/auto_impl/pull/98](https://togithub.com/auto-impl-rs/auto_impl/pull/98) **Full Changelog**: https://github.com/auto-impl-rs/auto_impl/compare/v1.1.2...v1.2.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ffff57c..bea3cd6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -207,9 +207,9 @@ dependencies = [ [[package]] name = "auto_impl" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823b8bb275161044e2ac7a25879cb3e2480cb403e3943022c7c769c599b756aa" +checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index f20c974..0c7dcaf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ authors = ["The Matter Labs Team "] exclude = ["./github"] [workspace.dependencies] -auto_impl = "1.1.2" +auto_impl = "1.2.0" async-trait = "0.1.77" ethers = { version = "2.0.13", default-features = false } tokio = "1.36.0" From 10d502bf5cebe4bb05a69850fe74a8924d51df55 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 29 Feb 2024 10:40:48 +0100 Subject: [PATCH 067/128] chore(deps): update rust crate syn to 2.0.52 (#396) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.50` -> `2.0.52` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.52`](https://togithub.com/dtolnay/syn/releases/tag/2.0.52) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.51...2.0.52) - Add an expression parser that uses match-arm's boundary rules ([#​1593](https://togithub.com/dtolnay/syn/issues/1593)) ### [`v2.0.51`](https://togithub.com/dtolnay/syn/releases/tag/2.0.51) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.50...2.0.51) - Resolve non_local_definitions warnings in generated code under rustc 1.78-nightly
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 48 ++++++++++++++++++++++++------------------------ Cargo.toml | 2 +- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bea3cd6..419f0aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -182,7 +182,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -213,7 +213,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -585,7 +585,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -1285,7 +1285,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.50", + "syn 2.0.52", "toml", "walkdir", ] @@ -1303,7 +1303,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -1329,7 +1329,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.50", + "syn 2.0.52", "tempfile", "thiserror", "tiny-keccak", @@ -1359,7 +1359,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -1677,7 +1677,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -2359,7 +2359,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -2621,7 +2621,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -2867,7 +2867,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -2905,7 +2905,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -2990,7 +2990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -3046,7 +3046,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -3655,7 +3655,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -4161,7 +4161,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -4203,9 +4203,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.50" +version = "2.0.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f1bdc9872430ce9b75da68329d1c1746faf50ffac5f19e02b71e37ff881ffb" +checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" dependencies = [ "proc-macro2", "quote", @@ -4265,7 +4265,7 @@ checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -4357,7 +4357,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -4519,7 +4519,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -4819,7 +4819,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", ] [[package]] @@ -4879,7 +4879,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", "wasm-bindgen-shared", ] @@ -4913,7 +4913,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.50", + "syn 2.0.52", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index 0c7dcaf..2162bef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.50" +syn = "2.0.52" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 29b6a72bb3927fe1a100332f664d40f41042099e Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Mon, 4 Mar 2024 20:42:41 +0100 Subject: [PATCH 068/128] fix: disable l2 to l1 events because of eip4844 (#398) --- Cargo.lock | 12 ++--- chain-events/src/block_events.rs | 78 +++----------------------------- 2 files changed, 12 insertions(+), 78 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 419f0aa..8efe1e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1039,9 +1039,9 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.5" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct", "crypto-bigint", @@ -2458,9 +2458,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -5259,9 +5259,9 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" [[package]] name = "zip" diff --git a/chain-events/src/block_events.rs b/chain-events/src/block_events.rs index abd24d8..7fc3469 100644 --- a/chain-events/src/block_events.rs +++ b/chain-events/src/block_events.rs @@ -1,31 +1,22 @@ -use std::{sync::Arc, time::Duration}; +use std::sync::Arc; use ethers::{ - abi::{AbiDecode, Address, RawLog}, + abi::{Address, RawLog}, contract::EthEvent, prelude::EthLogDecode, providers::{Middleware, Provider, PubsubClient, Ws}, - types::{BlockNumber, Filter, Log, Transaction, ValueOrArray, H256}, + types::{BlockNumber, Filter, Log, ValueOrArray}, }; use futures::{Sink, SinkExt, StreamExt}; use client::{ - zksync_contract::{ - codegen::{ - BlockCommitFilter, BlockExecutionFilter, BlocksVerificationFilter, CommitBatchesCall, - }, - parse_withdrawal_events_l1, - }, + zksync_contract::codegen::{BlockCommitFilter, BlockExecutionFilter, BlocksVerificationFilter}, BlockEvent, }; use ethers_log_decode::EthLogDecode; use crate::{metrics::CHAIN_EVENTS_METRICS, Error, Result, RECONNECT_BACKOFF}; -// Total timecap for tx querying retry 10 minutes -const PENDING_TX_RETRY: usize = 12 * 10; -const PENDING_TX_RETRY_BACKOFF: Duration = Duration::from_secs(5); - #[derive(EthLogDecode)] enum L1Events { BlockCommit(BlockCommitFilter), @@ -223,32 +214,11 @@ impl BlockEvents { } } -async fn get_tx_with_retries( - middleware: &M, - tx_hash: H256, - retries: usize, -) -> Result> -where - M: Middleware, -{ - for _ in 0..retries { - if let Ok(Some(tx)) = middleware.get_transaction(tx_hash).await { - if tx.block_number.is_some() { - return Ok(Some(tx)); - } - } - - tokio::time::sleep(PENDING_TX_RETRY_BACKOFF).await; - } - - Ok(None) -} - async fn process_l1_event( - l2_erc20_bridge_addr: Address, + _l2_erc20_bridge_addr: Address, log: &Log, l1_event: &L1Events, - middleware: M, + _middleware: M, sender: &mut S, ) -> Result<()> where @@ -263,42 +233,6 @@ where match l1_event { L1Events::BlockCommit(bc) => { - let Ok(tx) = get_tx_with_retries( - &middleware, - log.transaction_hash.unwrap_or_else(|| { - panic!("log always has a related transaction {:?}; qed", log) - }), - PENDING_TX_RETRY, - ) - .await - else { - tracing::error!("Failed to retreive transaction {:?}", log.transaction_hash); - return Err(Error::NoTransaction); - }; - - let tx = tx.unwrap_or_else(|| { - panic!("mined transaction exists {:?}; qed", log.transaction_hash) - }); - - let mut events = vec![]; - - if let Ok(commit_blocks) = CommitBatchesCall::decode(&tx.input) { - let mut res = parse_withdrawal_events_l1( - &commit_blocks, - tx.block_number - .unwrap_or_else(|| { - panic!("a mined transaction {:?} has a block number; qed", tx.hash) - }) - .as_u64(), - l2_erc20_bridge_addr, - ); - events.append(&mut res); - } - sender - .send(BlockEvent::L2ToL1Events { events }) - .await - .map_err(|_| Error::ChannelClosing)?; - CHAIN_EVENTS_METRICS.block_commit_events.inc(); sender .send(BlockEvent::BlockCommit { From d8f12a5c224b09d8aed4d4ab9dbae177916cfeec Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Mon, 4 Mar 2024 20:55:06 +0100 Subject: [PATCH 069/128] chore(main): release 0.6.6 (#399) :robot: I have created a release *beep* *boop* --- ## [0.6.6](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.5...v0.6.6) (2024-03-04) ### Bug Fixes * disable l2 to l1 events because of eip4844 ([#398](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/398)) ([29b6a72](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/29b6a72bb3927fe1a100332f664d40f41042099e)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 5b530ee..b572b14 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.5" + ".": "0.6.6" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d8164a5..45cd155 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.6.6](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.5...v0.6.6) (2024-03-04) + + +### Bug Fixes + +* disable l2 to l1 events because of eip4844 ([#398](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/398)) ([29b6a72](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/29b6a72bb3927fe1a100332f664d40f41042099e)) + ## [0.6.5](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.4...v0.6.5) (2024-02-21) From 0c99c232b8d41de4dc954a884c62ce1360f96a09 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Thu, 7 Mar 2024 10:33:21 +0100 Subject: [PATCH 070/128] fix(ci): update whoami (#403) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- Cargo.lock | 48 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8efe1e8..5cc7b23 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,14 +40,15 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", "once_cell", "version_check", + "zerocopy", ] [[package]] @@ -3140,6 +3141,15 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_users" version = "0.4.3" @@ -4858,6 +4868,12 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + [[package]] name = "wasm-bindgen" version = "0.2.87" @@ -4997,9 +5013,13 @@ checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "whoami" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +checksum = "0fec781d48b41f8163426ed18e8fc2864c12937df9ce54c88ede7bd47270893e" +dependencies = [ + "redox_syscall 0.4.1", + "wasite", +] [[package]] name = "winapi" @@ -5257,6 +5277,26 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" +[[package]] +name = "zerocopy" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.52", +] + [[package]] name = "zeroize" version = "1.7.0" From 2e58e49fee436ac728a169c2210abfa85eb057bc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 10:52:09 +0100 Subject: [PATCH 071/128] chore(deps): update rust crate chrono to 0.4.35 (#400) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [chrono](https://togithub.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.34` -> `0.4.35` | --- ### Release Notes
chronotope/chrono (chrono) ### [`v0.4.35`](https://togithub.com/chronotope/chrono/releases/tag/v0.4.35) [Compare Source](https://togithub.com/chronotope/chrono/compare/v0.4.34...v0.4.35) Most of our efforts have shifted to improving the API for a 0.5 release, for which cleanups and refactorings are landing on the 0.4.x branch. The most significant changes in this release are two sets of deprecations. - We deprecated all timestamp-related methods on `NaiveDateTime`. The reason is that a timestamp is defined to be in UTC. The `NaiveDateTime` type doesn't know the offset from UTC, so it was technically wrong to have these methods. The alternative is to use the similar methods on the `DateTime` type, or from the `TimeZone` trait. Converting from `NaiveDateTime` to `DateTime` is simple with `.and_utc()`, and in the other direction with `.naive_utc()`. - The panicking constructors of `TimeDelta` (the new name of the `Duration` type) are deprecated. This was the last part of chrono that defaulted to panicking on error, dating from before rust 1.0. - A nice change is that `NaiveDate` now includes a niche. So now `Option`, `Option` and `Option>` are the same size as their base types. - `format::Numeric` and `format::Fixed` are marked as `non_exhaustive`. This will allow us to improve our formatting and parsing support, and we have reason to believe this breaking change will have little to no impact on users. ### Additions - Add `DateTime::{from_timestamp_micros, from_timestamp_nanos}` ([#​1234](https://togithub.com/chronotope/chrono/issues/1234)) - Add getters to `Parsed` ([#​1465](https://togithub.com/chronotope/chrono/issues/1465)) ### Deprecations - Deprecate timestamp methods on `NaiveDateTime` ([#​1473](https://togithub.com/chronotope/chrono/issues/1473)) - Deprecate panicking constructors of `TimeDelta` ([#​1450](https://togithub.com/chronotope/chrono/issues/1450)) ### Changes/fixes - Use `NonZeroI32` inside `NaiveDate` ([#​1207](https://togithub.com/chronotope/chrono/issues/1207)) - Mark `format::Numeric` and `format::Fixed` as `non_exhaustive` ([#​1430](https://togithub.com/chronotope/chrono/issues/1430)) - `Parsed` fixes to error values ([#​1439](https://togithub.com/chronotope/chrono/issues/1439)) - Use `overflowing_naive_local` in `DateTime::checked_add*` ([#​1333](https://togithub.com/chronotope/chrono/issues/1333)) - Do complete range checks in `Parsed::set_*` ([#​1465](https://togithub.com/chronotope/chrono/issues/1465)) ### Documentation - Rustfmt doctests ([#​1452](https://togithub.com/chronotope/chrono/issues/1452)) - Improve docs for crate features ([#​1455](https://togithub.com/chronotope/chrono/issues/1455), thanks [@​edmorley](https://togithub.com/edmorley)) - Add more documentation and examples to `Parsed` ([#​1439](https://togithub.com/chronotope/chrono/issues/1439)) ### Internal - Refactor `internals` module ([#​1428](https://togithub.com/chronotope/chrono/issues/1428), [#​1429](https://togithub.com/chronotope/chrono/issues/1429), [#​1431](https://togithub.com/chronotope/chrono/issues/1431), [#​1432](https://togithub.com/chronotope/chrono/issues/1432), [#​1433](https://togithub.com/chronotope/chrono/issues/1433), [#​1438](https://togithub.com/chronotope/chrono/issues/1438)) - CI: test cross-compiling to `x86_64-unknown-illumos` instead of Solaris ([#​1437](https://togithub.com/chronotope/chrono/issues/1437)) - CI: lint Windows target, fix clippy warning ([#​1441](https://togithub.com/chronotope/chrono/issues/1441)) - CI: only run `cargo hack check` on Linux ([#​1442](https://togithub.com/chronotope/chrono/issues/1442)) - Update windows-bindgen to 0.54 ([#​1462](https://togithub.com/chronotope/chrono/issues/1462), [#​1483](https://togithub.com/chronotope/chrono/issues/1483)) - Simplify error value of `parse_internal` ([#​1459](https://togithub.com/chronotope/chrono/issues/1459)) - Simplify `SerdeError` ([#​1458](https://togithub.com/chronotope/chrono/issues/1458)) - Simplify `NaiveDate::from_isoywd` a bit ([#​1464](https://togithub.com/chronotope/chrono/issues/1464)) Thanks to all contributors on behalf of the chrono team, [@​djc](https://togithub.com/djc) and [@​pitdicker](https://togithub.com/pitdicker)!
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5cc7b23..8ca9950 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -534,9 +534,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.34" +version = "0.4.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" +checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/Cargo.toml b/Cargo.toml index 2162bef..64bc091 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ syn = "2.0.52" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" -chrono = { version = "0.4.34", default-features = false } +chrono = { version = "0.4.35", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } From 6473953a7c4073848ccc52703c3c5fc8c808b012 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 11:20:15 +0100 Subject: [PATCH 072/128] chore(deps): update rust crate ethers to 2.0.14 (#402) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [ethers](https://togithub.com/gakonst/ethers-rs) | workspace.dependencies | patch | `2.0.13` -> `2.0.14` | --- ### Release Notes
gakonst/ethers-rs (ethers) ### [`v2.0.14`](https://togithub.com/gakonst/ethers-rs/blob/HEAD/CHANGELOG.md#2014---2024-03-07) ##### Bug Fixes - Make the empty key of storage proof in `EIP1186ProofResponse` could be deserialized ([#​2754](https://togithub.com/gakonst/ethers-rs/issues/2754)) - Correctly calculate return derives ([#​2743](https://togithub.com/gakonst/ethers-rs/issues/2743)) - Fix EthError decode_with_selector ([#​2698](https://togithub.com/gakonst/ethers-rs/issues/2698)) - StorageProof key should be U256 ([#​2699](https://togithub.com/gakonst/ethers-rs/issues/2699)) - Fix typo ([#​2716](https://togithub.com/gakonst/ethers-rs/issues/2716)) - Fix return value of get_transaction_by_block_and_index ([#​2732](https://togithub.com/gakonst/ethers-rs/issues/2732)) - Cleanup build info path ([#​2730](https://togithub.com/gakonst/ethers-rs/issues/2730)) ##### Depedencies - Update base64 requirement from 0.21 to 0.22 ([#​2755](https://togithub.com/gakonst/ethers-rs/issues/2755)) - Bump trezor-client ([#​2749](https://togithub.com/gakonst/ethers-rs/issues/2749)) - Bump enr version ([#​2741](https://togithub.com/gakonst/ethers-rs/issues/2741)) - Update serial_test requirement from 2.0.0 to 3.0.0 ([#​2709](https://togithub.com/gakonst/ethers-rs/issues/2709)) - Update env_logger requirement from 0.10.0 to 0.11.1 ([#​2717](https://togithub.com/gakonst/ethers-rs/issues/2717)) - Update coins-ledger requirement from 0.9.0 to 0.10.1 ([#​2725](https://togithub.com/gakonst/ethers-rs/issues/2725)) - Bump solc check ([#​2721](https://togithub.com/gakonst/ethers-rs/issues/2721)) ##### Features - Add blast mainnet ([#​2751](https://togithub.com/gakonst/ethers-rs/issues/2751)) - Add elastos networks ([#​2750](https://togithub.com/gakonst/ethers-rs/issues/2750)) - Add getHeader by number+hash ([#​2701](https://togithub.com/gakonst/ethers-rs/issues/2701)) - Add Mode & Mode Sepolia ([#​2720](https://togithub.com/gakonst/ethers-rs/issues/2720)) ##### Miscellaneous Tasks - Clippy ([#​2761](https://togithub.com/gakonst/ethers-rs/issues/2761)) - Fix git-cliff tag_pattern ([#​2759](https://togithub.com/gakonst/ethers-rs/issues/2759)) - Remove unused imports ([#​2744](https://togithub.com/gakonst/ethers-rs/issues/2744)) - Clippy ([#​2736](https://togithub.com/gakonst/ethers-rs/issues/2736)) - Enable `doc_auto_cfg` ([#​2735](https://togithub.com/gakonst/ethers-rs/issues/2735)) - Make clippy happy ([#​2727](https://togithub.com/gakonst/ethers-rs/issues/2727)) ##### Other - Remove concurrency from individual jobs, remove if always ([#​2763](https://togithub.com/gakonst/ethers-rs/issues/2763)) - Update README.md ([#​2747](https://togithub.com/gakonst/ethers-rs/issues/2747)) - Update mod.rs Bytes to Option ([#​2712](https://togithub.com/gakonst/ethers-rs/issues/2712)) - Add aliases for Base, BaseSepolia and BaseGoerli ([#​2715](https://togithub.com/gakonst/ethers-rs/issues/2715)) - Add polygon amoy to chain definitions ([#​2723](https://togithub.com/gakonst/ethers-rs/issues/2723)) - Add concurrency to main GHA workflow ([#​2737](https://togithub.com/gakonst/ethers-rs/issues/2737)) - Add Hash to BlockId ([#​2731](https://togithub.com/gakonst/ethers-rs/issues/2731)) ##### Styling - Rustfmt 2 ([#​2762](https://togithub.com/gakonst/ethers-rs/issues/2762)) - Rustfmt ([#​2760](https://togithub.com/gakonst/ethers-rs/issues/2760)) - Update strum ([#​2724](https://togithub.com/gakonst/ethers-rs/issues/2724)) - Add Blast Sepolia as a chain ([#​2726](https://togithub.com/gakonst/ethers-rs/issues/2726))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 110 +++++++++++++++++------------------------------------ Cargo.toml | 2 +- 2 files changed, 35 insertions(+), 77 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8ca9950..c446e80 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -151,15 +151,6 @@ dependencies = [ "tower-http", ] -[[package]] -name = "array-init" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23589ecb866b460d3a0f1278834750268c607e8e28a1b982c907219f3178cd72" -dependencies = [ - "nodrop", -] - [[package]] name = "arrayvec" version = "0.7.4" @@ -1086,9 +1077,9 @@ dependencies = [ [[package]] name = "enr" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be7b2ac146c1f99fe245c02d16af0696450d8e06c135db75e10eeb9e642c20d" +checksum = "2a3d8dc56e02f954cac8eb489772c552c473346fc34f67412bb6244fd647f7e4" dependencies = [ "base64 0.21.2", "bytes", @@ -1098,7 +1089,6 @@ dependencies = [ "rand", "rlp", "serde", - "serde-hex", "sha3", "zeroize", ] @@ -1222,9 +1212,9 @@ dependencies = [ [[package]] name = "ethers" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c7cd562832e2ff584fa844cd2f6e5d4f35bbe11b28c7c9b8df957b2e1d0c701" +checksum = "816841ea989f0c69e459af1cf23a6b0033b19a55424a1ea3a30099becdb8dec0" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -1238,9 +1228,9 @@ dependencies = [ [[package]] name = "ethers-addressbook" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35dc9a249c066d17e8947ff52a4116406163cf92c7f0763cb8c001760b26403f" +checksum = "5495afd16b4faa556c3bba1f21b98b4983e53c1755022377051a975c3b021759" dependencies = [ "ethers-core", "once_cell", @@ -1250,9 +1240,9 @@ dependencies = [ [[package]] name = "ethers-contract" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43304317c7f776876e47f2f637859f6d0701c1ec7930a150f169d5fbe7d76f5a" +checksum = "6fceafa3578c836eeb874af87abacfb041f92b4da0a78a5edd042564b8ecdaaa" dependencies = [ "const-hex", "ethers-contract-abigen", @@ -1269,9 +1259,9 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9f96502317bf34f6d71a3e3d270defaa9485d754d789e15a8e04a84161c95eb" +checksum = "04ba01fbc2331a38c429eb95d4a570166781f14290ef9fdb144278a90b5a739b" dependencies = [ "Inflector", "const-hex", @@ -1293,9 +1283,9 @@ dependencies = [ [[package]] name = "ethers-contract-derive" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "452ff6b0a64507ce8d67ffd48b1da3b42f03680dcf5382244e9c93822cbbf5de" +checksum = "87689dcabc0051cde10caaade298f9e9093d65f6125c14575db3fd8c669a168f" dependencies = [ "Inflector", "const-hex", @@ -1309,9 +1299,9 @@ dependencies = [ [[package]] name = "ethers-core" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab3cef6cc1c9fd7f787043c81ad3052eff2b96a3878ef1526aa446311bdbfc9" +checksum = "82d80cc6ad30b14a48ab786523af33b37f28a8623fc06afd55324816ef18fb1f" dependencies = [ "arrayvec", "bytes", @@ -1339,9 +1329,9 @@ dependencies = [ [[package]] name = "ethers-etherscan" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d45b981f5fa769e1d0343ebc2a44cfa88c9bc312eb681b676318b40cef6fb1" +checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" dependencies = [ "chrono", "ethers-core", @@ -1365,9 +1355,9 @@ dependencies = [ [[package]] name = "ethers-middleware" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145211f34342487ef83a597c1e69f0d3e01512217a7c72cc8a25931854c7dca0" +checksum = "48f9fdf09aec667c099909d91908d5eaf9be1bd0e2500ba4172c1d28bfaa43de" dependencies = [ "async-trait", "auto_impl", @@ -1391,9 +1381,9 @@ dependencies = [ [[package]] name = "ethers-providers" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb6b15393996e3b8a78ef1332d6483c11d839042c17be58decc92fa8b1c3508a" +checksum = "6434c9a33891f1effc9c75472e12666db2fa5a0fec4b29af6221680a6fe83ab2" dependencies = [ "async-trait", "auto_impl", @@ -1429,9 +1419,9 @@ dependencies = [ [[package]] name = "ethers-signers" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3b125a103b56aef008af5d5fb48191984aa326b50bfd2557d231dc499833de3" +checksum = "228875491c782ad851773b652dd8ecac62cda8571d3bc32a5853644dd26766c2" dependencies = [ "async-trait", "coins-bip32", @@ -1448,9 +1438,9 @@ dependencies = [ [[package]] name = "ethers-solc" -version = "2.0.13" +version = "2.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d21df08582e0a43005018a858cc9b465c5fff9cf4056651be64f844e57d1f55f" +checksum = "66244a771d9163282646dbeffe0e6eca4dda4146b6498644e678ac6089b11edd" dependencies = [ "cfg-if", "const-hex", @@ -2406,12 +2396,6 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "md-5" version = "0.10.5" @@ -2474,12 +2458,6 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - [[package]] name = "nom" version = "7.1.3" @@ -2538,7 +2516,7 @@ dependencies = [ "num-iter", "num-traits", "rand", - "smallvec 1.11.0", + "smallvec", "zeroize", ] @@ -2745,7 +2723,7 @@ dependencies = [ "cfg-if", "libc", "redox_syscall 0.3.5", - "smallvec 1.11.0", + "smallvec", "windows-targets 0.48.5", ] @@ -3646,17 +3624,6 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-hex" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca37e3e4d1b39afd7ff11ee4e947efae85adfddf4841787bfa47c470e96dc26d" -dependencies = [ - "array-init", - "serde", - "smallvec 0.6.14", -] - [[package]] name = "serde_derive" version = "1.0.197" @@ -3810,15 +3777,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "smallvec" -version = "0.6.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" -dependencies = [ - "maybe-uninit", -] - [[package]] name = "smallvec" version = "1.11.0" @@ -3942,7 +3900,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.7", - "smallvec 1.11.0", + "smallvec", "sqlformat", "thiserror", "tokio", @@ -4026,7 +3984,7 @@ dependencies = [ "serde", "sha1", "sha2 0.10.7", - "smallvec 1.11.0", + "smallvec", "sqlx-core", "stringprep", "thiserror", @@ -4067,7 +4025,7 @@ dependencies = [ "serde_json", "sha1", "sha2 0.10.7", - "smallvec 1.11.0", + "smallvec", "sqlx-core", "stringprep", "thiserror", @@ -4154,18 +4112,18 @@ checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "strum" -version = "0.25.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +checksum = "723b93e8addf9aa965ebe2d11da6d7540fa2283fcea14b3371ff055f7ba13f5f" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.25.2" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059" +checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18" dependencies = [ "heck", "proc-macro2", @@ -4596,7 +4554,7 @@ dependencies = [ "serde", "serde_json", "sharded-slab", - "smallvec 1.11.0", + "smallvec", "thread_local", "time", "tracing", diff --git a/Cargo.toml b/Cargo.toml index 64bc091..b3fa3c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ exclude = ["./github"] [workspace.dependencies] auto_impl = "1.2.0" async-trait = "0.1.77" -ethers = { version = "2.0.13", default-features = false } +ethers = { version = "2.0.14", default-features = false } tokio = "1.36.0" clap = "4.5.1" tracing = "0.1" From 5362d2864cd65a004ea1000c046c85b6ff682d42 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Mar 2024 12:36:18 +0100 Subject: [PATCH 073/128] chore(deps): update rust crate clap to 4.5.2 (#401) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies | patch | `4.5.1` -> `4.5.2` | --- ### Release Notes
clap-rs/clap (clap) ### [`v4.5.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#452---2024-03-06) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.5.1...v4.5.2) ##### Fixes - *(macros)* Silence a warning
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c446e80..31e25e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -548,9 +548,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c918d541ef2913577a0f9566e9ce27cb35b6df072075769e0b26cb5a554520da" +checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" dependencies = [ "clap_builder", "clap_derive", @@ -558,9 +558,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.1" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f3e7391dad68afb0c2ede1bf619f579a3dc9c2ec67f089baa397123a2f3d1eb" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstream", "anstyle", diff --git a/Cargo.toml b/Cargo.toml index b3fa3c0..e30e28f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,7 +31,7 @@ auto_impl = "1.2.0" async-trait = "0.1.77" ethers = { version = "2.0.14", default-features = false } tokio = "1.36.0" -clap = "4.5.1" +clap = "4.5.2" tracing = "0.1" tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } From bbc732d7e79033e4d1705c2bd5c4b860b34e7077 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 8 Mar 2024 12:38:20 +0100 Subject: [PATCH 074/128] chore(deps): update docker/build-push-action action to v5.2.0 (#405) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [docker/build-push-action](https://togithub.com/docker/build-push-action) | action | minor | `v5.1.0` -> `v5.2.0` | --- ### Release Notes
docker/build-push-action (docker/build-push-action) ### [`v5.2.0`](https://togithub.com/docker/build-push-action/releases/tag/v5.2.0) [Compare Source](https://togithub.com/docker/build-push-action/compare/v5.1.0...v5.2.0) - Disable quotes detection for `outputs` input by [@​crazy-max](https://togithub.com/crazy-max) in [https://github.com/docker/build-push-action/pull/1074](https://togithub.com/docker/build-push-action/pull/1074) - Warn about ignored inputs by [@​favonia](https://togithub.com/favonia) in [https://github.com/docker/build-push-action/pull/1019](https://togithub.com/docker/build-push-action/pull/1019) - Bump [@​docker/actions-toolkit](https://togithub.com/docker/actions-toolkit) from 0.14.0 to 0.18.0 in [https://github.com/docker/build-push-action/pull/1070](https://togithub.com/docker/build-push-action/pull/1070) - Bump undici from 5.26.3 to 5.28.3 in [https://github.com/docker/build-push-action/pull/1057](https://togithub.com/docker/build-push-action/pull/1057) **Full Changelog**: https://github.com/docker/build-push-action/compare/v5.1.0...v5.2.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build_and_publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_publish.yml b/.github/workflows/build_and_publish.yml index 115c168..52f82b5 100644 --- a/.github/workflows/build_and_publish.yml +++ b/.github/workflows/build_and_publish.yml @@ -40,7 +40,7 @@ jobs: gcloud auth configure-docker us-docker.pkg.dev -q - name: Build and push Docker image - uses: docker/build-push-action@v5.1.0 + uses: docker/build-push-action@v5.2.0 if: ${{ startsWith(github.ref, 'refs/tags') }} with: push: true From cfa6df66a608048f718517e1e244e918175f2d43 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 08:55:19 +0100 Subject: [PATCH 075/128] chore(deps): update rust crate thiserror to 1.0.58 (#407) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.57` -> `1.0.58` | --- ### Release Notes
dtolnay/thiserror (thiserror) ### [`v1.0.58`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.58) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.57...1.0.58) - Make backtrace support available when using -Dwarnings ([#​292](https://togithub.com/dtolnay/thiserror/issues/292))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 31e25e7..391957a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4218,18 +4218,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e30e28f..0623b0a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" serde = "1.0.197" -thiserror = "1.0.57" +thiserror = "1.0.58" serde_json = "1.0" color-eyre = "0.6.2" eyre = "0.6.12" From 1fda9a0af274f4214963f409586896f7d0f1969b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 12 Mar 2024 20:22:14 +0100 Subject: [PATCH 076/128] chore(deps): update rust crate proc-macro2 to 1.0.79 (#406) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | workspace.dependencies | patch | `1.0.78` -> `1.0.79` | --- ### Release Notes
dtolnay/proc-macro2 (proc-macro2) ### [`v1.0.79`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.79) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.78...1.0.79) - Clean up dead code
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 391957a..9e65565 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2998,9 +2998,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] diff --git a/Cargo.toml b/Cargo.toml index 0623b0a..5781e65 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,7 +44,7 @@ color-eyre = "0.6.2" eyre = "0.6.12" dotenvy = "0.15.7" envconfig = "0.10.0" -proc-macro2 = "1.0.78" +proc-macro2 = "1.0.79" bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" From 2fd6ab03f8aab872bc86a341a36f7f6d9e8f505b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 21:31:13 +0100 Subject: [PATCH 077/128] chore(deps): update docker/build-push-action action to v5.3.0 (#408) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [docker/build-push-action](https://togithub.com/docker/build-push-action) | action | minor | `v5.2.0` -> `v5.3.0` | --- ### Release Notes
docker/build-push-action (docker/build-push-action) ### [`v5.3.0`](https://togithub.com/docker/build-push-action/releases/tag/v5.3.0) [Compare Source](https://togithub.com/docker/build-push-action/compare/v5.2.0...v5.3.0) - Bump [@​docker/actions-toolkit](https://togithub.com/docker/actions-toolkit) from 0.18.0 to 0.19.0 in [https://github.com/docker/build-push-action/pull/1080](https://togithub.com/docker/build-push-action/pull/1080) **Full Changelog**: https://github.com/docker/build-push-action/compare/v5.2.0...v5.3.0
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/build_and_publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_publish.yml b/.github/workflows/build_and_publish.yml index 52f82b5..eb92635 100644 --- a/.github/workflows/build_and_publish.yml +++ b/.github/workflows/build_and_publish.yml @@ -40,7 +40,7 @@ jobs: gcloud auth configure-docker us-docker.pkg.dev -q - name: Build and push Docker image - uses: docker/build-push-action@v5.2.0 + uses: docker/build-push-action@v5.3.0 if: ${{ startsWith(github.ref, 'refs/tags') }} with: push: true From f9800c016604f111fb3c42ab932faa10e454beb4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 08:50:16 +0100 Subject: [PATCH 078/128] chore(deps): update rust crate color-eyre to 0.6.3 (#410) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [color-eyre](https://togithub.com/eyre-rs/eyre) | workspace.dependencies | patch | `0.6.2` -> `0.6.3` | --- ### Release Notes
eyre-rs/eyre (color-eyre) ### [`v0.6.3`](https://togithub.com/eyre-rs/eyre/compare/v0.6.2...color-eyre-v0.6.3) [Compare Source](https://togithub.com/eyre-rs/eyre/compare/v0.6.2...color-eyre-v0.6.3)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e65565..ca940f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -662,9 +662,9 @@ dependencies = [ [[package]] name = "color-eyre" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204" +checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" dependencies = [ "backtrace", "color-spantrace", diff --git a/Cargo.toml b/Cargo.toml index 5781e65..1a7179a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ itertools = "0.12.1" serde = "1.0.197" thiserror = "1.0.58" serde_json = "1.0" -color-eyre = "0.6.2" +color-eyre = "0.6.3" eyre = "0.6.12" dotenvy = "0.15.7" envconfig = "0.10.0" From 006ed3c7aa94132f21968648d643b7b26ccbd29f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 09:10:05 +0100 Subject: [PATCH 079/128] chore(deps): update rust crate tokio-stream to 0.1.15 (#409) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio-stream](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | workspace.dependencies | patch | `0.1.14` -> `0.1.15` | --- ### Release Notes
tokio-rs/tokio (tokio-stream) ### [`v0.1.15`](https://togithub.com/tokio-rs/tokio/compare/tokio-stream-0.1.14...tokio-stream-0.1.15) [Compare Source](https://togithub.com/tokio-rs/tokio/compare/tokio-stream-0.1.14...tokio-stream-0.1.15)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ca940f4..39ad1f9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4340,9 +4340,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", diff --git a/Cargo.toml b/Cargo.toml index 1a7179a..b63600b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,7 +65,7 @@ watcher = { path = "./watcher" } ethers-log-decode = { path = "./ethers-log-decode" } tx-sender = { path = "./tx-sender" } finalizer = { path = "./finalizer" } -tokio-stream = "0.1.14" +tokio-stream = "0.1.15" tokio-util = "0.7.10" tower-http = "0.5.2" url = "2.5.0" From 2bda70609d03daa1f36a8bfe8b86969c223cf488 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Fri, 15 Mar 2024 09:25:08 +0100 Subject: [PATCH 080/128] feat: removes finalizer api (#411) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- Cargo.lock | 247 ++------------------------- Cargo.toml | 2 - api/Cargo.toml | 16 -- api/src/lib.rs | 65 ------- bin/withdrawal-finalizer/Cargo.toml | 1 - bin/withdrawal-finalizer/src/main.rs | 5 - storage/src/lib.rs | 52 ------ 7 files changed, 14 insertions(+), 374 deletions(-) delete mode 100644 api/Cargo.toml delete mode 100644 api/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 39ad1f9..9d42a61 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -138,19 +138,6 @@ dependencies = [ "backtrace", ] -[[package]] -name = "api" -version = "0.2.0" -dependencies = [ - "axum", - "ethers", - "serde", - "sqlx", - "storage", - "tokio", - "tower-http", -] - [[package]] name = "arrayvec" version = "0.7.4" @@ -214,61 +201,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "axum" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1236b4b292f6c4d6dc34604bb5120d85c3fe1d1aa596bd5cc52ca054d13e7b9e" -dependencies = [ - "async-trait", - "axum-core", - "bytes", - "futures-util", - "http 1.0.0", - "http-body 1.0.0", - "http-body-util", - "hyper 1.1.0", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.0.0", - "http-body 1.0.0", - "http-body-util", - "mime", - "pin-project-lite", - "rustversion", - "sync_wrapper", - "tower-layer", - "tower-service", - "tracing", -] - [[package]] name = "backtrace" version = "0.3.68" @@ -1397,7 +1329,7 @@ dependencies = [ "futures-timer", "futures-util", "hashers", - "http 0.2.9", + "http", "instant", "jsonwebtoken", "once_cell", @@ -1790,26 +1722,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http 0.2.9", - "indexmap 2.0.0", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "h2" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31d030e59af851932b72ceebadf4a2b5986dba4c3b99dd2493f8273a0f151943" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http 1.0.0", + "http", "indexmap 2.0.0", "slab", "tokio", @@ -1921,17 +1834,6 @@ dependencies = [ "itoa", ] -[[package]] -name = "http" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - [[package]] name = "http-body" version = "0.4.5" @@ -1939,30 +1841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", - "http 0.2.9", - "pin-project-lite", -] - -[[package]] -name = "http-body" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" -dependencies = [ - "bytes", - "http 1.0.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cb79eb393015dadd30fc252023adb0b2400a0caee0fa2a077e6e21a551e840" -dependencies = [ - "bytes", - "futures-util", - "http 1.0.0", - "http-body 1.0.0", + "http", "pin-project-lite", ] @@ -1988,9 +1867,9 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.24", - "http 0.2.9", - "http-body 0.4.5", + "h2", + "http", + "http-body", "httparse", "httpdate", "itoa", @@ -2002,25 +1881,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5aa53871fc917b1a9ed87b683a5d86db645e23acb32c2e0785a353e522fb75" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "h2 0.4.2", - "http 1.0.0", - "http-body 1.0.0", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "tokio", -] - [[package]] name = "hyper-rustls" version = "0.24.1" @@ -2028,31 +1888,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ "futures-util", - "http 0.2.9", - "hyper 0.14.27", + "http", + "hyper", "rustls", "tokio", "tokio-rustls", ] -[[package]] -name = "hyper-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdea9aac0dbe5a9240d68cfd9501e2db94222c6dc06843e06640b9e07f0fdc67" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http 1.0.0", - "http-body 1.0.0", - "hyper 1.1.0", - "pin-project-lite", - "socket2 0.5.5", - "tokio", - "tracing", -] - [[package]] name = "iana-time-zone" version = "0.1.57" @@ -2390,12 +2232,6 @@ dependencies = [ "regex-automata 0.1.10", ] -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "md-5" version = "0.10.5" @@ -3194,10 +3030,10 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.24", - "http 0.2.9", - "http-body 0.4.5", - "hyper 0.14.27", + "h2", + "http", + "http-body", + "hyper", "hyper-rustls", "ipnet", "js-sys", @@ -3646,16 +3482,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_path_to_error" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" -dependencies = [ - "itoa", - "serde", -] - [[package]] name = "serde_spanned" version = "0.6.4" @@ -4180,12 +4006,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "tap" version = "1.0.1" @@ -4423,44 +4243,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" -dependencies = [ - "bitflags 2.4.1", - "bytes", - "http 1.0.0", - "http-body 1.0.0", - "http-body-util", - "pin-project-lite", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - [[package]] name = "tower-service" version = "0.3.2" @@ -4578,7 +4360,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 0.2.9", + "http", "httparse", "log", "rand", @@ -4773,7 +4555,7 @@ name = "vise-exporter" version = "0.1.0" source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d279666cc5ae6b84" dependencies = [ - "hyper 0.14.27", + "hyper", "once_cell", "tokio", "tracing", @@ -5165,7 +4947,6 @@ dependencies = [ name = "withdrawal-finalizer" version = "0.2.0" dependencies = [ - "api", "chain-events", "client", "color-eyre", diff --git a/Cargo.toml b/Cargo.toml index b63600b..1864bb8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -15,7 +15,6 @@ members = [ "vlog", "watcher", "withdrawals-meterer", - "api" ] [workspace.package] @@ -57,7 +56,6 @@ chrono = { version = "0.4.35", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } -api = { path = "./api" } chain-events = { path = "./chain-events" } storage = { path = "./storage" } withdrawals-meterer = { path = "./withdrawals-meterer" } diff --git a/api/Cargo.toml b/api/Cargo.toml deleted file mode 100644 index 081ed7a..0000000 --- a/api/Cargo.toml +++ /dev/null @@ -1,16 +0,0 @@ -[package] -name = "api" -version.workspace = true -homepage.workspace = true -license.workspace = true -edition.workspace = true -authors.workspace = true - -[dependencies] -axum = { workspace = true } -tower-http = { workspace = true, features = ["cors"] } -storage.workspace = true -sqlx.workspace = true -serde.workspace = true -tokio.workspace = true -ethers.workspace = true diff --git a/api/src/lib.rs b/api/src/lib.rs deleted file mode 100644 index 04d0d26..0000000 --- a/api/src/lib.rs +++ /dev/null @@ -1,65 +0,0 @@ -use axum::extract::{Path, Query, State}; -use axum::{http::StatusCode, routing::get, Json, Router}; -use ethers::abi::Address; -use ethers::types::{H256, U256}; -use serde::{Deserialize, Serialize}; -use sqlx::PgPool; -use storage::UserWithdrawal; -use tower_http::cors::CorsLayer; - -#[derive(Deserialize, Serialize, Clone)] -struct WithdrawalRequest { - pub limit: u64, -} -#[derive(Deserialize, Serialize, Clone)] -struct WithdrawalResponse { - pub tx_hash: H256, - pub token: Address, - pub amount: U256, - pub status: String, -} - -impl From for WithdrawalResponse { - fn from(withdrawal: UserWithdrawal) -> Self { - Self { - tx_hash: withdrawal.tx_hash, - token: withdrawal.token, - amount: withdrawal.amount, - status: format!("{:?}", withdrawal.status), - } - } -} - -pub async fn run_server(pool: PgPool) { - let cors_layer = CorsLayer::permissive(); - let app = Router::new() - .route("/withdrawals/:from", get(get_withdrawals)) - .route("/health", get(health)) - .layer(cors_layer) - .with_state(pool); - - // run our app with hyper, listening globally on port 3000 - let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); - axum::serve(listener, app).await.unwrap(); -} - -async fn health(State(pool): State) -> Result<&'static str, StatusCode> { - pool.acquire() - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)?; - Ok("ok") -} - -async fn get_withdrawals( - Path(from): Path
, - State(pool): State, - Query(payload): Query, -) -> Result>, StatusCode> { - let result: Vec<_> = storage::withdrawals_for_address(&pool, from, payload.limit) - .await - .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR)? - .into_iter() - .map(WithdrawalResponse::from) - .collect(); - Ok(Json(result)) -} diff --git a/bin/withdrawal-finalizer/Cargo.toml b/bin/withdrawal-finalizer/Cargo.toml index a385946..7b52d51 100644 --- a/bin/withdrawal-finalizer/Cargo.toml +++ b/bin/withdrawal-finalizer/Cargo.toml @@ -29,4 +29,3 @@ chain-events = { workspace = true } vlog = { workspace = true } finalizer = { workspace = true } watcher = { workspace = true } -api = { workspace = true } diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index 457a61a..fcaed76 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -315,12 +315,7 @@ async fn main() -> Result<()> { eth_finalization_threshold, )); - let api_server = tokio::spawn(api::run_server(pgpool)); - tokio::select! { - r = api_server => { - tracing::error!("Api server ended with {r:?}"); - } r = block_events_handle => { tracing::error!("Block Events stream ended with {r:?}"); } diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 4f09c8e..927a461 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -1380,55 +1380,3 @@ pub struct UserWithdrawal { /// Status pub status: FinalizationStatus, } - -/// Request withdrawals for a given address. -pub async fn withdrawals_for_address( - pool: &PgPool, - address: Address, - limit: u64, -) -> Result> { - let latency = STORAGE_METRICS.call[&"withdrawals_for_address"].start(); - - let events = sqlx::query!( - " - SELECT - l2_to_l1_events.l1_token_addr, - l2_to_l1_events.amount, - withdrawals.tx_hash, - finalization_data.finalization_tx - FROM - l2_to_l1_events - JOIN finalization_data ON - finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number - AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block - JOIN withdrawals ON - withdrawals.id = finalization_data.withdrawal_id - WHERE l2_to_l1_events.to_address = $1 - ORDER BY l2_to_l1_events.l2_block_number DESC - LIMIT $2 - ", - address.as_bytes(), - limit as i64, - ) - .fetch_all(pool) - .await? - .into_iter() - .map(|r| { - let status = if r.finalization_tx.is_some() { - FinalizationStatus::Finalized - } else { - FinalizationStatus::NotFinalized - }; - UserWithdrawal { - tx_hash: H256::from_slice(&r.tx_hash), - token: Address::from_slice(&r.l1_token_addr), - amount: utils::bigdecimal_to_u256(r.amount), - status, - } - }) - .collect(); - - latency.observe(); - - Ok(events) -} From 6304c0fd72c2afef7c594e6d28670765a2ffa189 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 09:32:26 +0100 Subject: [PATCH 081/128] chore(main): release 0.7.0 (#404) :robot: I have created a release *beep* *boop* --- ## [0.7.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.6...v0.7.0) (2024-03-15) ### Features * removes finalizer api ([#411](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/411)) ([2bda706](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/2bda70609d03daa1f36a8bfe8b86969c223cf488)) ### Bug Fixes * **ci:** update whoami ([#403](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/403)) ([0c99c23](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/0c99c232b8d41de4dc954a884c62ce1360f96a09)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index b572b14..e7ca613 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.6" + ".": "0.7.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 45cd155..a306437 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.7.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.6...v0.7.0) (2024-03-15) + + +### Features + +* removes finalizer api ([#411](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/411)) ([2bda706](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/2bda70609d03daa1f36a8bfe8b86969c223cf488)) + + +### Bug Fixes + +* **ci:** update whoami ([#403](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/403)) ([0c99c23](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/0c99c232b8d41de4dc954a884c62ce1360f96a09)) + ## [0.6.6](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.5...v0.6.6) (2024-03-04) From 128991b91be6255b042b158c720d87119f5cebea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 15 Mar 2024 17:10:18 +0100 Subject: [PATCH 082/128] chore(deps): update rust crate clap to 4.5.3 (#412) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies | patch | `4.5.2` -> `4.5.3` | --- ### Release Notes
clap-rs/clap (clap) ### [`v4.5.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#453---2024-03-15) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.5.2...v4.5.3) ##### Internal - *(derive)* Update `heck`
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 20 +++++++++++++------- Cargo.toml | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9d42a61..92b646b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -480,9 +480,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.2" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b230ab84b0ffdf890d5a10abdbc8b83ae1c4918275daea1ab8801f71536b2651" +checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" dependencies = [ "clap_builder", "clap_derive", @@ -502,11 +502,11 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.0" +version = "4.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47" +checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", "syn 2.0.52", @@ -1773,6 +1773,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + [[package]] name = "hermit-abi" version = "0.3.2" @@ -3757,7 +3763,7 @@ checksum = "8a4a8336d278c62231d87f24e8a7a74898156e34c1c18942857be2acb29c7dfc" dependencies = [ "dotenvy", "either", - "heck", + "heck 0.4.1", "hex", "once_cell", "proc-macro2", @@ -3951,7 +3957,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a3417fc93d76740d974a01654a09777cb500428cc874ca9f45edfe0c4d4cd18" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", "rustversion", diff --git a/Cargo.toml b/Cargo.toml index 1864bb8..22e135a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ auto_impl = "1.2.0" async-trait = "0.1.77" ethers = { version = "2.0.14", default-features = false } tokio = "1.36.0" -clap = "4.5.2" +clap = "4.5.3" tracing = "0.1" tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } From a05599a7a260718646b8eb41f8858dcced79c407 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 17 Mar 2024 07:46:09 +0100 Subject: [PATCH 083/128] chore(deps): update rust crate syn to 2.0.53 (#414) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.52` -> `2.0.53` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.53`](https://togithub.com/dtolnay/syn/releases/tag/2.0.53) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.52...2.0.53) - Implement Copy, Clone, and ToTokens for syn::parse::Nothing ([#​1597](https://togithub.com/dtolnay/syn/issues/1597))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 92b646b..5dbbdf4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -509,7 +509,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -1208,7 +1208,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.52", + "syn 2.0.53", "toml", "walkdir", ] @@ -1226,7 +1226,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -1252,7 +1252,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.52", + "syn 2.0.53", "tempfile", "thiserror", "tiny-keccak", @@ -1282,7 +1282,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -1600,7 +1600,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -2198,7 +2198,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -2442,7 +2442,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -2688,7 +2688,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -2726,7 +2726,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -2811,7 +2811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -2867,7 +2867,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -3474,7 +3474,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -3961,7 +3961,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -4003,9 +4003,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.52" +version = "2.0.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" +checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" dependencies = [ "proc-macro2", "quote", @@ -4059,7 +4059,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -4151,7 +4151,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -4275,7 +4275,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -4575,7 +4575,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] @@ -4641,7 +4641,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", "wasm-bindgen-shared", ] @@ -4675,7 +4675,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5039,7 +5039,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.53", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 22e135a..41f3812 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.52" +syn = "2.0.53" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 70ab14bf9e8dd0a5b78cc93ba9009906d041d319 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 17 Mar 2024 08:57:29 +0100 Subject: [PATCH 084/128] chore(deps): update rust crate async-trait to 0.1.78 (#413) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [async-trait](https://togithub.com/dtolnay/async-trait) | workspace.dependencies | patch | `0.1.77` -> `0.1.78` | --- ### Release Notes
dtolnay/async-trait (async-trait) ### [`v0.1.78`](https://togithub.com/dtolnay/async-trait/releases/tag/0.1.78) [Compare Source](https://togithub.com/dtolnay/async-trait/compare/0.1.77...0.1.78) - Prevent unused_qualifications lint being triggered in generated code in nightly-2024-03-05 and up ([#​260](https://togithub.com/dtolnay/async-trait/issues/260))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5dbbdf4..b091e6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,9 +155,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 41f3812..551b6ee 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ exclude = ["./github"] [workspace.dependencies] auto_impl = "1.2.0" -async-trait = "0.1.77" +async-trait = "0.1.78" ethers = { version = "2.0.14", default-features = false } tokio = "1.36.0" clap = "4.5.3" From f7d153f5115dab07d70a2f46c46acb8beb3bd8d4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Mar 2024 11:39:06 +0100 Subject: [PATCH 085/128] chore(deps): update rust docker tag to v1.77 (#417) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | rust | stage | minor | `1.76` -> `1.77` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Fedor Sakharov --- Dockerfile | 2 +- chain-events/src/l2_events.rs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9165fb8..fcc0167 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.76 AS builder +FROM rust:1.77 AS builder WORKDIR /app diff --git a/chain-events/src/l2_events.rs b/chain-events/src/l2_events.rs index 4eceb3b..20ff1a1 100644 --- a/chain-events/src/l2_events.rs +++ b/chain-events/src/l2_events.rs @@ -38,6 +38,7 @@ pub struct L2EventsListener { enum L2Events { BridgeBurn(BridgeBurnFilter), Withdrawal(WithdrawalFilter), + #[allow(unused)] ContractDeployed(ContractDeployedFilter), } From 7ff94274c342b7355b79ffe258d6f6a3253372d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 22 Mar 2024 12:02:12 +0100 Subject: [PATCH 086/128] chore(deps): update trufflesecurity/trufflehog digest to 80e8a67 (#373) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | trufflesecurity/trufflehog | action | digest | `0c66d30` -> `80e8a67` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/secrets_scanner.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/secrets_scanner.yaml b/.github/workflows/secrets_scanner.yaml index cc6f5c6..957ad8b 100644 --- a/.github/workflows/secrets_scanner.yaml +++ b/.github/workflows/secrets_scanner.yaml @@ -11,7 +11,7 @@ jobs: with: fetch-depth: 0 - name: TruffleHog OSS - uses: trufflesecurity/trufflehog@0c66d30c1f4075cee1aada2e1ab46dabb1b0071a + uses: trufflesecurity/trufflehog@80e8a67c2d863ee8f6563b4e2806c93b8bfd96ea with: path: ./ base: ${{ github.event.repository.default_branch }} From 092f1a2b8ea5822d39033678013d2b3ad2a3e5c9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Mar 2024 12:21:13 +0100 Subject: [PATCH 087/128] chore(deps): update rust crate syn to 2.0.55 (#420) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.53` -> `2.0.55` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.55`](https://togithub.com/dtolnay/syn/releases/tag/2.0.55) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.54...2.0.55) - Restore compatibility with rustc 1.56 through 1.59 ([#​1603](https://togithub.com/dtolnay/syn/issues/1603)) ### [`v2.0.54`](https://togithub.com/dtolnay/syn/releases/tag/2.0.54) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.53...2.0.54) - Fix dead code warning in generated code when using `custom_keyword!` with syn's "printing" feature disabled ([#​1602](https://togithub.com/dtolnay/syn/issues/1602))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b091e6a..950df0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -509,7 +509,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -1208,7 +1208,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.53", + "syn 2.0.55", "toml", "walkdir", ] @@ -1226,7 +1226,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -1252,7 +1252,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.53", + "syn 2.0.55", "tempfile", "thiserror", "tiny-keccak", @@ -1282,7 +1282,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -1600,7 +1600,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -2198,7 +2198,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -2442,7 +2442,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -2688,7 +2688,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -2726,7 +2726,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -2811,7 +2811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -2867,7 +2867,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -3474,7 +3474,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -3961,7 +3961,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -4003,9 +4003,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.53" +version = "2.0.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7383cd0e49fff4b6b90ca5670bfd3e9d6a733b3f90c686605aa7eec8c4996032" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" dependencies = [ "proc-macro2", "quote", @@ -4059,7 +4059,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -4151,7 +4151,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -4275,7 +4275,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -4575,7 +4575,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] @@ -4641,7 +4641,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", "wasm-bindgen-shared", ] @@ -4675,7 +4675,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5039,7 +5039,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.53", + "syn 2.0.55", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 551b6ee..3b32c27 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.53" +syn = "2.0.55" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From bf8f65e31d1c44762bfa647f7cd072dece11cc66 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 24 Mar 2024 19:45:41 +0100 Subject: [PATCH 088/128] chore(deps): update rust crate async-trait to 0.1.79 (#419) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [async-trait](https://togithub.com/dtolnay/async-trait) | workspace.dependencies | patch | `0.1.78` -> `0.1.79` | --- ### Release Notes
dtolnay/async-trait (async-trait) ### [`v0.1.79`](https://togithub.com/dtolnay/async-trait/releases/tag/0.1.79) [Compare Source](https://togithub.com/dtolnay/async-trait/compare/0.1.78...0.1.79) - Clean up some dead code
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 950df0b..90b11b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,9 +155,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.78" +version = "0.1.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "461abc97219de0eaaf81fe3ef974a540158f3d079c2ab200f891f1a2ef201e85" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 3b32c27..0b93c47 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ exclude = ["./github"] [workspace.dependencies] auto_impl = "1.2.0" -async-trait = "0.1.78" +async-trait = "0.1.79" ethers = { version = "2.0.14", default-features = false } tokio = "1.36.0" clap = "4.5.3" From 31a604211c2df9687f1cc2f2e178927a0a8bbb70 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Mon, 25 Mar 2024 10:12:25 +0100 Subject: [PATCH 089/128] chore: remove unused dependencies (#422) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- Cargo.toml | 2 -- 1 file changed, 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 0b93c47..ee27458 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -65,7 +65,5 @@ tx-sender = { path = "./tx-sender" } finalizer = { path = "./finalizer" } tokio-stream = "0.1.15" tokio-util = "0.7.10" -tower-http = "0.5.2" url = "2.5.0" -axum = "0.7.4" vlog = { path = "./vlog" } From 32c70caa35bc8220aeaf99b0fb63ccb515c6bf91 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 26 Mar 2024 08:35:46 +0100 Subject: [PATCH 090/128] chore(deps): update rust crate clap to 4.5.4 (#424) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies | patch | `4.5.3` -> `4.5.4` | --- ### Release Notes
clap-rs/clap (clap) ### [`v4.5.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#454---2024-03-25) [Compare Source](https://togithub.com/clap-rs/clap/compare/v4.5.3...v4.5.4) ##### Fixes - *(derive)* Allow non-literal `#[arg(id)]` attributes again
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 90b11b8..6a5fbc0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -480,9 +480,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.3" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "949626d00e063efc93b6dca932419ceb5432f99769911c0b995f7e884c778813" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -502,9 +502,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.3" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90239a040c80f5e14809ca132ddc4176ab33d5e17e49691793296e3fcb34d72f" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ "heck 0.5.0", "proc-macro2", diff --git a/Cargo.toml b/Cargo.toml index ee27458..8a09548 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ auto_impl = "1.2.0" async-trait = "0.1.79" ethers = { version = "2.0.14", default-features = false } tokio = "1.36.0" -clap = "4.5.3" +clap = "4.5.4" tracing = "0.1" tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } From cef3f1247d89265a18d3f39ce3315ccb4eb9b458 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 27 Mar 2024 09:57:39 +0100 Subject: [PATCH 091/128] feat: add filtering by l1 recepient (#423) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- .github/spellcheck/finalizer.dic | 1 + Cargo.lock | 2 - README.md | 15 - bin/withdrawal-finalizer/src/config.rs | 8 +- bin/withdrawal-finalizer/src/main.rs | 2 +- chain-events/src/l2_events.rs | 25 +- client/src/zksync_types.rs | 3 + finalizer/Cargo.toml | 4 - finalizer/src/lib.rs | 142 +------- ...e59ab42e1511a38989dfc83f0a240d85a511a.json | 41 --- ...82b4099dad6c4b65d951e3534e2168e7ad79e.json | 77 ---- ...f736dacfb4b7e815127c0b95ef291e05df3e6.json | 77 ++++ ...68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json | 78 ----- ...bb5f6b7a8e177692896d4d9fe9db129defb28.json | 78 ----- ...d6d0ba5525e99e237584b7db0777b1a5a43fa.json | 18 - ...987c10cec7252cadb72b4dbc2831b81f1dd50.json | 19 + ...e273f30a3e3ec884b0c1310aafbbf06a8f165.json | 8 +- ...28ef898f7e7a29fd93a97229dd974a86f9d90.json | 78 +++++ ...325203324_add-l1-receiver-address.down.sql | 2 + ...40325203324_add-l1-receiver-address.up.sql | 2 + storage/src/lib.rs | 329 ++++++------------ storage/src/macro_utils.rs | 148 ++++++++ 22 files changed, 484 insertions(+), 673 deletions(-) delete mode 100644 storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json delete mode 100644 storage/.sqlx/query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json create mode 100644 storage/.sqlx/query-4a3f009964fdf43b3bd09d98b4ef736dacfb4b7e815127c0b95ef291e05df3e6.json delete mode 100644 storage/.sqlx/query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json delete mode 100644 storage/.sqlx/query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json delete mode 100644 storage/.sqlx/query-93fe2d0516a63ed0e27ef4fe4b2d6d0ba5525e99e237584b7db0777b1a5a43fa.json create mode 100644 storage/.sqlx/query-aadc16b7622f1b2a49630abc878987c10cec7252cadb72b4dbc2831b81f1dd50.json create mode 100644 storage/.sqlx/query-d8b97db2eb9166b68386244231828ef898f7e7a29fd93a97229dd974a86f9d90.json create mode 100644 storage/migrations/20240325203324_add-l1-receiver-address.down.sql create mode 100644 storage/migrations/20240325203324_add-l1-receiver-address.up.sql create mode 100644 storage/src/macro_utils.rs diff --git a/.github/spellcheck/finalizer.dic b/.github/spellcheck/finalizer.dic index f79502d..ba797b3 100644 --- a/.github/spellcheck/finalizer.dic +++ b/.github/spellcheck/finalizer.dic @@ -1,4 +1,5 @@ 42 +args ABI vlog L2 diff --git a/Cargo.lock b/Cargo.lock index 6a5fbc0..857c89f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1439,8 +1439,6 @@ dependencies = [ "client", "ethers", "futures", - "pretty_assertions", - "serde", "serde_json", "sqlx", "storage", diff --git a/README.md b/README.md index e9c98ca..574687a 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,6 @@ Deployment is done by deploying a dockerized image of the service. | `BATCH_FINALIZATION_GAS_LIMIT` | The gas limit of the finalization of the whole batch in a call to `finalizeWithdrawals` in Withdrawal Finalizer Contract | | `WITHDRAWAL_FINALIZER_ACCOUNT_PRIVATE_KEY` | The private key of the account that is going to be submit finalization transactions | | `TX_RETRY_TIMEOUT_SECS` | Number of seconds to wait for a potentially stuck finalization transaction before readjusting its fees | -| `TOKENS_TO_FINALIZE` | Configures the sets of tokens this instance of finalizer will finalize. It may be configured as a whitelist, a blacklist, a wildcard or completely disable any finalization. For more info see below. | | `FINALIZE_ETH_TOKEN` | (Optional) Configure, whether the Ethereum withdrawal events should be monitored. Useful to turn off for custom bridges that are only interested in a particular ERC20 token and have nothing to do with main Ethereum withdrawals | | `CUSTOM_TOKEN_DEPLOYER_ADDRESSES` | (Optional) Normally ERC20 tokens are deployed by the bridge contract. However, in custom cases it may be necessary to override that behavior with a custom set of addresses that have deployed tokens | | `CUSTOM_TOKEN_ADDRESSES` | (Optional) Adds a predefined list of tokens to finalize. May be useful in case of custom bridge setups when the regular technique of finding token deployments does not work. | @@ -62,20 +61,6 @@ The configuration structure describing the service config can be found in [`conf ** more about zkSync contracts can be found [here](https://github.com/matter-labs/era-contracts/blob/main/docs/Overview.md) -## Configuring Tokens to finalize. - -It may be handy to limit a set of tokens the Finalizer is finalizing. This -configuration may be specified by setting a rule in the `TOKENS_TO_FINALIZE` value. -If this environment variable is not set then by default Finalizer will only finalize -ETH token (`0x000...0800a`). - -You may specify `All`, `None`, `BlackList` or `WhiteList` as json documents: - -1. `TOKENS_TO_FINALIZE = '"All"'` - Finalize everything -1. `TOKENS_TO_FINALIZE = '"None"'` - Finalize nothing -1. `TOKENS_TO_FINALIZE = '{ "WhiteList":[ "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" ] }'` - Finalize only these tokens -1. `TOKENS_TO_FINALIZE = '{ "BlackList":[ "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" ] }'` - Finalize all tokens but these - ## Deploying the finalizer smart contract The finalizer smart contract needs to reference the addresses of the diamond proxy contract and l1 erc20 proxy contract. diff --git a/bin/withdrawal-finalizer/src/config.rs b/bin/withdrawal-finalizer/src/config.rs index 5b7912c..6cf8892 100644 --- a/bin/withdrawal-finalizer/src/config.rs +++ b/bin/withdrawal-finalizer/src/config.rs @@ -2,7 +2,7 @@ use std::str::FromStr; use envconfig::Envconfig; use ethers::types::Address; -use finalizer::{AddrList, TokenList}; +use finalizer::AddrList; use serde::{Deserialize, Serialize}; use url::Url; @@ -66,9 +66,6 @@ pub struct Config { #[envconfig(from = "TX_RETRY_TIMEOUT_SECS")] pub tx_retry_timeout: usize, - #[envconfig(from = "TOKENS_TO_FINALIZE")] - pub tokens_to_finalize: Option, - #[envconfig(from = "FINALIZE_ETH_TOKEN")] pub finalize_eth_token: Option, @@ -86,6 +83,9 @@ pub struct Config { #[envconfig(from = "ETH_FINALIZATION_THRESHOLD")] pub eth_finalization_threshold: Option, + + #[envconfig(from = "ONLY_L1_RECIPIENTS")] + pub only_l1_recipients: Option, } #[derive(Deserialize, Serialize, Debug, Eq, PartialEq)] diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index fcaed76..f39ff0b 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -304,9 +304,9 @@ async fn main() -> Result<()> { l1_bridge, config.tx_retry_timeout, finalizer_account_address, - config.tokens_to_finalize.unwrap_or_default(), meter_withdrawals, eth_finalization_threshold, + config.only_l1_recipients.map(|v| v.0.into_iter().collect()), ); let finalizer_handle = tokio::spawn(finalizer.run(client_l2)); diff --git a/chain-events/src/l2_events.rs b/chain-events/src/l2_events.rs index 20ff1a1..132771c 100644 --- a/chain-events/src/l2_events.rs +++ b/chain-events/src/l2_events.rs @@ -463,8 +463,7 @@ impl L2EventsListener { { if let (Some(tx_hash), Some(block_number)) = (log.transaction_hash, log.block_number) { match l2_event { - L2Events::BridgeBurn(BridgeBurnFilter { amount, .. }) - | L2Events::Withdrawal(WithdrawalFilter { amount, .. }) => { + L2Events::BridgeBurn(BridgeBurnFilter { amount, .. }) => { CHAIN_EVENTS_METRICS.withdrawal_events.inc(); let we = WithdrawalEvent { @@ -472,6 +471,28 @@ impl L2EventsListener { block_number: block_number.as_u64(), token: log.address, amount: *amount, + l1_receiver: None, + }; + let event = we.into(); + tracing::info!("sending withdrawal event {event:?}"); + sender + .send(event) + .await + .map_err(|_| Error::ChannelClosing)?; + } + L2Events::Withdrawal(WithdrawalFilter { + amount, + l_1_receiver, + .. + }) => { + CHAIN_EVENTS_METRICS.withdrawal_events.inc(); + + let we = WithdrawalEvent { + tx_hash, + block_number: block_number.as_u64(), + token: log.address, + amount: *amount, + l1_receiver: Some(*l_1_receiver), }; let event = we.into(); tracing::info!("sending withdrawal event {event:?}"); diff --git a/client/src/zksync_types.rs b/client/src/zksync_types.rs index 8cf8043..d653d9b 100644 --- a/client/src/zksync_types.rs +++ b/client/src/zksync_types.rs @@ -188,6 +188,9 @@ pub struct WithdrawalEvent { /// The amount transferred. pub amount: U256, + + /// Address on L1 that will receive this withdrawal. + pub l1_receiver: Option
, } #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/finalizer/Cargo.toml b/finalizer/Cargo.toml index f174b21..c6f1afb 100644 --- a/finalizer/Cargo.toml +++ b/finalizer/Cargo.toml @@ -14,13 +14,9 @@ sqlx = { workspace = true, features = ["postgres", "runtime-tokio-rustls"] } tokio = { workspace = true, features = ["macros"] } tracing = { workspace = true } vise = { workspace = true } -serde = { workspace = true } serde_json = { workspace = true } client = { workspace = true } storage = { workspace = true } tx-sender = { workspace = true } withdrawals-meterer = { workspace = true } - -[dev-dependencies] -pretty_assertions = { workspace = true } diff --git a/finalizer/src/lib.rs b/finalizer/src/lib.rs index 9445dd4..a526482 100644 --- a/finalizer/src/lib.rs +++ b/finalizer/src/lib.rs @@ -14,7 +14,6 @@ use ethers::{ types::{H256, U256}, }; use futures::TryFutureExt; -use serde::Deserialize; use sqlx::PgPool; use client::{ @@ -45,34 +44,6 @@ const OUT_OF_FUNDS_BACKOFF: Duration = Duration::from_secs(10); /// Backoff period if one of the loop iterations has failed. const LOOP_ITERATION_ERROR_BACKOFF: Duration = Duration::from_secs(5); -/// An `enum` that defines a set of tokens that Finalizer finalizes. -#[derive(Deserialize, Debug, Eq, PartialEq)] -pub enum TokenList { - /// Finalize all known tokens - All, - /// Finalize nothing - None, - /// Finalize everything but these tokens, this is a blacklist. - BlackList(Vec
), - /// Finalize nothing but these tokens, this is a whitelist. - WhiteList(Vec
), -} - -impl Default for TokenList { - fn default() -> Self { - Self::All - } -} - -impl FromStr for TokenList { - type Err = serde_json::Error; - - fn from_str(s: &str) -> std::result::Result { - let res = serde_json::from_str(s)?; - Ok(res) - } -} - /// A newtype that represents a set of addresses in JSON format. #[derive(Debug, Eq, PartialEq)] pub struct AddrList(pub Vec
); @@ -102,8 +73,8 @@ pub struct Finalizer { tx_retry_timeout: Duration, account_address: Address, withdrawals_meterer: Option, - token_list: TokenList, eth_threshold: Option, + only_l1_recipients: Option>, } const NO_NEW_WITHDRAWALS_BACKOFF: Duration = Duration::from_secs(5); @@ -131,9 +102,9 @@ where l1_bridge: IL1Bridge, tx_retry_timeout: usize, account_address: Address, - token_list: TokenList, meter_withdrawals: bool, eth_threshold: Option, + only_l1_recipients: Option>, ) -> Self { let withdrawals_meterer = meter_withdrawals.then_some(WithdrawalsMeter::new( pgpool.clone(), @@ -142,8 +113,6 @@ where let tx_fee_limit = ethers::utils::parse_ether(TX_FEE_LIMIT) .expect("{TX_FEE_LIMIT} ether is a parsable amount; qed"); - tracing::info!("finalizing tokens {token_list:?}"); - Self { pgpool, one_withdrawal_gas_limit, @@ -158,8 +127,8 @@ where tx_retry_timeout: Duration::from_secs(tx_retry_timeout as u64), account_address, withdrawals_meterer, - token_list, eth_threshold, + only_l1_recipients, } } @@ -352,35 +321,13 @@ where async fn loop_iteration(&mut self) -> Result<()> { tracing::debug!("begin iteration of the finalizer loop"); - let try_finalize_these = match &self.token_list { - TokenList::All => { - storage::withdrawals_to_finalize( - &self.pgpool, - self.query_db_pagination_limit, - self.eth_threshold, - ) - .await? - } - TokenList::WhiteList(w) => { - storage::withdrawals_to_finalize_with_whitelist( - &self.pgpool, - self.query_db_pagination_limit, - w, - self.eth_threshold, - ) - .await? - } - TokenList::BlackList(b) => { - storage::withdrawals_to_finalize_with_blacklist( - &self.pgpool, - self.query_db_pagination_limit, - b, - self.eth_threshold, - ) - .await? - } - TokenList::None => return Ok(()), - }; + let try_finalize_these = storage::withdrawals_to_finalize( + &self.pgpool, + self.query_db_pagination_limit, + self.eth_threshold, + self.only_l1_recipients.as_deref(), + ) + .await?; tracing::debug!("trying to finalize these {try_finalize_these:?}"); @@ -649,72 +596,3 @@ where Ok(()) } - -#[cfg(test)] -mod tests { - use std::str::FromStr; - - use crate::AddrList; - - use super::TokenList; - use ethers::abi::Address; - use pretty_assertions::assert_eq; - - #[test] - fn tokens_list_de() { - let all = "\"All\""; - - let none = "\"None\""; - - let all: TokenList = serde_json::from_str(all).unwrap(); - assert_eq!(all, TokenList::All); - - let none: TokenList = serde_json::from_str(none).unwrap(); - assert_eq!(none, TokenList::None); - - let black = r#" - { - "BlackList":[ - "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" - ] - } - "#; - - let usdc_addr: Address = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" - .parse() - .unwrap(); - - let blocked_usdc: TokenList = serde_json::from_str(black).unwrap(); - assert_eq!(blocked_usdc, TokenList::BlackList(vec![usdc_addr])); - - let white = r#" - { - "WhiteList":[ - "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" - ] - } - "#; - - let allowed_usdc: TokenList = serde_json::from_str(white).unwrap(); - assert_eq!(allowed_usdc, TokenList::WhiteList(vec![usdc_addr])); - } - - #[test] - fn addr_list_de() { - let addr_1: Address = "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4" - .parse() - .unwrap(); - let addr_2: Address = "0x1820495E7d1B8BA82B706FB972d2A2B8282023d0" - .parse() - .unwrap(); - - let addr_list = r#"[ - "0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4", - "0x1820495E7d1B8BA82B706FB972d2A2B8282023d0" - ]"#; - - let list: AddrList = AddrList::from_str(addr_list).unwrap(); - - assert_eq!(list, AddrList(vec![addr_1, addr_2])); - } -} diff --git a/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json b/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json deleted file mode 100644 index 3f80961..0000000 --- a/storage/.sqlx/query-1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n SELECT\n l2_to_l1_events.l1_token_addr,\n l2_to_l1_events.amount,\n withdrawals.tx_hash,\n finalization_data.finalization_tx\n FROM\n l2_to_l1_events\n JOIN finalization_data ON\n finalization_data.l1_batch_number = l2_to_l1_events.l2_block_number\n AND finalization_data.l2_tx_number_in_block = l2_to_l1_events.tx_number_in_block\n JOIN withdrawals ON\n withdrawals.id = finalization_data.withdrawal_id\n WHERE l2_to_l1_events.to_address = $1\n ORDER BY l2_to_l1_events.l2_block_number DESC\n LIMIT $2\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "l1_token_addr", - "type_info": "Bytea" - }, - { - "ordinal": 1, - "name": "amount", - "type_info": "Numeric" - }, - { - "ordinal": 2, - "name": "tx_hash", - "type_info": "Bytea" - }, - { - "ordinal": 3, - "name": "finalization_tx", - "type_info": "Bytea" - } - ], - "parameters": { - "Left": [ - "Bytea", - "Int8" - ] - }, - "nullable": [ - false, - false, - false, - true - ] - }, - "hash": "1439a51cb9304493287a9c54c13e59ab42e1511a38989dfc83f0a240d85a511a" -} diff --git a/storage/.sqlx/query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json b/storage/.sqlx/query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json deleted file mode 100644 index 6a16780..0000000 --- a/storage/.sqlx/query-21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND (\n last_finalization_attempt IS NULL\n OR\n last_finalization_attempt < NOW() - INTERVAL '1 minutes'\n )\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2\n ELSE TRUE\n END\n )\n LIMIT\n $1\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "tx_hash", - "type_info": "Bytea" - }, - { - "ordinal": 1, - "name": "event_index_in_tx", - "type_info": "Int4" - }, - { - "ordinal": 2, - "name": "withdrawal_id", - "type_info": "Int8" - }, - { - "ordinal": 3, - "name": "l2_block_number", - "type_info": "Int8" - }, - { - "ordinal": 4, - "name": "l1_batch_number", - "type_info": "Int8" - }, - { - "ordinal": 5, - "name": "l2_message_index", - "type_info": "Int4" - }, - { - "ordinal": 6, - "name": "l2_tx_number_in_block", - "type_info": "Int2" - }, - { - "ordinal": 7, - "name": "message", - "type_info": "Bytea" - }, - { - "ordinal": 8, - "name": "sender", - "type_info": "Bytea" - }, - { - "ordinal": 9, - "name": "proof", - "type_info": "Bytea" - } - ], - "parameters": { - "Left": [ - "Int8", - "Numeric" - ] - }, - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ] - }, - "hash": "21ed1c0b070f4929f990e1810e682b4099dad6c4b65d951e3534e2168e7ad79e" -} diff --git a/storage/.sqlx/query-4a3f009964fdf43b3bd09d98b4ef736dacfb4b7e815127c0b95ef291e05df3e6.json b/storage/.sqlx/query-4a3f009964fdf43b3bd09d98b4ef736dacfb4b7e815127c0b95ef291e05df3e6.json new file mode 100644 index 0000000..7be6847 --- /dev/null +++ b/storage/.sqlx/query-4a3f009964fdf43b3bd09d98b4ef736dacfb4b7e815127c0b95ef291e05df3e6.json @@ -0,0 +1,77 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND\n failed_finalization_attempts < 3\n AND\n finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND\n (\n last_finalization_attempt IS NULL\n OR\n last_finalization_attempt < NOW() - INTERVAL '1 minutes'\n )\n AND\n (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2\n ELSE TRUE\n END\n )\n limit $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "tx_hash", + "type_info": "Bytea" + }, + { + "ordinal": 1, + "name": "event_index_in_tx", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "withdrawal_id", + "type_info": "Int8" + }, + { + "ordinal": 3, + "name": "l2_block_number", + "type_info": "Int8" + }, + { + "ordinal": 4, + "name": "l1_batch_number", + "type_info": "Int8" + }, + { + "ordinal": 5, + "name": "l2_message_index", + "type_info": "Int4" + }, + { + "ordinal": 6, + "name": "l2_tx_number_in_block", + "type_info": "Int2" + }, + { + "ordinal": 7, + "name": "message", + "type_info": "Bytea" + }, + { + "ordinal": 8, + "name": "sender", + "type_info": "Bytea" + }, + { + "ordinal": 9, + "name": "proof", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [ + "Int8", + "Numeric" + ] + }, + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ] + }, + "hash": "4a3f009964fdf43b3bd09d98b4ef736dacfb4b7e815127c0b95ef291e05df3e6" +} diff --git a/storage/.sqlx/query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json b/storage/.sqlx/query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json deleted file mode 100644 index 460f757..0000000 --- a/storage/.sqlx/query-78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token NOT IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n LIMIT\n $1\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "tx_hash", - "type_info": "Bytea" - }, - { - "ordinal": 1, - "name": "event_index_in_tx", - "type_info": "Int4" - }, - { - "ordinal": 2, - "name": "withdrawal_id", - "type_info": "Int8" - }, - { - "ordinal": 3, - "name": "l2_block_number", - "type_info": "Int8" - }, - { - "ordinal": 4, - "name": "l1_batch_number", - "type_info": "Int8" - }, - { - "ordinal": 5, - "name": "l2_message_index", - "type_info": "Int4" - }, - { - "ordinal": 6, - "name": "l2_tx_number_in_block", - "type_info": "Int2" - }, - { - "ordinal": 7, - "name": "message", - "type_info": "Bytea" - }, - { - "ordinal": 8, - "name": "sender", - "type_info": "Bytea" - }, - { - "ordinal": 9, - "name": "proof", - "type_info": "Bytea" - } - ], - "parameters": { - "Left": [ - "Int8", - "ByteaArray", - "Numeric" - ] - }, - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ] - }, - "hash": "78b20c983b951e668b255f46c1f68fb4dc41f5e0fb9d4b55cc13a7c5210963de" -} diff --git a/storage/.sqlx/query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json b/storage/.sqlx/query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json deleted file mode 100644 index 794981b..0000000 --- a/storage/.sqlx/query-8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND failed_finalization_attempts < 3\n AND finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND w.token IN (SELECT * FROM UNNEST (\n $2 :: BYTEA []\n ))\n AND (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3\n ELSE TRUE\n END\n )\n LIMIT\n $1\n ", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "tx_hash", - "type_info": "Bytea" - }, - { - "ordinal": 1, - "name": "event_index_in_tx", - "type_info": "Int4" - }, - { - "ordinal": 2, - "name": "withdrawal_id", - "type_info": "Int8" - }, - { - "ordinal": 3, - "name": "l2_block_number", - "type_info": "Int8" - }, - { - "ordinal": 4, - "name": "l1_batch_number", - "type_info": "Int8" - }, - { - "ordinal": 5, - "name": "l2_message_index", - "type_info": "Int4" - }, - { - "ordinal": 6, - "name": "l2_tx_number_in_block", - "type_info": "Int2" - }, - { - "ordinal": 7, - "name": "message", - "type_info": "Bytea" - }, - { - "ordinal": 8, - "name": "sender", - "type_info": "Bytea" - }, - { - "ordinal": 9, - "name": "proof", - "type_info": "Bytea" - } - ], - "parameters": { - "Left": [ - "Int8", - "ByteaArray", - "Numeric" - ] - }, - "nullable": [ - false, - false, - false, - false, - false, - false, - false, - false, - false, - false - ] - }, - "hash": "8c331d6438925f2ebe7749d5cc5bb5f6b7a8e177692896d4d9fe9db129defb28" -} diff --git a/storage/.sqlx/query-93fe2d0516a63ed0e27ef4fe4b2d6d0ba5525e99e237584b7db0777b1a5a43fa.json b/storage/.sqlx/query-93fe2d0516a63ed0e27ef4fe4b2d6d0ba5525e99e237584b7db0777b1a5a43fa.json deleted file mode 100644 index 5125d6a..0000000 --- a/storage/.sqlx/query-93fe2d0516a63ed0e27ef4fe4b2d6d0ba5525e99e237584b7db0777b1a5a43fa.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n INSERT INTO\n withdrawals (\n tx_hash,\n l2_block_number,\n token,\n amount,\n event_index_in_tx\n )\n SELECT\n u.tx_hash,\n u.l2_block_number,\n u.token,\n u.amount,\n u.index_in_tx\n FROM\n unnest(\n $1 :: BYTEA [],\n $2 :: bigint [],\n $3 :: BYTEA [],\n $4 :: numeric [],\n $5 :: integer []\n ) AS u(\n tx_hash,\n l2_block_number,\n token,\n amount,\n index_in_tx\n ) ON CONFLICT (\n tx_hash,\n event_index_in_tx\n ) DO NOTHING\n ", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "ByteaArray", - "Int8Array", - "ByteaArray", - "NumericArray", - "Int4Array" - ] - }, - "nullable": [] - }, - "hash": "93fe2d0516a63ed0e27ef4fe4b2d6d0ba5525e99e237584b7db0777b1a5a43fa" -} diff --git a/storage/.sqlx/query-aadc16b7622f1b2a49630abc878987c10cec7252cadb72b4dbc2831b81f1dd50.json b/storage/.sqlx/query-aadc16b7622f1b2a49630abc878987c10cec7252cadb72b4dbc2831b81f1dd50.json new file mode 100644 index 0000000..edb4693 --- /dev/null +++ b/storage/.sqlx/query-aadc16b7622f1b2a49630abc878987c10cec7252cadb72b4dbc2831b81f1dd50.json @@ -0,0 +1,19 @@ +{ + "db_name": "PostgreSQL", + "query": "\n INSERT INTO\n withdrawals (\n tx_hash,\n l2_block_number,\n token,\n amount,\n event_index_in_tx,\n l1_receiver\n )\n SELECT\n u.tx_hash,\n u.l2_block_number,\n u.token,\n u.amount,\n u.index_in_tx,\n u.l1_receiver\n FROM\n unnest(\n $1 :: BYTEA [],\n $2 :: bigint [],\n $3 :: BYTEA [],\n $4 :: numeric [],\n $5 :: integer [],\n $6 :: BYTEA []\n ) AS u(\n tx_hash,\n l2_block_number,\n token,\n amount,\n index_in_tx,\n l1_receiver\n ) ON CONFLICT (\n tx_hash,\n event_index_in_tx\n ) DO NOTHING\n ", + "describe": { + "columns": [], + "parameters": { + "Left": [ + "ByteaArray", + "Int8Array", + "ByteaArray", + "NumericArray", + "Int4Array", + "ByteaArray" + ] + }, + "nullable": [] + }, + "hash": "aadc16b7622f1b2a49630abc878987c10cec7252cadb72b4dbc2831b81f1dd50" +} diff --git a/storage/.sqlx/query-bec6b9ad565f05d3587ce1db853e273f30a3e3ec884b0c1310aafbbf06a8f165.json b/storage/.sqlx/query-bec6b9ad565f05d3587ce1db853e273f30a3e3ec884b0c1310aafbbf06a8f165.json index 7278b7a..cb3de78 100644 --- a/storage/.sqlx/query-bec6b9ad565f05d3587ce1db853e273f30a3e3ec884b0c1310aafbbf06a8f165.json +++ b/storage/.sqlx/query-bec6b9ad565f05d3587ce1db853e273f30a3e3ec884b0c1310aafbbf06a8f165.json @@ -37,6 +37,11 @@ "ordinal": 6, "name": "finalizable", "type_info": "Bool" + }, + { + "ordinal": 7, + "name": "l1_receiver", + "type_info": "Bytea" } ], "parameters": { @@ -51,7 +56,8 @@ false, false, false, - false + false, + true ] }, "hash": "bec6b9ad565f05d3587ce1db853e273f30a3e3ec884b0c1310aafbbf06a8f165" diff --git a/storage/.sqlx/query-d8b97db2eb9166b68386244231828ef898f7e7a29fd93a97229dd974a86f9d90.json b/storage/.sqlx/query-d8b97db2eb9166b68386244231828ef898f7e7a29fd93a97229dd974a86f9d90.json new file mode 100644 index 0000000..ae43d10 --- /dev/null +++ b/storage/.sqlx/query-d8b97db2eb9166b68386244231828ef898f7e7a29fd93a97229dd974a86f9d90.json @@ -0,0 +1,78 @@ +{ + "db_name": "PostgreSQL", + "query": "\n SELECT\n w.tx_hash,\n w.event_index_in_tx,\n withdrawal_id,\n finalization_data.l2_block_number,\n l1_batch_number,\n l2_message_index,\n l2_tx_number_in_block,\n message,\n sender,\n proof\n FROM\n finalization_data\n JOIN withdrawals w ON finalization_data.withdrawal_id = w.id\n WHERE\n finalization_tx IS NULL\n AND\n failed_finalization_attempts < 3\n AND\n finalization_data.l2_block_number <= COALESCE(\n (\n SELECT\n MAX(l2_block_number)\n FROM\n l2_blocks\n WHERE\n execute_l1_block_number IS NOT NULL\n ),\n 1\n )\n AND\n (\n last_finalization_attempt IS NULL\n OR\n last_finalization_attempt < NOW() - INTERVAL '1 minutes'\n )\n AND\n (\n CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2\n ELSE TRUE\n END\n )\n AND l1_receiver = ANY($3) limit $1", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "tx_hash", + "type_info": "Bytea" + }, + { + "ordinal": 1, + "name": "event_index_in_tx", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "withdrawal_id", + "type_info": "Int8" + }, + { + "ordinal": 3, + "name": "l2_block_number", + "type_info": "Int8" + }, + { + "ordinal": 4, + "name": "l1_batch_number", + "type_info": "Int8" + }, + { + "ordinal": 5, + "name": "l2_message_index", + "type_info": "Int4" + }, + { + "ordinal": 6, + "name": "l2_tx_number_in_block", + "type_info": "Int2" + }, + { + "ordinal": 7, + "name": "message", + "type_info": "Bytea" + }, + { + "ordinal": 8, + "name": "sender", + "type_info": "Bytea" + }, + { + "ordinal": 9, + "name": "proof", + "type_info": "Bytea" + } + ], + "parameters": { + "Left": [ + "Int8", + "Numeric", + "ByteaArray" + ] + }, + "nullable": [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false + ] + }, + "hash": "d8b97db2eb9166b68386244231828ef898f7e7a29fd93a97229dd974a86f9d90" +} diff --git a/storage/migrations/20240325203324_add-l1-receiver-address.down.sql b/storage/migrations/20240325203324_add-l1-receiver-address.down.sql new file mode 100644 index 0000000..79f0393 --- /dev/null +++ b/storage/migrations/20240325203324_add-l1-receiver-address.down.sql @@ -0,0 +1,2 @@ +DROP INDEX IF EXISTS ix_withdrawals_l1_receiver; +ALTER TABLE withdrawals DROP COLUMN l1_receiver; diff --git a/storage/migrations/20240325203324_add-l1-receiver-address.up.sql b/storage/migrations/20240325203324_add-l1-receiver-address.up.sql new file mode 100644 index 0000000..4796f8a --- /dev/null +++ b/storage/migrations/20240325203324_add-l1-receiver-address.up.sql @@ -0,0 +1,2 @@ +ALTER TABLE withdrawals ADD COLUMN l1_receiver BYTEA; +CREATE INDEX IF NOT EXISTS ix_withdrawals_l1_receiver ON withdrawals (l1_receiver); diff --git a/storage/src/lib.rs b/storage/src/lib.rs index 927a461..c572a21 100644 --- a/storage/src/lib.rs +++ b/storage/src/lib.rs @@ -15,6 +15,7 @@ use client::{ }; mod error; +mod macro_utils; mod metrics; mod utils; @@ -263,6 +264,7 @@ pub async fn get_withdrawals(pool: &PgPool, ids: &[i64]) -> Result Resu let mut tokens = Vec::with_capacity(events.len()); let mut amounts = Vec::with_capacity(events.len()); let mut indices_in_tx = Vec::with_capacity(events.len()); + let mut l1_receivers = Vec::with_capacity(events.len()); events.iter().for_each(|sw| { tx_hashes.push(sw.event.tx_hash.0.to_vec()); @@ -292,6 +295,7 @@ pub async fn add_withdrawals(pool: &PgPool, events: &[StoredWithdrawal]) -> Resu tokens.push(sw.event.token.0.to_vec()); amounts.push(u256_to_big_decimal(sw.event.amount)); indices_in_tx.push(sw.index_in_tx as i32); + l1_receivers.push(sw.event.l1_receiver.map(|a| a.0.to_vec())); }); let latency = STORAGE_METRICS.call[&"add_withdrawals"].start(); @@ -304,27 +308,31 @@ pub async fn add_withdrawals(pool: &PgPool, events: &[StoredWithdrawal]) -> Resu l2_block_number, token, amount, - event_index_in_tx + event_index_in_tx, + l1_receiver ) SELECT u.tx_hash, u.l2_block_number, u.token, u.amount, - u.index_in_tx + u.index_in_tx, + u.l1_receiver FROM unnest( $1 :: BYTEA [], $2 :: bigint [], $3 :: BYTEA [], $4 :: numeric [], - $5 :: integer [] + $5 :: integer [], + $6 :: BYTEA [] ) AS u( tx_hash, l2_block_number, token, amount, - index_in_tx + index_in_tx, + l1_receiver ) ON CONFLICT ( tx_hash, event_index_in_tx @@ -335,6 +343,7 @@ pub async fn add_withdrawals(pool: &PgPool, events: &[StoredWithdrawal]) -> Resu &tokens, amounts.as_slice(), &indices_in_tx, + &l1_receivers as &[Option>], ) .execute(pool) .await?; @@ -741,233 +750,113 @@ pub async fn set_withdrawal_unfinalizable( Ok(()) } -/// Get the earliest withdrawals never attempted to be finalized before -pub async fn withdrawals_to_finalize_with_blacklist( - pool: &PgPool, - limit_by: u64, - token_blacklist: &[Address], - eth_threshold: Option, -) -> Result> { - let blacklist: Vec<_> = token_blacklist.iter().map(|a| a.0.to_vec()).collect(); - // if no threshold, query _all_ ethereum withdrawals since all of them are >= 0. - let eth_threshold = eth_threshold.unwrap_or(U256::zero()); - - let data = sqlx::query!( - " - SELECT - w.tx_hash, - w.event_index_in_tx, - withdrawal_id, - finalization_data.l2_block_number, - l1_batch_number, - l2_message_index, - l2_tx_number_in_block, - message, - sender, - proof - FROM - finalization_data - JOIN withdrawals w ON finalization_data.withdrawal_id = w.id - WHERE - finalization_tx IS NULL - AND failed_finalization_attempts < 3 - AND finalization_data.l2_block_number <= COALESCE( - ( - SELECT - MAX(l2_block_number) - FROM - l2_blocks - WHERE - execute_l1_block_number IS NOT NULL - ), - 1 - ) - AND w.token NOT IN (SELECT * FROM UNNEST ( - $2 :: BYTEA [] - )) - AND ( - CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3 - ELSE TRUE - END - ) - LIMIT - $1 - ", - limit_by as i64, - &blacklist, - u256_to_big_decimal(eth_threshold), - ) - .fetch_all(pool) - .await? - .into_iter() - .map(|record| WithdrawalParams { - tx_hash: H256::from_slice(&record.tx_hash), - event_index_in_tx: record.event_index_in_tx as u32, - id: record.withdrawal_id as u64, - l2_block_number: record.l2_block_number as u64, - l1_batch_number: record.l1_batch_number.into(), - l2_message_index: record.l2_message_index as u32, - l2_tx_number_in_block: record.l2_tx_number_in_block as u16, - message: record.message.into(), - sender: Address::from_slice(&record.sender), - proof: bincode::deserialize(&record.proof) - .expect("storage contains data correctly serialized by bincode; qed"), - }) - .collect(); - - Ok(data) -} - -/// Get the earliest withdrawals never attempted to be finalized before -pub async fn withdrawals_to_finalize_with_whitelist( - pool: &PgPool, - limit_by: u64, - token_whitelist: &[Address], - eth_threshold: Option, -) -> Result> { - let whitelist: Vec<_> = token_whitelist.iter().map(|a| a.0.to_vec()).collect(); - // if no threshold, query _all_ ethereum withdrawals since all of them are >= 0. - let eth_threshold = eth_threshold.unwrap_or(U256::zero()); - - let data = sqlx::query!( - " - SELECT - w.tx_hash, - w.event_index_in_tx, - withdrawal_id, - finalization_data.l2_block_number, - l1_batch_number, - l2_message_index, - l2_tx_number_in_block, - message, - sender, - proof - FROM - finalization_data - JOIN withdrawals w ON finalization_data.withdrawal_id = w.id - WHERE - finalization_tx IS NULL - AND failed_finalization_attempts < 3 - AND finalization_data.l2_block_number <= COALESCE( - ( - SELECT - MAX(l2_block_number) - FROM - l2_blocks - WHERE - execute_l1_block_number IS NOT NULL - ), - 1 - ) - AND w.token IN (SELECT * FROM UNNEST ( - $2 :: BYTEA [] - )) - AND ( - CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $3 - ELSE TRUE - END - ) - LIMIT - $1 - ", - limit_by as i64, - &whitelist, - u256_to_big_decimal(eth_threshold), - ) - .fetch_all(pool) - .await? - .into_iter() - .map(|record| WithdrawalParams { - tx_hash: H256::from_slice(&record.tx_hash), - event_index_in_tx: record.event_index_in_tx as u32, - id: record.withdrawal_id as u64, - l2_block_number: record.l2_block_number as u64, - l1_batch_number: record.l1_batch_number.into(), - l2_message_index: record.l2_message_index as u32, - l2_tx_number_in_block: record.l2_tx_number_in_block as u16, - message: record.message.into(), - sender: Address::from_slice(&record.sender), - proof: bincode::deserialize(&record.proof) - .expect("storage contains data correctly serialized by bincode; qed"), - }) - .collect(); - - Ok(data) -} - /// Get the earliest withdrawals never attempted to be finalized before pub async fn withdrawals_to_finalize( pool: &PgPool, limit_by: u64, eth_threshold: Option, + only_l1_recipients: Option<&[Address]>, ) -> Result> { let latency = STORAGE_METRICS.call[&"withdrawals_to_finalize"].start(); // if no threshold, query _all_ ethereum withdrawals since all of them are >= 0. let eth_threshold = eth_threshold.unwrap_or(U256::zero()); + struct WithdrawalParamsInner { + tx_hash: Vec, + event_index_in_tx: i32, + withdrawal_id: i64, + l2_block_number: i64, + l1_batch_number: i64, + l2_message_index: i32, + l2_tx_number_in_block: i16, + message: Vec, + sender: Vec, + proof: Vec, + } - let data = sqlx::query!( - " - SELECT - w.tx_hash, - w.event_index_in_tx, - withdrawal_id, - finalization_data.l2_block_number, - l1_batch_number, - l2_message_index, - l2_tx_number_in_block, - message, - sender, - proof - FROM - finalization_data - JOIN withdrawals w ON finalization_data.withdrawal_id = w.id - WHERE - finalization_tx IS NULL - AND failed_finalization_attempts < 3 - AND finalization_data.l2_block_number <= COALESCE( - ( - SELECT - MAX(l2_block_number) - FROM - l2_blocks - WHERE - execute_l1_block_number IS NOT NULL + let query = match_query_as!( + WithdrawalParamsInner, + [ + r#" + SELECT + w.tx_hash, + w.event_index_in_tx, + withdrawal_id, + finalization_data.l2_block_number, + l1_batch_number, + l2_message_index, + l2_tx_number_in_block, + message, + sender, + proof + FROM + finalization_data + JOIN withdrawals w ON finalization_data.withdrawal_id = w.id + WHERE + finalization_tx IS NULL + AND + failed_finalization_attempts < 3 + AND + finalization_data.l2_block_number <= COALESCE( + ( + SELECT + MAX(l2_block_number) + FROM + l2_blocks + WHERE + execute_l1_block_number IS NOT NULL + ), + 1 + ) + AND + ( + last_finalization_attempt IS NULL + OR + last_finalization_attempt < NOW() - INTERVAL '1 minutes' + ) + AND + ( + CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2 + ELSE TRUE + END + ) + "#, + _ // Maybe filter by l1 receiver + ], + match (only_l1_recipients) { + Some(receivers) => ( + "AND l1_receiver = ANY($3) limit $1"; + limit_by as i64, + u256_to_big_decimal(eth_threshold), + &receivers.iter() + .map(Address::as_bytes) + .collect::>() as &[&[u8]] ), - 1 - ) - AND ( - last_finalization_attempt IS NULL - OR - last_finalization_attempt < NOW() - INTERVAL '1 minutes' - ) - AND ( - CASE WHEN token = decode('000000000000000000000000000000000000800A', 'hex') THEN amount >= $2 - ELSE TRUE - END - ) - LIMIT - $1 - ", - limit_by as i64, - u256_to_big_decimal(eth_threshold), - ) - .fetch_all(pool) - .await? - .into_iter() - .map(|record| WithdrawalParams { - tx_hash: H256::from_slice(&record.tx_hash), - event_index_in_tx: record.event_index_in_tx as u32, - id: record.withdrawal_id as u64, - l2_block_number: record.l2_block_number as u64, - l1_batch_number: record.l1_batch_number.into(), - l2_message_index: record.l2_message_index as u32, - l2_tx_number_in_block: record.l2_tx_number_in_block as u16, - message: record.message.into(), - sender: Address::from_slice(&record.sender), - proof: bincode::deserialize(&record.proof) - .expect("storage contains data correctly serialized by bincode; qed"), - }) - .collect(); + None => ( + "limit $1"; + limit_by as i64, + u256_to_big_decimal(eth_threshold) + ), + } + ); + + let data = query + .fetch_all(pool) + .await? + .into_iter() + .map(|record| WithdrawalParams { + tx_hash: H256::from_slice(&record.tx_hash), + event_index_in_tx: record.event_index_in_tx as u32, + id: record.withdrawal_id as u64, + l2_block_number: record.l2_block_number as u64, + l1_batch_number: record.l1_batch_number.into(), + l2_message_index: record.l2_message_index as u32, + l2_tx_number_in_block: record.l2_tx_number_in_block as u16, + message: record.message.into(), + sender: Address::from_slice(&record.sender), + proof: bincode::deserialize(&record.proof) + .expect("storage contains data correctly serialized by bincode; qed"), + }) + .collect(); latency.observe(); diff --git a/storage/src/macro_utils.rs b/storage/src/macro_utils.rs new file mode 100644 index 0000000..b5ad03b --- /dev/null +++ b/storage/src/macro_utils.rs @@ -0,0 +1,148 @@ +/// Interpolates the provided DB query consisting of several or comma-separated parts, each of parts being a string literal +/// or `_`. `_` parts are substituted with the provided variables in the order of appearance. +/// +/// We use tail recursion and accumulate (possibly substituted) parts in an accumulator. This is because `query_as!` would not +/// work otherwise; its input must be fully expanded. +#[macro_export] +macro_rules! interpolate_query { + // Terminal clause: we have a final substitution. + (query_type: $query_type:ty; acc: $acc:expr; args: $($args:expr,)*; (_,) => $var:literal,) => { + sqlx::query_as!($query_type, $acc + $var, $($args,)*) + }; + // Terminal clause: we have a final query part. + (query_type: $query_type:ty; acc: $acc:expr; args: $($args:expr,)*; ($part:literal,) =>) => { + sqlx::query_as!($query_type, $acc + $part, $($args,)*) + }; + + // We have a non-terminal substitution. Substitute it with a `var`, add to the accumulator and recurse. + ( + query_type: $query_type:ty; + acc: $acc:expr; + args: $($args:expr,)*; + (_, $($other_parts:tt,)+) => $var:literal, $($other_vars:literal,)* + ) => { + interpolate_query!( + query_type: $query_type; + acc: $acc + $var; + args: $($args,)*; + ($($other_parts,)+) => $($other_vars,)* + ) + }; + // We have a non-terminal query part. Add it to the accumulator and recurse. + ( + query_type: $query_type:ty; + acc: $acc:expr; + args: $($args:expr,)*; + ($part:tt, $($other_parts:tt,)+) => $($vars:literal,)* + ) => { + interpolate_query!( + query_type: $query_type; + acc: $acc + $part; + args: $($args,)*; + ($($other_parts,)+) => $($vars,)* + ) + }; +} + +/// +/// Builds a set of statically compiled DB queries based on the provided condition. This allows to avoid copying similar queries +/// or making them dynamic (i.e., using `sqlx::query()` function etc.). +/// +/// The macro accepts 3 arguments: +/// +/// - Output type. Has same semantics as the type in `sqlx::query_as!` macro. +/// - Query parts, enclosed in `[]` brackets. Each part must be either a string literal, or a `_` placeholder. +/// - `match` expression. Each variant hand must return a `()`-enclosed comma-separated list of substitutions for the placeholder +/// query parts (in the order of their appearance in the query parts), then a semicolon `;`, then a list of arguments +/// for the query (may be empty; has same semantics as arguments for `sqlx::query!`). Each substitution must be a string literal. +/// The number of arguments may differ across variants (e.g., one of variants may introduce one or more additional args). +/// +/// See the crate code for examples of usage. +#[macro_export] +macro_rules! match_query_as { + ( + $query_type:ty, + [$($parts:tt),+], + match ($input:expr) { + $($variants:tt)* + } + ) => { + // We parse `variants` recursively and add parsed parts to an accumulator. + match_query_as!( + @inner + query_type: $query_type, + input: $input, + query_parts: ($($parts),+), + acc: (); + $($variants)* + ) + }; + + // Terminal clause: we've parsed all match variants. Now we need to expand into a `match` expression. + ( + @inner + query_type: $query_type:ty, + input: $input:expr, + // We surround token trees (`:tt` [designator]) by `()` so that they are delimited. We need token trees in the first place + // because it's one of the few forms of designators than can be matched against specific tokens or parsed further (e.g., + // as `expr`essions, `pat`terns etc.) during query expansion. + // + // [designator]: https://doc.rust-lang.org/rust-by-example/macros/designators.html + query_parts: ($($_parts:tt),+), // not used; parts are copied into each variant expansion + acc: ($($acc:tt)*); + ) => { + match_query_as!( + @expand + query_type: $query_type, + input: $input, + acc: ($($acc)*) + ) + }; + // Non-terminal clause: we have at least one variant left. We add the variant to the accumulator copying parts + // into it. Copying is necessary because Rust macros are not able to nest expansions of independently repeated vars + // (i.e., query parts and variants in this case). + ( + @inner + query_type: $query_type:ty, + input: $input:expr, + query_parts: ($($parts:tt),+), + acc: ($($acc:tt)*); + $p:pat => ($($clause:tt)*), + $($rest:tt)* + ) => { + match_query_as!( + @inner + query_type: $query_type, + input: $input, + query_parts: ($($parts),+), + acc: ($($acc)* $p => (parts: $($parts,)+) ($($clause)*)); + $($rest)* + ) + }; + // Expansion routine: match all variants, each with copied query parts, and expand them as a `match` expression + // with the corresponding variants. + ( + @expand + query_type: $query_type:ty, + input: $input:expr, + acc: ($( + $p:pat => (parts: $($parts:tt,)+) ($($substitutions:literal),+ ; $($args:expr),*) + )*) + ) => { + match ($input) { + $( + $p => { + // We need to specify `query` type (specifically, the 2nd type param in `Map`) so that all `match` variants + // return the same type. + let query: sqlx::query::Map<_, fn(_) -> _, _> = interpolate_query!( + query_type: $query_type; + acc: ""; + args: $($args,)*; + ($($parts,)+) => $($substitutions,)+ + ); + query + } + )* + } + }; +} From d11968ff477710d5e7d35213abbedc7a032f55c0 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 10:06:34 +0100 Subject: [PATCH 092/128] chore(main): release 0.8.0 (#425) :robot: I have created a release *beep* *boop* --- ## [0.8.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.7.0...v0.8.0) (2024-03-27) ### Features * add filtering by l1 recepient ([#423](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/423)) ([cef3f12](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/cef3f1247d89265a18d3f39ce3315ccb4eb9b458)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index e7ca613..64f3cdd 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.7.0" + ".": "0.8.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index a306437..bd4999f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.8.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.7.0...v0.8.0) (2024-03-27) + + +### Features + +* add filtering by l1 recepient ([#423](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/423)) ([cef3f12](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/cef3f1247d89265a18d3f39ce3315ccb4eb9b458)) + ## [0.7.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.6.6...v0.7.0) (2024-03-15) From 132163fd0595e6768aed61710e4925158772d525 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 15:05:52 +0100 Subject: [PATCH 093/128] chore(deps): update rust crate chrono to 0.4.37 (#426) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [chrono](https://togithub.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.35` -> `0.4.37` | --- ### Release Notes
chronotope/chrono (chrono) ### [`v0.4.37`](https://togithub.com/chronotope/chrono/compare/v0.4.36...v0.4.37) [Compare Source](https://togithub.com/chronotope/chrono/compare/v0.4.36...v0.4.37) ### [`v0.4.36`](https://togithub.com/chronotope/chrono/releases/tag/v0.4.36) [Compare Source](https://togithub.com/chronotope/chrono/compare/v0.4.35...v0.4.36) This release un-deprecates the methods on `TimeDelta` that were deprecated with the 0.4.35 release because of the churn they are causing for the ecosystem. New is the `DateTime::with_time()` method. As an example of when it is useful: ```rust use chrono::{Local, NaiveTime}; // Today at 12:00:00 let today_noon = Local::now().with_time(NaiveTime::from_hms_opt(12, 0, 0).unwrap()); ``` ### Additions - Add `DateTime::with_time()` ([#​1510](https://togithub.com/chronotope/chrono/issues/1510)) ### Deprecations - Revert `TimeDelta` deprecations ([#​1543](https://togithub.com/chronotope/chrono/issues/1543)) - Deprecate `TimeStamp::timestamp_subsec_nanos`, which was missed in the 0.4.35 release ([#​1486](https://togithub.com/chronotope/chrono/issues/1486)) ### Documentation - Correct version number of deprecation notices ([#​1486](https://togithub.com/chronotope/chrono/issues/1486)) - Fix some typos ([#​1505](https://togithub.com/chronotope/chrono/issues/1505)) - Slightly improve serde documentation ([#​1519](https://togithub.com/chronotope/chrono/issues/1519)) - Main documentation: simplify links and reflow text ([#​1535](https://togithub.com/chronotope/chrono/issues/1535)) ### Internal - CI: Lint benchmarks ([#​1489](https://togithub.com/chronotope/chrono/issues/1489)) - Remove unnessary `Copy` and `Send` impls ([#​1492](https://togithub.com/chronotope/chrono/issues/1492), thanks [@​erickt](https://togithub.com/erickt)) - Backport streamlined `NaiveDate` unit tests ([#​1500](https://togithub.com/chronotope/chrono/issues/1500), thanks [@​Zomtir](https://togithub.com/Zomtir)) - Rename `LocalResult` to `TzResolution`, add alias ([#​1501](https://togithub.com/chronotope/chrono/issues/1501)) - Update windows-bindgen to 0.55 ([#​1504](https://togithub.com/chronotope/chrono/issues/1504)) - Avoid duplicate imports, which generate warnings on nightly ([#​1507](https://togithub.com/chronotope/chrono/issues/1507)) - Add extra debug assertions to `NaiveDate::from_yof` ([#​1518](https://togithub.com/chronotope/chrono/issues/1518)) - Some small simplifications to `DateTime::date_naive` and `NaiveDate::diff_months` ([#​1530](https://togithub.com/chronotope/chrono/issues/1530)) - Remove `unwrap` in Unix `Local` type ([#​1533](https://togithub.com/chronotope/chrono/issues/1533)) - Use different method to ignore feature-dependent doctests ([#​1534](https://togithub.com/chronotope/chrono/issues/1534)) Thanks to all contributors on behalf of the chrono team, [@​djc](https://togithub.com/djc) and [@​pitdicker](https://togithub.com/pitdicker)!
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 857c89f..9f2bf42 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -457,9 +457,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.35" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eaf5903dcbc0a39312feb77df2ff4c76387d591b9fc7b04a238dcf8bb62639a" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/Cargo.toml b/Cargo.toml index 8a09548..0e56f5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,7 +52,7 @@ syn = "2.0.55" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" -chrono = { version = "0.4.35", default-features = false } +chrono = { version = "0.4.37", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } From f1f15bfe52067552bc4e948655a6c8fa91fc1e71 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 28 Mar 2024 19:46:35 +0100 Subject: [PATCH 094/128] chore(deps): update rust crate tokio to 1.37.0 (#427) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | workspace.dependencies | minor | `1.36.0` -> `1.37.0` | --- ### Release Notes
tokio-rs/tokio (tokio) ### [`v1.37.0`](https://togithub.com/tokio-rs/tokio/releases/tag/tokio-1.37.0): Tokio v1.37.0 ##### 1.37.0 (March 28th, 2024) ##### Added - fs: add `set_max_buf_size` to `tokio::fs::File` ([#​6411]) - io: add `try_new` and `try_with_interest` to `AsyncFd` ([#​6345]) - sync: add `forget_permits` method to semaphore ([#​6331]) - sync: add `is_closed`, `is_empty`, and `len` to mpsc receivers ([#​6348]) - sync: add a `rwlock()` method to owned `RwLock` guards ([#​6418]) - sync: expose strong and weak counts of mpsc sender handles ([#​6405]) - sync: implement `Clone` for `watch::Sender` ([#​6388]) - task: add `TaskLocalFuture::take_value` ([#​6340]) - task: implement `FromIterator` for `JoinSet` ([#​6300]) ##### Changed - io: make `io::split` use a mutex instead of a spinlock ([#​6403]) ##### Fixed - docs: fix docsrs build without net feature ([#​6360]) - macros: allow select with only else branch ([#​6339]) - runtime: fix leaking registration entries when os registration fails ([#​6329]) ##### Documented - io: document cancel safety of `AsyncBufReadExt::fill_buf` ([#​6431]) - io: document cancel safety of `AsyncReadExt`'s primitive read functions ([#​6337]) - runtime: add doc link from `Runtime` to `#[tokio::main]` ([#​6366]) - runtime: make the `enter` example deterministic ([#​6351]) - sync: add Semaphore example for limiting the number of outgoing requests ([#​6419]) - sync: fix missing period in broadcast docs ([#​6377]) - sync: mark `mpsc::Sender::downgrade` with `#[must_use]` ([#​6326]) - sync: reorder `const_new` before `new_with` ([#​6392]) - sync: update watch channel docs ([#​6395]) - task: fix documentation links ([#​6336]) ##### Changed (unstable) - runtime: include task `Id` in taskdumps ([#​6328]) - runtime: panic if `unhandled_panic` is enabled when not supported ([#​6410]) [#​6300]: https://togithub.com/tokio-rs/tokio/pull/6300 [#​6326]: https://togithub.com/tokio-rs/tokio/pull/6326 [#​6328]: https://togithub.com/tokio-rs/tokio/pull/6328 [#​6329]: https://togithub.com/tokio-rs/tokio/pull/6329 [#​6331]: https://togithub.com/tokio-rs/tokio/pull/6331 [#​6336]: https://togithub.com/tokio-rs/tokio/pull/6336 [#​6337]: https://togithub.com/tokio-rs/tokio/pull/6337 [#​6339]: https://togithub.com/tokio-rs/tokio/pull/6339 [#​6340]: https://togithub.com/tokio-rs/tokio/pull/6340 [#​6345]: https://togithub.com/tokio-rs/tokio/pull/6345 [#​6348]: https://togithub.com/tokio-rs/tokio/pull/6348 [#​6351]: https://togithub.com/tokio-rs/tokio/pull/6351 [#​6360]: https://togithub.com/tokio-rs/tokio/pull/6360 [#​6366]: https://togithub.com/tokio-rs/tokio/pull/6366 [#​6377]: https://togithub.com/tokio-rs/tokio/pull/6377 [#​6388]: https://togithub.com/tokio-rs/tokio/pull/6388 [#​6392]: https://togithub.com/tokio-rs/tokio/pull/6392 [#​6395]: https://togithub.com/tokio-rs/tokio/pull/6395 [#​6403]: https://togithub.com/tokio-rs/tokio/pull/6403 [#​6405]: https://togithub.com/tokio-rs/tokio/pull/6405 [#​6410]: https://togithub.com/tokio-rs/tokio/pull/6410 [#​6411]: https://togithub.com/tokio-rs/tokio/pull/6411 [#​6418]: https://togithub.com/tokio-rs/tokio/pull/6418 [#​6419]: https://togithub.com/tokio-rs/tokio/pull/6419 [#​6431]: https://togithub.com/tokio-rs/tokio/pull/6431
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9f2bf42..72dfe2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4124,9 +4124,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.36.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 0e56f5d..f98e24d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -29,7 +29,7 @@ exclude = ["./github"] auto_impl = "1.2.0" async-trait = "0.1.79" ethers = { version = "2.0.14", default-features = false } -tokio = "1.36.0" +tokio = "1.37.0" clap = "4.5.4" tracing = "0.1" tracing-subscriber = "0.3" From da4e45f5b3ea7a9bc1d15db5aa247a4caad7bf25 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 31 Mar 2024 12:17:38 +0200 Subject: [PATCH 095/128] chore(deps): update rust crate syn to 2.0.57 (#428) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.55` -> `2.0.57` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.57`](https://togithub.com/dtolnay/syn/releases/tag/2.0.57) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.56...2.0.57) - Eliminate dependency on `quote` when built with default-features disabled and the "proc-macro" feature enabled ([#​1608](https://togithub.com/dtolnay/syn/issues/1608), thanks [@​BD103](https://togithub.com/BD103)) ### [`v2.0.56`](https://togithub.com/dtolnay/syn/releases/tag/2.0.56) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.55...2.0.56) - Apply RUSTC_WORKSPACE_WRAPPER when deciding whether to run nightly-only tests ([#​1605](https://togithub.com/dtolnay/syn/issues/1605))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 72dfe2a..85c20f1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -509,7 +509,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -1208,7 +1208,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.55", + "syn 2.0.57", "toml", "walkdir", ] @@ -1226,7 +1226,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -1252,7 +1252,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.55", + "syn 2.0.57", "tempfile", "thiserror", "tiny-keccak", @@ -1282,7 +1282,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -1598,7 +1598,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -2196,7 +2196,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -2440,7 +2440,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -2686,7 +2686,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -2724,7 +2724,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -2809,7 +2809,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -2865,7 +2865,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -3472,7 +3472,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -3959,7 +3959,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -4001,9 +4001,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.55" +version = "2.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" +checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35" dependencies = [ "proc-macro2", "quote", @@ -4057,7 +4057,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -4149,7 +4149,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -4273,7 +4273,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -4573,7 +4573,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] @@ -4639,7 +4639,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", "wasm-bindgen-shared", ] @@ -4673,7 +4673,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5037,7 +5037,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.55", + "syn 2.0.57", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index f98e24d..e42e3b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.55" +syn = "2.0.57" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 2c697c23bc31ff8119adb6f1c265ad5e1d43a774 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Apr 2024 08:46:23 +0200 Subject: [PATCH 096/128] chore(deps): update rust crate syn to 2.0.58 (#429) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.57` -> `2.0.58` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.58`](https://togithub.com/dtolnay/syn/releases/tag/2.0.58) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.57...2.0.58) - Support `$` in `custom_punctuation!` macro ([#​1611](https://togithub.com/dtolnay/syn/issues/1611))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 85c20f1..7bba473 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -509,7 +509,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -1208,7 +1208,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.57", + "syn 2.0.58", "toml", "walkdir", ] @@ -1226,7 +1226,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -1252,7 +1252,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.57", + "syn 2.0.58", "tempfile", "thiserror", "tiny-keccak", @@ -1282,7 +1282,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -1598,7 +1598,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -2196,7 +2196,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -2440,7 +2440,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -2686,7 +2686,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -2724,7 +2724,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -2809,7 +2809,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -2865,7 +2865,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -3472,7 +3472,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -3959,7 +3959,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -4001,9 +4001,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.57" +version = "2.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11a6ae1e52eb25aab8f3fb9fca13be982a373b8f1157ca14b897a825ba4a2d35" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" dependencies = [ "proc-macro2", "quote", @@ -4057,7 +4057,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -4149,7 +4149,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -4273,7 +4273,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -4573,7 +4573,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] @@ -4639,7 +4639,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", "wasm-bindgen-shared", ] @@ -4673,7 +4673,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5037,7 +5037,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.57", + "syn 2.0.58", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e42e3b4..5f587f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.57" +syn = "2.0.58" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From 72a67ce461cecaf08df9a2b7d842c6b94d5f8378 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Mon, 15 Apr 2024 17:31:51 +0200 Subject: [PATCH 097/128] chore: bumps h2 dependency (#438) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7bba473..d791613 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1711,9 +1711,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.24" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", From afcda16fa063a73e097ae9ae3d061ef3372966df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 17:38:43 +0200 Subject: [PATCH 098/128] chore(deps): update rust crate async-trait to 0.1.80 (#431) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [async-trait](https://togithub.com/dtolnay/async-trait) | workspace.dependencies | patch | `0.1.79` -> `0.1.80` | --- ### Release Notes
dtolnay/async-trait (async-trait) ### [`v0.1.80`](https://togithub.com/dtolnay/async-trait/releases/tag/0.1.80) [Compare Source](https://togithub.com/dtolnay/async-trait/compare/0.1.79...0.1.80) - Fix unreachable code warning for async functions that return `!` ([#​265](https://togithub.com/dtolnay/async-trait/issues/265), thanks [@​de-vri-es](https://togithub.com/de-vri-es))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d791613..f1519b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -155,9 +155,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.79" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 5f587f2..689e99a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ exclude = ["./github"] [workspace.dependencies] auto_impl = "1.2.0" -async-trait = "0.1.79" +async-trait = "0.1.80" ethers = { version = "2.0.14", default-features = false } tokio = "1.37.0" clap = "4.5.4" From 4359b311a9b5a064c73e1efb1f729610eaf26045 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 19:04:54 +0200 Subject: [PATCH 099/128] chore(deps): update rust crate chrono to 0.4.38 (#437) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [chrono](https://togithub.com/chronotope/chrono) | workspace.dependencies | patch | `0.4.37` -> `0.4.38` | --- ### Release Notes
chronotope/chrono (chrono) ### [`v0.4.38`](https://togithub.com/chronotope/chrono/releases/tag/v0.4.38) [Compare Source](https://togithub.com/chronotope/chrono/compare/v0.4.37...v0.4.38) This release bring a ca. 20% improvement to the performance of the formatting code, and a convenient `days_since` method for the `Weekday` type. Chrono 0.4.38 also removes the long deprecated `rustc-serialize` feature. Support for `rustc-serialize` will be [soft-destabilized in the next Rust edition](https://togithub.com/rust-lang/rust/pull/116016). Removing the feature will not break existing users of the feature; Cargo will just not update dependents that rely on it to newer versions of chrono. In chrono 0.4.36 we made an accidental breaking change by switching to `derive(Copy)` for `DateTime` instead of a manual implementation. It is reverted in this release. ##### Removals - Remove `rustc-serialize` feature ([#​1548](https://togithub.com/chronotope/chrono/issues/1548), thanks [@​workingjubilee](https://togithub.com/workingjubilee)) ##### Additions - Add `Weekday::days_since` ([#​1249](https://togithub.com/chronotope/chrono/issues/1249), based on [#​216](https://togithub.com/chronotope/chrono/issues/216) by [@​clarfonthey](https://togithub.com/clarfonthey)) - Add `TimeDelta::checked_mul` and `TimeDelta::checked_div` ([#​1565](https://togithub.com/chronotope/chrono/issues/1565), thanks [@​Zomtir](https://togithub.com/Zomtir)) ##### Fixes - Return error when rounding with a zero duration ([#​1474](https://togithub.com/chronotope/chrono/issues/1474), thanks [@​Dav1dde](https://togithub.com/Dav1dde)) - Manually implement `Copy` for `DateTime` if offset is `Copy` ([#​1573](https://togithub.com/chronotope/chrono/issues/1573)) ##### Internal - Inline `test_encodable_json` and `test_decodable_json` functions ([#​1550](https://togithub.com/chronotope/chrono/issues/1550)) - CI: Reduce combinations in `cargo hack check` ([#​1553](https://togithub.com/chronotope/chrono/issues/1553)) - Refactor formatting code ([#​1335](https://togithub.com/chronotope/chrono/issues/1335)) - Optimize number formatting ([#​1558](https://togithub.com/chronotope/chrono/issues/1558)) - Only package files needed for building and testing ([#​1554](https://togithub.com/chronotope/chrono/issues/1554)) Thanks to all contributors on behalf of the chrono team, [@​djc](https://togithub.com/djc) and [@​pitdicker](https://togithub.com/pitdicker)!
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f1519b6..f9f74c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -457,9 +457,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.37" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", diff --git a/Cargo.toml b/Cargo.toml index 689e99a..c675ffb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,7 +52,7 @@ syn = "2.0.58" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" -chrono = { version = "0.4.37", default-features = false } +chrono = { version = "0.4.38", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } client = { path = "./client" } From ff64a466bc096d88b58388702417f85170918d84 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 20:52:47 +0200 Subject: [PATCH 100/128] chore(deps): update rust crate syn to 2.0.59 (#434) --- Cargo.lock | 54 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f9f74c4..eb1ee98 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -509,7 +509,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1208,7 +1208,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.58", + "syn 2.0.59", "toml", "walkdir", ] @@ -1226,7 +1226,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1252,7 +1252,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.58", + "syn 2.0.59", "tempfile", "thiserror", "tiny-keccak", @@ -1282,7 +1282,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -1598,7 +1598,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2196,7 +2196,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2440,7 +2440,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2686,7 +2686,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2724,7 +2724,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2809,7 +2809,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -2838,9 +2838,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "a56dea16b0a29e94408b9aa5e2940a4eedbd128a1ba20e8f7ae60fd3d465af0e" dependencies = [ "unicode-ident", ] @@ -2865,7 +2865,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -3472,7 +3472,7 @@ checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -3959,7 +3959,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -4001,9 +4001,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" dependencies = [ "proc-macro2", "quote", @@ -4057,7 +4057,7 @@ checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -4149,7 +4149,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -4273,7 +4273,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -4573,7 +4573,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] @@ -4639,7 +4639,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", "wasm-bindgen-shared", ] @@ -4673,7 +4673,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5037,7 +5037,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.59", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index c675ffb..fb7cf8d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" num = "0.4.1" -syn = "2.0.58" +syn = "2.0.59" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From b8cabda48e67f3404f8607045a950538eef5af06 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 21:35:38 +0200 Subject: [PATCH 101/128] chore(deps): update rust crate proc-macro2 to 1.0.80 (#433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | workspace.dependencies | patch | `1.0.79` -> `1.0.80` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index fb7cf8d..57720fb 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ color-eyre = "0.6.3" eyre = "0.6.12" dotenvy = "0.15.7" envconfig = "0.10.0" -proc-macro2 = "1.0.79" +proc-macro2 = "1.0.80" bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" From bf8bcc6eb1a48bb673ec40abee82bd04705751e3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 23:09:34 +0200 Subject: [PATCH 102/128] chore(deps): update rust crate num to 0.4.2 (#432) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [num](https://togithub.com/rust-num/num) | workspace.dependencies | patch | `0.4.1` -> `0.4.2` | --- ### Release Notes
rust-num/num (num) ### [`v0.4.2`](https://togithub.com/rust-num/num/blob/HEAD/RELEASES.md#Release-042-2024-04-12) [Compare Source](https://togithub.com/rust-num/num/compare/num-0.4.1...num-0.4.2) - Updated all sub-crates to their latest versions.
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 25 ++++++++++++------------- Cargo.toml | 2 +- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eb1ee98..49418e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2320,9 +2320,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" dependencies = [ "num-bigint", "num-complex", @@ -2334,9 +2334,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -2362,28 +2362,27 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" dependencies = [ "num-traits", ] [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" dependencies = [ "autocfg", "num-integer", @@ -2404,9 +2403,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", "libm", diff --git a/Cargo.toml b/Cargo.toml index 57720fb..cf767cf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ proc-macro2 = "1.0.80" bincode = "1.3.3" futures = "0.3.30" quote = "1.0.35" -num = "0.4.1" +num = "0.4.2" syn = "2.0.59" hex = "0.4" pretty_assertions = "1" From 5638dac923bf6a42abd91095dbbe27f901840e82 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 16 Apr 2024 08:42:38 +0200 Subject: [PATCH 103/128] chore(deps): update rust crate quote to 1.0.36 (#430) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [quote](https://togithub.com/dtolnay/quote) | workspace.dependencies | patch | `1.0.35` -> `1.0.36` | --- ### Release Notes
dtolnay/quote (quote) ### [`v1.0.36`](https://togithub.com/dtolnay/quote/releases/tag/1.0.36) [Compare Source](https://togithub.com/dtolnay/quote/compare/1.0.35...1.0.36) - Documentation improvements
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 49418e6..a25de16 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2869,9 +2869,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] diff --git a/Cargo.toml b/Cargo.toml index cf767cf..e7eb890 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,7 +46,7 @@ envconfig = "0.10.0" proc-macro2 = "1.0.80" bincode = "1.3.3" futures = "0.3.30" -quote = "1.0.35" +quote = "1.0.36" num = "0.4.2" syn = "2.0.59" hex = "0.4" From 9f5fb972fe3d3bf0b6f36c9d7d2775a38e68d352 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 24 Apr 2024 11:35:41 +0200 Subject: [PATCH 104/128] chore: bumps rustls dependency (#444) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- Cargo.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a25de16..44da80c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3189,13 +3189,13 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.6" +version = "0.21.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb" +checksum = "7fecbfb7b1444f477b345853b1fce097a2c6fb637b2bfb87e6bc5db0f043fae4" dependencies = [ "log", - "ring 0.16.20", - "rustls-webpki 0.101.4", + "ring 0.17.3", + "rustls-webpki 0.101.7", "sct", ] @@ -3220,12 +3220,12 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.101.4" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.3", + "untrusted 0.9.0", ] [[package]] @@ -4745,7 +4745,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "rustls-webpki 0.101.4", + "rustls-webpki 0.101.7", ] [[package]] From 90655c11c4f5f0ceae60ecac8070a0da791b58d5 Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 24 Apr 2024 11:48:35 +0200 Subject: [PATCH 105/128] fix: do not track l2_to_l1_logs block height on restart (#445) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ We are currently no longer track L2ToL1Logs from L1 (removed in #398 ), so no need to try to start from the last seen block for those events ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- bin/withdrawal-finalizer/src/main.rs | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index f39ff0b..27c6306 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -56,25 +56,13 @@ where M2: Middleware, ::Provider: JsonRpcClient, { - match ( - storage::last_l2_to_l1_events_block_seen(conn).await?, - storage::last_l1_block_seen(conn).await?, - ) { - (Some(b1), Some(b2)) => Ok(std::cmp::min(b1, b2)), - (b1, b2) => { - if b1.is_none() { - tracing::info!(concat!( - "information about l2 to l1 events is missing, ", - "starting from L1 block corresponding to L2 block 1" - )); - } - - if b2.is_none() { - tracing::info!(concat!( - "information about last block seen is missing, ", - "starting from L1 block corresponding to L2 block 1" - )); - } + match storage::last_l1_block_seen(conn).await? { + Some(b2) => Ok(b2), + None => { + tracing::info!(concat!( + "information about last block seen is missing, ", + "starting from L1 block corresponding to L2 block 1" + )); let block_details = client_l2 .provider() From 2e83cc026d7ca057f786d38403d47df0c6e7ea41 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 11:56:20 +0200 Subject: [PATCH 106/128] chore(deps): update rust crate serde to 1.0.198 (#439) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.197` -> `1.0.198` | --- ### Release Notes
serde-rs/serde (serde) ### [`v1.0.198`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.198) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.197...v1.0.198) - Support serializing and deserializing `Saturating` ([#​2709](https://togithub.com/serde-rs/serde/issues/2709), thanks [@​jbethune](https://togithub.com/jbethune))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 44da80c..061bad7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3456,18 +3456,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.197" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index e7eb890..9f6e750 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" -serde = "1.0.197" +serde = "1.0.198" thiserror = "1.0.58" serde_json = "1.0" color-eyre = "0.6.3" From 7be3f87792e1c1b646a0ee376b614a15aadb33a8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:08:41 +0200 Subject: [PATCH 107/128] chore(deps): update rust crate thiserror to 1.0.59 (#442) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.58` -> `1.0.59` | --- ### Release Notes
dtolnay/thiserror (thiserror) ### [`v1.0.59`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.59) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.58...1.0.59) - Unblock testing of rustc `debug-fmt-detail` option ([#​297](https://togithub.com/dtolnay/thiserror/issues/297))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 061bad7..ee593f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4041,18 +4041,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.58" +version = "1.0.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 9f6e750..dfdb306 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" serde = "1.0.198" -thiserror = "1.0.58" +thiserror = "1.0.59" serde_json = "1.0" color-eyre = "0.6.3" eyre = "0.6.12" From a306e1ac573ff81cb454a2d90be5eb48d242a4a9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 12:53:16 +0200 Subject: [PATCH 108/128] chore(deps): update rust crate syn to 2.0.60 (#441) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.59` -> `2.0.60` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.60`](https://togithub.com/dtolnay/syn/releases/tag/2.0.60) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.59...2.0.60) - Improve how None-delimited groups are counted by `peek` ([#​1625](https://togithub.com/dtolnay/syn/issues/1625))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee593f0..860bc0b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -509,7 +509,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -1208,7 +1208,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "syn 2.0.59", + "syn 2.0.60", "toml", "walkdir", ] @@ -1226,7 +1226,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -1252,7 +1252,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.59", + "syn 2.0.60", "tempfile", "thiserror", "tiny-keccak", @@ -1282,7 +1282,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -1598,7 +1598,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -2196,7 +2196,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -2439,7 +2439,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -2685,7 +2685,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -2723,7 +2723,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -2808,7 +2808,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -2864,7 +2864,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -3471,7 +3471,7 @@ checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -3958,7 +3958,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -4000,9 +4000,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.59" +version = "2.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6531ffc7b071655e4ce2e04bd464c4830bb585a61cabb96cf808f05172615a" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" dependencies = [ "proc-macro2", "quote", @@ -4056,7 +4056,7 @@ checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -4148,7 +4148,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -4272,7 +4272,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -4572,7 +4572,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] @@ -4638,7 +4638,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", "wasm-bindgen-shared", ] @@ -4672,7 +4672,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5036,7 +5036,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.59", + "syn 2.0.60", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index dfdb306..1a5f225 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -48,7 +48,7 @@ bincode = "1.3.3" futures = "0.3.30" quote = "1.0.36" num = "0.4.2" -syn = "2.0.59" +syn = "2.0.60" hex = "0.4" pretty_assertions = "1" sqlx = "0.7" From ec719b5db523ff2a0ec36455127fe3ee8cbccf5f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:07:30 +0200 Subject: [PATCH 109/128] chore(deps): update rust crate proc-macro2 to 1.0.81 (#440) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | workspace.dependencies | patch | `1.0.80` -> `1.0.81` | --- ### Release Notes
dtolnay/proc-macro2 (proc-macro2) ### [`v1.0.81`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.81) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.80...1.0.81) - Documentation improvements
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 860bc0b..ae498f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2837,9 +2837,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.80" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56dea16b0a29e94408b9aa5e2940a4eedbd128a1ba20e8f7ae60fd3d465af0e" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] diff --git a/Cargo.toml b/Cargo.toml index 1a5f225..2584497 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -43,7 +43,7 @@ color-eyre = "0.6.3" eyre = "0.6.12" dotenvy = "0.15.7" envconfig = "0.10.0" -proc-macro2 = "1.0.80" +proc-macro2 = "1.0.81" bincode = "1.3.3" futures = "0.3.30" quote = "1.0.36" From 09f88105090009cc39f8ba900044ddca41e13aaf Mon Sep 17 00:00:00 2001 From: Fedor Sakharov Date: Wed, 24 Apr 2024 13:25:04 +0200 Subject: [PATCH 110/128] feat: Adds filtering of erc20 tokens by their l2 address (#447) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # What ❔ Sometimes we only want a specific set of tokens or even no tokens at all to be finalized. If we want no erc20 tokens to be finalized, say, in the event that we only want to do ETH withdrawals, this option can be set to ``` ONLY_FINALIZE_THESE_TOKENS="[]" ``` ## Why ❔ ## Checklist - [ ] PR title corresponds to the body of PR (we generate changelog entries from PRs). - [ ] Tests for the changes have been added / updated. - [ ] Documentation comments have been added / updated. - [ ] Code has been formatted via `cargo fmt`. --- README.md | 1 + bin/withdrawal-finalizer/src/config.rs | 4 ++++ bin/withdrawal-finalizer/src/main.rs | 7 ++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 574687a..1603be1 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ Deployment is done by deploying a dockerized image of the service. | `CUSTOM_TOKEN_ADDRESSES` | (Optional) Adds a predefined list of tokens to finalize. May be useful in case of custom bridge setups when the regular technique of finding token deployments does not work. | | `ENABLE_WITHDRAWAL_METERING` | (Optional, default: `"true"`) By default Finalizer collects metrics about withdrawn token volumens. Users may optionally switch off this metering. | | `ETH_FINALIZATION_THRESHOLD`| (Optional, default: "0") Finalizer will only finalize ETH withdrawals that are greater or equal to this value | +| `ONLY_FINALIZE_THESE_TOKENS` | (Optional, default: `None`) If specified, creates a whitelist of erc20 tokens that will be finalized. The configuration structure describing the service config can be found in [`config.rs`](https://github.com/matter-labs/zksync-withdrawal-finalizer/blob/main/bin/withdrawal-finalizer/src/config.rs) diff --git a/bin/withdrawal-finalizer/src/config.rs b/bin/withdrawal-finalizer/src/config.rs index 6cf8892..de701cc 100644 --- a/bin/withdrawal-finalizer/src/config.rs +++ b/bin/withdrawal-finalizer/src/config.rs @@ -86,6 +86,10 @@ pub struct Config { #[envconfig(from = "ONLY_L1_RECIPIENTS")] pub only_l1_recipients: Option, + + /// Only finalize these tokens specified by their L2 addresses + #[envconfig(from = "ONLY_FINALIZE_THESE_TOKENS")] + pub only_finalize_these_tokens: Option, } #[derive(Deserialize, Serialize, Debug, Eq, PartialEq)] diff --git a/bin/withdrawal-finalizer/src/main.rs b/bin/withdrawal-finalizer/src/main.rs index 27c6306..63b3159 100644 --- a/bin/withdrawal-finalizer/src/main.rs +++ b/bin/withdrawal-finalizer/src/main.rs @@ -202,11 +202,16 @@ async fn main() -> Result<()> { tokens.extend_from_slice(custom_tokens.0.as_slice()); } - tracing::info!("tokens {tokens:?}"); if let Some(ref custom_tokens) = config.custom_token_deployer_addresses { tokens.extend_from_slice(custom_tokens.0.as_slice()); } + if let Some(only_finalize_these_tokens) = config.only_finalize_these_tokens { + tokens.retain(|token| only_finalize_these_tokens.0.contains(token)); + } + + tracing::info!("tokens {tokens:?}"); + let l2_events = L2EventsListener::new( config.api_web3_json_rpc_ws_url.as_str(), config From 9583a5b5fb0c8293033705a6e5aab1bdac0bac66 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 13:34:30 +0200 Subject: [PATCH 111/128] chore(main): release 0.9.0 (#446) :robot: I have created a release *beep* *boop* --- ## [0.9.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.8.0...v0.9.0) (2024-04-24) ### Features * Adds filtering of erc20 tokens by their l2 address ([#447](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/447)) ([09f8810](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/09f88105090009cc39f8ba900044ddca41e13aaf)) ### Bug Fixes * do not track l2_to_l1_logs block height on restart ([#445](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/445)) ([90655c1](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/90655c11c4f5f0ceae60ecac8070a0da791b58d5)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- .github/release-please/manifest.json | 2 +- CHANGELOG.md | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/release-please/manifest.json b/.github/release-please/manifest.json index 64f3cdd..76d5538 100644 --- a/.github/release-please/manifest.json +++ b/.github/release-please/manifest.json @@ -1,3 +1,3 @@ { - ".": "0.8.0" + ".": "0.9.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index bd4999f..b417d40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## [0.9.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.8.0...v0.9.0) (2024-04-24) + + +### Features + +* Adds filtering of erc20 tokens by their l2 address ([#447](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/447)) ([09f8810](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/09f88105090009cc39f8ba900044ddca41e13aaf)) + + +### Bug Fixes + +* do not track l2_to_l1_logs block height on restart ([#445](https://github.com/matter-labs/zksync-withdrawal-finalizer/issues/445)) ([90655c1](https://github.com/matter-labs/zksync-withdrawal-finalizer/commit/90655c11c4f5f0ceae60ecac8070a0da791b58d5)) + ## [0.8.0](https://github.com/matter-labs/zksync-withdrawal-finalizer/compare/v0.7.0...v0.8.0) (2024-03-27) From edb2b027af87dbc05fd4d9e9c31c2b4279f43853 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:29:19 +0200 Subject: [PATCH 112/128] chore(deps): update rust crate serde to 1.0.199 (#448) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.198` -> `1.0.199` | --- ### Release Notes
serde-rs/serde (serde) ### [`v1.0.199`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.199) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.198...v1.0.199) - Fix ambiguous associated item when `forward_to_deserialize_any!` is used on an enum with `Error` variant ([#​2732](https://togithub.com/serde-rs/serde/issues/2732), thanks [@​aatifsyed](https://togithub.com/aatifsyed))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae498f4..bc6494a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3456,18 +3456,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.198" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.199" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 2584497..9e3520d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ tracing-subscriber = "0.3" sentry = { version = "0", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" -serde = "1.0.198" +serde = "1.0.199" thiserror = "1.0.59" serde_json = "1.0" color-eyre = "0.6.3" From 463031b2c7911a2ec3227c03dcd1cb28900a3614 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 08:49:34 +0200 Subject: [PATCH 113/128] chore(deps): update rust crate sentry to 0.32.3 (#454) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [sentry](https://sentry.io/welcome/) ([source](https://togithub.com/getsentry/sentry-rust)) | workspace.dependencies | minor | `0` -> `0.32.3` | --- ### Release Notes
getsentry/sentry-rust (sentry) ### [`v0.32.3`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#0323) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.32.2...0.32.3) **Compatiblity**: - Raised the MSRV to **1.73**. **Improvements**: - Slightly improved overhead of the `tracing` layer. ([#​642](https://togithub.com/getsentry/sentry-rust/pull/642)) **Updates**: - Updated `reqwest` to version `0.12`. - Updated `tonic` to version `0.11`. ### [`v0.32.2`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#0322) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.32.1...0.32.2) ##### Various fixes & improvements - feat(crons): Add new fields to `MonitorConfig` type ([#​638](https://togithub.com/getsentry/sentry-rust/issues/638)) by [@​szokeasaurusrex](https://togithub.com/szokeasaurusrex) - build(deps): bump h2 from 0.3.22 to 0.3.24 ([#​635](https://togithub.com/getsentry/sentry-rust/issues/635)) by [@​dependabot](https://togithub.com/dependabot) - fix(hub): avoid deadlocks when emitting events ([#​633](https://togithub.com/getsentry/sentry-rust/issues/633)) by [@​Tuetuopay](https://togithub.com/Tuetuopay) ### [`v0.32.1`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#0321) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.32.0...0.32.1) **Features**: - Add experimental implementations for Sentry metrics and a cadence sink. These require to use the `UNSTABLE_metrics` and `UNSTABLE_cadence` feature flags. Note that these APIs are still under development and subject to change. ### [`v0.32.0`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#0320) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.31.8...0.32.0) **Features**: - Updated `sentry-tower` dependencies, including `axum` and `http`. ### [`v0.31.8`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#0318) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.31.7...0.31.8) ##### Various fixes & improvements - MonitorSchedule constructor that validates crontab syntax ([#​625](https://togithub.com/getsentry/sentry-rust/issues/625)) by [@​szokeasaurusrex](https://togithub.com/szokeasaurusrex) - fix(docs): Fix some doc errors that slipped in ([#​623](https://togithub.com/getsentry/sentry-rust/issues/623)) by [@​flub](https://togithub.com/flub) - docs(tower): Mention how to enable http feature from sentry crate ([#​622](https://togithub.com/getsentry/sentry-rust/issues/622)) by [@​flub](https://togithub.com/flub) - build(deps): bump rustix from 0.37.23 to 0.37.25 ([#​619](https://togithub.com/getsentry/sentry-rust/issues/619)) by [@​dependabot](https://togithub.com/dependabot) ### [`v0.31.7`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#0317) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.31.6...0.31.7) ##### Various fixes & improvements - The minimum supported Rust version was bumped to **1.68.0** due to requirements from dependencies. ([#​612](https://togithub.com/getsentry/sentry-rust/issues/612)) ### [`v0.31.6`](https://togithub.com/getsentry/sentry-rust/blob/HEAD/CHANGELOG.md#0316) [Compare Source](https://togithub.com/getsentry/sentry-rust/compare/0.31.5...0.31.6) ##### Various fixes & improvements - Apply clippy fixes and cherry-pick PRs ([#​610](https://togithub.com/getsentry/sentry-rust/issues/610)) by [@​Swatinem](https://togithub.com/Swatinem) - ref: Apply user field from scope to transaction event ([#​596](https://togithub.com/getsentry/sentry-rust/issues/596)) by [@​kamilogorek](https://togithub.com/kamilogorek) - Remove profiling support ([#​595](https://togithub.com/getsentry/sentry-rust/issues/595)) by [@​viglia](https://togithub.com/viglia) - chore: upgrade webpki-roots 0.22.5 -> 0.23.0 ([#​593](https://togithub.com/getsentry/sentry-rust/issues/593)) by [@​boxdot](https://togithub.com/boxdot)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 398 ++++++++++++++++++++++++++++++++++++++++++----------- Cargo.toml | 2 +- 2 files changed, 315 insertions(+), 85 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bc6494a..61ca685 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -234,6 +234,12 @@ version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "base64ct" version = "1.6.0" @@ -1205,7 +1211,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "reqwest", + "reqwest 0.11.19", "serde", "serde_json", "syn 2.0.60", @@ -1267,7 +1273,7 @@ checksum = "e79e5973c26d4baf0ce55520bd732314328cabe53193286671b47144145b9649" dependencies = [ "chrono", "ethers-core", - "reqwest", + "reqwest 0.11.19", "semver", "serde", "serde_json", @@ -1301,7 +1307,7 @@ dependencies = [ "futures-locks", "futures-util", "instant", - "reqwest", + "reqwest 0.11.19", "serde", "serde_json", "thiserror", @@ -1329,12 +1335,12 @@ dependencies = [ "futures-timer", "futures-util", "hashers", - "http", + "http 0.2.9", "instant", "jsonwebtoken", "once_cell", "pin-project", - "reqwest", + "reqwest 0.11.19", "serde", "serde_json", "thiserror", @@ -1720,7 +1726,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.9", "indexmap 2.0.0", "slab", "tokio", @@ -1818,13 +1824,13 @@ dependencies = [ [[package]] name = "hostname" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "f9c7c7c8ac16c798734b8a24560c1362120597c40d5e1459f09498f8f6c8f2ba" dependencies = [ + "cfg-if", "libc", - "match_cfg", - "winapi", + "windows 0.52.0", ] [[package]] @@ -1838,6 +1844,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.5" @@ -1845,7 +1862,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", - "http", + "http 0.2.9", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", "pin-project-lite", ] @@ -1872,8 +1912,8 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", - "http-body", + "http 0.2.9", + "http-body 0.4.5", "httparse", "httpdate", "itoa", @@ -1885,6 +1925,25 @@ dependencies = [ "want", ] +[[package]] +name = "hyper" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + [[package]] name = "hyper-rustls" version = "0.24.1" @@ -1892,11 +1951,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ "futures-util", - "http", - "hyper", - "rustls", + "http 0.2.9", + "hyper 0.14.27", + "rustls 0.21.11", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "hyper-rustls" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.3.1", + "hyper-util", + "rustls 0.22.4", + "rustls-pki-types", "tokio", - "tokio-rustls", + "tokio-rustls 0.25.0", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "hyper 1.3.1", + "pin-project-lite", + "socket2 0.5.5", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] @@ -1910,7 +2006,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows", + "windows 0.48.0", ] [[package]] @@ -2221,12 +2317,6 @@ version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matchers" version = "0.1.0" @@ -3034,10 +3124,10 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", - "http-body", - "hyper", - "hyper-rustls", + "http 0.2.9", + "http-body 0.4.5", + "hyper 0.14.27", + "hyper-rustls 0.24.1", "ipnet", "js-sys", "log", @@ -3045,20 +3135,62 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls", - "rustls-pemfile", + "rustls 0.21.11", + "rustls-pemfile 1.0.3", "serde", "serde_json", "serde_urlencoded", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", "webpki-roots 0.25.2", - "winreg", + "winreg 0.50.0", +] + +[[package]] +name = "reqwest" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.1.0", + "http-body 1.0.0", + "http-body-util", + "hyper 1.3.1", + "hyper-rustls 0.26.0", + "hyper-util", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.22.4", + "rustls-pemfile 2.1.2", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls 0.25.0", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.26.1", + "winreg 0.52.0", ] [[package]] @@ -3199,6 +3331,20 @@ dependencies = [ "sct", ] +[[package]] +name = "rustls" +version = "0.22.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +dependencies = [ + "log", + "ring 0.17.3", + "rustls-pki-types", + "rustls-webpki 0.102.3", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "1.0.3" @@ -3208,6 +3354,22 @@ dependencies = [ "base64 0.21.2", ] +[[package]] +name = "rustls-pemfile" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +dependencies = [ + "base64 0.22.1", + "rustls-pki-types", +] + +[[package]] +name = "rustls-pki-types" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54" + [[package]] name = "rustls-webpki" version = "0.100.2" @@ -3228,6 +3390,17 @@ dependencies = [ "untrusted 0.9.0", ] +[[package]] +name = "rustls-webpki" +version = "0.102.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" +dependencies = [ + "ring 0.17.3", + "rustls-pki-types", + "untrusted 0.9.0", +] + [[package]] name = "rustversion" version = "1.0.14" @@ -3347,13 +3520,13 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "sentry" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b0ad16faa5d12372f914ed40d00bda21a6d1bdcc99264c5e5e1c9495cf3654" +checksum = "00421ed8fa0c995f07cde48ba6c89e80f2b312f74ff637326f392fbfd23abe02" dependencies = [ "httpdate", - "reqwest", - "rustls", + "reqwest 0.12.4", + "rustls 0.21.11", "sentry-anyhow", "sentry-backtrace", "sentry-contexts", @@ -3362,14 +3535,14 @@ dependencies = [ "sentry-tracing", "tokio", "ureq", - "webpki-roots 0.22.6", + "webpki-roots 0.25.2", ] [[package]] name = "sentry-anyhow" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3a571f02f9982af445af829c4837fe4857568a431bd2bed9f7cf88de4a6c44" +checksum = "ddcbce6e6785c2d91e67c55196f60ac561fab5946b6c7d60cc29f498fc126076" dependencies = [ "anyhow", "sentry-backtrace", @@ -3378,9 +3551,9 @@ dependencies = [ [[package]] name = "sentry-backtrace" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f2ee8f147bb5f22ac59b5c35754a759b9a6f6722402e2a14750b2a63fc59bd" +checksum = "a79194074f34b0cbe5dd33896e5928bbc6ab63a889bd9df2264af5acb186921e" dependencies = [ "backtrace", "once_cell", @@ -3390,9 +3563,9 @@ dependencies = [ [[package]] name = "sentry-contexts" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcd133362c745151eeba0ac61e3ba8350f034e9fe7509877d08059fe1d7720c6" +checksum = "eba8870c5dba2bfd9db25c75574a11429f6b95957b0a78ac02e2970dd7a5249a" dependencies = [ "hostname", "libc", @@ -3404,9 +3577,9 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7163491708804a74446642ff2c80b3acd668d4b9e9f497f85621f3d250fd012b" +checksum = "46a75011ea1c0d5c46e9e57df03ce81f5c7f0a9e199086334a1f9c0a541e0826" dependencies = [ "once_cell", "rand", @@ -3417,9 +3590,9 @@ dependencies = [ [[package]] name = "sentry-panic" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4dfe8371c9b2e126a8b64f6fefa54cef716ff2a50e63b5558a48b899265bccd" +checksum = "2eaa3ecfa3c8750c78dcfd4637cfa2598b95b52897ed184b4dc77fcf7d95060d" dependencies = [ "sentry-backtrace", "sentry-core", @@ -3427,9 +3600,9 @@ dependencies = [ [[package]] name = "sentry-tracing" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aca8b88978677a27ee1a91beafe4052306c474c06f582321fde72d2e2cc2f7f" +checksum = "f715932bf369a61b7256687c6f0554141b7ce097287e30e3f7ed6e9de82498fe" dependencies = [ "sentry-backtrace", "sentry-core", @@ -3439,13 +3612,13 @@ dependencies = [ [[package]] name = "sentry-types" -version = "0.31.5" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e7a88e0c1922d19b3efee12a8215f6a8a806e442e665ada71cc222cab72985f" +checksum = "4519c900ce734f7a0eb7aba0869dfb225a7af8820634a7dd51449e3b093cfb7c" dependencies = [ "debugid", - "getrandom", "hex", + "rand", "serde", "serde_json", "thiserror", @@ -3608,9 +3781,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" @@ -3724,8 +3897,8 @@ dependencies = [ "once_cell", "paste", "percent-encoding", - "rustls", - "rustls-pemfile", + "rustls 0.21.11", + "rustls-pemfile 1.0.3", "serde", "serde_json", "sha2 0.10.7", @@ -3977,7 +4150,7 @@ dependencies = [ "fs2", "hex", "once_cell", - "reqwest", + "reqwest 0.11.19", "semver", "serde", "serde_json", @@ -4009,6 +4182,12 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + [[package]] name = "tap" version = "1.0.1" @@ -4157,7 +4336,18 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.11", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +dependencies = [ + "rustls 0.22.4", + "rustls-pki-types", "tokio", ] @@ -4180,9 +4370,9 @@ checksum = "2b2dbec703c26b00d74844519606ef15d09a7d6857860f84ad223dec002ddea2" dependencies = [ "futures-util", "log", - "rustls", + "rustls 0.21.11", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "tungstenite", "webpki-roots 0.23.1", ] @@ -4246,6 +4436,28 @@ dependencies = [ "winnow", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + [[package]] name = "tower-service" version = "0.3.2" @@ -4363,11 +4575,11 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http", + "http 0.2.9", "httparse", "log", "rand", - "rustls", + "rustls 0.21.11", "sha1", "thiserror", "url", @@ -4472,7 +4684,7 @@ dependencies = [ "base64 0.21.2", "log", "once_cell", - "rustls", + "rustls 0.21.11", "rustls-webpki 0.100.2", "url", "webpki-roots 0.23.1", @@ -4518,7 +4730,6 @@ version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" dependencies = [ - "getrandom", "serde", ] @@ -4558,7 +4769,7 @@ name = "vise-exporter" version = "0.1.0" source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d279666cc5ae6b84" dependencies = [ - "hyper", + "hyper 0.14.27", "once_cell", "tokio", "tracing", @@ -4711,25 +4922,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.22.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" -dependencies = [ - "ring 0.17.3", - "untrusted 0.9.0", -] - -[[package]] -name = "webpki-roots" -version = "0.22.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" -dependencies = [ - "webpki", -] - [[package]] name = "webpki-roots" version = "0.23.1" @@ -4754,6 +4946,15 @@ version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +[[package]] +name = "webpki-roots" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "whoami" version = "1.5.0" @@ -4804,6 +5005,25 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.0", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.0", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -4946,6 +5166,16 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "winreg" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +dependencies = [ + "cfg-if", + "windows-sys", +] + [[package]] name = "withdrawal-finalizer" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index 9e3520d..25fe77f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,7 @@ tokio = "1.37.0" clap = "4.5.4" tracing = "0.1" tracing-subscriber = "0.3" -sentry = { version = "0", default-features = false } +sentry = { version = "0.32.3", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" serde = "1.0.199" From 60a05d52fdb4aae08ba55e28df4ea20b791f32af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 09:49:05 +0200 Subject: [PATCH 114/128] chore(deps): update rust crate serde to 1.0.200 (#455) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.199` -> `1.0.200` | --- ### Release Notes
serde-rs/serde (serde) ### [`v1.0.200`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.200) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.199...v1.0.200) - Fix formatting of "invalid type" and "invalid value" deserialization error messages containing NaN or infinite floats ([#​2733](https://togithub.com/serde-rs/serde/issues/2733), thanks [@​jamessan](https://togithub.com/jamessan))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 61ca685..12bb24d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3629,18 +3629,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.199" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9f6e76df036c77cd94996771fb40db98187f096dd0b9af39c6c6e452ba966a" +checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.199" +version = "1.0.200" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11bd257a6541e141e42ca6d24ae26f7714887b47e89aa739099104c7e4d3b7fc" +checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 25fe77f..5d07430 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,7 +36,7 @@ tracing-subscriber = "0.3" sentry = { version = "0.32.3", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" -serde = "1.0.199" +serde = "1.0.200" thiserror = "1.0.59" serde_json = "1.0" color-eyre = "0.6.3" From a7b5e5579d9a02e5bdaff332ddf58c0842f6156a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 09:58:03 +0200 Subject: [PATCH 115/128] chore(deps): update rust crate hex to 0.4.3 (#449) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [hex](https://togithub.com/KokaKiwi/rust-hex) | workspace.dependencies | patch | `0.4` -> `0.4.3` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 5d07430..658bdd8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,7 +49,7 @@ futures = "0.3.30" quote = "1.0.36" num = "0.4.2" syn = "2.0.60" -hex = "0.4" +hex = "0.4.3" pretty_assertions = "1" sqlx = "0.7" chrono = { version = "0.4.38", default-features = false } From 2f7024b29c6b56ca913ba73c966195aa6c5815ca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 10:05:20 +0200 Subject: [PATCH 116/128] chore(deps): update tokio-tracing monorepo (#453) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tracing](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tracing)) | workspace.dependencies | patch | `0.1` -> `0.1.40` | | [tracing-subscriber](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tracing)) | workspace.dependencies | patch | `0.3` -> `0.3.18` | --- ### Release Notes
tokio-rs/tracing (tracing-subscriber) ### [`v0.3.18`](https://togithub.com/tokio-rs/tracing/releases/tag/tracing-subscriber-0.3.18): tracing-subscriber 0.3.18 [Compare Source](https://togithub.com/tokio-rs/tracing/compare/tracing-subscriber-0.3.17...tracing-subscriber-0.3.18) This release of `tracing-subscriber` adds support for the [`NO_COLOR`][NO_COLOR] environment variable (an informal standard to disable emitting ANSI color escape codes) in `fmt::Layer`, reintroduces support for the [`chrono`][chrono] crate, and increases the minimum supported Rust version (MSRV) to Rust 1.63.0. It also introduces several minor API improvements. ##### Added - **chrono**: Add [`chrono`][chrono] implementations of `FormatTime` ([#​2690]) - **subscriber**: Add support for the [`NO_COLOR`][NO_COLOR] environment variable in `fmt::Layer` ([#​2647]) - **fmt**: make `format::Writer::new()` public ([#​2680]) - **filter**: Implement `layer::Filter` for `Option` ([#​2407]) ##### Changed - **log**: bump version of `tracing-log` to 0.2 ([#​2772]) - Increased minimum supported Rust version (MSRV) to 1.63.0+. [`chrono`]: https://togithub.com/chronotope/chrono [`NO_COLOR`]: https://no-color.org/ [#​2690]: https://togithub.com/tokio-rs/tracing/pull/2690 [#​2647]: https://togithub.com/tokio-rs/tracing/pull/2647 [#​2680]: https://togithub.com/tokio-rs/tracing/pull/2680 [#​2407]: https://togithub.com/tokio-rs/tracing/pull/2407 [#​2772]: https://togithub.com/tokio-rs/tracing/pull/2772 Thanks to [@​shayne-fletcher](https://togithub.com/shayne-fletcher), [@​dmlary](https://togithub.com/dmlary), [@​kaifastromai](https://togithub.com/kaifastromai), and [@​jsgf](https://togithub.com/jsgf) for contributing!
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 10 +++++----- Cargo.toml | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 12bb24d..49f53cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4519,12 +4519,12 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] @@ -4540,9 +4540,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", diff --git a/Cargo.toml b/Cargo.toml index 658bdd8..dac0a3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,8 +31,8 @@ async-trait = "0.1.80" ethers = { version = "2.0.14", default-features = false } tokio = "1.37.0" clap = "4.5.4" -tracing = "0.1" -tracing-subscriber = "0.3" +tracing = "0.1.40" +tracing-subscriber = "0.3.18" sentry = { version = "0.32.3", default-features = false } lazy_static = "1.4.0" itertools = "0.12.1" From ff6b147345c4f8884a378a76bd1d7243d98518ad Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 10:52:27 +0200 Subject: [PATCH 117/128] chore(deps): update rust crate sqlx to 0.7.4 (#452) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [sqlx](https://togithub.com/launchbadge/sqlx) | workspace.dependencies | patch | `0.7` -> `0.7.4` | --- ### Release Notes
launchbadge/sqlx (sqlx) ### [`v0.7.4`](https://togithub.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#074---2024-03-11) [Compare Source](https://togithub.com/launchbadge/sqlx/compare/v0.7.3...v0.7.4) 38 pull requests were merged this release cycle. This is officially the **last** release of the 0.7.x release cycle. As of this release, development of 0.8.0 has begun on `main` and only high-priority bugfixes may be backported. ##### Added - \[[#​2891]]: feat: expose getters for connect options fields \[\[[@​saiintbrisson](https://togithub.com/saiintbrisson)]] - \[[#​2902]]: feat: add `to_url_lossy` to connect options \[\[[@​lily-mosquitoes](https://togithub.com/lily-mosquitoes)]] - \[[#​2927]]: Support `query!` for cargo-free systems \[\[[@​kshramt](https://togithub.com/kshramt)]] - \[[#​2997]]: doc(FAQ): add entry explaining prepared statements \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​3001]]: Update README to clarify MariaDB support \[\[[@​iangilfillan](https://togithub.com/iangilfillan)]] - \[[#​3004]]: feat(logging): Add numeric elapsed time field elapsed_secs \[\[[@​iamjpotts](https://togithub.com/iamjpotts)]] - \[[#​3007]]: feat: add `raw_sql` API \[\[[@​abonander](https://togithub.com/abonander)]] - This hopefully makes it easier to find how to execute statements which are not supported by the default prepared statement interfaces `query*()` and `query!()`. - Improved documentation across the board for the `query*()` functions. - Deprecated: `execute_many()` and `fetch_many()` on interfaces that use prepared statements. - Multiple SQL statements in one query string were only supported by SQLite because its prepared statement interface is the *only* way to execute SQL. All other database flavors forbid multiple statements in one prepared statement string as an extra defense against SQL injection. - The new `raw_sql` API retains this functionality because it explicitly does *not* use prepared statements. Raw or text-mode query interfaces generally allow multiple statements in one query string, and this is supported by all current databases. Due to their nature, however, one cannot use bind parameters with them. - If this change affects you, an issue is open for discussion: [https://github.com/launchbadge/sqlx/issues/3108](https://togithub.com/launchbadge/sqlx/issues/3108) - \[[#​3011]]: Added support to IpAddr with MySQL/MariaDB. \[\[[@​Icerath](https://togithub.com/Icerath)]] - \[[#​3013]]: Add default implementation for PgInterval \[\[[@​pawurb](https://togithub.com/pawurb)]] - \[[#​3018]]: Add default implementation for PgMoney \[\[[@​pawurb](https://togithub.com/pawurb)]] - \[[#​3026]]: Update docs to reflect support for MariaDB data types \[\[[@​iangilfillan](https://togithub.com/iangilfillan)]] - \[[#​3037]]: feat(mysql): allow to connect with mysql driver without default behavor \[\[[@​darkecho731](https://togithub.com/darkecho731)]] ##### Changed - \[[#​2900]]: Show latest url to docs for macro.migrate \[\[[@​Vrajs16](https://togithub.com/Vrajs16)]] - \[[#​2914]]: Use `create_new` instead of `atomic-file-write` \[\[[@​mattfbacon](https://togithub.com/mattfbacon)]] - \[[#​2926]]: docs: update example for `PgConnectOptions` \[\[[@​Fyko](https://togithub.com/Fyko)]] - \[[#​2989]]: sqlx-core: Remove dotenvy dependency \[\[[@​joshtriplett](https://togithub.com/joshtriplett)]] - \[[#​2996]]: chore: Update ahash to 0.8.7 \[\[[@​takenoko-gohan](https://togithub.com/takenoko-gohan)]] - \[[#​3006]]: chore(deps): Replace unmaintained tempdir crate with tempfile \[\[[@​iamjpotts](https://togithub.com/iamjpotts)]] - \[[#​3008]]: chore: Ignore .sqlx folder created by running ci steps locally \[\[[@​iamjpotts](https://togithub.com/iamjpotts)]] - \[[#​3009]]: chore(dev-deps): Upgrade env_logger from 0.9 to 0.11 \[\[[@​iamjpotts](https://togithub.com/iamjpotts)]] - \[[#​3010]]: chore(deps): Upgrade criterion to 0.5.1 \[\[[@​iamjpotts](https://togithub.com/iamjpotts)]] - \[[#​3050]]: Optimize SASL auth in sqlx-postgres \[\[[@​mirek26](https://togithub.com/mirek26)]] - \[[#​3055]]: Set TCP_NODELAY option on TCP sockets \[\[[@​mirek26](https://togithub.com/mirek26)]] - \[[#​3065]]: Improve max_lifetime handling \[\[[@​mirek26](https://togithub.com/mirek26)]] - \[[#​3072]]: Change the name of "inner" function generated by `#[sqlx::test]` \[\[[@​ciffelia](https://togithub.com/ciffelia)]] - \[[#​3083]]: Remove sha1 because it's not being used in postgres \[\[[@​rafaelGuerreiro](https://togithub.com/rafaelGuerreiro)]] ##### Fixed - \[[#​2898]]: Fixed docs \[\[[@​Vrajs16](https://togithub.com/Vrajs16)]] - \[[#​2905]]: fix(mysql): Close prepared statement if persistence is disabled \[\[[@​larsschumacher](https://togithub.com/larsschumacher)]] - \[[#​2913]]: Fix handling of deferred constraints \[\[[@​Thomasdezeeuw](https://togithub.com/Thomasdezeeuw)]] - \[[#​2919]]: fix duplicate "\`" in FromRow "default" attribute doc comment \[\[[@​shengsheng](https://togithub.com/shengsheng)]] - \[[#​2932]]: fix(postgres): avoid unnecessary flush in PgCopyIn::read_from \[\[[@​tsing](https://togithub.com/tsing)]] - \[[#​2955]]: Minor fixes \[\[[@​Dawsoncodes](https://togithub.com/Dawsoncodes)]] - \[[#​2963]]: Fixed ReadMe badge styling \[\[[@​tadghh](https://togithub.com/tadghh)]] - \[[#​2976]]: fix: AnyRow not support PgType::Varchar \[\[[@​holicc](https://togithub.com/holicc)]] - \[[#​3053]]: fix: do not panic when binding a large BigDecimal \[\[[@​Ekleog](https://togithub.com/Ekleog)]] - \[[#​3056]]: fix: spans in sqlite tracing ([#​2876](https://togithub.com/launchbadge/sqlx/issues/2876)) \[\[[@​zoomiti](https://togithub.com/zoomiti)]] - \[[#​3089]]: fix(migrate): improve error message when parsing version from filename \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​3098]]: Migrations fixes \[\[[@​abonander](https://togithub.com/abonander)]] - Unhides `sqlx::migrate::Migrator`. - Improves I/O error message when failing to read a file in `migrate!()`. [#​2891]: https://togithub.com/launchbadge/sqlx/pull/2891 [#​2898]: https://togithub.com/launchbadge/sqlx/pull/2898 [#​2900]: https://togithub.com/launchbadge/sqlx/pull/2900 [#​2902]: https://togithub.com/launchbadge/sqlx/pull/2902 [#​2905]: https://togithub.com/launchbadge/sqlx/pull/2905 [#​2913]: https://togithub.com/launchbadge/sqlx/pull/2913 [#​2914]: https://togithub.com/launchbadge/sqlx/pull/2914 [#​2919]: https://togithub.com/launchbadge/sqlx/pull/2919 [#​2926]: https://togithub.com/launchbadge/sqlx/pull/2926 [#​2927]: https://togithub.com/launchbadge/sqlx/pull/2927 [#​2932]: https://togithub.com/launchbadge/sqlx/pull/2932 [#​2955]: https://togithub.com/launchbadge/sqlx/pull/2955 [#​2963]: https://togithub.com/launchbadge/sqlx/pull/2963 [#​2976]: https://togithub.com/launchbadge/sqlx/pull/2976 [#​2989]: https://togithub.com/launchbadge/sqlx/pull/2989 [#​2996]: https://togithub.com/launchbadge/sqlx/pull/2996 [#​2997]: https://togithub.com/launchbadge/sqlx/pull/2997 [#​3001]: https://togithub.com/launchbadge/sqlx/pull/3001 [#​3004]: https://togithub.com/launchbadge/sqlx/pull/3004 [#​3006]: https://togithub.com/launchbadge/sqlx/pull/3006 [#​3007]: https://togithub.com/launchbadge/sqlx/pull/3007 [#​3008]: https://togithub.com/launchbadge/sqlx/pull/3008 [#​3009]: https://togithub.com/launchbadge/sqlx/pull/3009 [#​3010]: https://togithub.com/launchbadge/sqlx/pull/3010 [#​3011]: https://togithub.com/launchbadge/sqlx/pull/3011 [#​3013]: https://togithub.com/launchbadge/sqlx/pull/3013 [#​3018]: https://togithub.com/launchbadge/sqlx/pull/3018 [#​3026]: https://togithub.com/launchbadge/sqlx/pull/3026 [#​3037]: https://togithub.com/launchbadge/sqlx/pull/3037 [#​3050]: https://togithub.com/launchbadge/sqlx/pull/3050 [#​3053]: https://togithub.com/launchbadge/sqlx/pull/3053 [#​3055]: https://togithub.com/launchbadge/sqlx/pull/3055 [#​3056]: https://togithub.com/launchbadge/sqlx/pull/3056 [#​3065]: https://togithub.com/launchbadge/sqlx/pull/3065 [#​3072]: https://togithub.com/launchbadge/sqlx/pull/3072 [#​3083]: https://togithub.com/launchbadge/sqlx/pull/3083 [#​3089]: https://togithub.com/launchbadge/sqlx/pull/3089 [#​3098]: https://togithub.com/launchbadge/sqlx/pull/3098 ### [`v0.7.3`](https://togithub.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#073---2023-11-22) 38 pull requests were merged this release cycle. ##### Added - \[[#​2478]]: feat(citext): support postgres citext \[\[[@​hgranthorner](https://togithub.com/hgranthorner)]] - \[[#​2545]]: Add `fixtures_path` in sqlx::test args \[\[[@​ripa1995](https://togithub.com/ripa1995)]] - \[[#​2665]]: feat(mysql): support packet splitting \[\[[@​tk2217](https://togithub.com/tk2217)]] - \[[#​2752]]: Enhancement [#​2747](https://togithub.com/launchbadge/sqlx/issues/2747) Provide `fn PgConnectOptions::get_host(&self)` \[\[[@​boris-lok](https://togithub.com/boris-lok)]] - \[[#​2769]]: Customize the macro error message based on the metadata \[\[[@​Nemo157](https://togithub.com/Nemo157)]] - \[[#​2793]]: derived Hash trait for PgInterval \[\[[@​yasamoka](https://togithub.com/yasamoka)]] - \[[#​2801]]: derive FromRow: sqlx(default) for all fields \[\[[@​grgi](https://togithub.com/grgi)]] - \[[#​2827]]: Add impl `FromRow` for the unit type \[\[[@​nanoqsh](https://togithub.com/nanoqsh)]] - \[[#​2871]]: Add `MySqlConnectOptions::get_database()` \[\[[@​shiftrightonce](https://togithub.com/shiftrightonce)]] - \[[#​2873]]: Sqlx Cli: Added force flag to drop database for postgres \[\[[@​Vrajs16](https://togithub.com/Vrajs16)]] - \[[#​2894]]: feat: `Text` adapter \[\[[@​abonander](https://togithub.com/abonander)]] ##### Changed - \[[#​2701]]: Remove documentation on offline feature \[\[[@​Baptistemontan](https://togithub.com/Baptistemontan)]] - \[[#​2713]]: Add additional info regarding using Transaction and PoolConnection as… \[\[[@​satwanjyu](https://togithub.com/satwanjyu)]] - \[[#​2770]]: Update README.md \[\[[@​snspinn](https://togithub.com/snspinn)]] - \[[#​2797]]: doc(mysql): document behavior regarding `BOOLEAN` and the query macros \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​2803]]: Don't use separate temp dir for query jsons (2) \[\[[@​mattfbacon](https://togithub.com/mattfbacon)]] - \[[#​2819]]: postgres begin cancel safe \[\[[@​conradludgate](https://togithub.com/conradludgate)]] - \[[#​2832]]: Update extra_float_digits default to 2 instead of 3 \[\[[@​brianheineman](https://togithub.com/brianheineman)]] - \[[#​2865]]: Update Faq - Bulk upsert with optional fields \[\[[@​Vrajs16](https://togithub.com/Vrajs16)]] - \[[#​2880]]: feat: use specific message for slow query logs \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​2882]]: Do not require db url for prepare \[\[[@​tamasfe](https://togithub.com/tamasfe)]] - \[[#​2890]]: doc(sqlite): cover lack of `NUMERIC` support \[\[[@​abonander](https://togithub.com/abonander)]] - \[No PR]: Upgraded `libsqlite3-sys` to 0.27.0 - Note: linkage to `libsqlite3-sys` is considered semver-exempt; see the release notes for 0.7.0 below for details. ##### Fixed - \[[#​2640]]: fix: sqlx::macro db cleanup race condition by adding a margin to current timestamp \[\[[@​fhsgoncalves](https://togithub.com/fhsgoncalves)]] - \[[#​2655]]: \[fix] Urlencode when passing filenames to sqlite3 \[\[[@​uttarayan21](https://togithub.com/uttarayan21)]] - \[[#​2684]]: Make PgListener recover from UnexpectedEof \[\[[@​hamiltop](https://togithub.com/hamiltop)]] - \[[#​2688]]: fix: Make rust_decimal and bigdecimal decoding more lenient \[\[[@​cameronbraid](https://togithub.com/cameronbraid)]] - \[[#​2754]]: Is tests/x.py maintained? And I tried fix it. \[\[[@​qwerty2501](https://togithub.com/qwerty2501)]] - \[[#​2784]]: fix: decode postgres time without subsecond \[\[[@​granddaifuku](https://togithub.com/granddaifuku)]] - \[[#​2806]]: Depend on version of async-std with non-private spawn-blocking \[\[[@​A248](https://togithub.com/A248)]] - \[[#​2820]]: fix: correct decoding of `rust_decimal::Decimal` for high-precision values \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​2822]]: issue [#​2821](https://togithub.com/launchbadge/sqlx/issues/2821) Update error handling logic when opening a TCP connection \[\[[@​anupj](https://togithub.com/anupj)]] - \[[#​2826]]: chore: bump some sqlx-core dependencies \[\[[@​djc](https://togithub.com/djc)]] - \[[#​2838]]: Fixes rust_decimal scale for Postgres \[\[[@​jkleinknox](https://togithub.com/jkleinknox)]] - \[[#​2847]]: Fix comment in `sqlx migrate add` help text \[\[[@​cryeprecision](https://togithub.com/cryeprecision)]] - \[[#​2850]]: fix(core): avoid unncessary wakeups in `try_stream!()` \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​2856]]: Prevent warnings running `cargo build` \[\[[@​nyurik](https://togithub.com/nyurik)]] - \[[#​2864]]: fix(sqlite): use `AtomicUsize` for thread IDs \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​2892]]: Fixed force dropping bug \[\[[@​Vrajs16](https://togithub.com/Vrajs16)]] [#​2478]: https://togithub.com/launchbadge/sqlx/pull/2478 [#​2545]: https://togithub.com/launchbadge/sqlx/pull/2545 [#​2640]: https://togithub.com/launchbadge/sqlx/pull/2640 [#​2655]: https://togithub.com/launchbadge/sqlx/pull/2655 [#​2665]: https://togithub.com/launchbadge/sqlx/pull/2665 [#​2684]: https://togithub.com/launchbadge/sqlx/pull/2684 [#​2688]: https://togithub.com/launchbadge/sqlx/pull/2688 [#​2701]: https://togithub.com/launchbadge/sqlx/pull/2701 [#​2713]: https://togithub.com/launchbadge/sqlx/pull/2713 [#​2752]: https://togithub.com/launchbadge/sqlx/pull/2752 [#​2754]: https://togithub.com/launchbadge/sqlx/pull/2754 [#​2769]: https://togithub.com/launchbadge/sqlx/pull/2769 [#​2770]: https://togithub.com/launchbadge/sqlx/pull/2770 [#​2782]: https://togithub.com/launchbadge/sqlx/pull/2782 [#​2784]: https://togithub.com/launchbadge/sqlx/pull/2784 [#​2793]: https://togithub.com/launchbadge/sqlx/pull/2793 [#​2797]: https://togithub.com/launchbadge/sqlx/pull/2797 [#​2801]: https://togithub.com/launchbadge/sqlx/pull/2801 [#​2803]: https://togithub.com/launchbadge/sqlx/pull/2803 [#​2806]: https://togithub.com/launchbadge/sqlx/pull/2806 [#​2819]: https://togithub.com/launchbadge/sqlx/pull/2819 [#​2820]: https://togithub.com/launchbadge/sqlx/pull/2820 [#​2822]: https://togithub.com/launchbadge/sqlx/pull/2822 [#​2826]: https://togithub.com/launchbadge/sqlx/pull/2826 [#​2827]: https://togithub.com/launchbadge/sqlx/pull/2827 [#​2832]: https://togithub.com/launchbadge/sqlx/pull/2832 [#​2838]: https://togithub.com/launchbadge/sqlx/pull/2838 [#​2847]: https://togithub.com/launchbadge/sqlx/pull/2847 [#​2850]: https://togithub.com/launchbadge/sqlx/pull/2850 [#​2856]: https://togithub.com/launchbadge/sqlx/pull/2856 [#​2864]: https://togithub.com/launchbadge/sqlx/pull/2864 [#​2865]: https://togithub.com/launchbadge/sqlx/pull/2865 [#​2871]: https://togithub.com/launchbadge/sqlx/pull/2871 [#​2873]: https://togithub.com/launchbadge/sqlx/pull/2873 [#​2880]: https://togithub.com/launchbadge/sqlx/pull/2880 [#​2882]: https://togithub.com/launchbadge/sqlx/pull/2882 [#​2890]: https://togithub.com/launchbadge/sqlx/pull/2890 [#​2892]: https://togithub.com/launchbadge/sqlx/pull/2892 [#​2894]: https://togithub.com/launchbadge/sqlx/pull/2894 ### [`v0.7.2`](https://togithub.com/launchbadge/sqlx/blob/HEAD/CHANGELOG.md#072---2023-09-25) 23 pull requests were merged this release cycle. ##### Added - \[[#​2121]]: Add JSON support to `FromRow` derive \[\[[@​95ulisse](https://togithub.com/95ulisse)]] - \[[#​2533]]: Implement mysql_clear_password \[\[[@​ldanilek](https://togithub.com/ldanilek)]] - \[[#​2538]]: cli: add --target-version CLI flags for migrate run/revert \[\[[@​inahga](https://togithub.com/inahga)]] - \[[#​2577]]: supplement Postgres listen example with a small chat example \[\[[@​JockeM](https://togithub.com/JockeM)]] - \[[#​2602]]: Support naming migrations sequentially \[\[[@​vmax](https://togithub.com/vmax)]] - \[[#​2634]]: Adding PgHasArrayType for &\[u8;N] \[\[[@​snf](https://togithub.com/snf)]] - \[[#​2646]]: Support for setting client certificate and key from bytes \[\[[@​wyhaya](https://togithub.com/wyhaya)]] - \[[#​2664]]: Automatically infer migration type \[\[[@​vmax](https://togithub.com/vmax)]] - \[[#​2712]]: Add impl for `Type`, `Decode`, and `Encode` for `Box` and `Box<[u8]>` \[\[[@​grant0417](https://togithub.com/grant0417)]] ##### Changed - \[[#​2650]]: Cleanup format arguments \[\[[@​nyurik](https://togithub.com/nyurik)]] - \[[#​2695]]: remove \&mut PoolConnection from Executor docs \[\[[@​olback](https://togithub.com/olback)]] - This impl was removed in 0.7.0 because of coherence issues. - \[[#​2706]]: Clarify where optional features should be enabled \[\[[@​kryptan](https://togithub.com/kryptan)]] - \[[#​2717]]: Update README.md \[\[[@​fermanjj](https://togithub.com/fermanjj)]] - \[[#​2739]]: Bump mariadb CI images + mysql unpin \[\[[@​grooverdan](https://togithub.com/grooverdan)]] - \[[#​2742]]: Implemented poll_flush for Box\ \[\[[@​bobozaur](https://togithub.com/bobozaur)]] - \[[#​2740]]: Remove sealed trait comments from documentation \[\[[@​bobozaur](https://togithub.com/bobozaur)]] - \[[#​2750]]: Fix [#​2384](https://togithub.com/launchbadge/sqlx/issues/2384), bump flume to v0.11.0 \[\[[@​madadam](https://togithub.com/madadam)]] - \[[#​2757]]: Remove unused `remove_dir_all` crate from `sqlx-cli`, fixes RUSTSEC-2023-0018 \[\[[@​aldur](https://togithub.com/aldur)]] ##### Fixed - \[[#​2624]]: Documentation typo: BYTE -> BINARY \[\[[@​sebastianv89](https://togithub.com/sebastianv89)]] - \[[#​2628]]: docs: 0.7 is stable in the entire README \[\[[@​marcusirgens](https://togithub.com/marcusirgens)]] - \[[#​2630]]: fix(postgres): fix buffer management in PgCopyIn::read_from \[\[[@​tsing](https://togithub.com/tsing)]] - \[[#​2651]]: Chore: Fix few build warnings, and make CI fail on warn \[\[[@​nyurik](https://togithub.com/nyurik)]] - \[[#​2670]]: fix: ignore extra fields in Postgres describe parsing \[\[[@​abonander](https://togithub.com/abonander)]] - \[[#​2687]]: docs: Fix description of `min_connections` \[\[[@​hakoerber](https://togithub.com/hakoerber)]] [#​2121]: https://togithub.com/launchbadge/sqlx/pull/2121 [#​2533]: https://togithub.com/launchbadge/sqlx/pull/2533 [#​2538]: https://togithub.com/launchbadge/sqlx/pull/2538 [#​2577]: https://togithub.com/launchbadge/sqlx/pull/2577 [#​2602]: https://togithub.com/launchbadge/sqlx/pull/2602 [#​2624]: https://togithub.com/launchbadge/sqlx/pull/2624 [#​2628]: https://togithub.com/launchbadge/sqlx/pull/2628 [#​2630]: https://togithub.com/launchbadge/sqlx/pull/2630 [#​2634]: https://togithub.com/launchbadge/sqlx/pull/2634 [#​2646]: https://togithub.com/launchbadge/sqlx/pull/2646 [#​2650]: https://togithub.com/launchbadge/sqlx/pull/2650 [#​2651]: https://togithub.com/launchbadge/sqlx/pull/2651 [#​2664]: https://togithub.com/launchbadge/sqlx/pull/2664 [#​2670]: https://togithub.com/launchbadge/sqlx/pull/2670 [#​2687]: https://togithub.com/launchbadge/sqlx/pull/2687 [#​2695]: https://togithub.com/launchbadge/sqlx/pull/2695 [#​2706]: https://togithub.com/launchbadge/sqlx/pull/2706 [#​2712]: https://togithub.com/launchbadge/sqlx/pull/2712 [#​2717]: https://togithub.com/launchbadge/sqlx/pull/2717 [#​2739]: https://togithub.com/launchbadge/sqlx/pull/2739 [#​2740]: https://togithub.com/launchbadge/sqlx/pull/2740 [#​2742]: https://togithub.com/launchbadge/sqlx/pull/2742 [#​2750]: https://togithub.com/launchbadge/sqlx/pull/2750 [#​2757]: https://togithub.com/launchbadge/sqlx/pull/2757
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 57 +++++++++++++++++++++++++----------------------------- Cargo.toml | 2 +- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 49f53cd..91a4009 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1486,13 +1486,12 @@ dependencies = [ [[package]] name = "flume" -version = "0.10.14" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" dependencies = [ "futures-core", "futures-sink", - "pin-project", "spin 0.9.8", ] @@ -2266,9 +2265,9 @@ checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" [[package]] name = "libsqlite3-sys" -version = "0.26.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716" dependencies = [ "cc", "pkg-config", @@ -3857,9 +3856,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e58421b6bc416714d5115a2ca953718f6c621a51b68e4f4922aea5a4391a721" +checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" dependencies = [ "sqlx-core", "sqlx-macros", @@ -3870,9 +3869,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4cef4251aabbae751a3710927945901ee1d97ee96d757f6880ebb9a79bfd53" +checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" dependencies = [ "ahash", "atoi", @@ -3881,7 +3880,6 @@ dependencies = [ "bytes", "crc", "crossbeam-queue", - "dotenvy", "either", "event-listener", "futures-channel", @@ -3909,14 +3907,14 @@ dependencies = [ "tokio-stream", "tracing", "url", - "webpki-roots 0.24.0", + "webpki-roots 0.25.2", ] [[package]] name = "sqlx-macros" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "208e3165167afd7f3881b16c1ef3f2af69fa75980897aac8874a0696516d12c2" +checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" dependencies = [ "proc-macro2", "quote", @@ -3927,9 +3925,9 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a4a8336d278c62231d87f24e8a7a74898156e34c1c18942857be2acb29c7dfc" +checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" dependencies = [ "dotenvy", "either", @@ -3953,9 +3951,9 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca69bf415b93b60b80dc8fda3cb4ef52b2336614d8da2de5456cc942a110482" +checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" dependencies = [ "atoi", "base64 0.21.2", @@ -3996,9 +3994,9 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0db2df1b8731c3651e204629dd55e52adbae0462fa1bdcbed56a2302c18181e" +checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" dependencies = [ "atoi", "base64 0.21.2", @@ -4025,7 +4023,6 @@ dependencies = [ "rand", "serde", "serde_json", - "sha1", "sha2 0.10.7", "smallvec", "sqlx-core", @@ -4037,9 +4034,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4c21bf34c7cae5b283efb3ac1bcc7670df7561124dc2f8bdc0b59be40f79a2" +checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" dependencies = [ "atoi", "flume", @@ -4055,6 +4052,7 @@ dependencies = [ "sqlx-core", "tracing", "url", + "urlencoding", ] [[package]] @@ -4702,6 +4700,12 @@ dependencies = [ "serde", ] +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf-8" version = "0.7.6" @@ -4931,15 +4935,6 @@ dependencies = [ "rustls-webpki 0.100.2", ] -[[package]] -name = "webpki-roots" -version = "0.24.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" -dependencies = [ - "rustls-webpki 0.101.7", -] - [[package]] name = "webpki-roots" version = "0.25.2" diff --git a/Cargo.toml b/Cargo.toml index dac0a3e..0160111 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,7 @@ num = "0.4.2" syn = "2.0.60" hex = "0.4.3" pretty_assertions = "1" -sqlx = "0.7" +sqlx = "0.7.4" chrono = { version = "0.4.38", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } vise-exporter = { git = "https://github.com/matter-labs/vise.git" } From 62188400fc5c6e2dd72c2c642704f387cf27a327 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 11:33:48 +0200 Subject: [PATCH 118/128] chore(deps): update rust crate serde_json to 1.0.116 (#451) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde_json](https://togithub.com/serde-rs/json) | workspace.dependencies | patch | `1.0` -> `1.0.116` | --- ### Release Notes
serde-rs/json (serde_json) ### [`v1.0.116`](https://togithub.com/serde-rs/json/releases/tag/v1.0.116) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.115...v1.0.116) - Make module structure comprehensible to static analysis ([#​1124](https://togithub.com/serde-rs/json/issues/1124), thanks [@​mleonhard](https://togithub.com/mleonhard)) ### [`v1.0.115`](https://togithub.com/serde-rs/json/releases/tag/v1.0.115) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.114...v1.0.115) - Documentation improvements ### [`v1.0.114`](https://togithub.com/serde-rs/json/releases/tag/v1.0.114) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.113...v1.0.114) - Fix unused_imports warnings when compiled by rustc 1.78 ### [`v1.0.113`](https://togithub.com/serde-rs/json/releases/tag/v1.0.113) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.112...v1.0.113) - Add `swap_remove` and `shift_remove` methods on Map ([#​1109](https://togithub.com/serde-rs/json/issues/1109)) ### [`v1.0.112`](https://togithub.com/serde-rs/json/releases/tag/v1.0.112) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.111...v1.0.112) - Improve formatting of "invalid type" error messages involving floats ([#​1107](https://togithub.com/serde-rs/json/issues/1107)) ### [`v1.0.111`](https://togithub.com/serde-rs/json/releases/tag/v1.0.111) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.110...v1.0.111) - Improve floating point parsing performance on loongarch64 ([#​1100](https://togithub.com/serde-rs/json/issues/1100), thanks [@​heiher](https://togithub.com/heiher)) ### [`v1.0.110`](https://togithub.com/serde-rs/json/releases/tag/v1.0.110) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.109...v1.0.110) - Update proc-macro2 to fix caching issue when using a rustc-wrapper such as sccache ### [`v1.0.109`](https://togithub.com/serde-rs/json/releases/tag/v1.0.109) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.108...v1.0.109) - Documentation improvements ### [`v1.0.108`](https://togithub.com/serde-rs/json/releases/tag/v1.0.108) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.107...v1.0.108) - Documentation improvements ([#​1075](https://togithub.com/serde-rs/json/issues/1075), [#​1081](https://togithub.com/serde-rs/json/issues/1081), [#​1082](https://togithub.com/serde-rs/json/issues/1082), thanks [@​dimo414](https://togithub.com/dimo414) and [@​fritzrehde](https://togithub.com/fritzrehde))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 91a4009..54a9fb1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3648,9 +3648,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ "itoa", "ryu", diff --git a/Cargo.toml b/Cargo.toml index 0160111..4d70d0b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,7 +38,7 @@ lazy_static = "1.4.0" itertools = "0.12.1" serde = "1.0.200" thiserror = "1.0.59" -serde_json = "1.0" +serde_json = "1.0.116" color-eyre = "0.6.3" eyre = "0.6.12" dotenvy = "0.15.7" From 26734b937fd1d97a0b0e2c4a93d61c053c6126a1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 12:09:31 +0200 Subject: [PATCH 119/128] chore(deps): update rust crate pretty_assertions to 1.4.0 (#450) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [pretty_assertions](https://togithub.com/rust-pretty-assertions/rust-pretty-assertions) | workspace.dependencies | patch | `1` -> `1.4.0` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 4d70d0b..4aacaae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ quote = "1.0.36" num = "0.4.2" syn = "2.0.60" hex = "0.4.3" -pretty_assertions = "1" +pretty_assertions = "1.4.0" sqlx = "0.7.4" chrono = { version = "0.4.38", default-features = false } vise = { git = "https://github.com/matter-labs/vise.git" } From f88b3f1c7b6693630ec497227d474bd45b2fc5af Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 22:18:55 +0200 Subject: [PATCH 120/128] chore(deps): update rust docker tag to v1.78 (#456) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | rust | stage | minor | `1.77` -> `1.78` | --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index fcc0167..0032744 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM rust:1.77 AS builder +FROM rust:1.78 AS builder WORKDIR /app From 965e781f1d9c27e28e3d0ced64e74f41c662db97 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 5 May 2024 21:58:17 +0200 Subject: [PATCH 121/128] chore(deps): update rust crate tokio-util to v0.7.11 (#458) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio-util](https://tokio.rs) ([source](https://togithub.com/tokio-rs/tokio)) | workspace.dependencies | patch | `0.7.10` -> `0.7.11` | --- ### Release Notes
tokio-rs/tokio (tokio-util) ### [`v0.7.11`](https://togithub.com/tokio-rs/tokio/compare/tokio-util-0.7.10...tokio-util-0.7.11) [Compare Source](https://togithub.com/tokio-rs/tokio/compare/tokio-util-0.7.10...tokio-util-0.7.11)
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 54a9fb1..54a99b0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4377,16 +4377,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] From 890f0a95885782d1b426e6a38885d6da76ba9310 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 09:19:15 +0200 Subject: [PATCH 122/128] chore(deps): update rust crate thiserror to v1.0.60 (#461) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.59` -> `1.0.60` | --- ### Release Notes
dtolnay/thiserror (thiserror) ### [`v1.0.60`](https://togithub.com/dtolnay/thiserror/releases/tag/1.0.60) [Compare Source](https://togithub.com/dtolnay/thiserror/compare/1.0.59...1.0.60) - Resolve unexpected_cfgs warning ([#​298](https://togithub.com/dtolnay/thiserror/issues/298))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 54a99b0..28e754c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4218,18 +4218,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", From 5006d02def6c9000dd1c1d92c4e70888da3e5958 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 15:13:00 +0200 Subject: [PATCH 123/128] chore(deps): update rust crate syn to v2.0.61 (#460) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.60` -> `2.0.61` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.61`](https://togithub.com/dtolnay/syn/releases/tag/2.0.61) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.60...2.0.61) - Check for legal binding name in the ident of Pat::Ident ([#​1627](https://togithub.com/dtolnay/syn/issues/1627)) - Resolve unexpected_cfgs warning ([#​1635](https://togithub.com/dtolnay/syn/issues/1635))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 28e754c..5cc98c3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -515,7 +515,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -1214,7 +1214,7 @@ dependencies = [ "reqwest 0.11.19", "serde", "serde_json", - "syn 2.0.60", + "syn 2.0.61", "toml", "walkdir", ] @@ -1232,7 +1232,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -1258,7 +1258,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.60", + "syn 2.0.61", "tempfile", "thiserror", "tiny-keccak", @@ -1288,7 +1288,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -1603,7 +1603,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -2291,7 +2291,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -2528,7 +2528,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -2774,7 +2774,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -2812,7 +2812,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -2897,7 +2897,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -2953,7 +2953,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -3643,7 +3643,7 @@ checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -4129,7 +4129,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -4171,9 +4171,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.60" +version = "2.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" dependencies = [ "proc-macro2", "quote", @@ -4233,7 +4233,7 @@ checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -4325,7 +4325,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -4481,7 +4481,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -4786,7 +4786,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] @@ -4852,7 +4852,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", "wasm-bindgen-shared", ] @@ -4886,7 +4886,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5260,7 +5260,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.61", ] [[package]] From c6b76b63c154d0f1142612352d597ff636595354 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 15:34:02 +0200 Subject: [PATCH 124/128] chore(deps): update rust crate proc-macro2 to v1.0.82 (#459) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [proc-macro2](https://togithub.com/dtolnay/proc-macro2) | workspace.dependencies | patch | `1.0.81` -> `1.0.82` | --- ### Release Notes
dtolnay/proc-macro2 (proc-macro2) ### [`v1.0.82`](https://togithub.com/dtolnay/proc-macro2/releases/tag/1.0.82) [Compare Source](https://togithub.com/dtolnay/proc-macro2/compare/1.0.81...1.0.82) - Resolve unexpected_cfgs warning ([#​456](https://togithub.com/dtolnay/proc-macro2/issues/456))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5cc98c3..e641a9b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2926,9 +2926,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] From 190536104abd9d8e491b3b494cd7a00b4d038dbe Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 08:15:10 +0200 Subject: [PATCH 125/128] chore(deps): update rust crate serde_json to v1.0.117 (#463) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde_json](https://togithub.com/serde-rs/json) | workspace.dependencies | patch | `1.0.116` -> `1.0.117` | --- ### Release Notes
serde-rs/json (serde_json) ### [`v1.0.117`](https://togithub.com/serde-rs/json/releases/tag/v1.0.117) [Compare Source](https://togithub.com/serde-rs/json/compare/v1.0.116...v1.0.117) - Resolve unexpected_cfgs warning ([#​1130](https://togithub.com/serde-rs/json/issues/1130))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e641a9b..3bfd47f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3648,9 +3648,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", From 5eec751993e65f4ec71e6a2c4b19f90b88cebba2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 08:38:04 +0200 Subject: [PATCH 126/128] chore(deps): update rust crate serde to v1.0.201 (#462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.200` -> `1.0.201` | --- ### Release Notes
serde-rs/serde (serde) ### [`v1.0.201`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.201) [Compare Source](https://togithub.com/serde-rs/serde/compare/v1.0.200...v1.0.201) - Resolve unexpected_cfgs warning ([#​2737](https://togithub.com/serde-rs/serde/issues/2737))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3bfd47f..eae70de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3628,18 +3628,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.200" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddc6f9cc94d67c0e21aaf7eda3a010fd3af78ebf6e096aa6e2e13c79749cce4f" +checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.200" +version = "1.0.201" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "856f046b9400cee3c8c94ed572ecdb752444c24528c035cd35882aad6f492bcb" +checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", From d6f4326c4df9679933552b6791c47e460c324fe6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 08:36:07 +0200 Subject: [PATCH 127/128] chore(deps): update rust crate num to v0.4.3 (#464) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [num](https://togithub.com/rust-num/num) | workspace.dependencies | patch | `0.4.2` -> `0.4.3` | --- ### Release Notes
rust-num/num (num) ### [`v0.4.3`](https://togithub.com/rust-num/num/blob/HEAD/RELEASES.md#Release-043-2024-05-08) [Compare Source](https://togithub.com/rust-num/num/compare/num-0.4.2...num-0.4.3) - Upgrade to 2021 edition, **MSRV 1.60**. - Updated all sub-crates to their latest versions.
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eae70de..5b319bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2409,9 +2409,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", "num-complex", @@ -2423,11 +2423,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -2451,9 +2450,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -2469,9 +2468,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -2480,11 +2479,10 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", "num-traits", @@ -2492,9 +2490,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", From da8fb9f79d78bf3f39e6f7035abbed4e6d652a98 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 09:21:36 +0200 Subject: [PATCH 128/128] chore(deps): update rust crate syn to v2.0.63 (#465) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.61` -> `2.0.63` | --- ### Release Notes
dtolnay/syn (syn) ### [`v2.0.63`](https://togithub.com/dtolnay/syn/releases/tag/2.0.63) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.62...2.0.63) - Parse and print long if-else-if chains without reliance on deep recursion to avoid overflowing stack ([#​1644](https://togithub.com/dtolnay/syn/issues/1644), [#​1645](https://togithub.com/dtolnay/syn/issues/1645)) ### [`v2.0.62`](https://togithub.com/dtolnay/syn/releases/tag/2.0.62) [Compare Source](https://togithub.com/dtolnay/syn/compare/2.0.61...2.0.62) - Reject invalid unparenthesized range and comparison operator expressions ([#​1642](https://togithub.com/dtolnay/syn/issues/1642), [#​1643](https://togithub.com/dtolnay/syn/issues/1643))
--- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/matter-labs/zksync-withdrawal-finalizer). Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- Cargo.lock | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5b319bb..28cdf7d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -161,7 +161,7 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -192,7 +192,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -515,7 +515,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1214,7 +1214,7 @@ dependencies = [ "reqwest 0.11.19", "serde", "serde_json", - "syn 2.0.61", + "syn 2.0.63", "toml", "walkdir", ] @@ -1232,7 +1232,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1258,7 +1258,7 @@ dependencies = [ "serde", "serde_json", "strum", - "syn 2.0.61", + "syn 2.0.63", "tempfile", "thiserror", "tiny-keccak", @@ -1288,7 +1288,7 @@ dependencies = [ "ethers", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -1603,7 +1603,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -2291,7 +2291,7 @@ checksum = "ba125974b109d512fccbc6c0244e7580143e460895dfd6ea7f8bbb692fd94396" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -2526,7 +2526,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -2772,7 +2772,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -2810,7 +2810,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -2895,7 +2895,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" dependencies = [ "proc-macro2", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -2951,7 +2951,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -3641,7 +3641,7 @@ checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4127,7 +4127,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4169,9 +4169,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.61" +version = "2.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" +checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" dependencies = [ "proc-macro2", "quote", @@ -4231,7 +4231,7 @@ checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4323,7 +4323,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4479,7 +4479,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4784,7 +4784,7 @@ source = "git+https://github.com/matter-labs/vise.git#90e5423a876575762dec71d5d2 dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]] @@ -4850,7 +4850,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", "wasm-bindgen-shared", ] @@ -4884,7 +4884,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5258,7 +5258,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.63", ] [[package]]