Skip to content

Commit 1570620

Browse files
Merge pull request #1005 from valory-xyz/feat/consume-canonical-contracts-and-oa-0.21.26
refactor(offchain): consume canonical BalanceTracker + MechMarketplace, bump OA 0.21.26
2 parents 86308fc + d39d207 commit 1570620

37 files changed

Lines changed: 208 additions & 2980 deletions

File tree

.github/workflows/release.yaml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
- uses: actions/checkout@v6
1616
- uses: maus007/docker-run-action-fork@v1
1717
with:
18-
image: valory/open-autonomy-user:0.21.23
18+
image: valory/open-autonomy-user:0.21.26
1919
options: -v ${{ github.workspace }}:/work
2020
shell: bash
2121
run: |
@@ -52,7 +52,7 @@ jobs:
5252
- uses: maus007/docker-run-action-fork@v1
5353
name: Build Images
5454
with:
55-
image: valory/open-autonomy-user:0.21.23
55+
image: valory/open-autonomy-user:0.21.26
5656
options: -v ${{ github.workspace }}:/work -e DOCKER_USER -e DOCKER_PASSWORD
5757
shell: bash
5858
run: |
@@ -65,7 +65,7 @@ jobs:
6565
cd $SERVICE || exit 1
6666
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USER --password-stdin || exit 1
6767
docker buildx create --name multiarch-builder --driver docker-container --bootstrap --use
68-
autonomy build-image --builder multiarch-builder --platform linux/amd64 --pre-install-command "apt update && apt upgrade -y && apt install -y libffi-dev libssl-dev" -e open-autonomy==0.21.23 --version $VERSION-amd64 --push || exit 1
68+
autonomy build-image --builder multiarch-builder --platform linux/amd64 --pre-install-command "apt update && apt upgrade -y && apt install -y libffi-dev libssl-dev" -e open-autonomy==0.21.26 --version $VERSION-amd64 --push || exit 1
6969
7070
publish-images-arm:
7171
name: Publish Docker Images (arm64 + arm/v7)
@@ -95,7 +95,7 @@ jobs:
9595
- uses: maus007/docker-run-action-fork@v1
9696
name: Build Images
9797
with:
98-
image: valory/open-autonomy-user:0.21.23
98+
image: valory/open-autonomy-user:0.21.26
9999
options: -v ${{ github.workspace }}:/work -e DOCKER_USER -e DOCKER_PASSWORD
100100
shell: bash
101101
run: |
@@ -108,7 +108,7 @@ jobs:
108108
cd $SERVICE || exit 1
109109
echo $DOCKER_PASSWORD | docker login -u $DOCKER_USER --password-stdin || exit 1
110110
docker buildx create --name multiarch-builder --driver docker-container --bootstrap --use
111-
autonomy build-image --builder multiarch-builder --platform linux/arm64,linux/arm/v7 --pre-install-command "apt update && apt install -y libffi-dev libssl-dev && pip config set global.extra-index-url https://www.piwheels.org/simple" -e open-autonomy==0.21.23 --version $VERSION-arm --push || exit 1
111+
autonomy build-image --builder multiarch-builder --platform linux/arm64,linux/arm/v7 --pre-install-command "apt update && apt install -y libffi-dev libssl-dev && pip config set global.extra-index-url https://www.piwheels.org/simple" -e open-autonomy==0.21.26 --version $VERSION-arm --push || exit 1
112112
113113
merge-image-manifests:
114114
name: Merge Multi-arch Image Manifests

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ packages/valory/contracts/mech/
2525
packages/valory/contracts/gnosis_safe_proxy_factory/
2626
packages/valory/contracts/agent_mech/
2727
packages/valory/contracts/mech_marketplace_legacy/
28+
packages/valory/contracts/mech_marketplace/
29+
packages/valory/contracts/balance_tracker/
30+
packages/valory/contracts/balance_tracker_fixed_price_native/
2831
packages/valory/contracts/multisend/
2932
packages/valory/contracts/realitio/
3033
packages/valory/contracts/realitio_proxy/

packages/packages.json

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@
22
"dev": {
33
"custom/valory/kelly_criterion/0.1.0": "bafybeidme2uybzyzagky3jtosheqmpgc6b6w4rum7cdxw2fc35nnpwblfe",
44
"custom/valory/fixed_bet/0.1.0": "bafybeidahih5c7htr5g5e4nq5wcqfiwse2z6ga27jxsxll7iracehmysim",
5-
"contract/valory/service_staking_token/0.1.0": "bafybeifmovolowpdny6lnbc7dwsfq7shulpctmfg7tnznytiwkjeloknri",
6-
"contract/valory/mech_activity/0.1.0": "bafybeihq7bfz2cerfipvxohlsm545uiiy2gdqosxe4fksa7jaw3tsynlny",
7-
"contract/valory/relayer/0.1.0": "bafybeignvrcpszgdqppxaug6lsnu2dhg4q3b3byzoal4aoekvyqqbo37vq",
8-
"contract/valory/market_maker/0.1.0": "bafybeifj7pl3ar5o6ljb2gzt7ieklgk45ntn3dq7b2ytfjco2guzi3s4s4",
9-
"contract/valory/deposit_wallet/0.1.0": "bafybeidjkryojg7cv4hrjvrd2hm5cv5kdoqrmhdsxyjriwtdpo4v3avoia",
5+
"contract/valory/service_staking_token/0.1.0": "bafybeibb2f7vuflavba4pbcd4kse7grsdtcvvhoilvbeupc2ymspwfkrwy",
6+
"contract/valory/mech_activity/0.1.0": "bafybeibsvqydfecckfxdd267fo6ebow6skdnub6axt3tuwiye6qo3avna4",
7+
"contract/valory/relayer/0.1.0": "bafybeifrvzmwkumdachm7wuesfdqvz52xsybpnvdlelltm3qowosgd6tp4",
8+
"contract/valory/market_maker/0.1.0": "bafybeiaogkujiilubosloromkikuhltgiiadjvtzw2b5p5hc3klzi4m4nq",
9+
"contract/valory/deposit_wallet/0.1.0": "bafybeifmw77pznzla6zwq7mfncdzboxmlmm5ffmkvlxlqfg442oypfqjje",
1010
"connection/valory/polymarket_client/0.1.0": "bafybeid4eo37pka4tfhsjs6rb3knrugmokcvihust2dpfrgob56y77xd44",
11-
"skill/valory/market_manager_abci/0.1.0": "bafybeic67hypwetzltnuy3a6y3o2o332lxyvn34buq57gy4n6bfqpbpxjm",
12-
"skill/valory/decision_maker_abci/0.1.0": "bafybeiebddoshz7szs22sm7fn2cb4ywb6oa46ohc2naqcoznggb3nde43u",
13-
"skill/valory/trader_abci/0.1.0": "bafybeigkd4zkooaeng7ujroqpletfslja23fn6e6x4zuneictevpgeqw7y",
14-
"skill/valory/tx_settlement_multiplexer_abci/0.1.0": "bafybeighlmd4xj64qf3xtgbcxvqnipcnsvv47npkrlatngan2e6r23elhm",
15-
"skill/valory/staking_abci/0.1.0": "bafybeihwyron2bv7ierrgxke7xofwjy7x6wtglg5vopon7i7lfdiivweaq",
16-
"skill/valory/agent_performance_summary_abci/0.1.0": "bafybeigmmvpncem6i6t57nwjqzajrbnf6rnqgp43mlo6jf6uziq6lrhlca",
17-
"skill/valory/check_stop_trading_abci/0.1.0": "bafybeiexmdtj3qfjnhh2sy3fa4hwxkvqogsy7u46liobzhgilzogeoezeu",
18-
"skill/valory/chatui_abci/0.1.0": "bafybeie2kmgihgk3rwpzelaa76ypvchsyg2vy3me4vxlbjttaq4frs3ipa",
19-
"agent/valory/trader/0.1.0": "bafybeievk35g3mszasfdeuumig63wqir2h27g6kqmaw4f4vrvg7cvar5ya",
20-
"service/valory/trader_pearl/0.1.0": "bafybeiahpvkxhi7bdpdrl25ndzlcfnm4x6r4ot5ops3wpdza5562poweiu",
21-
"service/valory/polymarket_trader/0.1.0": "bafybeidq7gsdnapl74xlplw27x4a3kq7cuqsxwv3aphfq54jlnzfb7chyq"
11+
"skill/valory/market_manager_abci/0.1.0": "bafybeig3ak2eoimxwuupybde4napyi2jlf7pxk35se2zclikete2ni5hti",
12+
"skill/valory/decision_maker_abci/0.1.0": "bafybeignvmiros5dkn6jwgdtre6c33zl6z3ovi5c6uvvnry2q2gewn6gj4",
13+
"skill/valory/trader_abci/0.1.0": "bafybeietkpzgneoirw64kayvfivnnp2uxgfvauxnxb34s7qgel7dad6shy",
14+
"skill/valory/tx_settlement_multiplexer_abci/0.1.0": "bafybeiaff2ahldndjckp4rbagourfxogfgp5ew5wbo7hwzfk3waxcuz2c4",
15+
"skill/valory/staking_abci/0.1.0": "bafybeia6csjgex5zxdt6vymiaengu75lyzjdgfrnp65ewlghthiniquhje",
16+
"skill/valory/agent_performance_summary_abci/0.1.0": "bafybeibdudllr3t7lpxwqtipqjpygk5kg64cohpdd5pafr7vcfjcocow6y",
17+
"skill/valory/check_stop_trading_abci/0.1.0": "bafybeicx4qud27iszwikcezg7gqpodegqw76q5l2abzvglfdtzk2heclyq",
18+
"skill/valory/chatui_abci/0.1.0": "bafybeiddfs7fy23e7lidopd67fcvwzul5invz5ngkufbrlh757inmm2a5e",
19+
"agent/valory/trader/0.1.0": "bafybeigepieoyldotlrgnrxigifhzjn2wr34uo7l5yz5uvps3nk5rdfjm4",
20+
"service/valory/trader_pearl/0.1.0": "bafybeichdkihrinqdqaozdpedrldtylpuffxsyto2tcv5icaaapzrdzgpq",
21+
"service/valory/polymarket_trader/0.1.0": "bafybeiaamynpfdzukpxc6zdzf6iysa3llo4cvrjdnsgdc2x4dyzraqrjpi"
2222
},
2323
"third_party": {
2424
"protocol/valory/acn_data_share/0.1.0": "bafybeieqisfr6lhaaesq37lk7vyaxza2h6nucshksgyo2djqfyf2saqo4i",
@@ -31,48 +31,48 @@
3131
"protocol/valory/tendermint/0.1.0": "bafybeihzb7e32f7jcrzvubilqaxzmyk7ea6ss3pg3tliatdlrr76qeknyq",
3232
"protocol/valory/ipfs/0.1.0": "bafybeibz5xqhxdbuvba7nuw2w6ardjermtcoqercopnypdplnaekf3joam",
3333
"protocol/valory/srr/0.1.0": "bafybeibfs6osw7guctdpollf4iwt4vhd6yk7ai34tqk5djuxtgowjwdjb4",
34-
"contract/valory/multisend/0.1.0": "bafybeidl74hh6g34kgxay3fzapz26dhfmc6s2kjnt6edmaxgrklhge3omy",
34+
"contract/valory/multisend/0.1.0": "bafybeifqtf24h7lhhbairveqmq2klhvbswajmbpoyqj4xrgye7c22pxubi",
3535
"contract/valory/realitio/0.1.0": "bafybeibfy6dqkwsz4xersouotswcug27awkvtsmjlo3r7b476qgeujn3eu",
3636
"contract/valory/realitio_proxy/0.1.0": "bafybeibutej7uzucill5ohb3xxu245vo32kg5vchpqondwdfomixx2psba",
3737
"contract/valory/conditional_tokens/0.1.0": "bafybeifqpw3hnllwy3s2ktcsfup3usgaykh5gbhieyf2wb2s4iwemykn2i",
38-
"contract/valory/gnosis_safe_proxy_factory/0.1.0": "bafybeifzd3duzsvbl76wzippvkqqvtn3shf7p57n43ffduxbsdreu3q4oy",
39-
"contract/valory/agent_registry/0.1.0": "bafybeihq4z4goum5ie7xwx723ub3bmuqql5hpys6kzy5cvt5g6y4k7eooe",
40-
"contract/valory/service_registry/0.1.0": "bafybeihktixbuw7dz3oa2xzfvpuchbnid7eob224n3spm77xx2yj2wixcm",
41-
"contract/valory/gnosis_safe/0.1.0": "bafybeif6cfjeruji2ovns6dhc5qivvjr7t7rh5mmudgh5gvumezin26qne",
42-
"contract/valory/erc20/0.1.0": "bafybeig4tin5v5ahiiz4fysocl7gjhpjtgzko3w6cr2iz3q5a4bxutwewu",
43-
"contract/valory/staking_token/0.1.0": "bafybeiev2of6e273dcmm4vqh5lejurn26wbhw4jf4wdabghrfi6abv6sqa",
44-
"contract/valory/agent_mech/0.1.0": "bafybeieiqd6n7zfnfq2bq6oqf7tskzw3hwwb3vj4djtipkbne7cybpdrne",
45-
"contract/valory/mech_marketplace_legacy/0.1.0": "bafybeifkolgdeaoiveuppykvxkvja7c7pphn6jyivnk6x3bjl72rqpsogm",
46-
"contract/valory/mech/0.1.0": "bafybeid2v3rotkylgln5w2udm3nnmsrnw4g4nlkbwhqfwbte4kwlxup5l4",
47-
"contract/valory/mech_mm/0.1.0": "bafybeiaez7w5ssgcmt5fqbue4oywhxmcojrnxqimzksuojsksxwaqvwo5u",
48-
"contract/valory/ierc1155/0.1.0": "bafybeif3wfclopxa3panep4xzgodlfclgypm3balncxyuxbhhvgz7imulq",
49-
"contract/valory/nvm_balance_tracker_token/0.1.0": "bafybeifwxkaobltpm77oh2b54kuclm4vtx2bzpuoowqfdemkex5gb5yyfa",
50-
"contract/valory/nvm_balance_tracker_native/0.1.0": "bafybeibou3doazirk637cyey4o33pz7fpdm4hsgdj7vd2kctuqxtjgnmla",
51-
"contract/valory/escrow_payment_condition/0.1.0": "bafybeibux6vafcoevxqz3s7goyv2mdq6pxjlvw62ewclhngo3xcm23i6r4",
52-
"contract/valory/did_registry/0.1.0": "bafybeiaz5vsh2qkcbjzteada32kz5l3xfwioo7tsrz5pa3zncz63gj7jye",
53-
"contract/valory/nft_sales/0.1.0": "bafybeiacttyhd4re5jaybtvoawlzsoxhy2npavwc7k7isqhuv6s73cc7be",
54-
"contract/valory/lock_payment_condition/0.1.0": "bafybeigngzwhvmjuvyxg3d2klrl3xoy7rafc32as2zb2acw7bkj4h2ysfq",
55-
"contract/valory/agreement_store_manager/0.1.0": "bafybeign6u6635cpp7z2rws7uaaxgzvyokdyzztnadmivbt2qsvw2q2vza",
56-
"contract/valory/transfer_nft_condition/0.1.0": "bafybeib6wigs3ufiuzkj6twlthcya67lswm3qosikrg4ez7jjgkam4kz5m",
57-
"contract/valory/subscription_provider/0.1.0": "bafybeia7fmpemztyjwu4pu4p3q2udy7ymrxz4p5eklegdlc2bgnfi2zoae",
58-
"contract/valory/mech_marketplace/0.1.0": "bafybeieadbmhzndxe6jcfwujcpjrljpc5kfwffkd3zzpg75uxksufn4l3i",
59-
"contract/valory/balance_tracker_fixed_price_native/0.1.0": "bafybeifobvptvc7mkrztfij664dqqegl6qi32773zewvyuftes32faemw4",
60-
"contract/valory/balance_tracker_fixed_price_token/0.1.0": "bafybeienpn5nb7mgiw5uitm5mjwcgc2xd7bzx5rxu2mqsvjziwvlg6poxa",
38+
"contract/valory/gnosis_safe_proxy_factory/0.1.0": "bafybeigr6ugkp6bxwnbkecktotekcjihabb6eudh3bgcnjfdorwosygile",
39+
"contract/valory/agent_registry/0.1.0": "bafybeia6gfxdfpr4apeqd6s4777d7yf6qya2slu3ccqmwiapxe72ckvsiq",
40+
"contract/valory/service_registry/0.1.0": "bafybeicbfffywnaaehptzasxsdoyguuurpleirsnor5xf7rqk57isjkury",
41+
"contract/valory/gnosis_safe/0.1.0": "bafybeiek7zs3r5c4wspwwuvnhunc2ddvccbsuy3xccedbjffju5eywp3ju",
42+
"contract/valory/erc20/0.1.0": "bafybeibpuyikvpmtaraca4lqokf3kf6jlpmafkqm6oixnps3ig23jfbllq",
43+
"contract/valory/staking_token/0.1.0": "bafybeihqnd5ot5w56i37pvzucsfoljhl5oi36ridluvtikzzbczqjztffi",
44+
"contract/valory/agent_mech/0.1.0": "bafybeidrkuruvewbi7xmi7py26ylgpcslmr5yuyu4tw6o7uekolmsj2zqa",
45+
"contract/valory/mech_marketplace_legacy/0.1.0": "bafybeicog7f2e6ibrpcsunxqmgx62o4bcf4hdb2tfn5ahebpciile5yr3y",
46+
"contract/valory/mech/0.1.0": "bafybeih45j4v3ooe6jgrg4u3xnqktb6sklwoaf3w2lgcuohut5rjs32kzu",
47+
"contract/valory/mech_mm/0.1.0": "bafybeig6gcy2tsh2mpatojiydd7copk3epdkevijyqi2ltmcoyvy6ssc74",
48+
"contract/valory/ierc1155/0.1.0": "bafybeifzl3xd3va2otvkda5netav3xbcj7pyxzyhsx2cpfgk4eq5abq3ky",
49+
"contract/valory/nvm_balance_tracker_token/0.1.0": "bafybeibh7dcomhz4ytowykbw2opwi3g7ypfc65bxxccdcvz3q7awmtqmle",
50+
"contract/valory/nvm_balance_tracker_native/0.1.0": "bafybeieyvmkuwbj3i32yp66hwbx2avsyubufipbwbvufqyv6apoalmfgwy",
51+
"contract/valory/escrow_payment_condition/0.1.0": "bafybeifghaewxrhssktvscpxpvydq3xvjd5rxx37oz54lhzsg2kelmwkai",
52+
"contract/valory/did_registry/0.1.0": "bafybeianxf7gjparfype4xesfdep362odimhgriviweluinnexwuglm2ku",
53+
"contract/valory/nft_sales/0.1.0": "bafybeidlzxmxpx25zcn5nhi3lb4kvfhfjsaw2dul2hogghshnxzmurfiom",
54+
"contract/valory/lock_payment_condition/0.1.0": "bafybeifptcyzgvj2bhsthimb3u2uylw6fgr3qpfij2aocsksbvxqk4syaa",
55+
"contract/valory/agreement_store_manager/0.1.0": "bafybeigvyl4plxgsp5cmoeweyywqz5piznys6nbf2rwiwxqsxxoyottydu",
56+
"contract/valory/transfer_nft_condition/0.1.0": "bafybeidosats5u2bkt43bcu6crvyp6c5goep2iovjxnbeaxxktxxjpl6sm",
57+
"contract/valory/subscription_provider/0.1.0": "bafybeidp2oegn5clyhw5yteiu4zd5idu5f3uhnlmsafzlbj4bxgemoyor4",
58+
"contract/valory/mech_marketplace/0.1.0": "bafybeigrcnjaycggulxyx2tsjub4ssjij66d7nfzsavo6gd54hm7beliiu",
59+
"contract/valory/balance_tracker/0.1.0": "bafybeiayyxl643qfpw57vopytxgyd6flxxmwassswuxen7myekqaxdxxvi",
60+
"contract/valory/balance_tracker_fixed_price_native/0.1.0": "bafybeihyaxqkyw2ulroqlhpfcgkrwtrwkhshn35fdq2ystraezwyco3k4u",
6161
"connection/valory/http_client/0.23.0": "bafybeihel6sg2yayxu7lqygaswdgciaxpqrgsbl5rwx74c6znu5qz2edd4",
6262
"connection/valory/p2p_libp2p_client/0.1.0": "bafybeielj3jso3wvrarp5n5rq7llpw4vgxybqiyensgjalb5ubfiawwhhu",
6363
"connection/valory/x402/0.1.0": "bafybeicqjg3d6pnlcsu4442qt5tmsjqkqdtc3ulvbjgoh53jyr7z3lbqqi",
6464
"connection/valory/ledger/0.19.0": "bafybeicynh5l5f5f5jpx72qwzis7jvmxk5p4eqltk32uxbj2pgu2x4rqz4",
6565
"connection/valory/http_server/0.22.0": "bafybeihs6dufyaa5l4uorplzx3wiyna5qlq2x43tmyl3yonkl265vspdle",
6666
"connection/valory/abci/0.1.0": "bafybeiafvaguchnkp2fmhf6gtayc3gpnxkglagghb4ukbqtouni5tveigi",
67-
"connection/valory/ipfs/0.1.0": "bafybeihxytzo7tunodztv424xsnnufewbowucdsxtdzdcik2rskcn7plta",
67+
"connection/valory/ipfs/0.1.0": "bafybeidob3tcdebjbm4ovwqoz4v2egf7nvoui3hu5on4o3apfchr6rpwwa",
6868
"connection/valory/genai/0.1.0": "bafybeighrq424xlroekehgk2oaqxkvziq22gffqzodm4ynhjgzhch4pcq4",
6969
"skill/valory/abstract_abci/0.1.0": "bafybeie5et43th2nta76cd3kpm3fmurd7oyzk3qxim76octvt56m6r2poi",
70-
"skill/valory/abstract_round_abci/0.1.0": "bafybeicioxhbhnsoqyqvkeevd7df7r2vubbiglyf7ucps2el73objazjsq",
71-
"skill/valory/transaction_settlement_abci/0.1.0": "bafybeibv3tycpdhphlblu62zpcbjsj7hnwkutexxqagorkelhjlt4t4fii",
72-
"skill/valory/registration_abci/0.1.0": "bafybeihjhbn5seffyu5cwugvm26fkamp3svhggmtzh577daijgl2ksxs3e",
73-
"skill/valory/reset_pause_abci/0.1.0": "bafybeihc4ruh25s7wuunfy2b3k2n4eypyhvtry3usgom44wsymagbcr3ki",
74-
"skill/valory/termination_abci/0.1.0": "bafybeibnnzry5kknci3z46gcjgutv4jid3ir6xn6a5adq3tx6v2e25augq",
75-
"skill/valory/mech_interact_abci/0.1.0": "bafybeihhwzpa6x5ypth426tzd2zjsnys6jmjaab4zvk4edisetzktft754",
76-
"skill/valory/funds_manager/0.1.0": "bafybeibne4vkmbper3ryn7q6kt7lclbyylgorziscyn6msr5qt46aihv4m"
70+
"skill/valory/abstract_round_abci/0.1.0": "bafybeifkxnvvgsldkb4rgejsoon2mvrmrnl7asy2nhenwss7hpwg3myflu",
71+
"skill/valory/transaction_settlement_abci/0.1.0": "bafybeihizaapype5sz7vlosms3nfo6jzfj4ujycuf5uthviq2otvmw6f6m",
72+
"skill/valory/registration_abci/0.1.0": "bafybeif4n2esdjvquomdkwktv7eolepskpo5jlqrfda2abxjqzy2ljsxzi",
73+
"skill/valory/reset_pause_abci/0.1.0": "bafybeifrnmlscfiki7wojs6zasppefupd2wkjyq6orhdllfppjud7isrxi",
74+
"skill/valory/termination_abci/0.1.0": "bafybeih6sa2ttcvvjk7rcfn7ure2ws23kcfufssb4qmluzcfvednkfpvoi",
75+
"skill/valory/mech_interact_abci/0.1.0": "bafybeifwuwtsi5p7cnjvhf2jbg6oiviesgil3kus5bldukan2bxjycymje",
76+
"skill/valory/funds_manager/0.1.0": "bafybeicfw7qjtnlcbw6awsvxdahqu42fxsfsd3wy7mbyhcbls4l5pee3by"
7777
}
7878
}

0 commit comments

Comments
 (0)