Contract con_yeti_contract_6


Contract Code


  
1 I = importlib
2
3 balances = Hash(default_value=0)
4 metadata = Hash()
5
6 W_CHIEF='ec9decc889a17d4ea22afbd518f767a136f36301a0b1aa9a660f3f71d61f5b2b'
7 W_NIEL='1910513066afbe592d6140c0055de3cb068fe7c17584a654a704ac7e60b2df04'
8 W_LP='a690e68d8a049ea7c8ad4e16b166e321bd5ebc0dba4dc10d2ea01bf6eed84cca'
9 W_RAIN='e8dc708028e049397b5baf9579924dde58ce5bebee5655da0b53066117572e73'
10 W_MARKETN='3466e7576d1b70aef675ee4149b0d83cf21f69f4cfade801249d5afaad7c7ac9'
11 W_CHARITY='4c66b7ba687222d44df2c3c989ae4cc50185abfcee8ea5356afcc5344c4a5f94'
12 W_BUYBACK='b22e0df3949428211989867c4e4febd851af3c1c044a8d892e8a07b7034e94dc'
13 W_DEV='42a13c664781a24ab4aca978abb685d9c07ef9ae64a2af865a043e3186a66907'
14
15 @construct
16 def init():
17 # Token info
18 balances[W_CHIEF] = 94_000_000_000
19 balances[W_NIEL] = 5_000_000_000
20 balances[W_DEV] = 1_000_000_000
21 metadata['token_name'] = 'YETI_6'
22 metadata['token_symbol'] = 'YETI_6'
23 metadata['owners'] = [W_CHIEF, W_NIEL, W_DEV]
24 # Swap info
25 metadata['swap_token'] = 'con_marmite100_contract_1'
26 metadata['swap_end'] = now + datetime.timedelta(days=180) # HOW MANY DAYS TO AGREE ON? 6 MONTHS?
27 metadata['swap_rate'] = decimal('1')
28 # Wallets
29 metadata['rewards_contract'] = 'con_distr_rewards_yeti_3'
30 metadata['LP_wallet'] = W_LP
31 metadata['rain_wallet'] = W_RAIN
32 metadata['marketing_wallet'] = W_MARKETN
33 metadata['charity_wallet'] = W_CHARITY
34 metadata['buyback_wallet'] = W_BUYBACK
35 metadata['burn_wallet'] = 'yeti_burn_wallet'
36
37 metadata['blacklisted_wallets'] = [
38 '1b6a98bc717d568379218ca87b2b8f67b561ee1e50049da1af8f104270816a6b',
39 W_CHIEF,
40 W_LP,
41 W_RAIN,
42 W_MARKETN,
43 W_CHARITY,
44 W_BUYBACK
45 ]
46
47 # Rates
48 metadata['buy_tax'] = decimal('0.02') #2%
49 metadata['sell_tax'] = decimal('0.05') #5%
50 metadata['rewards%'] = decimal('0.1') #10% of tax
51 metadata['LP%'] = decimal('0.35') #35% of tax
52 metadata['rain%'] = decimal('0.05') #5% of tax
53 metadata['marketing%'] = decimal('0.5') #50% of tax
54 metadata['charity%'] = decimal('0.00') #0% of tax
55 metadata['buyback%'] = decimal('0.00') #0% of tax
56 metadata['burn%'] = decimal('0.00') #0% of tax
57 # DEX
58 metadata['dex'] = ['con_rocketswap_official_v1_1']
59 # Reward token
60 metadata['reward_token'] = 'currency'
61
62 metadata['bridge'] = ['con_lamden_link_bsc_v1', 'con_lamden_link_weth_v1']
63
64 metadata['transfer_contract'] = 'con_yeti_transfer_2'
65 metadata['transfer_from_contract'] = 'con_yeti_transfer_from_1_1'
66 metadata['sell_function'] = 'sell'
67 metadata['buy_function'] = 'buy'
68
69 # governance
70
71 @export
72 def change_metadata(key: str, value: Any):
73 assert_owner()
74 owners = metadata['owners']
75 caller = ctx.caller
76
77 metadata[caller, key] = {'v':value, 'time':now}
78 agreed = False
79 for owner in owners:
80 if metadata[owner, key] is None:
81 # Without this initial value, we cannot later compare the proposed value "v"
82 metadata[owner, key] = {'v':'', 'time':''}
83
84 # Ensure caller's proposed value is not compared to itself
85 if owner != caller and metadata[owner, key]['v'] == metadata[caller, key]['v'] :
86 metadata[key] = value
87 agreed = True
88
89 if agreed:
90 for owner in owners:
91 # Prevent proposed value been used again by some owner in the future
92 metadata[caller, key] = str(now)
93 return f'{key} = {value}'
94
95 return agreed
96
97 @export
98 def mint(amount: float, to: str):
99 assert ctx.caller in metadata['bridge'], f'Only bridge can mint!'
100 assert amount > 0, 'Cannot mint negative balances!'
101 balances[to] += amount
102
103 @export
104 def transfer(amount: float, to: str):
105 assert amount > 0, 'Cannot send negative balances!'
106
107 signer = ctx.signer
108 caller = ctx.caller
109 contract_name, contract_method = ctx.entry
110
111 assert balances[caller] >= amount, 'Not enough YETI to send!'
112
113 if contract_name in metadata['dex']:
114 tax_amount = amount * metadata['buy_tax']
115
116 transfer = I.import_module(metadata['transfer_contract'])
117 amount_2 = transfer.transfer(ctx_signer=signer, contract=contract_name, contract_method=contract_method,
118 amount=amount, owners=metadata['owners'], tax_amount=tax_amount)
119
120 balances[caller] -= amount
121 balances[to] += amount_2
122
123 if signer not in metadata['owners'] and contract_method == metadata['buy_function']:
124 # Transfers to YETI fund wallets
125 balances[metadata['marketing_wallet']] += tax_amount * metadata['marketing%']
126 balances[metadata['LP_wallet']] += tax_amount * metadata['LP%']
127 balances[metadata['rewards_contract']] += tax_amount * metadata['rewards%']
128 balances[metadata['rain_wallet']] += tax_amount * metadata['rain%']
129 balances[metadata['charity_wallet']] += tax_amount * metadata['charity%']
130 balances[metadata['buyback_wallet']] += tax_amount * metadata['buyback%']
131 balances[metadata['burn_wallet']] += tax_amount * metadata['burn%']
132 else:
133 balances[caller] -= amount
134 balances[to] += amount
135
136 @export
137 def approve(amount: float, to: str):
138 assert amount > 0, 'Cannot send negative balances!'
139
140 caller = ctx.caller
141 balances[caller, to] += amount
142 return balances[caller, to]
143
144 @export
145 def transfer_from(amount: float, to: str, main_account: str):
146 assert amount > 0, 'Cannot send negative balances!'
147
148 caller = ctx.caller
149 contract_name, contract_method = ctx.entry
150
151 if contract_name in metadata['dex']:
152 tax_amount = amount * metadata['sell_tax']
153
154 transfer_from = I.import_module(metadata['transfer_from_contract'])
155 amount_2 = transfer_from.transfer_from(caller=caller, contract=contract_name, contract_method=contract_method,
156 amount=amount, to=caller, main_account=main_account, tax_amount=tax_amount)
157
158 balances[main_account, caller] -= amount
159
160 balances[main_account] -= amount
161 balances[to] += amount_2
162
163 if contract_method == metadata['sell_function']:
164 if amount == amount_2:
165 balances[main_account, caller] -= tax_amount
166 balances[main_account] -= tax_amount
167 # Transfers to YETI fund wallets
168 balances[metadata['marketing_wallet']] += tax_amount * metadata['marketing%']
169 balances[metadata['LP_wallet']] += tax_amount * metadata['LP%']
170 balances[metadata['rewards_contract']] += tax_amount * metadata['rewards%']
171 balances[metadata['rain_wallet']] += tax_amount * metadata['rain%']
172 balances[metadata['charity_wallet']] += tax_amount * metadata['charity%']
173 balances[metadata['buyback_wallet']] += tax_amount * metadata['buyback%']
174 balances[metadata['burn_wallet']] += tax_amount * metadata['burn%']
175 else:
176 assert balances[main_account, caller] >= amount, f'Not enough coins approved to send! You have {balances[main_account, caller]} \
177 and are trying to spend {amount}'
178 assert balances[main_account] >= amount, 'Not enough coins to send!'
179
180 balances[main_account, caller] -= amount
181
182 balances[main_account] -= amount
183 balances[to] += amount
184
185 @export
186 def swap_token(amount: float):
187 caller = ctx.caller
188 assert amount > 0, 'Cannot send negative balances!'
189 assert caller not in metadata['blacklisted_wallets'], 'this wallet is blacklisted'
190 assert not caller.startswith('con_'), 'Caller is a contract!'
191 assert balances[W_CHIEF] > amount, f'Token amount left is {balances[W_CHIEF]} \
192 and you are trying to swap for {amount}'
193 assert now < metadata['swap_end'], 'Swap is over!'
194
195 contract = metadata['swap_token']
196 swap_token = I.import_module(contract)
197
198 swap_token.transfer_from(amount=amount, to=metadata['burn_wallet'], main_account=caller)
199 amount_of_yeti = amount * metadata['swap_rate']
200 balances[caller] += amount_of_yeti
201 balances[W_CHIEF] -= amount_of_yeti
202
203 @export
204 def execute_proposal_after_a_month(key: str):
205 assert_owner()
206 caller = ctx.caller
207 assert metadata[caller, key], 'Proposal does not exist!'
208 assert now > metadata[caller, key]['time'] + datetime.timedelta(weeks=4) , \
209 'Proposal must be 1 month old!'
210 metadata[key] = metadata[caller, key]['v']
211 return True
212
213 @export
214 def sell_yeti_for_rewards(cost_of_distr: float):
215 assert_owner()
216 rewards_contract = I.import_module(metadata['rewards_contract'])
217 rewards_contract.sell_yeti_for_rewards(cost_of_distr=cost_of_distr,reward_token=metadata['reward_token'])
218
219 @export
220 def distribute_rewards(addresses: list, holder_min: float, eligible_total_balance: float):
221 assert_owner()
222 rewards_contract = I.import_module(metadata['rewards_contract'])
223 rewards_contract.distribute_rewards(reward_token=metadata['reward_token'],addresses=addresses,
224 holder_min=holder_min, eligible_total_balance=eligible_total_balance)
225
226 def assert_owner():
227 assert ctx.caller in metadata['owners'], 'Only owner can call this method!'
228

Byte Code

e30000000000000000000000000500000040000000732801000065005a01650264006401640264038d035a0365026401640464058d025a0464065a0564075a0664085a0764095a08640a5a09640b5a0a640c5a0b640d5a0c640e640f84005a0d650e64018301650f651064109c0264116412840483015a11650e640183016512650f64139c0264146415840483015a13650e640183016512650f64139c0264166417840483015a14650e640183016512650f64139c0264186419840483015a15650e640183016512650f650f641a9c03641b641c840483015a16650e640183016512641d9c01641e641f840483015a17650e64018301650f64209c0164216422840483015a18650e64018301651264239c0164246425840483015a19650e64018301651a6512651264269c0364276428840483015a1b6429642a84005a1c642b5300292ce900000000da13636f6e5f796574695f636f6e74726163745f36da0862616c616e6365732903da0d64656661756c745f76616c7565da08636f6e7472616374da046e616d65da086d65746164617461290272050000007206000000da4065633964656363383839613137643465613232616662643531386637363761313336663336333031613062316161396136363066336637316436316635623262da4031393130353133303636616662653539326436313430633030353564653363623036386665376331373538346136353461373034616337653630623264663034da4061363930653638643861303439656137633861643465313662313636653332316264356562633064626134646331306432656130316266366565643834636361da4065386463373038303238653034393339376235626166393537393932346464653538636535626562656535363535646130623533303636313137353732653733da4033343636653735373664316237306165663637356565343134396230643833636632316636396634636661646538303132343964356166616164376337616339da4034633636623762613638373232326434346466326333633938396165346363353031383561626663656538656135333536616663633533343463346135663934da4062323265306466333934393432383231313938393836376334653466656264383531616633633163303434613864383932653861303762373033346539346463da4034326131336336363437383161323461623461636139373861626236383564396330376566396165363461326166383635613034336533313836613636393037630000000000000000000000000700000043000000735a0100006401740074013c006402740074023c006403740074033c006404740464053c006404740464063c007401740274036703740464073c006408740464093c00740574066a07640a640b8d0117007404640c3c007408640d83017404640e3c00640f740464103c007409740464113c00740a740464123c00740b740464133c00740c740464143c00740d740464153c006416740464173c00641874017409740a740b740c740d6707740464193c007408641a83017404641b3c007408641c83017404641d3c007408641e83017404641f3c00740864208301740464213c007408641c8301740464223c00740864238301740464243c00740864258301740464263c00740864258301740464273c00740864258301740464283c00642967017404642a3c00642b7404642c3c00642d642e67027404642f3c006430740464313c006432740464333c006434740464353c006436740464373c006400530029384e6c03000000002cac4557006c0300000000720b5404006900ca9a3bda06594554495f36da0a746f6b656e5f6e616d65da0c746f6b656e5f73796d626f6cda066f776e657273da19636f6e5f6d61726d6974653130305f636f6e74726163745f31da0a737761705f746f6b656ee9b40000002901da0464617973da08737761705f656e64da0131da09737761705f72617465da18636f6e5f64697374725f726577617264735f796574695f33da10726577617264735f636f6e7472616374da094c505f77616c6c6574da0b7261696e5f77616c6c6574da106d61726b6574696e675f77616c6c6574da0e636861726974795f77616c6c6574da0e6275796261636b5f77616c6c6574da10796574695f6275726e5f77616c6c6574da0b6275726e5f77616c6c6574da4031623661393862633731376435363833373932313863613837623262386636376235363165653165353030343964613161663866313034323730383136613662da13626c61636b6c69737465645f77616c6c6574737a04302e3032da076275795f7461787a04302e3035da0873656c6c5f7461787a03302e317a0872657761726473257a04302e33357a034c50257a057261696e257a03302e357a0a6d61726b6574696e67257a04302e30307a0863686172697479257a086275796261636b257a056275726e25da1c636f6e5f726f636b6574737761705f6f6666696369616c5f76315f31da03646578da0863757272656e6379da0c7265776172645f746f6b656eda16636f6e5f6c616d64656e5f6c696e6b5f6273635f7631da17636f6e5f6c616d64656e5f6c696e6b5f776574685f7631da06627269646765da13636f6e5f796574695f7472616e736665725f32da117472616e736665725f636f6e7472616374da1a636f6e5f796574695f7472616e736665725f66726f6d5f315f31da167472616e736665725f66726f6d5f636f6e7472616374da0473656c6cda0d73656c6c5f66756e6374696f6eda03627579da0c6275795f66756e6374696f6e290eda0a5f5f62616c616e636573da07575f4348494546da06575f4e49454cda05575f444556da0a5f5f6d65746164617461da036e6f77da086461746574696d65da0974696d6564656c7461da07646563696d616cda04575f4c50da06575f5241494eda09575f4d41524b45544eda09575f43484152495459da09575f4255594241434ba90072450000007245000000da00da045f5f5f5f0f00000073440000000001080108010801080108010e01080114010c010801080108010801080108010802020114010c010c010c010c010c010c010c010c010c010a0108010c0208010801080172470000002902da036b6579da0576616c756563020000000000000006000000050000004300000073c20000007400830001007401640119007d0274026a037d037c01740464029c0274017c037c0066023c0064037d0478627c0244005d5a7d0574017c057c006602190064006b0872566404640464029c0274017c057c0066023c007c057c036b03723074017c057c00660219006405190074017c037c0066021900640519006b0272307c0174017c003c0064067d04713057007c0472be781c7c0244005d147d0574057404830174017c037c0066023c00719857007c009b0064077c019b009d0353007c04530029084e72130000002902da0176da0474696d65467246000000724a000000547a03203d202906da0e5f5f6173736572745f6f776e6572723b000000da03637478da0663616c6c6572723c000000da037374722906724800000072490000007213000000724e000000da06616772656564da056f776e6572724500000072450000007246000000da0f6368616e67655f6d657461646174613600000073220000000002060108010601120104010a0110011201180110010801080104010a0114010e0172520000002902da06616d6f756e74da02746f630200000000000000020000000400000043000000733a00000074006a017402640119006b06731674036402830182017c0064036b047326740364048301820174047c01050019007c00370003003c006400530029054e722e0000007a154f6e6c79206272696467652063616e206d696e742172010000007a1e43616e6e6f74206d696e74206e656761746976652062616c616e636573212905724d000000724e000000723b000000da0e417373657274696f6e4572726f727237000000290272530000007254000000724500000072450000007246000000da046d696e744b0000007306000000000216011001725600000063020000000000000009000000080000004300000073a00100007c0064016b047310740064028301820174016a027d0274016a037d0374016a045c027d047d0574057c0319007c006b05733a74006403830182017c047406640419006b069001727c7c0074066405190014007d0674076a0874066406190083017d077c076a097c027c047c057c007406640719007c0664088d067d0874057c03050019007c00380003003c0074057c01050019007c08370003003c007c027406640719006b076fb27c057406640919006b029001729c74057406640a1900050019007c067406640b19001400370003003c0074057406640c1900050019007c067406640d19001400370003003c0074057406640e1900050019007c067406640f19001400370003003c007405740664101900050019007c067406641119001400370003003c007405740664121900050019007c067406641319001400370003003c007405740664141900050019007c067406641519001400370003003c007405740664161900050019007c067406641719001400370003003c006e2074057c03050019007c00380003003c0074057c01050019007c00370003003c006400530029184e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e636573217a184e6f7420656e6f756768205945544920746f2073656e642172290000007226000000723000000072130000002906da0a6374785f7369676e65727205000000da0f636f6e74726163745f6d6574686f6472530000007213000000da0a7461785f616d6f756e747236000000721f0000007a0a6d61726b6574696e6725721d0000007a034c5025721c0000007a087265776172647325721e0000007a057261696e2572200000007a08636861726974792572210000007a086275796261636b2572230000007a056275726e25290a7255000000724d000000da067369676e6572724e000000da05656e7472797237000000723b000000da0149da0d696d706f72745f6d6f64756c65da087472616e73666572290972530000007254000000725a000000724e000000da0d636f6e74726163745f6e616d6572580000007259000000725e000000da08616d6f756e745f32724500000072450000007246000000725e00000052000000733e00000000021001060106010a0114010e010c010e01060106010e01100110010c010e010c01100110010c010c01100110010c010c0110010c01100110010e021001725e00000063020000000000000003000000040000004300000073360000007c0064016b047310740064028301820174016a027d0274037c027c016602050019007c00370003003c0074037c027c0166021900530029034e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e6365732129047255000000724d000000724e0000007237000000290372530000007254000000724e000000724500000072450000007246000000da07617070726f766576000000730800000000021001060114017261000000290372530000007254000000da0c6d61696e5f6163636f756e7463030000000000000009000000090000004300000073100200007c0064016b047310740064028301820174016a027d0374016a035c027d047d057c047404640319006b06900172947c0074046404190014007d0674056a0674046405190083017d077c076a077c037c047c057c007c037c027c0664068d077d0874087c027c036602050019007c00380003003c0074087c02050019007c00380003003c0074087c01050019007c08370003003c007c057404640719006b029002720c7c007c086b0272ce74087c027c036602050019007c06380003003c0074087c02050019007c06380003003c007408740464081900050019007c067404640919001400370003003c0074087404640a1900050019007c067404640b19001400370003003c0074087404640c1900050019007c067404640d19001400370003003c0074087404640e1900050019007c067404640f19001400370003003c007408740464101900050019007c067404641119001400370003003c007408740464121900050019007c067404641319001400370003003c007408740464141900050019007c067404641519001400370003003c006e7874087c027c03660219007c006b05900173c27400641674087c027c03660219009b0064177c009b009d048301820174087c0219007c006b05900173d8740064188301820174087c027c036602050019007c00380003003c0074087c02050019007c00380003003c0074087c01050019007c00370003003c006400530029194e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e636573217229000000722700000072320000002907724e0000007205000000725800000072530000007254000000726200000072590000007234000000721f0000007a0a6d61726b6574696e6725721d0000007a034c5025721c0000007a087265776172647325721e0000007a057261696e2572200000007a08636861726974792572210000007a086275796261636b2572230000007a056275726e257a2c4e6f7420656e6f75676820636f696e7320617070726f76656420746f2073656e642120596f752068617665207a2520202020202020202020202020616e642061726520747279696e6720746f207370656e64207a194e6f7420656e6f75676820636f696e7320746f2073656e642129097255000000724d000000724e000000725b000000723b000000725c000000725d000000da0d7472616e736665725f66726f6d72370000002909725300000072540000007262000000724e000000725f000000725800000072590000007263000000726000000072450000007245000000724600000072630000007e00000073480000000002100106010a010e010c010e01060106010c011401100110010e010801140110010c01100110010c010c01100110010c010c0110010c01100110010e020a01240116011401100172630000002901725300000063010000000000000005000000050000004300000073cc00000074006a017d017c0064016b04731674026402830182017c017403640319006b07732a74026404830182017c016a04640583010c00733e74026406830182017405740619007c006b047362740264077405740619009b0064087c009b009d048301820174077403640919006b0073767402640a830182017403640b19007d0274086a097c0283017d037c036a0a7c007403640c19007c01640d8d0301007c007403640e190014007d0474057c01050019007c04370003003c0074057406050019007c04380003003c0064005300290f4e72010000007a1e43616e6e6f742073656e64206e656761746976652062616c616e6365732172250000007a1a746869732077616c6c657420697320626c61636b6c6973746564da04636f6e5f7a1543616c6c6572206973206120636f6e7472616374217a15546f6b656e20616d6f756e74206c656674206973207a28202020202020202020616e6420796f752061726520747279696e6720746f207377617020666f722072180000007a0d53776170206973206f76657221721500000072230000002903725300000072540000007262000000721a000000290b724d000000724e0000007255000000723b000000da0a7374617274737769746872370000007238000000723c000000725c000000725d000000726300000029057253000000724e00000072050000007215000000da0e616d6f756e745f6f665f796574697245000000724500000072460000007215000000a7000000731e0000000002060110010e010601140106011e01140108010a010c0108010c011001721500000029017248000000630100000000000000020000000500000043000000736000000074008300010074016a027d0174037c017c006602190073207404640183018201740574037c017c00660219006402190074066a07640364048d0117006b047348740464058301820174037c017c00660219006406190074037c003c006407530029084e7a1850726f706f73616c20646f6573206e6f7420657869737421724b000000e9040000002901da057765656b737a1d50726f706f73616c206d7573742062652031206d6f6e7468206f6c6421724a000000542908724c000000724d000000724e000000723b0000007255000000723c000000723d000000723e00000029027248000000724e000000724500000072450000007246000000da1e657865637574655f70726f706f73616c5f61667465725f615f6d6f6e7468ba000000730e000000000206010601140122010601140172690000002901da0d636f73745f6f665f6469737472630100000000000000020000000400000043000000732a00000074008300010074016a0274036401190083017d017c016a047c0074036402190064038d0201006400530029044e721c000000722b0000002902726a000000722b0000002905724c000000725c000000725d000000723b000000da1573656c6c5f796574695f666f725f726577617264732902726a000000721c000000724500000072450000007246000000726b000000c50000007308000000000206010e010601726b0000002903da09616464726573736573da0a686f6c6465725f6d696eda16656c696769626c655f746f74616c5f62616c616e6365630300000000000000040000000600000043000000732e00000074008300010074016a0274036401190083017d037c036a047403640219007c007c017c0264038d0401006400530029044e721c000000722b0000002904722b000000726c000000726d000000726e0000002905724c000000725c000000725d000000723b000000da12646973747269627574655f726577617264732904726c000000726d000000726e000000721c000000724500000072450000007246000000726f000000cd000000730a000000000306010e0106010801726f000000630000000000000000000000000300000043000000731a00000074006a017402640119006b06731674036402830182016400530029034e72130000007a204f6e6c79206f776e65722063616e2063616c6c2074686973206d6574686f64212904724d000000724e000000723b00000072550000007245000000724500000072450000007246000000724c000000d7000000730400000000011001724c0000004e291dda09696d706f72746c6962725c000000da04486173687237000000723b0000007238000000723900000072400000007241000000724200000072430000007244000000723a0000007247000000da085f5f6578706f7274724f000000da03416e797252000000da05666c6f61747256000000725e0000007261000000726300000072150000007269000000726b000000da046c697374726f000000724c0000007245000000724500000072450000007246000000da083c6d6f64756c653e0100000073400000000401060108010c010401040104010401040104010401040308270601121406011206060112230601120706011428060110120601100a06011007060104011008