Skip to content

Instantly share code, notes, and snippets.

@Rachamv
Created December 20, 2024 09:42
Show Gist options
  • Save Rachamv/a0e85fc6e36ef0f5f46d40bbde2160ff to your computer and use it in GitHub Desktop.
Save Rachamv/a0e85fc6e36ef0f5f46d40bbde2160ff to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.19+commit.7dd6d404.js&optimize=false&runs=200&gist=
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/RachCoinEcosystem/updraft.cyfrin.io.git
[http]
corsProxy = https://corsproxy.remixproject.org/
[branch "main"]
merge = refs/heads/main
remote = origin
ref: refs/heads/main
DIRCge4�$ge4�$+��#�W��e!8*�0i��*x�d��Blockchain Basics/README.mdge4!��ge4!��/��"��D�'�TXc�O���3M�L��*Introduction to Python and Vyper/README.mdge4�$ge4�$,��?�y�ܔ�jq��^�D�s� README.mdge4�$ge4�$-��N"�E��? S�8��wpu��-Solidity Smart Contract Development/README.mdge4�$ge4�$.��3���7{"��A��!B㡈D�5Solidity Smart Contract Development/SimpleStorage.sol~��P��<�� nK���ե���
�tOc
V�2�����l!�k�
xW��e!8*�0i��*x�d�鄋�7{"��A��!B㡈D�^�ۏ*|�{����ޘ��̣ e�s ��B���A4?޺`VJ1�QC|�w���V�^; �y�ܔ�jq��^�D�s����ڤ��ixo�I[�#)���D�'�TXc�O���3M�L���E��? S�8��wpu���ޑ�`���0�\���粵N��
�b�8:Y}?�_F*81(< �� ���Ց]��da�{h�6^�����)��uw�7��zj��a���
PACK
�Ax�u���HD�|Eݍiٗ���.�EADoUE��&�"_�N�g�y�x9�� KkVs)$g��\���QMմo��<QO�М��S1��y&�"�"�&`�)X��@YD�\b�4�������.@P��V�����U����jTT?H[�8EeU%�X�e��[�H{�-�݄�Ϧ������}��S�=oCq�+���>8l ��>�OG���� �!� C=t�k�����P�&�t� ��# ��tr��Ҏ��-V�Ź�� H����_B#��&Ki��ď���:�d��V̨ �����GdԊWGe�- 0]i�Zh�W[�9�7��V0��+;��^�]���UҠ�����O����ɍ2`/ğk�V ' k뙢j9s�����3�ٱ*���!3R�����T�7Ky9��-,�Lqޜ�G)�’��Uc�t������σ��t_ĉǛ�hwѪ뽯b5�&%�U�l�9'�$�ys�ol��I*Y�Ή�j��{
�V1'����ۊ�(��f�O��$G�vg��x�w�zN�� &�¨�ͻ���'��%-���K�Z�!K 8T5����[�׶߮�p���3Eے}w<�k�F�P�����r 0�\Q�!������F|z�)~^3k�����d�/kG����`���o5��_L��Um��pX�LQ���@���Z|hX�;��k�5lVڦ�2��t��Ā�Xn�s��e�s����\֡a���޺ݫ��.���Y6�Y�M�1���T�/�;�N�ׅ�&�����K�����o��#�a�O���@�6�7]K�� x�31��������<�����b��ܩ[�6��qz�X~�lFG�{&`��y%E�)��%��y
%�
�%@Vb^�BXeAjî�0/�s��5��;E&�;g�`h``fb�����몗��p���)��X
o���;&�2�Xb+�����̔̒J���Ģ�|�}��%
.�e�9���y% aK��e�\��x�P�����/�*'�LX�x�340031Qrut�u��Ma�ِ��d��� �g��V�֔�/�� i��x��Zm�$����p@�q��=AB>��D"���pdEэ��=c������_��r��.'�����r�<�T�>��c�6��gzۚo\>�x��}2_����N��~���U�eg�'כKM{c�3 ��,��3>k��|v&D�B����G�O6�*���r29`]r��E�f#���E[e�>�|Š��9����j�_}�ܘ�'� ~� ' CУh�(��]}MCg�M�S��0f:��3�g� ���lU�B�Z8����l_˕*[����8��`�����k�d�;� #Yӫ����k78��Ϧ�K7�M/
���0�EEg��P��w�Ŵ7gȏk$� �b �e-xO�{�
��!҂�����M� ����-��K����
6�[_:]Rv��P�ʜ��֌[$g� �;�^#F���^�a蝱D�!���k�ʏ7�_u�ΥI��)�!d(�Ӡ�:�_���
��1p�+�
> =7�Z�˚�� �P�dc}f�2g�>ؘ}���J�#�_k7�rc��]b�c������� a䘋�TMB��4�Lɡ���aoz ���_ȇ�U2&I����Ӏ8�7j�-h���p0A�=�D!���}�Ҝ'D� �H��j�s���1eZG"��zH����V�!�.��Zs�Mp\�'�wBC ��uH�ƈ�h*����U� \�c`" ���;x%�ѧ���!�x�NMJ�� WC u�lF���+�Ӷ%� �e�\��B<� �p*g3ֲi���ƶg{�ϼ1_�՝G�6����.`����Ѩ��w�|�s�_�!c7���ǩ�8���.����zkZ��WwAS<'4��u�c�� K��|x?��C�;�غ���3:'(�5�D� �H�V�$�;]�����]7f{��<Z?�Q��e�I
D�����pbx�5 <g'���N�n����j��qM�l^�w����1KKı��z�� 6BMU�U��6<�4�0fEH����ڇ��c��/��Oc�_����SH?��f_�#���.���[8r/Ѱ|�}���� h�n�F?9``X��! ����g�� !��p.��>PT���u����MCUօ�aٖ�g�?���^�[�j���5���]�Z�9[&y���Z(�2*��p_]^����r#�v���6��t�q�S��ǧ��"�w�sS h���(�+��mG7}��^����R��� x6�5���]���C+�Z'����Ý�Ġ��(�;�K 2�k���=>N�8 � �a�p��@��� 6ߩ�޷ub��/&�D!���4��$l��y��p��B��0�����%�G"W������y�����Rj��E8$ o�����~K�� 3\j�h�#C2�`°�������$�=$7���C阔������O��.;����� {t��o��)I�����{�A����nU�%V��,���Iպ��KJx� ����\t� ����W�&`9��u�c�3�^������J�8��Gt�l���nִ�0�\��x7RJ �fJJ�;ҧu���F�_��ȩd>QT}��VX���@��١x���6?Bn�E�U�Rn�DY�枀��V8����͊[uP\U�'j h�c�B��k�N��^��w���37d���7�=���g�{ҍuUa��N�W��D_׭��]2K�. G��� �l?1�d���%=����Kn�ĵ$�����ړ\��p]]#h:%K;U��7����R7g(Fv��9�"d;�b���_+�؞���ڔ8I�_�B�d�e�j�B�:�'E��SM�� �:�X)�m:� o?!�#�C��a�>��N=ESR��Y�طB��7��v(J �/�n��έ�>�#�"��$X�:i�n���L���񎭎\Q t����^���DN�M�%d�Rv�&J@ο�X2i�q�> e�k?b�[R�H��F1\p�k�39��%|����0y���鸇�X P=�7\�O���,7l�RҙD7�z�%2MtL����l�2��[���y�BM檋pAM��›VaP��#�w�maoB�a������Д��%V��Q�I�/���ܙQ1m��8�u&H՘XE��6�{d=�y`�EC ɝ�jB�2E)s�i��2�*=�)���3���8� �=��w�L ��n���e/uT@^~Uy� �ңC%ݯ�,7�;��Yk�
�9��)�6�h)�x�X)�j�a�t�2Tu��)���T�H5��k��o)��:i�27Oe�7��k��ӆ�K��J"؆<-^+�,�ch�fb��?4���J٘ʌ�Jq��:7T�[]�ʤܟ�o�\��uAU�4��{']�?�p �}�]��2�W���Y�X�o���P-��*g )}��u&,���2������3i��V�g��x�R��
�] ��up��.�P����c�����/��o 7e�17geL5d1��=�G)6�4E�*E�W���M�< f��HH��q��iݗ�;sy�O�`�x'#i��������H�!��%>:�Jx֮ g������d�[�0ͷ�U�\}.�V�X��`k���%�`��� _���S��*��LZu��py�&,�W������LY�{eZu���������it���1vm_�V��J}%��� ���n���£��Z��@G�3��+�U�U]����d^��������Nfc��:i󠦮��1��~� <p,V��%v��t6�5v�5L� ����L'�d}m �ul�+��H��58�Ml{р� E�YH������m�Q'�is�nQ�W ���P��6̌C�����s�e^��C�|p����2���}*ӷ7��
�L� ��|��e
#[�,��s؂ k�!�7g�o�VpԬ�&��B/���t�⚖���֢%���n����0i��򡶝��^��^���e?��|_����9Jxh\��nS���JI�ο���L��W�$��n��h�M��
��m���v�) Mӂ�S��#U�b`6��z�s���z��v3���՜���+SI�-�hP�Շ6Q��TF*G����Ͳ��f{�����i9�P�PS�'�ġ��j�>
A�²D�P $z�_ ���iDF�Nz�8-��$P}'7S�HxK�p��6O�),׍�<Bc�6c���|*���ϴ.M�e(��a�h�2�-�O@� �k�"��&ͧ7f_v����q/5���\>T�V֭ ��ʗ'����81?���|�gW��t�Zm뚯-��AS�p��N���T������)�!�|�B[B~��)��靖� ���ĖOn|x�T,P�*�O;�|ߢ�u�4y�ө���_�&��~݂��l[&�S��T�֕q�Á���8�n9�%$ɣ/#� ڜ�(��_���E���Ns�U�3�yʐ����J̡x�`~���޻������Ug��v�7��koK���f|-��Ȍ��-g��<a~�Wt�Hw�O���� ��7���ʼn9R��� ��R��6c �����P�O(��Eb��߻,��U����9e����J�iBzB5��?<��$k�������?.������U �qυk>_���_E����?�o!�)�Ģ��O�qďdJ�/0z<��ŵ��x�340031Qrut�u��Max�K}eHD�-�M_�}�2�,>�-g�x���>�u�%#o�x�SV(-H)JL+�K�L+������
���L�,�T�M,*Qp��+)JL.QpI-K��/�M� ��rݗ�x�340031Qrut�u��Max�͵��=�\� ��R�� J�Bg����%�����0�tO6��V�Z��zXD�����WsB��� x��\ݎ�u�'�w(��]���DRk���G�"�WRA�陮�)oOw��{gdž#��؎a�@��"�E�r @�F/=B�wΩ��ኰm�$g��N�����ܾm��K]�6�����7nވ���,����2�\�x3��]ڼN����Xo�ER�i���5�b9q�MM]�ie�ښeQY3�/��^�L�[?4W4�-IeE2)����K�r�i��T�Ŵ�CkW���-���w���~�uQ���aQ������������]�o����m������?�����?}���|�/�@1�ɋ��d���͌N�D'�,|�[-�<[���[��E�Y��ބ��lꪱ���%��X�E���8�k;���k\^��&|�Z�&o�|[���������<r�&�S��y�>I��zo�� �p��Lֵ����In�U��bF;]�8+�u�� c]4�yi��e�/L2�җ����{���tJV�3{i3S%+>ФI��c�o�6_�%���H�����w�� )���x�%SK�Mm�T���)�D��"�JE_� Vȃ��O+7!��*e��$ ���C�.�u�O�����M�mM�d/�*�'K�i�H���eQ�ھb��酛.̊7�lI$-�O-Z_,-��'i�=��� Aֺ��M ��6c(���Y�Ƣ���8(��P7�E����'��]sN���%�3o��r6�3Oa�a�a2f_ک����@���>q5Ʉ ��4���Y'����[um`�����v.�Gݥ��l=�'����h��q���zb~��)�z}����xR�c�F���5��^:��u&P{Ufn�j��D��;�|.Jc�y��5�_|"�<�v�EV�#�w�D�� iEF8Ȗ۹']�@�wP�m�-g䛳�{�������Ӕ��Nձyyz~�FY%�%�0�w`#R��J��y���������� C����&�M���J���6�<~�+|]�w������i�-��z}���G6�$ܣ��qǀJ�u����U����G����<|��ѳG��<}t�����ɽ�߻�h������T7atzp?�T�M$M��WQ�Sj�3�{D��
�,���iO �MH52+:�&U"�Y�ҧ�P�$kM�=��������r�vj�%P�]�ey� +x�TU�Ʃ��ߠ>�o�\��Ӵ��ϛtM8禛;����� ހ�w��l2v�k>�)e�$�
��1�ה�±�N@g>-V�9���)�?\�E֔p����=3������L2"��UN�ۇ�x�Q�P�۞P2�-��p�!�u����gUT�sxGS�r Ƒ��g|�������ѳ�tG�P���~J`��
��SU�ή�`g�Z ��u3�C����.>���y������o�/�E��D Ȋ��J���4�q����xBDv@����g����]~Yd�� "�-w�aB�T�:Թ�� 󪚟;��i�ᜀ�$�#�[���ZŃ+������?��<{���ɫ��^W��ᤍ1�$��Y�d��$MV�o )��p%�Hy� ��M��Gc�� [�JĂ���DC��3���NX5 5Ӛa�cWQ$C|ͭ٤��������kqD ��*:�V6� ?4*f���H�iYu���]X���S[��7G��}���΀G��М���
�ݮe�h��W�J ��d��۰"�>��_r)��������蛾V� 0���j �C��%�=fy�XX�0�U�F�vrXn���3�h Ff���mO!��<to Ru+��":�'p��R����!6"�P�/V9�t~� � Y�kD4E�0)��֒qO��Я��ܮB ��`�c9zl.우3����8^�1�� ��1V�%5A�!8+�t�g�,�j۟ʉF�O���zS���[��H�O��}u����W�D�n���h��4�| 6�G.��4K�B�쏫b)"�#bJ~B��I�� �re�E���.���S�}�c�XO>6g�q z�%�����jBNL�E��S�KY��|G�sK�M.���1��;��'�&�ˆ4c�-&���3�rd���ޣ���O�{`� �$��U�o���@>�Տy�_a󃻽�$���?C~�Cw�R��#t�B���-(m�{����?� \�M��K���� l-I��m�C�QVŔ�_BG� TL�s
�IZ]uma��L�d�D���(��Ԗd�+M��7U�|�$s�AR��M���*����KY�9��Ŕ����0��Qؤ^T���
�T��J�+$s��%=�CCb��\ "$F���b�s��=�X�npA�]��#W��8"�`
�dX���X ��(Ѹ�)�(B�8��,��d��� /�^0��O�.t0�k(`�M�,$H�-�۞1>B��D]� �vYP�4�����&��٩���?,��S��|t {���0w�R2Q��U'��ok��K��a�n\.ت��Y��dU�2ϫ�&�B�lSB���������, �q��c�t��^TUQ� }E��J�v*b1I��`f�ǧ�=�&I��Z,K���O9��,36窜V���K"���v��Q|@��'�.�Ur
oXɹ���g8_I�X� ŽC�m�,����n���QeU&�H�GL�i�� 
ڧ����J-��%.�a
��ӁW�˗R$���E�ͩE���Di�t�K+���J���(�%�l�@e�MlrL?}d�k֖��E�W�S�{��ӿ!f\��j"rP%8~+%@�:9M���)B��F�">E��1���U�C�(�T�[�����Ql���J���rş< GZn)��*/���֪Te�J��eQpu�r��>GJ�qJ)9r�Z���� e�؝b~"m.����I��/9�\g��[P�긲�'�?��� � �\� .¢P �Ǔ�"���!��K��ΐ ����=>::��Dt ҂B�x��Τ��=�.��B���Í\�>����l��"
=��)�'u�W�R���A[���:�vre`%*���%�u��E�%�x�VuD��I�R<@�h;95W��f�������� ��OD����E��� ҃��pȕ�OȂ��y����� ��j�͋�)�*��K�Y�3K|��?�S�q��^) �;�R��6�G��bP��p�$H�<Y+K�����
��e�bE䐦 �i�|�!�J��(JIZI�K~=6'�4��%A�O�b�ٰ�$A��Ps����zЂ|�T1ڦ���@y'��^� W}I���*de���� V�fWEy�R�G�!ot�촩 A�DѾ�Re����Q�'���Z�;
�H���
3 �P�*$Sx��k��VK��꼔4X�tV�9�"���"�![K]��h� �N�"�Rk
�} ��5I�.�����M�;p�bJ7*`v6�B
�ɳ�ՎkD�X}���L�˿m�$^��s�N��s��¶�E�p�)�G)�QL.QC�K�EK�Au�z�R Yקd]ik]|@߼Z�Ӡa]Gn��0�b��
Ր����̔��x˙8��9H��w�n�O�H�y ���J��g� �65'9+�" Li?N��Y�B]ElN�e���#'�7��"��J�#, �����#k�����J"<{)An(p⒨���%�!V
)_@0�*��@��8C�Ʃ#�!��Nl���/��Sz�ȿԘ�m�2�`J����g�d���\'�Y&d���/�&��+�xB?C^0��y&B�6��8)G�X�A����J���z�{����x�a�pX����W��c�WH\�䫅GO�r� ��Wh�N�)��a�[0��l!m�[�
�@�g�ͥ����?h���F�v��|R�1\�\Q M D�\��zʼn�d�<���m�D�ƶ���j��b�B\�TLJ��K��g~$ih@Mj����� �+ 2����9�4u3��H����i�L� PZ�ֱ �=hi$�S
Y%�Xx"��3��;4o��:�j�����-D<_���iR���l�u|j��X��&%��$R!�/��tB��/N�P��,���
(���IQ4����x��iP��=jB���&������ؼ�Q��V�zŀ�e,�y��jg5�Ww���B�zvvM}��5�"��#��J�+���$���Ԅ�L��U(o��6\%u��##po�d̹O��*R��r���r��Rת�� ;�1R O8�f �D9�w���[��͹������a���w�b���Y��/�k�o��G�p�ai+��UV�8|�iʣ��ݩU��!4Δ�pΎ�Ū
[Ȱ���gWdž�<OgO� mlk�
aY%�bݮ�zbo��ô���}��%��]Ո � $~ �~٤qY}�`�w~�N��d �p�*�m���N44ش�>�k�I���y��h!Qb�-3����:!��K�K��>X&��,�G�����vL�,P�"����p�~ ���@��p�B;���C�@�o������A��e�Q��<�sZ# iu���X�d4��y�o5���p>��f�����<w��`$�G�|���N���<\�P;� �U�|!ޝ'�'�q��w� ��v�z��L�8x���<b�]��o�EN��غ��V�;����-Z{��}^��[���dZn�{)��ِ���&��$����'�WM��Τ��]��g ��q�l�_DI�&�����b�Y�cy!�P7��R�ghbH��k��U�nņ�R��:TH��[���F'��Au�������v[�fD��a���?���5�b��b7 ��ע%���0g�f�(�nC�M� G��)��#�������7r�)Y������ �FN
ؤT���Y��4T��Ѷ��,�X@G�5��Tm�)�[&FO�s:k���XT
_�~�ģm疾`��ȧ�o���e� �rÖ܎W��ml<�ژ�7��
{5z���s��^���ilB85�����x��΋��2-tV�K)r �Z$���όw���K���}b����͖�P��4]㰥uk\ N�oo�J�m����r׭�f���\��/�R��a�'�-Bt��
e� ����z���A���O ��N'4�
�����׏��3�tƵ$�#� Z�+�m6lo��K�^���fF ��p�z�g4���@�Ѽ�dR �C8dg3
�):U�:5�@]]�NM� ��
��V�#�>�-/.���2�c,b�Mf���՛� �F-H��
����șN� �&���8?�)t^���6��M�&�Uਏ��d
ۇ>>����R�]���Y+�Ya�>�V�5
a� *2�r[��Y�E`�-o̝]vS>J.]U�<[\� #���aL"�k��yv�����W*sl3�B��[n��)fu��H��=z$]N�� (�y��yJl���d.ּŐ��r�H�RjE��G�B�I�'M�Gɳ7����4`�g���q����i��[�{�F%P•\v*Ks8!�;�ݼP-�2��}H��r��[�f?� i ��<��/��^g�C)�{�|��+mؚ�P��R���+��<���uzm���=�c�EF[%��+u\�&,�Z��"
�pKZ����m>#k%�swx�����A�Ns�Q��3iW�0���l�j�X���e�ߖ��\�b�˸���7B����X�[i�Q6�dd"<$���"j`��$.Yd�\H^�ЧiK&Zʉ~�V��!E��Gч7?)�!��`Ob���fZe;��[���&��B�
���ٜ�Ѱ��������<
����(<�\^3�޻2�$��H��7�@d��3�PS֋@�-Q�[��j=�IM$��[N���/����2��S�
E�>��͕08�������6�v B���8z�d�����j�@TU��-t��kJ}�R��,YK����*����A{�� {�1A0�X��}3qu�n7^�rR�
���_F����lsO�"fs���s�C�R5���˖�� 4��3�7��0���8 �fI`kx�)�U�,��x2F�7o|鬔�J�T�UYx��n�Y���g�,�
�Q�%%_2/ 4(&#��;���G+�zJ)#ނ�P ��z؅�%3���d�yY0�d�������%=/���Ԁ��h��� �̭G�DZQ���� ����wq��?� $a���!��自��yV�6�L��>t�*�\�h��q��m�v]�@�F��P-�$N%� a4��CL��#nPı��� *���p���Vh�w@P�ݩq�$�sl=S'��dfk-^ʠ�M�G���E�������{d0<o�#�/�\�l[D/�|y(� ��m��ݼq_v��{� }�/lF�(ia��H"�/�1Z��=I_�3}�TIR��V3� |�Z24��H(�� ëY7oL�!�y��x�٢��Wr��&����aw����ѝb�٬��3������2���e�G����v��L,�4(f�C&���*�?�;f���*(�5�Z�u�ns�����N��M)�"�;*�Y��c�Ó���+��J�F�ad��-}�=Τ�f�j7E���sb_��I���!BDli���NO���HD����w�g���s�RoA7 ��M�F|U2�KzW��ڽ�v."�'��6���6F�m�YO����R뵔�!��v�^xr݆�q&N]�f�
������5�M��3��@���o��R�;����̄ج�L�����<�O�@�kc(��w ��j����~�Gj���6�� �q(""b �4u�������X:O<b>�j2Q9���'�!M�s �u/lމ��[��Ѵ�b��0�/���8�/�uEk�$&��Hm�Q��<N����Nb����h���#g5�q�U������"m�5%��0��N��$�qA��g��ܕ%���C�4Iݽ�V��Íx�*����j�T�wNl�A�ZX��+���ˁ{[�O���/�߫�,Ӛ_�\��}���|����ƣ��wl�����H*s�5�`m�� �d�CE�IP�v�`�ĺ��W��
�*�n��Ԧ�j�Z�U����o���o(��_snu���l�T�����Ѝ���ˆ˝hI^� �x_����=�l�+�����>������ �x���� �y�b ��?�!+L`���݋%Cp�q��M�+�i<�v��w �*��_
r������v�3�H��S¦O�-/�PK�I�t@���\�Β����m���Q��#�-]�< os�dI��v��Q�~o��''(�=I��-A��4{���2��tl^2[��9 f���n�������_��N6���>�CF�wRe�̆�d��5����7Y�����98i�uku��b\���LЮ���ɶߏ���fR5�wf �|��*��6-�����q|gܜ���'۶Zr�^�Id�X��{-6�
�.v��k�_lx��m��������=_]���XH����TEt��cO��b�"�����z�04���ٮm(.t�)wye��S���)}��q-�-NՅjھ �ל�7�uc�����ˋ�Z���4t�������w��x���.��*gk�Ԏ�w�*����*|�?�i��3x���[K�@����B�VA��
^
�C�ԲM&u!��R �wsm Q0{曳��u�cX-6�'"W8ZD�5�)�[x^�]�uRI��� ���`����Y.Y�����d֫̓B���?-f\'\KjXQ�&���2���1��˫k`�#9 I5�v@Y�����Xx�R ^Sm2�r��%)?' �ӯ�c�]��������d�`�vV��k�Da47c$M��W��z��r��%Xlx��ͤl#��q�?�4�Zɻ]AХ�y;^�e�^��D�#?6�+�-�R��C�$����f2!3��u �A۵��Q�^����݃A���u�-�v�e�o��;�Ց]��da�{h�6^�����
�tOc
��EB�� �ea� \��qGD.���\3������3��(�^W��e!8*�0i��*x�d��?SI�,�A��`��N
_^�� e�s ��B���A4?޺`VJ1�QC|�w���V�^; ��M�F~�@m* �Jx��.��y�ܔ�jq��^�D�s�ӦX�OR �X�T?��ulj7j�D�'�TXc�O���3M�L�������D�J<����[>
���b��m�{q�zbX@7����C/�{�`D����粵:*:%N��
(��:Y}?�i+���l�;IEZ���7� ��t���%8)��L�lw� e��|�s4�`=5���6q����
PACK �Ax�u�ɒ�FD�|E� [@�F�8�M��B -�FA�. �z��W;�/"_Dr1N�,���B��9�HY�%i�9S!M89�*Ԑ�����L�X� <'��� E�E��s$����T��e?5��k �6I� ~�IZ&틤s?�*ڄ4�}�`%��2�� �0�7m�<�Xd�~t���f�U��\��Ԋ��H��'�i9.�,����f����{:���j������:�Mg_Z!,UUg��U�h���i��c_����L"]�I��etbzgۼ��vNB�]pO�f�/�Tcg6�3J���m{%Jw�bh&0�$���W,��Kq��{�\�k^��)^�u�Y���a��������%�@W��n�9=�U+��7+��l�o���r�L<[��q=�+�/� �yk�?R` Ƶi��ꆇ�v���&���x�X͓t���˴jz�Tc3s[�w�l7�t�P@K�e� �Z��L�d��W��w`���l�[d|y�}Z�f�B��K�0��(��b:;��&�̹���>C�� ����5�W}x��P�7�b�[�0�O�P�0POCbm�H���$���#��G���O��g������ȏ����7���K{��9�H�d�b��t���5<yݎ”���l���}���/�:n~͉߆�9F�H��>4����T*�(C�CC��P�:��
�]g$�/J���v.^���|�U_�ĊXwT�9y��txX�RRN\$�����sYz�ќ��Y�p�4�1K��\��i��5�}�
�ܖk@�� �5��TN:2�@���0J,�>x�u�I�F�������,�i � ���ؾ�7�ր�'sMީTRI�J�������4�g�OxZ��x��4'��X^��8"�1�F e�:��
�M��M~�q��v�R܍?�6��?Ӯ��< �@�$ES�u�
�|�
��xuc�7�ϲ�hN�'V��T���N���������K����뤧�$Ɋ$��o��@�c��g�I�v����j�_3��~(�֮;i. )ϲ�VŔ��fИt�{UT��y1��ͨH95�����Mb�CA��ԗ�vDft�^>��e17^�-�a-��r]�:Ed���5���I�~�����].n0pѴ ���EL����gJ�������`<�V�z kq�����̸��Gc�q���ו�sӸ�2��;9�Oa��k��z�A�x��-��F��Q��~�S�;�>�pd�}��bd3P���O<R�I=�ȤGm���M���z4�ø͌�؄\�]y&d���c:;����|�}����J:,%�C�Ԕ��y�'&���oח�K�]Vc�0��J�ݾ��Յ����k��ft '��z�N��
�_5o���~��wrV��}��р�>��Qv��V���[�!�� +�fٞp������۹�/����Q��* ����)�u"���6-r?డք;���w���4���]�)E��{G�p�ۺm�� l G���qחX )$��ae �j,�X���v؅
��Ó�u������5�lF�fBs��&�0^����Y�@Ԫ x�31��������<�����b��ܩ[�6��qz�X~�lFG�{&`��y%E�)��%��y
%�
�%@Vb^�BXeAjî�0/�s��5��;E&�;g�`h``fb�����몗��p���)��X
o���;&�2�Xb+�����̔̒J���Ģ�|�}��%
.�e�9���y% ��E|��^q=ľ�f}��N�,:�M�x�340031Qrut�u��Ma�ِ��d��� �g��V�֔�/�� i��x��Zm�$����p@�q��=AB>��D"���pdEэ��=c������_��r��.'�����r�<�T�>��c�6��gzۚo\>�x��}2_����N��~���U�eg�'כKM{c�3 ��,��3>k��|v&D�B����G�O6�*���r29`]r��E�f#���E[e�>�|Š��9����j�_}�ܘ�'� ~� ' CУh�(��]}MCg�M�S��0f:��3�g� ���lU�B�Z8����l_˕*[����8��`�����k�d�;� #Yӫ����k78��Ϧ�K7�M/
���0�EEg��P��w�Ŵ7gȏk$� �b �e-xO�{�
��!҂�����M� ����-��K����
6�[_:]Rv��P�ʜ��֌[$g� �;�^#F���^�a蝱D�!���k�ʏ7�_u�ΥI��)�!d(�Ӡ�:�_���
��1p�+�
> =7�Z�˚�� �P�dc}f�2g�>ؘ}���J�#�_k7�rc��]b�c������� a䘋�TMB��4�Lɡ���aoz ���_ȇ�U2&I����Ӏ8�7j�-h���p0A�=�D!���}�Ҝ'D� �H��j�s���1eZG"��zH����V�!�.��Zs�Mp\�'�wBC ��uH�ƈ�h*����U� \�c`" ���;x%�ѧ���!�x�NMJ�� WC u�lF���+�Ӷ%� �e�\��B<� �p*g3ֲi���ƶg{�ϼ1_�՝G�6����.`����Ѩ��w�|�s�_�!c7���ǩ�8���.����zkZ��WwAS<'4��u�c�� K��|x?��C�;�غ���3:'(�5�D� �H�V�$�;]�����]7f{��<Z?�Q��e�I
D�����pbx�5 <g'���N�n����j��qM�l^�w����1KKı��z�� 6BMU�U��6<�4�0fEH����ڇ��c��/��Oc�_����SH?��f_�#���.���[8r/Ѱ|�}���� h�n�F?9``X��! ����g�� !��p.��>PT���u����MCUօ�aٖ�g�?���^�[�j���5���]�Z�9[&y���Z(�2*��p_]^����r#�v���6��t�q�S��ǧ��"�w�sS h���(�+��mG7}��^����R��� x6�5���]���C+�Z'����Ý�Ġ��(�;�K 2�k���=>N�8 � �a�p��@��� 6ߩ�޷ub��/&�D!���4��$l��y��p��B��0�����%�G"W������y�����Rj��E8$ o�����~K�� 3\j�h�#C2�`°�������$�=$7���C阔������O��.;����� {t��o��)I�����{�A����nU�%V��,���Iպ��KJx� ����\t� ����W�&`9��u�c�3�^������J�8��Gt�l���nִ�0�\��x7RJ �fJJ�;ҧu���F�_��ȩd>QT}��VX���@��١x���6?Bn�E�U�Rn�DY�枀��V8����͊[uP\U�'j h�c�B��k�N��^��w���37d���7�=���g�{ҍuUa��N�W��D_׭��]2K�. G��� �l?1�d���%=����Kn�ĵ$�����ړ\��p]]#h:%K;U��7����R7g(Fv��9�"d;�b���_+�؞���ڔ8I�_�B�d�e�j�B�:�'E��SM�� �:�X)�m:� o?!�#�C��a�>��N=ESR��Y�طB��7��v(J �/�n��έ�>�#�"��$X�:i�n���L���񎭎\Q t����^���DN�M�%d�Rv�&J@ο�X2i�q�> e�k?b�[R�H��F1\p�k�39��%|����0y���鸇�X P=�7\�O���,7l�RҙD7�z�%2MtL����l�2��[���y�BM檋pAM��›VaP��#�w�maoB�a������Д��%V��Q�I�/���ܙQ1m��8�u&H՘XE��6�{d=�y`�EC ɝ�jB�2E)s�i��2�*=�)���3���8� �=��w�L ��n���e/uT@^~Uy� �ңC%ݯ�,7�;��Yk�
�9��)�6�h)�x�X)�j�a�t�2Tu��)���T�H5��k��o)��:i�27Oe�7��k��ӆ�K��J"؆<-^+�,�ch�fb��?4���J٘ʌ�Jq��:7T�[]�ʤܟ�o�\��uAU�4��{']�?�p �}�]��2�W���Y�X�o���P-��*g )}��u&,���2������3i��V�g��x�R��
�] ��up��.�P����c�����/��o 7e�17geL5d1��=�G)6�4E�*E�W���M�< f��HH��q��iݗ�;sy�O�`�x'#i��������H�!��%>:�Jx֮ g������d�[�0ͷ�U�\}.�V�X��`k���%�`��� _���S��*��LZu��py�&,�W������LY�{eZu���������it���1vm_�V��J}%��� ���n���£��Z��@G�3��+�U�U]����d^��������Nfc��:i󠦮��1��~� <p,V��%v��t6�5v�5L� ����L'�d}m �ul�+��H��58�Ml{р� E�YH������m�Q'�is�nQ�W ���P��6̌C�����s�e^��C�|p����2���}*ӷ7��
�L� ��|��e
#[�,��s؂ k�!�7g�o�VpԬ�&��B/���t�⚖���֢%���n����0i��򡶝��^��^���e?��|_����9Jxh\��nS���JI�ο���L��W�$��n��h�M��
��m���v�) Mӂ�S��#U�b`6��z�s���z��v3���՜���+SI�-�hP�Շ6Q��TF*G����Ͳ��f{�����i9�P�PS�'�ġ��j�>
A�²D�P $z�_ ���iDF�Nz�8-��$P}'7S�HxK�p��6O�),׍�<Bc�6c���|*���ϴ.M�e(��a�h�2�-�O@� �k�"��&ͧ7f_v����q/5���\>T�V֭ ��ʗ'����81?���|�gW��t�Zm뚯-��AS�p��N���T������)�!�|�B[B~��)��靖� ���ĖOn|x�T,P�*�O;�|ߢ�u�4y�ө���_�&��~݂��l[&�S��T�֕q�Á���8�n9�%$ɣ/#� ڜ�(��_���E���Ns�U�3�yʐ����J̡x�`~���޻������Ug��v�7��koK���f|-��Ȍ��-g��<a~�Wt�Hw�O���� ��7���ʼn9R��� ��R��6c �����P�O(��Eb��߻,��U����9e����J�iBzB5��?<��$k�������?.������U �qυk>_���_E����?�o!�)�Ģ��O�qďdJ�/0z<��ŵ��x�340031Qrut�u��Max�K}eHD�-�M_�}�2�,>�-g�x���>�u�%#o�x�SV(-H)JL+�K�L+������
���L�,�T�M,*Qp��+)JL.QpI-K��/�M� ��rݗ�x�340031Qrut�u��Ma8x�w�[�
�\-�m^���m0�(
��-�I .�/JLO�+��a��|¤s��㌻ K�q�ǵ�����x��W�n���w8�."�c[R��T+���I*%i�pwHN�;���rE��E�AЋ—}��6~����3��,A}a������w�����U�4qI7˹���������@ �k u�km���!E�Oq�"��XS�걱����ZEM���0��퐜�a@�q���J�n��k"t隌�_�v�E�F�F��o�g1������ �K��Ӂ��=m���������7�źڒǝ���������滿�����@�8Oֵ}�t�0���'j"GU;[-� �d=:w��`{���S���=U����L9�6����q��>�3� ��c�:w�D��;,��I"?+@ʖd�T������h[�h8ܧ�2j�c���Yҷ�KBn ��vu��Z[g(��5��tTW*�$U��ѹ-�a�r�n��"�Z1H���3���E_Cj\A��c W�������W���Ԟ ���C��S��@>�!d����f��e(U:��B�j����S˘m��C�ZUv��"�jh�T�D-�7Q��� =3ŌZQ��Jq�a�Sp�f� �7,�UPPi�p�M��h��#��(�u4u ��`��W��c�ۣĻ��=^� ����d[���Kn ,ւfs]��R$:�'H��D�DC�4b���#~J��X�=|r�ՙ�=�]�9]|�UD� '0��D3�̆�&��/���~�V��^|~s�띎=K�j�?����3d���2���%�]��Nh�����o+|�EN�0���rvH9 �p_+��J�މA�Ą@9�D�Q��B^��׻��B۠w/KȰ&JW�7�s��5�uɔw��Ǭ��^�� 뿎w5�as����U0Eb�t��Jw��M��99�7B���w/\�}q�m���ܕ���=��=��]i�X�^v����o��������������_�D���]���<>8_=R'eV"���pe�<�åB�'\�i*��,$1��aVU�`��j3��S ���(�wf} @ժZ��L��t5k?���d�]���5�-:+�W:��^-�ꁼ��]|�����q]�V�T.�s���!'�>���@��V�̛JF�Rl���Ǥ&��*�L':g��9w�(���O]����yNq�����Z�Ǎ�W�$���u*Z�kXioaw��y˰ h��m;y2�;b3$M�LU�hc�i��8��H�N�Qx� ���ѥ883����"Ɣ f!6*|{��)s�T~at�^vڶ ���xc�U��=[<}n�Ó��O�|��,`����"�=�3}&��\�.��1� ��¶�g�� W-:B �Hxcx0��$a�x��<\?8�G��4�����pb�E �9}�)�g�5�x|�ݛ���]^}���n�^ܬ����\W+&R��KI���OTS�4�,s���
�-�Lxw�e� ����+�]�Rм�`�W�wd��t,�ec^mn �s�^�5'�7݆�����o�j*]|}�;V�j��
%ofn������a��aZ^�%`]R�*�2�{�=(�N�T�Z��3v;����~������C7��AW������.�d�aC��V�>պH��T�䵈?�^Rp�Zݼ���]+�c�8������N?7i��3�|��H�b�2 �H�&���*<{<x'�o�5�����𦰂�� C����B��HdP>�>`����2x���[K�@����B�TA��
^
�Pj�&���� {��wsm Q0/�=���s6`�|x=����"B�iLQ���b�:��Jr`�HhDuc�ƿ�Ls)�����xګ�g�wcR̸N(��$԰�,Mp��e�\�g(חW���Gr�j|1l��@���������d���KR~NV���g�]��-�f�����d�`�vV��k�Da47c$M��W�����A���k�K���PS�I�FЫ��~�iv��w��Y�:��xI���#z��#����H��k��J���=H����0dBf����?��k�S�>�jq�������u�)ƶ�u�H5� �x�340031Qrut�u��Ma8Vy�Δ�Y,���O��t�[,��78�t���%8)��L�lw� e�
ddeecadaa4aaef69786ff249055bf423299af711
ddeecadaa4aaef69786ff249055bf423299af711

updraft.cyfrin.io

Solidity Smart Contract Development Course

Traditional Networks vs Blockchain

Traditionally, when you run an application be it a website or something that connects to a server you are interacting with a centralized entity. This is the opposite of what you may recall from our distributed blockchain example, in that the server is controlled and run by a single centralized group.

Blockchains, as we saw, run on a network of independent nodes. In our previous example, each of the Peers was representative of an independent node operator. The term node typically refers to a single instance of a decentralized system, Peer A would be a node. This network, this combination of these nodes interacting with each other is what creates a blockchain. What makes these networks so potent, is that anybody can join. All anyone needs is a little bit of hardware and you can participate in securing a blockchain network. You could go to GitHub and start operating a node in a few seconds!

In the traditional world applications are run by centralized entities and if that entity goes down or is malicious or decides that they want to shut off - they just can. They're the ones that control everything.

Blockchains, by contrast, don't have this problem. If one node or one entity that runs several nodes goes down, since there are so many other independent nodes running, it doesn't matter, the blockchain and the system will persist so long as there is at least one node always running. Luckily for us, the most popular chains like Bitcoin and Ethereum have thousands and thousands of nodes. Malicious nodes are kicked from the network, or even punished in some cases. Majority rules when it comes to the blockchain.

This gives blockchains this incredibly potent immutability trait where nothing can be changed or corrupted so in essence we can think of a blockchain as a decentralized database. In the case of Ethereum it has an extra additional feature where it also can do computation in a decentralized manner now.

Consensus

Let's talk consensus. This includes Proof of Work and Proof of Stake. You've probably heard these terms before and they're really important to how these blockchains work.

The mining feature of our previous blockchain example was an example of Proof of Work

Proof of Work and Proof of Stake fall under this umbrella of consensus. And consensus is a really important topic when it comes to blockchains.

Consensus is defined as the mechanism used to reach an agreement on the state or a single value on the blockchain especially in a decentralized system.

Very roughly, a consensus protocol in a blockchain or decentralized system can be broken down into two pieces: a chain selection algorithm and a sybil resistance mechanism. Mining, or Proof of Work, is a sybil resistance mechanism. This is what Bitcoin currently uses.

Proof of Work is known as a sybil resistance mechanism because it defines a way to figure out who is the block author or which node did the work to mine a block. Sybil resistance is a blockchain's ability to defend against users creating a large number of pseudo-anonymous identities to gain a disproportionately advantageous influence over said system.

As mentioned, there are two primary types of sybil resistance:

  • Proof of Work
  • Proof of Stake

We'll look a little closer at Proof of Work first.

Proof of Work

Proof of work is a system of sybil resistance used in many blockchains, in its essence a miner needs to go through a very computationally heavy process (mining) to find the block's answer. As a result, it doesn't matter how many additional nodes you're running, each node is obligated to do this work in order to receive a reward. The playing field is kept fair.

Note: Some blockchains may make their riddle or their block answer intentionally hard, or intentionally easy to adjust the block time - which is the average time it takes to mine a block. Blocktime is proportional to how difficult these algorithms are.

Proof of Work needs to be combined with a chain selection rule to create consensus.

A chain selection rule is implemented as a means to determine which blockchain is the real blockchain. Bitcoin (and prior to the merge, Ethereum), both use something called Nakamoto Consensus. This is a combination of Proof of Work (Etherum has since switched to Proof of Stake) and the longest chain rule.

In the longest chain rule, the decentralized network decides that whichever chain has the most number of blocks will be the valid, or real blockchain. When we saw block confirmations in Etherscan earlier, this was representing the number of blocks ahead of our transaction in the longest chain.

You'll sometimes hear people use Proof of Work to describe a consensus mechanism, but it's a little bit inaccurate, it's really the combination of sybil resistance and chain selection that create consensus.

Proof of Work also serves as a means to determine who receives transaction fees as we discussed earlier. These transaction fees are paid by whomever initiates the transaction. In a Proof of Work system, every node is competing against eachother to solve the block problem first. The first node to solve the problem gets paid the transaction fees accumulated in the block they mine. In addition to this, miners are also paid a block reward, the block reward is given by the blockchain itself.

If you've previously heard of the Bitcoin Halving - this is the concept of the block reward being cut in half roughly every 4 years.

Block rewards are in the blockchains native currency - Bitcoin = BTC, Ethereum = ETH. This effectively increases the amount of that cryptocurrency in circulation.

Blockchain Attacks

There are two major types of attacks that exist in the blockchain space.

  • Sybil Attack - When a user creates a number of pseudo-anonymous accounts to try to influence a network.
  • 51% attack - Occurs when a single entity possesses both the longest chain and majority network control. This would allow the entity to fork the chain and bring the network onto the entities record of events, effectively allowing them to validate anything.

Blockchains are very democratic. The bigger a blockchain is, the more decentralized, the more secure it becomes.

I encourage you to look into running a node yourself to increase the security of the network!

Proof of Work does come with drawbacks. For example, Proof of Work consumes a LOT of electricity. When you have thousands of nodes all working as hard as they can to solve a block problem the energy consumption is HUGE and as such, so is the potential environmental impact.

With the above in mind, many protocols are choosing the shift to a different consensus mechanism that is more environmentally friendly. The most popular of which is...

Proof of Stake

In contrast to trying to solve a block problem, Proof of Stake nodes put up some collateral that they are going to behave honestly aka they stake. If a node is found to be misbehaving, it's stake is slashed. This serves as a very effective sybil resistance mechanism because for each account, the validator needs to put up more stake and misbehaving risks losing all that collateral.

In a Proof of Stake system, miners are known as validators. They aren't actually mining blocks, they're validating other nodes.

Unlike in Proof of Work, where each node is racing to solve the block problem first, in Proof of Stake, validators are pseudo-randomly chosen to propose the next block and other nodes will validate it.

Proof of Stake of course comes with its own Pros and Cons.

Pros:

  • great sybil resistance mechanism
  • great for the environment, much less energy

Cons:

  • seen as less decentralized due to upfront staking costs

This raises the question of how decentralized is decentralized enough? and I think I need to leave that to the community to decide.

Layer 1 and Layer 2

I want to briefly touch on the concepts of Layer 1 and Layer 2 networks here as well.

  1. Layer 1 solutions: This refers to base layer blockchain implementations like Bitcoin or Ethereum.
  2. Layer 2 solutions: These are applications added on top of a layer one, like Chainlink or Arbitrum.

Layer 2s like Arbitrum and Optimism are special in that they're trying to solve the problem of scalability. These protocols leverage something called rollups. We won't go too deep, but the idea is that the protocols bundle their transactions to be processed by a Layer 1.

Wrap Up

This overview was huge. Amazing work, you now have a fundamental understanding of how blockchains work, how to interact with them and why they're so secure and empowering.

Quiz

  1. What is the purpose of a secret phrase/seed phrase/mnemonic phrase?
  2. What is the primary purpose of a blockchain block's hash?
  3. What is the primary benefit of rollup solutions?
  4. What is a zero-knowledge proof?
  5. What is a "Rollup stage"?
  6. What role does a "Sequencer" play in a rollup?

Traditional Networks vs Blockchain

Traditionally, when you run an application be it a website or something that connects to a server you are interacting with a centralized entity. This is the opposite of what you may recall from our distributed blockchain example, in that the server is controlled and run by a single centralized group.

Blockchains, as we saw, run on a network of independent nodes. In our previous example, each of the Peers was representative of an independent node operator. The term node typically refers to a single instance of a decentralized system, Peer A would be a node. This network, this combination of these nodes interacting with each other is what creates a blockchain. What makes these networks so potent, is that anybody can join. All anyone needs is a little bit of hardware and you can participate in securing a blockchain network. You could go to GitHub and start operating a node in a few seconds!

In the traditional world applications are run by centralized entities and if that entity goes down or is malicious or decides that they want to shut off - they just can. They're the ones that control everything.

Blockchains, by contrast, don't have this problem. If one node or one entity that runs several nodes goes down, since there are so many other independent nodes running, it doesn't matter, the blockchain and the system will persist so long as there is at least one node always running. Luckily for us, the most popular chains like Bitcoin and Ethereum have thousands and thousands of nodes. Malicious nodes are kicked from the network, or even punished in some cases. Majority rules when it comes to the blockchain.

This gives blockchains this incredibly potent immutability trait where nothing can be changed or corrupted so in essence we can think of a blockchain as a decentralized database. In the case of Ethereum it has an extra additional feature where it also can do computation in a decentralized manner now.

Consensus

Let's talk consensus. This includes Proof of Work and Proof of Stake. You've probably heard these terms before and they're really important to how these blockchains work.

The mining feature of our previous blockchain example was an example of Proof of Work

Proof of Work and Proof of Stake fall under this umbrella of consensus. And consensus is a really important topic when it comes to blockchains.

Consensus is defined as the mechanism used to reach an agreement on the state or a single value on the blockchain especially in a decentralized system.

Very roughly, a consensus protocol in a blockchain or decentralized system can be broken down into two pieces: a chain selection algorithm and a sybil resistance mechanism. Mining, or Proof of Work, is a sybil resistance mechanism. This is what Bitcoin currently uses.

Proof of Work is known as a sybil resistance mechanism because it defines a way to figure out who is the block author or which node did the work to mine a block. Sybil resistance is a blockchain's ability to defend against users creating a large number of pseudo-anonymous identities to gain a disproportionately advantageous influence over said system.

As mentioned, there are two primary types of sybil resistance:

  • Proof of Work
  • Proof of Stake

We'll look a little closer at Proof of Work first.

Proof of Work

Proof of work is a system of sybil resistance used in many blockchains, in its essence a miner needs to go through a very computationally heavy process (mining) to find the block's answer. As a result, it doesn't matter how many additional nodes you're running, each node is obligated to do this work in order to receive a reward. The playing field is kept fair.

Note: Some blockchains may make their riddle or their block answer intentionally hard, or intentionally easy to adjust the block time - which is the average time it takes to mine a block. Blocktime is proportional to how difficult these algorithms are.

Proof of Work needs to be combined with a chain selection rule to create consensus.

A chain selection rule is implemented as a means to determine which blockchain is the real blockchain. Bitcoin (and prior to the merge, Ethereum), both use something called Nakamoto Consensus. This is a combination of Proof of Work (Etherum has since switched to Proof of Stake) and the longest chain rule.

In the longest chain rule, the decentralized network decides that whichever chain has the most number of blocks will be the valid, or real blockchain. When we saw block confirmations in Etherscan earlier, this was representing the number of blocks ahead of our transaction in the longest chain.

You'll sometimes hear people use Proof of Work to describe a consensus mechanism, but it's a little bit inaccurate, it's really the combination of sybil resistance and chain selection that create consensus.

Proof of Work also serves as a means to determine who receives transaction fees as we discussed earlier. These transaction fees are paid by whomever initiates the transaction. In a Proof of Work system, every node is competing against eachother to solve the block problem first. The first node to solve the problem gets paid the transaction fees accumulated in the block they mine. In addition to this, miners are also paid a block reward, the block reward is given by the blockchain itself.

If you've previously heard of the Bitcoin Halving - this is the concept of the block reward being cut in half roughly every 4 years.

Block rewards are in the blockchains native currency - Bitcoin = BTC, Ethereum = ETH. This effectively increases the amount of that cryptocurrency in circulation.

Blockchain Attacks

There are two major types of attacks that exist in the blockchain space.

  • Sybil Attack - When a user creates a number of pseudo-anonymous accounts to try to influence a network.
  • 51% attack - Occurs when a single entity possesses both the longest chain and majority network control. This would allow the entity to fork the chain and bring the network onto the entities record of events, effectively allowing them to validate anything.

Blockchains are very democratic. The bigger a blockchain is, the more decentralized, the more secure it becomes.

I encourage you to look into running a node yourself to increase the security of the network!

Proof of Work does come with drawbacks. For example, Proof of Work consumes a LOT of electricity. When you have thousands of nodes all working as hard as they can to solve a block problem the energy consumption is HUGE and as such, so is the potential environmental impact.

With the above in mind, many protocols are choosing the shift to a different consensus mechanism that is more environmentally friendly. The most popular of which is...

Proof of Stake

In contrast to trying to solve a block problem, Proof of Stake nodes put up some collateral that they are going to behave honestly aka they stake. If a node is found to be misbehaving, it's stake is slashed. This serves as a very effective sybil resistance mechanism because for each account, the validator needs to put up more stake and misbehaving risks losing all that collateral.

In a Proof of Stake system, miners are known as validators. They aren't actually mining blocks, they're validating other nodes.

Unlike in Proof of Work, where each node is racing to solve the block problem first, in Proof of Stake, validators are pseudo-randomly chosen to propose the next block and other nodes will validate it.

Proof of Stake of course comes with its own Pros and Cons.

Pros:

  • great sybil resistance mechanism
  • great for the environment, much less energy

Cons:

  • seen as less decentralized due to upfront staking costs

This raises the question of how decentralized is decentralized enough? and I think I need to leave that to the community to decide.

Layer 1 and Layer 2

I want to briefly touch on the concepts of Layer 1 and Layer 2 networks here as well.

  1. Layer 1 solutions: This refers to base layer blockchain implementations like Bitcoin or Ethereum.
  2. Layer 2 solutions: These are applications added on top of a layer one, like Chainlink or Arbitrum.

Layer 2s like Arbitrum and Optimism are special in that they're trying to solve the problem of scalability. These protocols leverage something called rollups. We won't go too deep, but the idea is that the protocols bundle their transactions to be processed by a Layer 1.

Wrap Up

This overview was huge. Amazing work, you now have a fundamental understanding of how blockchains work, how to interact with them and why they're so secure and empowering.

{
"id": "0a45ea7fd22e8c4b6ed254c28d92e1b6",
"_format": "hh-sol-build-info-1",
"solcVersion": "0.8.19",
"solcLongVersion": "0.8.19+commit.7dd6d404",
"input": {
"language": "Solidity",
"sources": {
"Solidity Smart Contract Development/SimpleStorage.sol": {
"content": "\r\n// SPDX-License-Identifier: MIT\r\n\r\npragma solidity ^0.8.19;\r\n\r\n// pragma solidity ^0.8.0;\r\n// pragma solidity >=0.8.0 <0.9.0;\r\n\r\ncontract SimpleStorage {\r\n uint256 myFavoriteNumber;\r\n\r\n struct Person {\r\n uint256 favoriteNumber;\r\n string name;\r\n }\r\n // uint256[] public anArray;\r\n Person[] public listOfPeople;\r\n\r\n mapping(string => uint256) public nameToFavoriteNumber;\r\n\r\n function store(uint256 _favoriteNumber) public {\r\n myFavoriteNumber = _favoriteNumber;\r\n }\r\n\r\n function retrieve() public view returns (uint256) {\r\n return myFavoriteNumber;\r\n }\r\n\r\n function addPerson(string memory _name, uint256 _favoriteNumber) public {\r\n listOfPeople.push(Person(_favoriteNumber, _name));\r\n nameToFavoriteNumber[_name] = _favoriteNumber;\r\n }\r\n}\r\n"
}
},
"settings": {
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"": [
"ast"
],
"*": [
"abi",
"metadata",
"devdoc",
"userdoc",
"storageLayout",
"evm.legacyAssembly",
"evm.bytecode",
"evm.deployedBytecode",
"evm.methodIdentifiers",
"evm.gasEstimates",
"evm.assembly"
]
}
},
"remappings": []
}
},
"output": {
"contracts": {
"Solidity Smart Contract Development/SimpleStorage.sol": {
"SimpleStorage": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "uint256",
"name": "_favoriteNumber",
"type": "uint256"
}
],
"name": "addPerson",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "listOfPeople",
"outputs": [
{
"internalType": "uint256",
"name": "favoriteNumber",
"type": "uint256"
},
{
"internalType": "string",
"name": "name",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "nameToFavoriteNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_favoriteNumber",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"evm": {
"assembly": " /* \"Solidity Smart Contract Development/SimpleStorage.sol\":131:818 contract SimpleStorage {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":131:818 contract SimpleStorage {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x2e64cec1\n eq\n tag_3\n jumpi\n dup1\n 0x2ebce631\n eq\n tag_4\n jumpi\n dup1\n 0x6057361d\n eq\n tag_5\n jumpi\n dup1\n 0x6f760f41\n eq\n tag_6\n jumpi\n dup1\n 0x8bab8dd5\n eq\n tag_7\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":519:611 function retrieve() public view returns (uint256) {... */\n tag_3:\n tag_8\n tag_9\n jump\t// in\n tag_8:\n mload(0x40)\n tag_10\n swap2\n swap1\n tag_11\n jump\t// in\n tag_10:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":311:339 Person[] public listOfPeople */\n tag_4:\n tag_12\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_13\n swap2\n swap1\n tag_14\n jump\t// in\n tag_13:\n tag_15\n jump\t// in\n tag_12:\n mload(0x40)\n tag_16\n swap3\n swap2\n swap1\n tag_17\n jump\t// in\n tag_16:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":411:511 function store(uint256 _favoriteNumber) public {... */\n tag_5:\n tag_18\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_19\n swap2\n swap1\n tag_14\n jump\t// in\n tag_19:\n tag_20\n jump\t// in\n tag_18:\n stop\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":619:815 function addPerson(string memory _name, uint256 _favoriteNumber) public {... */\n tag_6:\n tag_21\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_22\n swap2\n swap1\n tag_23\n jump\t// in\n tag_22:\n tag_24\n jump\t// in\n tag_21:\n stop\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":348:402 mapping(string => uint256) public nameToFavoriteNumber */\n tag_7:\n tag_25\n 0x04\n dup1\n calldatasize\n sub\n dup2\n add\n swap1\n tag_26\n swap2\n swap1\n tag_27\n jump\t// in\n tag_26:\n tag_28\n jump\t// in\n tag_25:\n mload(0x40)\n tag_29\n swap2\n swap1\n tag_11\n jump\t// in\n tag_29:\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":519:611 function retrieve() public view returns (uint256) {... */\n tag_9:\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":560:567 uint256 */\n 0x00\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":587:603 myFavoriteNumber */\n dup1\n sload\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":580:603 return myFavoriteNumber */\n swap1\n pop\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":519:611 function retrieve() public view returns (uint256) {... */\n swap1\n jump\t// out\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":311:339 Person[] public listOfPeople */\n tag_15:\n 0x01\n dup2\n dup2\n sload\n dup2\n lt\n tag_31\n jumpi\n 0x00\n dup1\n revert\n tag_31:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x02\n mul\n add\n 0x00\n swap2\n pop\n swap1\n pop\n dup1\n 0x00\n add\n sload\n swap1\n dup1\n 0x01\n add\n dup1\n sload\n tag_33\n swap1\n tag_34\n jump\t// in\n tag_33:\n dup1\n 0x1f\n add\n 0x20\n dup1\n swap2\n div\n mul\n 0x20\n add\n mload(0x40)\n swap1\n dup2\n add\n 0x40\n mstore\n dup1\n swap3\n swap2\n swap1\n dup2\n dup2\n mstore\n 0x20\n add\n dup3\n dup1\n sload\n tag_35\n swap1\n tag_34\n jump\t// in\n tag_35:\n dup1\n iszero\n tag_36\n jumpi\n dup1\n 0x1f\n lt\n tag_37\n jumpi\n 0x0100\n dup1\n dup4\n sload\n div\n mul\n dup4\n mstore\n swap2\n 0x20\n add\n swap2\n jump(tag_36)\n tag_37:\n dup3\n add\n swap2\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n tag_38:\n dup2\n sload\n dup2\n mstore\n swap1\n 0x01\n add\n swap1\n 0x20\n add\n dup1\n dup4\n gt\n tag_38\n jumpi\n dup3\n swap1\n sub\n 0x1f\n and\n dup3\n add\n swap2\n tag_36:\n pop\n pop\n pop\n pop\n pop\n swap1\n pop\n dup3\n jump\t// out\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":411:511 function store(uint256 _favoriteNumber) public {... */\n tag_20:\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":488:503 _favoriteNumber */\n dup1\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":469:485 myFavoriteNumber */\n 0x00\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":469:503 myFavoriteNumber = _favoriteNumber */\n dup2\n swap1\n sstore\n pop\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":411:511 function store(uint256 _favoriteNumber) public {... */\n pop\n jump\t// out\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":619:815 function addPerson(string memory _name, uint256 _favoriteNumber) public {... */\n tag_24:\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":702:714 listOfPeople */\n 0x01\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":720:750 Person(_favoriteNumber, _name) */\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":727:742 _favoriteNumber */\n dup4\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":720:750 Person(_favoriteNumber, _name) */\n dup2\n mstore\n 0x20\n add\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":744:749 _name */\n dup5\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":720:750 Person(_favoriteNumber, _name) */\n dup2\n mstore\n pop\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":702:751 listOfPeople.push(Person(_favoriteNumber, _name)) */\n swap1\n dup1\n 0x01\n dup2\n sload\n add\n dup1\n dup3\n sstore\n dup1\n swap2\n pop\n pop\n 0x01\n swap1\n sub\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n 0x02\n mul\n add\n 0x00\n swap1\n swap2\n swap1\n swap2\n swap1\n swap2\n pop\n 0x00\n dup3\n add\n mload\n dup2\n 0x00\n add\n sstore\n 0x20\n dup3\n add\n mload\n dup2\n 0x01\n add\n swap1\n dup2\n tag_42\n swap2\n swap1\n tag_43\n jump\t// in\n tag_42:\n pop\n pop\n pop\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":792:807 _favoriteNumber */\n dup1\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":762:782 nameToFavoriteNumber */\n 0x02\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":783:788 _name */\n dup4\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":762:789 nameToFavoriteNumber[_name] */\n mload(0x40)\n tag_44\n swap2\n swap1\n tag_45\n jump\t// in\n tag_44:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":762:807 nameToFavoriteNumber[_name] = _favoriteNumber */\n dup2\n swap1\n sstore\n pop\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":619:815 function addPerson(string memory _name, uint256 _favoriteNumber) public {... */\n pop\n pop\n jump\t// out\n /* \"Solidity Smart Contract Development/SimpleStorage.sol\":348:402 mapping(string => uint256) public nameToFavoriteNumber */\n tag_28:\n 0x02\n dup2\n dup1\n mload\n 0x20\n dup2\n add\n dup3\n add\n dup1\n mload\n dup5\n dup3\n mstore\n 0x20\n dup4\n add\n 0x20\n dup6\n add\n keccak256\n dup2\n dup4\n mstore\n dup1\n swap6\n pop\n pop\n pop\n pop\n pop\n pop\n 0x00\n swap2\n pop\n swap1\n pop\n sload\n dup2\n jump\t// out\n /* \"#utility.yul\":7:84 */\n tag_46:\n /* \"#utility.yul\":44:51 */\n 0x00\n /* \"#utility.yul\":73:78 */\n dup2\n /* \"#utility.yul\":62:78 */\n swap1\n pop\n /* \"#utility.yul\":7:84 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":90:208 */\n tag_47:\n /* \"#utility.yul\":177:201 */\n tag_88\n /* \"#utility.yul\":195:200 */\n dup2\n /* \"#utility.yul\":177:201 */\n tag_46\n jump\t// in\n tag_88:\n /* \"#utility.yul\":172:175 */\n dup3\n /* \"#utility.yul\":165:202 */\n mstore\n /* \"#utility.yul\":90:208 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":214:436 */\n tag_11:\n /* \"#utility.yul\":307:311 */\n 0x00\n /* \"#utility.yul\":345:347 */\n 0x20\n /* \"#utility.yul\":334:343 */\n dup3\n /* \"#utility.yul\":330:348 */\n add\n /* \"#utility.yul\":322:348 */\n swap1\n pop\n /* \"#utility.yul\":358:429 */\n tag_90\n /* \"#utility.yul\":426:427 */\n 0x00\n /* \"#utility.yul\":415:424 */\n dup4\n /* \"#utility.yul\":411:428 */\n add\n /* \"#utility.yul\":402:408 */\n dup5\n /* \"#utility.yul\":358:429 */\n tag_47\n jump\t// in\n tag_90:\n /* \"#utility.yul\":214:436 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":442:517 */\n tag_48:\n /* \"#utility.yul\":475:481 */\n 0x00\n /* \"#utility.yul\":508:510 */\n 0x40\n /* \"#utility.yul\":502:511 */\n mload\n /* \"#utility.yul\":492:511 */\n swap1\n pop\n /* \"#utility.yul\":442:517 */\n swap1\n jump\t// out\n /* \"#utility.yul\":523:640 */\n tag_49:\n /* \"#utility.yul\":632:633 */\n 0x00\n /* \"#utility.yul\":629:630 */\n dup1\n /* \"#utility.yul\":622:634 */\n revert\n /* \"#utility.yul\":646:763 */\n tag_50:\n /* \"#utility.yul\":755:756 */\n 0x00\n /* \"#utility.yul\":752:753 */\n dup1\n /* \"#utility.yul\":745:757 */\n revert\n /* \"#utility.yul\":769:891 */\n tag_51:\n /* \"#utility.yul\":842:866 */\n tag_95\n /* \"#utility.yul\":860:865 */\n dup2\n /* \"#utility.yul\":842:866 */\n tag_46\n jump\t// in\n tag_95:\n /* \"#utility.yul\":835:840 */\n dup2\n /* \"#utility.yul\":832:867 */\n eq\n /* \"#utility.yul\":822:885 */\n tag_96\n jumpi\n /* \"#utility.yul\":881:882 */\n 0x00\n /* \"#utility.yul\":878:879 */\n dup1\n /* \"#utility.yul\":871:883 */\n revert\n /* \"#utility.yul\":822:885 */\n tag_96:\n /* \"#utility.yul\":769:891 */\n pop\n jump\t// out\n /* \"#utility.yul\":897:1036 */\n tag_52:\n /* \"#utility.yul\":943:948 */\n 0x00\n /* \"#utility.yul\":981:987 */\n dup2\n /* \"#utility.yul\":968:988 */\n calldataload\n /* \"#utility.yul\":959:988 */\n swap1\n pop\n /* \"#utility.yul\":997:1030 */\n tag_98\n /* \"#utility.yul\":1024:1029 */\n dup2\n /* \"#utility.yul\":997:1030 */\n tag_51\n jump\t// in\n tag_98:\n /* \"#utility.yul\":897:1036 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1042:1371 */\n tag_14:\n /* \"#utility.yul\":1101:1107 */\n 0x00\n /* \"#utility.yul\":1150:1152 */\n 0x20\n /* \"#utility.yul\":1138:1147 */\n dup3\n /* \"#utility.yul\":1129:1136 */\n dup5\n /* \"#utility.yul\":1125:1148 */\n sub\n /* \"#utility.yul\":1121:1153 */\n slt\n /* \"#utility.yul\":1118:1237 */\n iszero\n tag_100\n jumpi\n /* \"#utility.yul\":1156:1235 */\n tag_101\n tag_49\n jump\t// in\n tag_101:\n /* \"#utility.yul\":1118:1237 */\n tag_100:\n /* \"#utility.yul\":1276:1277 */\n 0x00\n /* \"#utility.yul\":1301:1354 */\n tag_102\n /* \"#utility.yul\":1346:1353 */\n dup5\n /* \"#utility.yul\":1337:1343 */\n dup3\n /* \"#utility.yul\":1326:1335 */\n dup6\n /* \"#utility.yul\":1322:1344 */\n add\n /* \"#utility.yul\":1301:1354 */\n tag_52\n jump\t// in\n tag_102:\n /* \"#utility.yul\":1291:1354 */\n swap2\n pop\n /* \"#utility.yul\":1247:1364 */\n pop\n /* \"#utility.yul\":1042:1371 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1377:1476 */\n tag_53:\n /* \"#utility.yul\":1429:1435 */\n 0x00\n /* \"#utility.yul\":1463:1468 */\n dup2\n /* \"#utility.yul\":1457:1469 */\n mload\n /* \"#utility.yul\":1447:1469 */\n swap1\n pop\n /* \"#utility.yul\":1377:1476 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1482:1651 */\n tag_54:\n /* \"#utility.yul\":1566:1577 */\n 0x00\n /* \"#utility.yul\":1600:1606 */\n dup3\n /* \"#utility.yul\":1595:1598 */\n dup3\n /* \"#utility.yul\":1588:1607 */\n mstore\n /* \"#utility.yul\":1640:1644 */\n 0x20\n /* \"#utility.yul\":1635:1638 */\n dup3\n /* \"#utility.yul\":1631:1645 */\n add\n /* \"#utility.yul\":1616:1645 */\n swap1\n pop\n /* \"#utility.yul\":1482:1651 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1657:1903 */\n tag_55:\n /* \"#utility.yul\":1738:1739 */\n 0x00\n /* \"#utility.yul\":1748:1861 */\n tag_106:\n /* \"#utility.yul\":1762:1768 */\n dup4\n /* \"#utility.yul\":1759:1760 */\n dup2\n /* \"#utility.yul\":1756:1769 */\n lt\n /* \"#utility.yul\":1748:1861 */\n iszero\n tag_108\n jumpi\n /* \"#utility.yul\":1847:1848 */\n dup1\n /* \"#utility.yul\":1842:1845 */\n dup3\n /* \"#utility.yul\":1838:1849 */\n add\n /* \"#utility.yul\":1832:1850 */\n mload\n /* \"#utility.yul\":1828:1829 */\n dup2\n /* \"#utility.yul\":1823:1826 */\n dup5\n /* \"#utility.yul\":1819:1830 */\n add\n /* \"#utility.yul\":1812:1851 */\n mstore\n /* \"#utility.yul\":1784:1786 */\n 0x20\n /* \"#utility.yul\":1781:1782 */\n dup2\n /* \"#utility.yul\":1777:1787 */\n add\n /* \"#utility.yul\":1772:1787 */\n swap1\n pop\n /* \"#utility.yul\":1748:1861 */\n jump(tag_106)\n tag_108:\n /* \"#utility.yul\":1895:1896 */\n 0x00\n /* \"#utility.yul\":1886:1892 */\n dup5\n /* \"#utility.yul\":1881:1884 */\n dup5\n /* \"#utility.yul\":1877:1893 */\n add\n /* \"#utility.yul\":1870:1897 */\n mstore\n /* \"#utility.yul\":1719:1903 */\n pop\n /* \"#utility.yul\":1657:1903 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":1909:2011 */\n tag_56:\n /* \"#utility.yul\":1950:1956 */\n 0x00\n /* \"#utility.yul\":2001:2003 */\n 0x1f\n /* \"#utility.yul\":1997:2004 */\n not\n /* \"#utility.yul\":1992:1994 */\n 0x1f\n /* \"#utility.yul\":1985:1990 */\n dup4\n /* \"#utility.yul\":1981:1995 */\n add\n /* \"#utility.yul\":1977:2005 */\n and\n /* \"#utility.yul\":1967:2005 */\n swap1\n pop\n /* \"#utility.yul\":1909:2011 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2017:2394 */\n tag_57:\n /* \"#utility.yul\":2105:2108 */\n 0x00\n /* \"#utility.yul\":2133:2172 */\n tag_111\n /* \"#utility.yul\":2166:2171 */\n dup3\n /* \"#utility.yul\":2133:2172 */\n tag_53\n jump\t// in\n tag_111:\n /* \"#utility.yul\":2188:2259 */\n tag_112\n /* \"#utility.yul\":2252:2258 */\n dup2\n /* \"#utility.yul\":2247:2250 */\n dup6\n /* \"#utility.yul\":2188:2259 */\n tag_54\n jump\t// in\n tag_112:\n /* \"#utility.yul\":2181:2259 */\n swap4\n pop\n /* \"#utility.yul\":2268:2333 */\n tag_113\n /* \"#utility.yul\":2326:2332 */\n dup2\n /* \"#utility.yul\":2321:2324 */\n dup6\n /* \"#utility.yul\":2314:2318 */\n 0x20\n /* \"#utility.yul\":2307:2312 */\n dup7\n /* \"#utility.yul\":2303:2319 */\n add\n /* \"#utility.yul\":2268:2333 */\n tag_55\n jump\t// in\n tag_113:\n /* \"#utility.yul\":2358:2387 */\n tag_114\n /* \"#utility.yul\":2380:2386 */\n dup2\n /* \"#utility.yul\":2358:2387 */\n tag_56\n jump\t// in\n tag_114:\n /* \"#utility.yul\":2353:2356 */\n dup5\n /* \"#utility.yul\":2349:2388 */\n add\n /* \"#utility.yul\":2342:2388 */\n swap2\n pop\n /* \"#utility.yul\":2109:2394 */\n pop\n /* \"#utility.yul\":2017:2394 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2400:2823 */\n tag_17:\n /* \"#utility.yul\":2541:2545 */\n 0x00\n /* \"#utility.yul\":2579:2581 */\n 0x40\n /* \"#utility.yul\":2568:2577 */\n dup3\n /* \"#utility.yul\":2564:2582 */\n add\n /* \"#utility.yul\":2556:2582 */\n swap1\n pop\n /* \"#utility.yul\":2592:2663 */\n tag_116\n /* \"#utility.yul\":2660:2661 */\n 0x00\n /* \"#utility.yul\":2649:2658 */\n dup4\n /* \"#utility.yul\":2645:2662 */\n add\n /* \"#utility.yul\":2636:2642 */\n dup6\n /* \"#utility.yul\":2592:2663 */\n tag_47\n jump\t// in\n tag_116:\n /* \"#utility.yul\":2710:2719 */\n dup2\n /* \"#utility.yul\":2704:2708 */\n dup2\n /* \"#utility.yul\":2700:2720 */\n sub\n /* \"#utility.yul\":2695:2697 */\n 0x20\n /* \"#utility.yul\":2684:2693 */\n dup4\n /* \"#utility.yul\":2680:2698 */\n add\n /* \"#utility.yul\":2673:2721 */\n mstore\n /* \"#utility.yul\":2738:2816 */\n tag_117\n /* \"#utility.yul\":2811:2815 */\n dup2\n /* \"#utility.yul\":2802:2808 */\n dup5\n /* \"#utility.yul\":2738:2816 */\n tag_57\n jump\t// in\n tag_117:\n /* \"#utility.yul\":2730:2816 */\n swap1\n pop\n /* \"#utility.yul\":2400:2823 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2829:2946 */\n tag_58:\n /* \"#utility.yul\":2938:2939 */\n 0x00\n /* \"#utility.yul\":2935:2936 */\n dup1\n /* \"#utility.yul\":2928:2940 */\n revert\n /* \"#utility.yul\":2952:3069 */\n tag_59:\n /* \"#utility.yul\":3061:3062 */\n 0x00\n /* \"#utility.yul\":3058:3059 */\n dup1\n /* \"#utility.yul\":3051:3063 */\n revert\n /* \"#utility.yul\":3075:3255 */\n tag_60:\n /* \"#utility.yul\":3123:3200 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":3120:3121 */\n 0x00\n /* \"#utility.yul\":3113:3201 */\n mstore\n /* \"#utility.yul\":3220:3224 */\n 0x41\n /* \"#utility.yul\":3217:3218 */\n 0x04\n /* \"#utility.yul\":3210:3225 */\n mstore\n /* \"#utility.yul\":3244:3248 */\n 0x24\n /* \"#utility.yul\":3241:3242 */\n 0x00\n /* \"#utility.yul\":3234:3249 */\n revert\n /* \"#utility.yul\":3261:3542 */\n tag_61:\n /* \"#utility.yul\":3344:3371 */\n tag_122\n /* \"#utility.yul\":3366:3370 */\n dup3\n /* \"#utility.yul\":3344:3371 */\n tag_56\n jump\t// in\n tag_122:\n /* \"#utility.yul\":3336:3342 */\n dup2\n /* \"#utility.yul\":3332:3372 */\n add\n /* \"#utility.yul\":3474:3480 */\n dup2\n /* \"#utility.yul\":3462:3472 */\n dup2\n /* \"#utility.yul\":3459:3481 */\n lt\n /* \"#utility.yul\":3438:3456 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3426:3436 */\n dup3\n /* \"#utility.yul\":3423:3457 */\n gt\n /* \"#utility.yul\":3420:3482 */\n or\n /* \"#utility.yul\":3417:3505 */\n iszero\n tag_123\n jumpi\n /* \"#utility.yul\":3485:3503 */\n tag_124\n tag_60\n jump\t// in\n tag_124:\n /* \"#utility.yul\":3417:3505 */\n tag_123:\n /* \"#utility.yul\":3525:3535 */\n dup1\n /* \"#utility.yul\":3521:3523 */\n 0x40\n /* \"#utility.yul\":3514:3536 */\n mstore\n /* \"#utility.yul\":3304:3542 */\n pop\n /* \"#utility.yul\":3261:3542 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3548:3677 */\n tag_62:\n /* \"#utility.yul\":3582:3588 */\n 0x00\n /* \"#utility.yul\":3609:3629 */\n tag_126\n tag_48\n jump\t// in\n tag_126:\n /* \"#utility.yul\":3599:3629 */\n swap1\n pop\n /* \"#utility.yul\":3638:3671 */\n tag_127\n /* \"#utility.yul\":3666:3670 */\n dup3\n /* \"#utility.yul\":3658:3664 */\n dup3\n /* \"#utility.yul\":3638:3671 */\n tag_61\n jump\t// in\n tag_127:\n /* \"#utility.yul\":3548:3677 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3683:3991 */\n tag_63:\n /* \"#utility.yul\":3745:3749 */\n 0x00\n /* \"#utility.yul\":3835:3853 */\n 0xffffffffffffffff\n /* \"#utility.yul\":3827:3833 */\n dup3\n /* \"#utility.yul\":3824:3854 */\n gt\n /* \"#utility.yul\":3821:3877 */\n iszero\n tag_129\n jumpi\n /* \"#utility.yul\":3857:3875 */\n tag_130\n tag_60\n jump\t// in\n tag_130:\n /* \"#utility.yul\":3821:3877 */\n tag_129:\n /* \"#utility.yul\":3895:3924 */\n tag_131\n /* \"#utility.yul\":3917:3923 */\n dup3\n /* \"#utility.yul\":3895:3924 */\n tag_56\n jump\t// in\n tag_131:\n /* \"#utility.yul\":3887:3924 */\n swap1\n pop\n /* \"#utility.yul\":3979:3983 */\n 0x20\n /* \"#utility.yul\":3973:3977 */\n dup2\n /* \"#utility.yul\":3969:3984 */\n add\n /* \"#utility.yul\":3961:3984 */\n swap1\n pop\n /* \"#utility.yul\":3683:3991 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3997:4143 */\n tag_64:\n /* \"#utility.yul\":4094:4100 */\n dup3\n /* \"#utility.yul\":4089:4092 */\n dup2\n /* \"#utility.yul\":4084:4087 */\n dup4\n /* \"#utility.yul\":4071:4101 */\n calldatacopy\n /* \"#utility.yul\":4135:4136 */\n 0x00\n /* \"#utility.yul\":4126:4132 */\n dup4\n /* \"#utility.yul\":4121:4124 */\n dup4\n /* \"#utility.yul\":4117:4133 */\n add\n /* \"#utility.yul\":4110:4137 */\n mstore\n /* \"#utility.yul\":3997:4143 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4149:4574 */\n tag_65:\n /* \"#utility.yul\":4227:4232 */\n 0x00\n /* \"#utility.yul\":4252:4318 */\n tag_134\n /* \"#utility.yul\":4268:4317 */\n tag_135\n /* \"#utility.yul\":4310:4316 */\n dup5\n /* \"#utility.yul\":4268:4317 */\n tag_63\n jump\t// in\n tag_135:\n /* \"#utility.yul\":4252:4318 */\n tag_62\n jump\t// in\n tag_134:\n /* \"#utility.yul\":4243:4318 */\n swap1\n pop\n /* \"#utility.yul\":4341:4347 */\n dup3\n /* \"#utility.yul\":4334:4339 */\n dup2\n /* \"#utility.yul\":4327:4348 */\n mstore\n /* \"#utility.yul\":4379:4383 */\n 0x20\n /* \"#utility.yul\":4372:4377 */\n dup2\n /* \"#utility.yul\":4368:4384 */\n add\n /* \"#utility.yul\":4417:4420 */\n dup5\n /* \"#utility.yul\":4408:4414 */\n dup5\n /* \"#utility.yul\":4403:4406 */\n dup5\n /* \"#utility.yul\":4399:4415 */\n add\n /* \"#utility.yul\":4396:4421 */\n gt\n /* \"#utility.yul\":4393:4505 */\n iszero\n tag_136\n jumpi\n /* \"#utility.yul\":4424:4503 */\n tag_137\n tag_59\n jump\t// in\n tag_137:\n /* \"#utility.yul\":4393:4505 */\n tag_136:\n /* \"#utility.yul\":4514:4568 */\n tag_138\n /* \"#utility.yul\":4561:4567 */\n dup5\n /* \"#utility.yul\":4556:4559 */\n dup3\n /* \"#utility.yul\":4551:4554 */\n dup6\n /* \"#utility.yul\":4514:4568 */\n tag_64\n jump\t// in\n tag_138:\n /* \"#utility.yul\":4233:4574 */\n pop\n /* \"#utility.yul\":4149:4574 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4594:4934 */\n tag_66:\n /* \"#utility.yul\":4650:4655 */\n 0x00\n /* \"#utility.yul\":4699:4702 */\n dup3\n /* \"#utility.yul\":4692:4696 */\n 0x1f\n /* \"#utility.yul\":4684:4690 */\n dup4\n /* \"#utility.yul\":4680:4697 */\n add\n /* \"#utility.yul\":4676:4703 */\n slt\n /* \"#utility.yul\":4666:4788 */\n tag_140\n jumpi\n /* \"#utility.yul\":4707:4786 */\n tag_141\n tag_58\n jump\t// in\n tag_141:\n /* \"#utility.yul\":4666:4788 */\n tag_140:\n /* \"#utility.yul\":4824:4830 */\n dup2\n /* \"#utility.yul\":4811:4831 */\n calldataload\n /* \"#utility.yul\":4849:4928 */\n tag_142\n /* \"#utility.yul\":4924:4927 */\n dup5\n /* \"#utility.yul\":4916:4922 */\n dup3\n /* \"#utility.yul\":4909:4913 */\n 0x20\n /* \"#utility.yul\":4901:4907 */\n dup7\n /* \"#utility.yul\":4897:4914 */\n add\n /* \"#utility.yul\":4849:4928 */\n tag_65\n jump\t// in\n tag_142:\n /* \"#utility.yul\":4840:4928 */\n swap2\n pop\n /* \"#utility.yul\":4656:4934 */\n pop\n /* \"#utility.yul\":4594:4934 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4940:5594 */\n tag_23:\n /* \"#utility.yul\":5018:5024 */\n 0x00\n /* \"#utility.yul\":5026:5032 */\n dup1\n /* \"#utility.yul\":5075:5077 */\n 0x40\n /* \"#utility.yul\":5063:5072 */\n dup4\n /* \"#utility.yul\":5054:5061 */\n dup6\n /* \"#utility.yul\":5050:5073 */\n sub\n /* \"#utility.yul\":5046:5078 */\n slt\n /* \"#utility.yul\":5043:5162 */\n iszero\n tag_144\n jumpi\n /* \"#utility.yul\":5081:5160 */\n tag_145\n tag_49\n jump\t// in\n tag_145:\n /* \"#utility.yul\":5043:5162 */\n tag_144:\n /* \"#utility.yul\":5229:5230 */\n 0x00\n /* \"#utility.yul\":5218:5227 */\n dup4\n /* \"#utility.yul\":5214:5231 */\n add\n /* \"#utility.yul\":5201:5232 */\n calldataload\n /* \"#utility.yul\":5259:5277 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5251:5257 */\n dup2\n /* \"#utility.yul\":5248:5278 */\n gt\n /* \"#utility.yul\":5245:5362 */\n iszero\n tag_146\n jumpi\n /* \"#utility.yul\":5281:5360 */\n tag_147\n tag_50\n jump\t// in\n tag_147:\n /* \"#utility.yul\":5245:5362 */\n tag_146:\n /* \"#utility.yul\":5386:5449 */\n tag_148\n /* \"#utility.yul\":5441:5448 */\n dup6\n /* \"#utility.yul\":5432:5438 */\n dup3\n /* \"#utility.yul\":5421:5430 */\n dup7\n /* \"#utility.yul\":5417:5439 */\n add\n /* \"#utility.yul\":5386:5449 */\n tag_66\n jump\t// in\n tag_148:\n /* \"#utility.yul\":5376:5449 */\n swap3\n pop\n /* \"#utility.yul\":5172:5459 */\n pop\n /* \"#utility.yul\":5498:5500 */\n 0x20\n /* \"#utility.yul\":5524:5577 */\n tag_149\n /* \"#utility.yul\":5569:5576 */\n dup6\n /* \"#utility.yul\":5560:5566 */\n dup3\n /* \"#utility.yul\":5549:5558 */\n dup7\n /* \"#utility.yul\":5545:5567 */\n add\n /* \"#utility.yul\":5524:5577 */\n tag_52\n jump\t// in\n tag_149:\n /* \"#utility.yul\":5514:5577 */\n swap2\n pop\n /* \"#utility.yul\":5469:5587 */\n pop\n /* \"#utility.yul\":4940:5594 */\n swap3\n pop\n swap3\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":5600:6109 */\n tag_27:\n /* \"#utility.yul\":5669:5675 */\n 0x00\n /* \"#utility.yul\":5718:5720 */\n 0x20\n /* \"#utility.yul\":5706:5715 */\n dup3\n /* \"#utility.yul\":5697:5704 */\n dup5\n /* \"#utility.yul\":5693:5716 */\n sub\n /* \"#utility.yul\":5689:5721 */\n slt\n /* \"#utility.yul\":5686:5805 */\n iszero\n tag_151\n jumpi\n /* \"#utility.yul\":5724:5803 */\n tag_152\n tag_49\n jump\t// in\n tag_152:\n /* \"#utility.yul\":5686:5805 */\n tag_151:\n /* \"#utility.yul\":5872:5873 */\n 0x00\n /* \"#utility.yul\":5861:5870 */\n dup3\n /* \"#utility.yul\":5857:5874 */\n add\n /* \"#utility.yul\":5844:5875 */\n calldataload\n /* \"#utility.yul\":5902:5920 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5894:5900 */\n dup2\n /* \"#utility.yul\":5891:5921 */\n gt\n /* \"#utility.yul\":5888:6005 */\n iszero\n tag_153\n jumpi\n /* \"#utility.yul\":5924:6003 */\n tag_154\n tag_50\n jump\t// in\n tag_154:\n /* \"#utility.yul\":5888:6005 */\n tag_153:\n /* \"#utility.yul\":6029:6092 */\n tag_155\n /* \"#utility.yul\":6084:6091 */\n dup5\n /* \"#utility.yul\":6075:6081 */\n dup3\n /* \"#utility.yul\":6064:6073 */\n dup6\n /* \"#utility.yul\":6060:6082 */\n add\n /* \"#utility.yul\":6029:6092 */\n tag_66\n jump\t// in\n tag_155:\n /* \"#utility.yul\":6019:6092 */\n swap2\n pop\n /* \"#utility.yul\":5815:6102 */\n pop\n /* \"#utility.yul\":5600:6109 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6115:6295 */\n tag_67:\n /* \"#utility.yul\":6163:6240 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6160:6161 */\n 0x00\n /* \"#utility.yul\":6153:6241 */\n mstore\n /* \"#utility.yul\":6260:6264 */\n 0x22\n /* \"#utility.yul\":6257:6258 */\n 0x04\n /* \"#utility.yul\":6250:6265 */\n mstore\n /* \"#utility.yul\":6284:6288 */\n 0x24\n /* \"#utility.yul\":6281:6282 */\n 0x00\n /* \"#utility.yul\":6274:6289 */\n revert\n /* \"#utility.yul\":6301:6621 */\n tag_34:\n /* \"#utility.yul\":6345:6351 */\n 0x00\n /* \"#utility.yul\":6382:6383 */\n 0x02\n /* \"#utility.yul\":6376:6380 */\n dup3\n /* \"#utility.yul\":6372:6384 */\n div\n /* \"#utility.yul\":6362:6384 */\n swap1\n pop\n /* \"#utility.yul\":6429:6430 */\n 0x01\n /* \"#utility.yul\":6423:6427 */\n dup3\n /* \"#utility.yul\":6419:6431 */\n and\n /* \"#utility.yul\":6450:6468 */\n dup1\n /* \"#utility.yul\":6440:6521 */\n tag_158\n jumpi\n /* \"#utility.yul\":6506:6510 */\n 0x7f\n /* \"#utility.yul\":6498:6504 */\n dup3\n /* \"#utility.yul\":6494:6511 */\n and\n /* \"#utility.yul\":6484:6511 */\n swap2\n pop\n /* \"#utility.yul\":6440:6521 */\n tag_158:\n /* \"#utility.yul\":6568:6570 */\n 0x20\n /* \"#utility.yul\":6560:6566 */\n dup3\n /* \"#utility.yul\":6557:6571 */\n lt\n /* \"#utility.yul\":6537:6555 */\n dup2\n /* \"#utility.yul\":6534:6572 */\n sub\n /* \"#utility.yul\":6531:6615 */\n tag_159\n jumpi\n /* \"#utility.yul\":6587:6605 */\n tag_160\n tag_67\n jump\t// in\n tag_160:\n /* \"#utility.yul\":6531:6615 */\n tag_159:\n /* \"#utility.yul\":6352:6621 */\n pop\n /* \"#utility.yul\":6301:6621 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6627:6768 */\n tag_68:\n /* \"#utility.yul\":6676:6680 */\n 0x00\n /* \"#utility.yul\":6699:6702 */\n dup2\n /* \"#utility.yul\":6691:6702 */\n swap1\n pop\n /* \"#utility.yul\":6722:6725 */\n dup2\n /* \"#utility.yul\":6719:6720 */\n 0x00\n /* \"#utility.yul\":6712:6726 */\n mstore\n /* \"#utility.yul\":6756:6760 */\n 0x20\n /* \"#utility.yul\":6753:6754 */\n 0x00\n /* \"#utility.yul\":6743:6761 */\n keccak256\n /* \"#utility.yul\":6735:6761 */\n swap1\n pop\n /* \"#utility.yul\":6627:6768 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6774:6867 */\n tag_69:\n /* \"#utility.yul\":6811:6817 */\n 0x00\n /* \"#utility.yul\":6858:6860 */\n 0x20\n /* \"#utility.yul\":6853:6855 */\n 0x1f\n /* \"#utility.yul\":6846:6851 */\n dup4\n /* \"#utility.yul\":6842:6856 */\n add\n /* \"#utility.yul\":6838:6861 */\n div\n /* \"#utility.yul\":6828:6861 */\n swap1\n pop\n /* \"#utility.yul\":6774:6867 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":6873:6980 */\n tag_70:\n /* \"#utility.yul\":6917:6925 */\n 0x00\n /* \"#utility.yul\":6967:6972 */\n dup3\n /* \"#utility.yul\":6961:6965 */\n dup3\n /* \"#utility.yul\":6957:6973 */\n shl\n /* \"#utility.yul\":6936:6973 */\n swap1\n pop\n /* \"#utility.yul\":6873:6980 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6986:7379 */\n tag_71:\n /* \"#utility.yul\":7055:7061 */\n 0x00\n /* \"#utility.yul\":7105:7106 */\n 0x08\n /* \"#utility.yul\":7093:7103 */\n dup4\n /* \"#utility.yul\":7089:7107 */\n mul\n /* \"#utility.yul\":7128:7225 */\n tag_165\n /* \"#utility.yul\":7158:7224 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":7147:7156 */\n dup3\n /* \"#utility.yul\":7128:7225 */\n tag_70\n jump\t// in\n tag_165:\n /* \"#utility.yul\":7246:7285 */\n tag_166\n /* \"#utility.yul\":7276:7284 */\n dup7\n /* \"#utility.yul\":7265:7274 */\n dup4\n /* \"#utility.yul\":7246:7285 */\n tag_70\n jump\t// in\n tag_166:\n /* \"#utility.yul\":7234:7285 */\n swap6\n pop\n /* \"#utility.yul\":7318:7322 */\n dup1\n /* \"#utility.yul\":7314:7323 */\n not\n /* \"#utility.yul\":7307:7312 */\n dup5\n /* \"#utility.yul\":7303:7324 */\n and\n /* \"#utility.yul\":7294:7324 */\n swap4\n pop\n /* \"#utility.yul\":7367:7371 */\n dup1\n /* \"#utility.yul\":7357:7365 */\n dup7\n /* \"#utility.yul\":7353:7372 */\n and\n /* \"#utility.yul\":7346:7351 */\n dup5\n /* \"#utility.yul\":7343:7373 */\n or\n /* \"#utility.yul\":7333:7373 */\n swap3\n pop\n /* \"#utility.yul\":7062:7379 */\n pop\n pop\n /* \"#utility.yul\":6986:7379 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7385:7445 */\n tag_72:\n /* \"#utility.yul\":7413:7416 */\n 0x00\n /* \"#utility.yul\":7434:7439 */\n dup2\n /* \"#utility.yul\":7427:7439 */\n swap1\n pop\n /* \"#utility.yul\":7385:7445 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7451:7593 */\n tag_73:\n /* \"#utility.yul\":7501:7510 */\n 0x00\n /* \"#utility.yul\":7534:7587 */\n tag_169\n /* \"#utility.yul\":7552:7586 */\n tag_170\n /* \"#utility.yul\":7561:7585 */\n tag_171\n /* \"#utility.yul\":7579:7584 */\n dup5\n /* \"#utility.yul\":7561:7585 */\n tag_46\n jump\t// in\n tag_171:\n /* \"#utility.yul\":7552:7586 */\n tag_72\n jump\t// in\n tag_170:\n /* \"#utility.yul\":7534:7587 */\n tag_46\n jump\t// in\n tag_169:\n /* \"#utility.yul\":7521:7587 */\n swap1\n pop\n /* \"#utility.yul\":7451:7593 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7599:7674 */\n tag_74:\n /* \"#utility.yul\":7642:7645 */\n 0x00\n /* \"#utility.yul\":7663:7668 */\n dup2\n /* \"#utility.yul\":7656:7668 */\n swap1\n pop\n /* \"#utility.yul\":7599:7674 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":7680:7949 */\n tag_75:\n /* \"#utility.yul\":7790:7829 */\n tag_174\n /* \"#utility.yul\":7821:7828 */\n dup4\n /* \"#utility.yul\":7790:7829 */\n tag_73\n jump\t// in\n tag_174:\n /* \"#utility.yul\":7851:7942 */\n tag_175\n /* \"#utility.yul\":7900:7941 */\n tag_176\n /* \"#utility.yul\":7924:7940 */\n dup3\n /* \"#utility.yul\":7900:7941 */\n tag_74\n jump\t// in\n tag_176:\n /* \"#utility.yul\":7892:7898 */\n dup5\n /* \"#utility.yul\":7885:7889 */\n dup5\n /* \"#utility.yul\":7879:7890 */\n sload\n /* \"#utility.yul\":7851:7942 */\n tag_71\n jump\t// in\n tag_175:\n /* \"#utility.yul\":7845:7849 */\n dup3\n /* \"#utility.yul\":7838:7943 */\n sstore\n /* \"#utility.yul\":7756:7949 */\n pop\n /* \"#utility.yul\":7680:7949 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":7955:8028 */\n tag_76:\n /* \"#utility.yul\":8000:8003 */\n 0x00\n /* \"#utility.yul\":7955:8028 */\n swap1\n jump\t// out\n /* \"#utility.yul\":8034:8223 */\n tag_77:\n /* \"#utility.yul\":8111:8143 */\n tag_179\n tag_76\n jump\t// in\n tag_179:\n /* \"#utility.yul\":8152:8217 */\n tag_180\n /* \"#utility.yul\":8210:8216 */\n dup2\n /* \"#utility.yul\":8202:8208 */\n dup5\n /* \"#utility.yul\":8196:8200 */\n dup5\n /* \"#utility.yul\":8152:8217 */\n tag_75\n jump\t// in\n tag_180:\n /* \"#utility.yul\":8087:8223 */\n pop\n /* \"#utility.yul\":8034:8223 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8229:8415 */\n tag_78:\n /* \"#utility.yul\":8289:8409 */\n tag_182:\n /* \"#utility.yul\":8306:8309 */\n dup2\n /* \"#utility.yul\":8299:8304 */\n dup2\n /* \"#utility.yul\":8296:8310 */\n lt\n /* \"#utility.yul\":8289:8409 */\n iszero\n tag_184\n jumpi\n /* \"#utility.yul\":8360:8399 */\n tag_185\n /* \"#utility.yul\":8397:8398 */\n 0x00\n /* \"#utility.yul\":8390:8395 */\n dup3\n /* \"#utility.yul\":8360:8399 */\n tag_77\n jump\t// in\n tag_185:\n /* \"#utility.yul\":8333:8334 */\n 0x01\n /* \"#utility.yul\":8326:8331 */\n dup2\n /* \"#utility.yul\":8322:8335 */\n add\n /* \"#utility.yul\":8313:8335 */\n swap1\n pop\n /* \"#utility.yul\":8289:8409 */\n jump(tag_182)\n tag_184:\n /* \"#utility.yul\":8229:8415 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8421:8964 */\n tag_79:\n /* \"#utility.yul\":8522:8524 */\n 0x1f\n /* \"#utility.yul\":8517:8520 */\n dup3\n /* \"#utility.yul\":8514:8525 */\n gt\n /* \"#utility.yul\":8511:8957 */\n iszero\n tag_187\n jumpi\n /* \"#utility.yul\":8556:8594 */\n tag_188\n /* \"#utility.yul\":8588:8593 */\n dup2\n /* \"#utility.yul\":8556:8594 */\n tag_68\n jump\t// in\n tag_188:\n /* \"#utility.yul\":8640:8669 */\n tag_189\n /* \"#utility.yul\":8658:8668 */\n dup5\n /* \"#utility.yul\":8640:8669 */\n tag_69\n jump\t// in\n tag_189:\n /* \"#utility.yul\":8630:8638 */\n dup2\n /* \"#utility.yul\":8626:8670 */\n add\n /* \"#utility.yul\":8823:8825 */\n 0x20\n /* \"#utility.yul\":8811:8821 */\n dup6\n /* \"#utility.yul\":8808:8826 */\n lt\n /* \"#utility.yul\":8805:8854 */\n iszero\n tag_190\n jumpi\n /* \"#utility.yul\":8844:8852 */\n dup2\n /* \"#utility.yul\":8829:8852 */\n swap1\n pop\n /* \"#utility.yul\":8805:8854 */\n tag_190:\n /* \"#utility.yul\":8867:8947 */\n tag_191\n /* \"#utility.yul\":8923:8945 */\n tag_192\n /* \"#utility.yul\":8941:8944 */\n dup6\n /* \"#utility.yul\":8923:8945 */\n tag_69\n jump\t// in\n tag_192:\n /* \"#utility.yul\":8913:8921 */\n dup4\n /* \"#utility.yul\":8909:8946 */\n add\n /* \"#utility.yul\":8896:8907 */\n dup3\n /* \"#utility.yul\":8867:8947 */\n tag_78\n jump\t// in\n tag_191:\n /* \"#utility.yul\":8526:8957 */\n pop\n pop\n /* \"#utility.yul\":8511:8957 */\n tag_187:\n /* \"#utility.yul\":8421:8964 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":8970:9087 */\n tag_80:\n /* \"#utility.yul\":9024:9032 */\n 0x00\n /* \"#utility.yul\":9074:9079 */\n dup3\n /* \"#utility.yul\":9068:9072 */\n dup3\n /* \"#utility.yul\":9064:9080 */\n shr\n /* \"#utility.yul\":9043:9080 */\n swap1\n pop\n /* \"#utility.yul\":8970:9087 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9093:9262 */\n tag_81:\n /* \"#utility.yul\":9137:9143 */\n 0x00\n /* \"#utility.yul\":9170:9221 */\n tag_195\n /* \"#utility.yul\":9218:9219 */\n 0x00\n /* \"#utility.yul\":9214:9220 */\n not\n /* \"#utility.yul\":9206:9211 */\n dup5\n /* \"#utility.yul\":9203:9204 */\n 0x08\n /* \"#utility.yul\":9199:9212 */\n mul\n /* \"#utility.yul\":9170:9221 */\n tag_80\n jump\t// in\n tag_195:\n /* \"#utility.yul\":9166:9222 */\n not\n /* \"#utility.yul\":9251:9255 */\n dup1\n /* \"#utility.yul\":9245:9249 */\n dup4\n /* \"#utility.yul\":9241:9256 */\n and\n /* \"#utility.yul\":9231:9256 */\n swap2\n pop\n /* \"#utility.yul\":9144:9262 */\n pop\n /* \"#utility.yul\":9093:9262 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9267:9562 */\n tag_82:\n /* \"#utility.yul\":9343:9347 */\n 0x00\n /* \"#utility.yul\":9489:9518 */\n tag_197\n /* \"#utility.yul\":9514:9517 */\n dup4\n /* \"#utility.yul\":9508:9512 */\n dup4\n /* \"#utility.yul\":9489:9518 */\n tag_81\n jump\t// in\n tag_197:\n /* \"#utility.yul\":9481:9518 */\n swap2\n pop\n /* \"#utility.yul\":9551:9554 */\n dup3\n /* \"#utility.yul\":9548:9549 */\n 0x02\n /* \"#utility.yul\":9544:9555 */\n mul\n /* \"#utility.yul\":9538:9542 */\n dup3\n /* \"#utility.yul\":9535:9556 */\n or\n /* \"#utility.yul\":9527:9556 */\n swap1\n pop\n /* \"#utility.yul\":9267:9562 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":9567:10962 */\n tag_43:\n /* \"#utility.yul\":9684:9721 */\n tag_199\n /* \"#utility.yul\":9717:9720 */\n dup3\n /* \"#utility.yul\":9684:9721 */\n tag_53\n jump\t// in\n tag_199:\n /* \"#utility.yul\":9786:9804 */\n 0xffffffffffffffff\n /* \"#utility.yul\":9778:9784 */\n dup2\n /* \"#utility.yul\":9775:9805 */\n gt\n /* \"#utility.yul\":9772:9828 */\n iszero\n tag_200\n jumpi\n /* \"#utility.yul\":9808:9826 */\n tag_201\n tag_60\n jump\t// in\n tag_201:\n /* \"#utility.yul\":9772:9828 */\n tag_200:\n /* \"#utility.yul\":9852:9890 */\n tag_202\n /* \"#utility.yul\":9884:9888 */\n dup3\n /* \"#utility.yul\":9878:9889 */\n sload\n /* \"#utility.yul\":9852:9890 */\n tag_34\n jump\t// in\n tag_202:\n /* \"#utility.yul\":9937:10004 */\n tag_203\n /* \"#utility.yul\":9997:10003 */\n dup3\n /* \"#utility.yul\":9989:9995 */\n dup3\n /* \"#utility.yul\":9983:9987 */\n dup6\n /* \"#utility.yul\":9937:10004 */\n tag_79\n jump\t// in\n tag_203:\n /* \"#utility.yul\":10031:10032 */\n 0x00\n /* \"#utility.yul\":10055:10059 */\n 0x20\n /* \"#utility.yul\":10042:10059 */\n swap1\n pop\n /* \"#utility.yul\":10087:10089 */\n 0x1f\n /* \"#utility.yul\":10079:10085 */\n dup4\n /* \"#utility.yul\":10076:10090 */\n gt\n /* \"#utility.yul\":10104:10105 */\n 0x01\n /* \"#utility.yul\":10099:10717 */\n dup2\n eq\n tag_205\n jumpi\n /* \"#utility.yul\":10761:10762 */\n 0x00\n /* \"#utility.yul\":10778:10784 */\n dup5\n /* \"#utility.yul\":10775:10852 */\n iszero\n tag_206\n jumpi\n /* \"#utility.yul\":10827:10836 */\n dup3\n /* \"#utility.yul\":10822:10825 */\n dup8\n /* \"#utility.yul\":10818:10837 */\n add\n /* \"#utility.yul\":10812:10838 */\n mload\n /* \"#utility.yul\":10803:10838 */\n swap1\n pop\n /* \"#utility.yul\":10775:10852 */\n tag_206:\n /* \"#utility.yul\":10878:10945 */\n tag_207\n /* \"#utility.yul\":10938:10944 */\n dup6\n /* \"#utility.yul\":10931:10936 */\n dup3\n /* \"#utility.yul\":10878:10945 */\n tag_82\n jump\t// in\n tag_207:\n /* \"#utility.yul\":10872:10876 */\n dup7\n /* \"#utility.yul\":10865:10946 */\n sstore\n /* \"#utility.yul\":10734:10956 */\n pop\n /* \"#utility.yul\":10069:10956 */\n jump(tag_204)\n /* \"#utility.yul\":10099:10717 */\n tag_205:\n /* \"#utility.yul\":10151:10155 */\n 0x1f\n /* \"#utility.yul\":10147:10156 */\n not\n /* \"#utility.yul\":10139:10145 */\n dup5\n /* \"#utility.yul\":10135:10157 */\n and\n /* \"#utility.yul\":10185:10222 */\n tag_208\n /* \"#utility.yul\":10217:10221 */\n dup7\n /* \"#utility.yul\":10185:10222 */\n tag_68\n jump\t// in\n tag_208:\n /* \"#utility.yul\":10244:10245 */\n 0x00\n /* \"#utility.yul\":10258:10466 */\n tag_209:\n /* \"#utility.yul\":10272:10279 */\n dup3\n /* \"#utility.yul\":10269:10270 */\n dup2\n /* \"#utility.yul\":10266:10280 */\n lt\n /* \"#utility.yul\":10258:10466 */\n iszero\n tag_211\n jumpi\n /* \"#utility.yul\":10351:10360 */\n dup5\n /* \"#utility.yul\":10346:10349 */\n dup10\n /* \"#utility.yul\":10342:10361 */\n add\n /* \"#utility.yul\":10336:10362 */\n mload\n /* \"#utility.yul\":10328:10334 */\n dup3\n /* \"#utility.yul\":10321:10363 */\n sstore\n /* \"#utility.yul\":10402:10403 */\n 0x01\n /* \"#utility.yul\":10394:10400 */\n dup3\n /* \"#utility.yul\":10390:10404 */\n add\n /* \"#utility.yul\":10380:10404 */\n swap2\n pop\n /* \"#utility.yul\":10449:10451 */\n 0x20\n /* \"#utility.yul\":10438:10447 */\n dup6\n /* \"#utility.yul\":10434:10452 */\n add\n /* \"#utility.yul\":10421:10452 */\n swap5\n pop\n /* \"#utility.yul\":10295:10299 */\n 0x20\n /* \"#utility.yul\":10292:10293 */\n dup2\n /* \"#utility.yul\":10288:10300 */\n add\n /* \"#utility.yul\":10283:10300 */\n swap1\n pop\n /* \"#utility.yul\":10258:10466 */\n jump(tag_209)\n tag_211:\n /* \"#utility.yul\":10494:10500 */\n dup7\n /* \"#utility.yul\":10485:10492 */\n dup4\n /* \"#utility.yul\":10482:10501 */\n lt\n /* \"#utility.yul\":10479:10658 */\n iszero\n tag_212\n jumpi\n /* \"#utility.yul\":10552:10561 */\n dup5\n /* \"#utility.yul\":10547:10550 */\n dup10\n /* \"#utility.yul\":10543:10562 */\n add\n /* \"#utility.yul\":10537:10563 */\n mload\n /* \"#utility.yul\":10595:10643 */\n tag_213\n /* \"#utility.yul\":10637:10641 */\n 0x1f\n /* \"#utility.yul\":10629:10635 */\n dup10\n /* \"#utility.yul\":10625:10642 */\n and\n /* \"#utility.yul\":10614:10623 */\n dup3\n /* \"#utility.yul\":10595:10643 */\n tag_81\n jump\t// in\n tag_213:\n /* \"#utility.yul\":10587:10593 */\n dup4\n /* \"#utility.yul\":10580:10644 */\n sstore\n /* \"#utility.yul\":10502:10658 */\n pop\n /* \"#utility.yul\":10479:10658 */\n tag_212:\n /* \"#utility.yul\":10704:10705 */\n 0x01\n /* \"#utility.yul\":10700:10701 */\n 0x02\n /* \"#utility.yul\":10692:10698 */\n dup9\n /* \"#utility.yul\":10688:10702 */\n mul\n /* \"#utility.yul\":10684:10706 */\n add\n /* \"#utility.yul\":10678:10682 */\n dup9\n /* \"#utility.yul\":10671:10707 */\n sstore\n /* \"#utility.yul\":10106:10717 */\n pop\n pop\n pop\n /* \"#utility.yul\":10069:10956 */\n tag_204:\n pop\n /* \"#utility.yul\":9659:10962 */\n pop\n pop\n pop\n /* \"#utility.yul\":9567:10962 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":10968:11116 */\n tag_83:\n /* \"#utility.yul\":11070:11081 */\n 0x00\n /* \"#utility.yul\":11107:11110 */\n dup2\n /* \"#utility.yul\":11092:11110 */\n swap1\n pop\n /* \"#utility.yul\":10968:11116 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11122:11512 */\n tag_84:\n /* \"#utility.yul\":11228:11231 */\n 0x00\n /* \"#utility.yul\":11256:11295 */\n tag_216\n /* \"#utility.yul\":11289:11294 */\n dup3\n /* \"#utility.yul\":11256:11295 */\n tag_53\n jump\t// in\n tag_216:\n /* \"#utility.yul\":11311:11400 */\n tag_217\n /* \"#utility.yul\":11393:11399 */\n dup2\n /* \"#utility.yul\":11388:11391 */\n dup6\n /* \"#utility.yul\":11311:11400 */\n tag_83\n jump\t// in\n tag_217:\n /* \"#utility.yul\":11304:11400 */\n swap4\n pop\n /* \"#utility.yul\":11409:11474 */\n tag_218\n /* \"#utility.yul\":11467:11473 */\n dup2\n /* \"#utility.yul\":11462:11465 */\n dup6\n /* \"#utility.yul\":11455:11459 */\n 0x20\n /* \"#utility.yul\":11448:11453 */\n dup7\n /* \"#utility.yul\":11444:11460 */\n add\n /* \"#utility.yul\":11409:11474 */\n tag_55\n jump\t// in\n tag_218:\n /* \"#utility.yul\":11499:11505 */\n dup1\n /* \"#utility.yul\":11494:11497 */\n dup5\n /* \"#utility.yul\":11490:11506 */\n add\n /* \"#utility.yul\":11483:11506 */\n swap2\n pop\n /* \"#utility.yul\":11232:11512 */\n pop\n /* \"#utility.yul\":11122:11512 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":11518:11793 */\n tag_45:\n /* \"#utility.yul\":11650:11653 */\n 0x00\n /* \"#utility.yul\":11672:11767 */\n tag_220\n /* \"#utility.yul\":11763:11766 */\n dup3\n /* \"#utility.yul\":11754:11760 */\n dup5\n /* \"#utility.yul\":11672:11767 */\n tag_84\n jump\t// in\n tag_220:\n /* \"#utility.yul\":11665:11767 */\n swap2\n pop\n /* \"#utility.yul\":11784:11787 */\n dup2\n /* \"#utility.yul\":11777:11787 */\n swap1\n pop\n /* \"#utility.yul\":11518:11793 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa264697066735822122063ff1342db2d7d323b2f0015a2fc06956ee07ab1d26738ffdaef477ef0d589e064736f6c63430008130033\n}\n",
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5061093b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632e64cec11461005c5780632ebce6311461007a5780636057361d146100ab5780636f760f41146100c75780638bab8dd5146100e3575b600080fd5b610064610113565b60405161007191906102b2565b60405180910390f35b610094600480360381019061008f919061030d565b61011c565b6040516100a29291906103ca565b60405180910390f35b6100c560048036038101906100c0919061030d565b6101d8565b005b6100e160048036038101906100dc919061052f565b6101e2565b005b6100fd60048036038101906100f8919061058b565b61026b565b60405161010a91906102b2565b60405180910390f35b60008054905090565b6001818154811061012c57600080fd5b906000526020600020906002020160009150905080600001549080600101805461015590610603565b80601f016020809104026020016040519081016040528092919081815260200182805461018190610603565b80156101ce5780601f106101a3576101008083540402835291602001916101ce565b820191906000526020600020905b8154815290600101906020018083116101b157829003601f168201915b5050505050905082565b8060008190555050565b6001604051806040016040528083815260200184815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101908161024191906107e0565b5050508060028360405161025591906108ee565b9081526020016040518091039020819055505050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6000819050919050565b6102ac81610299565b82525050565b60006020820190506102c760008301846102a3565b92915050565b6000604051905090565b600080fd5b600080fd5b6102ea81610299565b81146102f557600080fd5b50565b600081359050610307816102e1565b92915050565b600060208284031215610323576103226102d7565b5b6000610331848285016102f8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610374578082015181840152602081019050610359565b60008484015250505050565b6000601f19601f8301169050919050565b600061039c8261033a565b6103a68185610345565b93506103b6818560208601610356565b6103bf81610380565b840191505092915050565b60006040820190506103df60008301856102a3565b81810360208301526103f18184610391565b90509392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61043c82610380565b810181811067ffffffffffffffff8211171561045b5761045a610404565b5b80604052505050565b600061046e6102cd565b905061047a8282610433565b919050565b600067ffffffffffffffff82111561049a57610499610404565b5b6104a382610380565b9050602081019050919050565b82818337600083830152505050565b60006104d26104cd8461047f565b610464565b9050828152602081018484840111156104ee576104ed6103ff565b5b6104f98482856104b0565b509392505050565b600082601f830112610516576105156103fa565b5b81356105268482602086016104bf565b91505092915050565b60008060408385031215610546576105456102d7565b5b600083013567ffffffffffffffff811115610564576105636102dc565b5b61057085828601610501565b9250506020610581858286016102f8565b9150509250929050565b6000602082840312156105a1576105a06102d7565b5b600082013567ffffffffffffffff8111156105bf576105be6102dc565b5b6105cb84828501610501565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061061b57607f821691505b60208210810361062e5761062d6105d4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610659565b6106a08683610659565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106dd6106d86106d384610299565b6106b8565b610299565b9050919050565b6000819050919050565b6106f7836106c2565b61070b610703826106e4565b848454610666565b825550505050565b600090565b610720610713565b61072b8184846106ee565b505050565b5b8181101561074f57610744600082610718565b600181019050610731565b5050565b601f8211156107945761076581610634565b61076e84610649565b8101602085101561077d578190505b61079161078985610649565b830182610730565b50505b505050565b600082821c905092915050565b60006107b760001984600802610799565b1980831691505092915050565b60006107d083836107a6565b9150826002028217905092915050565b6107e98261033a565b67ffffffffffffffff81111561080257610801610404565b5b61080c8254610603565b610817828285610753565b600060209050601f83116001811461084a5760008415610838578287015190505b61084285826107c4565b8655506108aa565b601f19841661085886610634565b60005b828110156108805784890151825560018201915060208501945060208101905061085b565b8683101561089d5784890151610899601f8916826107a6565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60006108c88261033a565b6108d281856108b2565b93506108e2818560208601610356565b80840191505092915050565b60006108fa82846108bd565b91508190509291505056fea264697066735822122063ff1342db2d7d323b2f0015a2fc06956ee07ab1d26738ffdaef477ef0d589e064736f6c63430008130033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x2EBCE631 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x6F760F41 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x8BAB8DD5 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8F SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP3 SWAP2 SWAP1 PUSH2 0x3CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x1D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDC SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x58B JUMP JUMPDEST PUSH2 0x26B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10A SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x155 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x181 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1CE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP3 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x7E0 JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x8EE JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 ADD DUP1 MLOAD DUP5 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD KECCAK256 DUP2 DUP4 MSTORE DUP1 SWAP6 POP POP POP POP POP POP PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2AC DUP2 PUSH2 0x299 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EA DUP2 PUSH2 0x299 JUMP JUMPDEST DUP2 EQ PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x307 DUP2 PUSH2 0x2E1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x323 JUMPI PUSH2 0x322 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x331 DUP5 DUP3 DUP6 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x359 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x3A6 DUP2 DUP6 PUSH2 0x345 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3BF DUP2 PUSH2 0x380 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3DF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A3 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3F1 DUP2 DUP5 PUSH2 0x391 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x43C DUP3 PUSH2 0x380 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x45B JUMPI PUSH2 0x45A PUSH2 0x404 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46E PUSH2 0x2CD JUMP JUMPDEST SWAP1 POP PUSH2 0x47A DUP3 DUP3 PUSH2 0x433 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x49A JUMPI PUSH2 0x499 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x4A3 DUP3 PUSH2 0x380 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2 PUSH2 0x4CD DUP5 PUSH2 0x47F JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4ED PUSH2 0x3FF JUMP JUMPDEST JUMPDEST PUSH2 0x4F9 DUP5 DUP3 DUP6 PUSH2 0x4B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x516 JUMPI PUSH2 0x515 PUSH2 0x3FA JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x526 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x546 JUMPI PUSH2 0x545 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x564 JUMPI PUSH2 0x563 PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x570 DUP6 DUP3 DUP7 ADD PUSH2 0x501 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x581 DUP6 DUP3 DUP7 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5A1 JUMPI PUSH2 0x5A0 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BE PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x5CB DUP5 DUP3 DUP6 ADD PUSH2 0x501 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x61B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x62E JUMPI PUSH2 0x62D PUSH2 0x5D4 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x696 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x6A0 DUP7 DUP4 PUSH2 0x659 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DD PUSH2 0x6D8 PUSH2 0x6D3 DUP5 PUSH2 0x299 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F7 DUP4 PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0x70B PUSH2 0x703 DUP3 PUSH2 0x6E4 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x666 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x720 PUSH2 0x713 JUMP JUMPDEST PUSH2 0x72B DUP2 DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH2 0x744 PUSH1 0x0 DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x731 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x794 JUMPI PUSH2 0x765 DUP2 PUSH2 0x634 JUMP JUMPDEST PUSH2 0x76E DUP5 PUSH2 0x649 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x77D JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x791 PUSH2 0x789 DUP6 PUSH2 0x649 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x730 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x799 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D0 DUP4 DUP4 PUSH2 0x7A6 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E9 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x802 JUMPI PUSH2 0x801 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x80C DUP3 SLOAD PUSH2 0x603 JUMP JUMPDEST PUSH2 0x817 DUP3 DUP3 DUP6 PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x84A JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x838 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x842 DUP6 DUP3 PUSH2 0x7C4 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x8AA JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x858 DUP7 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x85B JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x89D JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x899 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x7A6 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C8 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x8D2 DUP2 DUP6 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 POP PUSH2 0x8E2 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FA DUP3 DUP5 PUSH2 0x8BD JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xFF1342DB 0x2D PUSH30 0x323B2F0015A2FC06956EE07AB1D26738FFDAEF477EF0D589E064736F6C63 NUMBER STOP ADDMOD SGT STOP CALLER ",
"sourceMap": "131:687:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@addPerson_57": {
"entryPoint": 482,
"id": 57,
"parameterSlots": 2,
"returnSlots": 0
},
"@listOfPeople_12": {
"entryPoint": 284,
"id": 12,
"parameterSlots": 0,
"returnSlots": 0
},
"@nameToFavoriteNumber_16": {
"entryPoint": 619,
"id": 16,
"parameterSlots": 0,
"returnSlots": 0
},
"@retrieve_34": {
"entryPoint": 275,
"id": 34,
"parameterSlots": 0,
"returnSlots": 1
},
"@store_26": {
"entryPoint": 472,
"id": 26,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_available_length_t_string_memory_ptr": {
"entryPoint": 1215,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_string_memory_ptr": {
"entryPoint": 1281,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 760,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptr": {
"entryPoint": 1419,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptrt_uint256": {
"entryPoint": 1327,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 781,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 913,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2237,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 675,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 2286,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 690,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 970,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1124,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 717,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_string_memory_ptr": {
"entryPoint": 1151,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 1588,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 826,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 837,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2226,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 1875,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_uint256": {
"entryPoint": 665,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 1840,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 1730,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 2016,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"copy_calldata_to_memory_with_cleanup": {
"entryPoint": 1200,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 854,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 1609,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 1539,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 1988,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 1075,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"identity": {
"entryPoint": 1720,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 1958,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x22": {
"entryPoint": 1492,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1028,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 1764,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 1018,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 1023,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 732,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 727,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 896,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_dynamic": {
"entryPoint": 1625,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 1945,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 1816,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 1638,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 1774,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 737,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 1811,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:11796:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "73:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "155:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "172:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "195:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "177:17:1"
},
"nodeType": "YulFunctionCall",
"src": "177:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "165:6:1"
},
"nodeType": "YulFunctionCall",
"src": "165:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "165:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "143:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "150:3:1",
"type": ""
}
],
"src": "90:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "312:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "322:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "334:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "345:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "330:3:1"
},
"nodeType": "YulFunctionCall",
"src": "330:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "322:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "402:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "415:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "426:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "411:3:1"
},
"nodeType": "YulFunctionCall",
"src": "411:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "358:43:1"
},
"nodeType": "YulFunctionCall",
"src": "358:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "284:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "296:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "307:4:1",
"type": ""
}
],
"src": "214:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "482:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "492:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "508:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "502:5:1"
},
"nodeType": "YulFunctionCall",
"src": "502:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "492:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "475:6:1",
"type": ""
}
],
"src": "442:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "612:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "629:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "632:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "622:6:1"
},
"nodeType": "YulFunctionCall",
"src": "622:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "622:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "523:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "735:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "752:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "755:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "745:6:1"
},
"nodeType": "YulFunctionCall",
"src": "745:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "745:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "646:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "812:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "869:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "878:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "881:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "871:6:1"
},
"nodeType": "YulFunctionCall",
"src": "871:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "871:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "835:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "860:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "842:17:1"
},
"nodeType": "YulFunctionCall",
"src": "842:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "832:2:1"
},
"nodeType": "YulFunctionCall",
"src": "832:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "825:6:1"
},
"nodeType": "YulFunctionCall",
"src": "825:43:1"
},
"nodeType": "YulIf",
"src": "822:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "805:5:1",
"type": ""
}
],
"src": "769:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "949:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "959:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "981:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "968:12:1"
},
"nodeType": "YulFunctionCall",
"src": "968:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "959:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1024:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "997:26:1"
},
"nodeType": "YulFunctionCall",
"src": "997:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "997:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "927:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "935:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "943:5:1",
"type": ""
}
],
"src": "897:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1108:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1154:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1156:77:1"
},
"nodeType": "YulFunctionCall",
"src": "1156:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "1156:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1129:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1138:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1125:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1125:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1150:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1121:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1121:32:1"
},
"nodeType": "YulIf",
"src": "1118:119:1"
},
{
"nodeType": "YulBlock",
"src": "1247:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1262:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1276:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1266:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1291:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1326:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1337:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1322:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1322:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1346:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1301:20:1"
},
"nodeType": "YulFunctionCall",
"src": "1301:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1291:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1078:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1089:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1101:6:1",
"type": ""
}
],
"src": "1042:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1436:40:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1447:22:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1463:5:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1457:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1457:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1447:6:1"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1419:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1429:6:1",
"type": ""
}
],
"src": "1377:99:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1578:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1595:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1600:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1588:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1588:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "1588:19:1"
},
{
"nodeType": "YulAssignment",
"src": "1616:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1635:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1640:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1631:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1631:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "1616:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1550:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1555:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "1566:11:1",
"type": ""
}
],
"src": "1482:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1719:184:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1729:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1738:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "1733:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1798:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1823:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1828:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1819:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1819:11:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1842:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1847:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1838:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1838:11:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1832:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1832:18:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1812:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1812:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "1812:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1759:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1762:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1756:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1756:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1770:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1772:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1781:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1784:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1777:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1777:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1772:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1752:3:1",
"statements": []
},
"src": "1748:113:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1881:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1886:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1877:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1877:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1895:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1870:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1870:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "1870:27:1"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1701:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "1706:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1711:6:1",
"type": ""
}
],
"src": "1657:246:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1957:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1967:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1985:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1992:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1981:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1981:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2001:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1997:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1997:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1977:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1977:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1967:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1940:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "1950:6:1",
"type": ""
}
],
"src": "1909:102:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2109:285:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2119:53:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2166:5:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2133:32:1"
},
"nodeType": "YulFunctionCall",
"src": "2133:39:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2123:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2181:78:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2247:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2252:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2188:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2188:71:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2181:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2307:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2314:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2303:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2303:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2321:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2326:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "2268:34:1"
},
"nodeType": "YulFunctionCall",
"src": "2268:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "2268:65:1"
},
{
"nodeType": "YulAssignment",
"src": "2342:46:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2353:3:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2380:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "2358:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2358:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2349:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2349:39:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2342:3:1"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2090:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2097:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2105:3:1",
"type": ""
}
],
"src": "2017:377:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2546:277:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2556:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2568:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2579:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2564:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2564:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2556:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2636:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2649:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2660:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2645:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2645:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "2592:43:1"
},
"nodeType": "YulFunctionCall",
"src": "2592:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "2592:71:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2684:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2695:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2680:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2680:18:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2704:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2710:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2700:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2700:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2673:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2673:48:1"
},
"nodeType": "YulExpressionStatement",
"src": "2673:48:1"
},
{
"nodeType": "YulAssignment",
"src": "2730:86:1",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2802:6:1"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2811:4:1"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2738:63:1"
},
"nodeType": "YulFunctionCall",
"src": "2738:78:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2730:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2510:9:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2522:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2530:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2541:4:1",
"type": ""
}
],
"src": "2400:423:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2918:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2935:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2938:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2928:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2928:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2928:12:1"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "2829:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3041:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3058:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3061:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3051:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3051:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3051:12:1"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulFunctionDefinition",
"src": "2952:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3103:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3120:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3123:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3113:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3113:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3113:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3217:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3220:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3210:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3210:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3210:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3241:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3244:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3234:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3234:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3234:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3075:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3304:238:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3314:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3336:6:1"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3366:4:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3344:21:1"
},
"nodeType": "YulFunctionCall",
"src": "3344:27:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3332:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3332:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "3318:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3483:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "3485:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3485:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3485:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3426:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3438:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3423:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3423:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3462:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3474:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3459:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3459:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "3420:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3420:62:1"
},
"nodeType": "YulIf",
"src": "3417:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3521:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3525:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3514:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3514:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "3514:22:1"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3290:6:1",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3298:4:1",
"type": ""
}
],
"src": "3261:281:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3589:88:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3599:30:1",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "3609:18:1"
},
"nodeType": "YulFunctionCall",
"src": "3609:20:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3599:6:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3658:6:1"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3666:4:1"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "3638:19:1"
},
"nodeType": "YulFunctionCall",
"src": "3638:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "3638:33:1"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3573:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3582:6:1",
"type": ""
}
],
"src": "3548:129:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3750:241:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3855:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "3857:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3857:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3857:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3827:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3835:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3824:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3824:30:1"
},
"nodeType": "YulIf",
"src": "3821:56:1"
},
{
"nodeType": "YulAssignment",
"src": "3887:37:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3917:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3895:21:1"
},
"nodeType": "YulFunctionCall",
"src": "3895:29:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3887:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3961:23:1",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3973:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3979:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3969:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3969:15:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3961:4:1"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3734:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3745:4:1",
"type": ""
}
],
"src": "3683:308:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4061:82:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4084:3:1"
},
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4089:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4094:6:1"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "4071:12:1"
},
"nodeType": "YulFunctionCall",
"src": "4071:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "4071:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4121:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4126:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4117:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4117:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4135:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4110:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4110:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "4110:27:1"
}
]
},
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4043:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4048:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4053:6:1",
"type": ""
}
],
"src": "3997:146:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4233:341:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4243:75:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4310:6:1"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4268:41:1"
},
"nodeType": "YulFunctionCall",
"src": "4268:49:1"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "4252:15:1"
},
"nodeType": "YulFunctionCall",
"src": "4252:66:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4243:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4334:5:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4341:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4327:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4327:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "4327:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4357:27:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4372:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4379:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4368:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4368:16:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4361:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4422:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "4424:77:1"
},
"nodeType": "YulFunctionCall",
"src": "4424:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "4424:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4403:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4408:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4399:16:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4417:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4396:2:1"
},
"nodeType": "YulFunctionCall",
"src": "4396:25:1"
},
"nodeType": "YulIf",
"src": "4393:112:1"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4551:3:1"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4556:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4561:6:1"
}
],
"functionName": {
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "4514:36:1"
},
"nodeType": "YulFunctionCall",
"src": "4514:54:1"
},
"nodeType": "YulExpressionStatement",
"src": "4514:54:1"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4206:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4211:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4219:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4227:5:1",
"type": ""
}
],
"src": "4149:425:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4656:278:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4705:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "4707:77:1"
},
"nodeType": "YulFunctionCall",
"src": "4707:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "4707:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4684:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4692:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4680:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4680:17:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4699:3:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4676:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4676:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4669:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4669:35:1"
},
"nodeType": "YulIf",
"src": "4666:122:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4797:34:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4824:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4811:12:1"
},
"nodeType": "YulFunctionCall",
"src": "4811:20:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4801:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4840:88:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4901:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4909:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4897:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4897:17:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4916:6:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4924:3:1"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4849:47:1"
},
"nodeType": "YulFunctionCall",
"src": "4849:79:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4840:5:1"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4634:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4642:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4650:5:1",
"type": ""
}
],
"src": "4594:340:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5033:561:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5079:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5081:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5081:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5081:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5054:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5063:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5050:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5050:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5075:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5046:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5046:32:1"
},
"nodeType": "YulIf",
"src": "5043:119:1"
},
{
"nodeType": "YulBlock",
"src": "5172:287:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5187:45:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5218:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5229:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5214:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5214:17:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5201:12:1"
},
"nodeType": "YulFunctionCall",
"src": "5201:31:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5191:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5279:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "5281:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5281:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5281:79:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5251:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5259:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5248:2:1"
},
"nodeType": "YulFunctionCall",
"src": "5248:30:1"
},
"nodeType": "YulIf",
"src": "5245:117:1"
},
{
"nodeType": "YulAssignment",
"src": "5376:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5421:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5432:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5417:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5417:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5441:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5386:30:1"
},
"nodeType": "YulFunctionCall",
"src": "5386:63:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5376:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5469:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5484:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5498:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5488:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5514:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5549:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5560:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5545:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5545:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5569:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "5524:20:1"
},
"nodeType": "YulFunctionCall",
"src": "5524:53:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5514:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptrt_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4995:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5006:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5018:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5026:6:1",
"type": ""
}
],
"src": "4940:654:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5676:433:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5722:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5724:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5724:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5724:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5697:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5706:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5693:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5693:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5718:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5689:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5689:32:1"
},
"nodeType": "YulIf",
"src": "5686:119:1"
},
{
"nodeType": "YulBlock",
"src": "5815:287:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5830:45:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5861:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5872:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5857:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5857:17:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5844:12:1"
},
"nodeType": "YulFunctionCall",
"src": "5844:31:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5834:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5922:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "5924:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5924:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5924:79:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5894:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5902:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5891:2:1"
},
"nodeType": "YulFunctionCall",
"src": "5891:30:1"
},
"nodeType": "YulIf",
"src": "5888:117:1"
},
{
"nodeType": "YulAssignment",
"src": "6019:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6064:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6075:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6060:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6060:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6084:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "6029:30:1"
},
"nodeType": "YulFunctionCall",
"src": "6029:63:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6019:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5646:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5657:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5669:6:1",
"type": ""
}
],
"src": "5600:509:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6143:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6160:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6163:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6153:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6153:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "6153:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6257:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6260:4:1",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6250:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6250:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "6250:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6281:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6284:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6274:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6274:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "6274:15:1"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "6115:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6352:269:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6362:22:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6376:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6382:1:1",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "6372:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6372:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6362:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "6393:38:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6423:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6429:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6419:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6419:12:1"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "6397:18:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6470:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6484:27:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6498:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6506:4:1",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6494:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6494:17:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6484:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "6450:18:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6443:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6443:26:1"
},
"nodeType": "YulIf",
"src": "6440:81:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6573:42:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "6587:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6587:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "6587:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "6537:18:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6560:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6568:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6557:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6557:14:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6534:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6534:38:1"
},
"nodeType": "YulIf",
"src": "6531:84:1"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6336:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6345:6:1",
"type": ""
}
],
"src": "6301:320:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6681:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6691:11:1",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6699:3:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6691:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6719:1:1",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6722:3:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6712:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6712:14:1"
},
"nodeType": "YulExpressionStatement",
"src": "6712:14:1"
},
{
"nodeType": "YulAssignment",
"src": "6735:26:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6753:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6756:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "6743:9:1"
},
"nodeType": "YulFunctionCall",
"src": "6743:18:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6735:4:1"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "6668:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6676:4:1",
"type": ""
}
],
"src": "6627:141:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6818:49:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6828:33:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6846:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6853:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6842:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6842:14:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6858:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "6838:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6838:23:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "6828:6:1"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6801:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "6811:6:1",
"type": ""
}
],
"src": "6774:93:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6926:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6936:37:1",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "6961:4:1"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6967:5:1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "6957:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6957:16:1"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "6936:8:1"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "6901:4:1",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6907:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "6917:8:1",
"type": ""
}
],
"src": "6873:107:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7062:317:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7072:35:1",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "7093:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7105:1:1",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "7089:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7089:18:1"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "7076:9:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7116:109:1",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "7147:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7158:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "7128:18:1"
},
"nodeType": "YulFunctionCall",
"src": "7128:97:1"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "7120:4:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7234:51:1",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "7265:9:1"
},
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "7276:8:1"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "7246:18:1"
},
"nodeType": "YulFunctionCall",
"src": "7246:39:1"
},
"variableNames": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "7234:8:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7294:30:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7307:5:1"
},
{
"arguments": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "7318:4:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "7314:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7314:9:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7303:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7303:21:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7294:5:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7333:40:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7346:5:1"
},
{
"arguments": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "7357:8:1"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "7367:4:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7353:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7353:19:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "7343:2:1"
},
"nodeType": "YulFunctionCall",
"src": "7343:30:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "7333:6:1"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7023:5:1",
"type": ""
},
{
"name": "shiftBytes",
"nodeType": "YulTypedName",
"src": "7030:10:1",
"type": ""
},
{
"name": "toInsert",
"nodeType": "YulTypedName",
"src": "7042:8:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "7055:6:1",
"type": ""
}
],
"src": "6986:393:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7417:28:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7427:12:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "7434:5:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "7427:3:1"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7403:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "7413:3:1",
"type": ""
}
],
"src": "7385:60:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7511:82:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7521:66:1",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7579:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7561:17:1"
},
"nodeType": "YulFunctionCall",
"src": "7561:24:1"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "7552:8:1"
},
"nodeType": "YulFunctionCall",
"src": "7552:34:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7534:17:1"
},
"nodeType": "YulFunctionCall",
"src": "7534:53:1"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "7521:9:1"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7491:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "7501:9:1",
"type": ""
}
],
"src": "7451:142:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7646:28:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7656:12:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "7663:5:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "7656:3:1"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7632:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "7642:3:1",
"type": ""
}
],
"src": "7599:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7756:193:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7766:63:1",
"value": {
"arguments": [
{
"name": "value_0",
"nodeType": "YulIdentifier",
"src": "7821:7:1"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "7790:30:1"
},
"nodeType": "YulFunctionCall",
"src": "7790:39:1"
},
"variables": [
{
"name": "convertedValue_0",
"nodeType": "YulTypedName",
"src": "7770:16:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "7845:4:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "7885:4:1"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "7879:5:1"
},
"nodeType": "YulFunctionCall",
"src": "7879:11:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "7892:6:1"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nodeType": "YulIdentifier",
"src": "7924:16:1"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nodeType": "YulIdentifier",
"src": "7900:23:1"
},
"nodeType": "YulFunctionCall",
"src": "7900:41:1"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nodeType": "YulIdentifier",
"src": "7851:27:1"
},
"nodeType": "YulFunctionCall",
"src": "7851:91:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "7838:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7838:105:1"
},
"nodeType": "YulExpressionStatement",
"src": "7838:105:1"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "7733:4:1",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7739:6:1",
"type": ""
},
{
"name": "value_0",
"nodeType": "YulTypedName",
"src": "7747:7:1",
"type": ""
}
],
"src": "7680:269:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8004:24:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8014:8:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8021:1:1",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "8014:3:1"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "8000:3:1",
"type": ""
}
],
"src": "7955:73:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8087:136:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8097:46:1",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulIdentifier",
"src": "8111:30:1"
},
"nodeType": "YulFunctionCall",
"src": "8111:32:1"
},
"variables": [
{
"name": "zero_0",
"nodeType": "YulTypedName",
"src": "8101:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "8196:4:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8202:6:1"
},
{
"name": "zero_0",
"nodeType": "YulIdentifier",
"src": "8210:6:1"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "8152:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8152:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "8152:65:1"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "8073:4:1",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8079:6:1",
"type": ""
}
],
"src": "8034:189:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8279:136:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8346:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8390:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8397:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulIdentifier",
"src": "8360:29:1"
},
"nodeType": "YulFunctionCall",
"src": "8360:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "8360:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8299:5:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8306:3:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8296:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8296:14:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "8311:26:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8313:22:1",
"value": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8326:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8333:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8322:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8322:13:1"
},
"variableNames": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8313:5:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "8293:2:1",
"statements": []
},
"src": "8289:120:1"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "8267:5:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8274:3:1",
"type": ""
}
],
"src": "8229:186:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8500:464:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8526:431:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8540:54:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "8588:5:1"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "8556:31:1"
},
"nodeType": "YulFunctionCall",
"src": "8556:38:1"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "8544:8:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "8607:63:1",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "8630:8:1"
},
{
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "8658:10:1"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "8640:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8640:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8626:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8626:44:1"
},
"variables": [
{
"name": "deleteStart",
"nodeType": "YulTypedName",
"src": "8611:11:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8827:27:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8829:23:1",
"value": {
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "8844:8:1"
},
"variableNames": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "8829:11:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "8811:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8823:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8808:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8808:18:1"
},
"nodeType": "YulIf",
"src": "8805:49:1"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "8896:11:1"
},
{
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "8913:8:1"
},
{
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "8941:3:1"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "8923:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8923:22:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8909:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8909:37:1"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulIdentifier",
"src": "8867:28:1"
},
"nodeType": "YulFunctionCall",
"src": "8867:80:1"
},
"nodeType": "YulExpressionStatement",
"src": "8867:80:1"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "8517:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8522:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8514:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8514:11:1"
},
"nodeType": "YulIf",
"src": "8511:446:1"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "8476:5:1",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "8483:3:1",
"type": ""
},
{
"name": "startIndex",
"nodeType": "YulTypedName",
"src": "8488:10:1",
"type": ""
}
],
"src": "8421:543:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9033:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9043:37:1",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "9068:4:1"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9074:5:1"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "9064:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9064:16:1"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "9043:8:1"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "9008:4:1",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9014:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "9024:8:1",
"type": ""
}
],
"src": "8970:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9144:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9154:68:1",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9203:1:1",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nodeType": "YulIdentifier",
"src": "9206:5:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "9199:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9199:13:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9218:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "9214:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9214:6:1"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulIdentifier",
"src": "9170:28:1"
},
"nodeType": "YulFunctionCall",
"src": "9170:51:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "9166:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9166:56:1"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "9158:4:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "9231:25:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9245:4:1"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "9251:4:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9241:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9241:15:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "9231:6:1"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "9121:4:1",
"type": ""
},
{
"name": "bytes",
"nodeType": "YulTypedName",
"src": "9127:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "9137:6:1",
"type": ""
}
],
"src": "9093:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9348:214:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9481:37:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9508:4:1"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "9514:3:1"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "9489:18:1"
},
"nodeType": "YulFunctionCall",
"src": "9489:29:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9481:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9527:29:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9538:4:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9548:1:1",
"type": "",
"value": "2"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "9551:3:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "9544:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9544:11:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "9535:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9535:21:1"
},
"variableNames": [
{
"name": "used",
"nodeType": "YulIdentifier",
"src": "9527:4:1"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "9329:4:1",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "9335:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nodeType": "YulTypedName",
"src": "9343:4:1",
"type": ""
}
],
"src": "9267:295:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9659:1303:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9670:51:1",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "9717:3:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "9684:32:1"
},
"nodeType": "YulFunctionCall",
"src": "9684:37:1"
},
"variables": [
{
"name": "newLen",
"nodeType": "YulTypedName",
"src": "9674:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9806:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "9808:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9808:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9808:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "9778:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9786:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9775:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9775:30:1"
},
"nodeType": "YulIf",
"src": "9772:56:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "9838:52:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "9884:4:1"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "9878:5:1"
},
"nodeType": "YulFunctionCall",
"src": "9878:11:1"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "9852:25:1"
},
"nodeType": "YulFunctionCall",
"src": "9852:38:1"
},
"variables": [
{
"name": "oldLen",
"nodeType": "YulTypedName",
"src": "9842:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "9983:4:1"
},
{
"name": "oldLen",
"nodeType": "YulIdentifier",
"src": "9989:6:1"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "9997:6:1"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulIdentifier",
"src": "9937:45:1"
},
"nodeType": "YulFunctionCall",
"src": "9937:67:1"
},
"nodeType": "YulExpressionStatement",
"src": "9937:67:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "10014:18:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10031:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nodeType": "YulTypedName",
"src": "10018:9:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "10042:17:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10055:4:1",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10042:9:1"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "10106:611:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10120:37:1",
"value": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10139:6:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10151:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "10147:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10147:9:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10135:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10135:22:1"
},
"variables": [
{
"name": "loopEnd",
"nodeType": "YulTypedName",
"src": "10124:7:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10171:51:1",
"value": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "10217:4:1"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "10185:31:1"
},
"nodeType": "YulFunctionCall",
"src": "10185:37:1"
},
"variables": [
{
"name": "dstPtr",
"nodeType": "YulTypedName",
"src": "10175:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10235:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10244:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "10239:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10303:163:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10328:6:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "10346:3:1"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10351:9:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10342:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10342:19:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10336:5:1"
},
"nodeType": "YulFunctionCall",
"src": "10336:26:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10321:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10321:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "10321:42:1"
},
{
"nodeType": "YulAssignment",
"src": "10380:24:1",
"value": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10394:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10402:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10390:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10390:14:1"
},
"variableNames": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10380:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10421:31:1",
"value": {
"arguments": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10438:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10449:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10434:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10434:18:1"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10421:9:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10269:1:1"
},
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "10272:7:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "10266:2:1"
},
"nodeType": "YulFunctionCall",
"src": "10266:14:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "10281:21:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10283:17:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10292:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10295:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10288:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10288:12:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10283:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "10262:3:1",
"statements": []
},
"src": "10258:208:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10502:156:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10520:43:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "10547:3:1"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10552:9:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10543:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10543:19:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10537:5:1"
},
"nodeType": "YulFunctionCall",
"src": "10537:26:1"
},
"variables": [
{
"name": "lastValue",
"nodeType": "YulTypedName",
"src": "10524:9:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10587:6:1"
},
{
"arguments": [
{
"name": "lastValue",
"nodeType": "YulIdentifier",
"src": "10614:9:1"
},
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10629:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10637:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10625:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10625:17:1"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "10595:18:1"
},
"nodeType": "YulFunctionCall",
"src": "10595:48:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10580:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10580:64:1"
},
"nodeType": "YulExpressionStatement",
"src": "10580:64:1"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "10485:7:1"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10494:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "10482:2:1"
},
"nodeType": "YulFunctionCall",
"src": "10482:19:1"
},
"nodeType": "YulIf",
"src": "10479:179:1"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "10678:4:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10692:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10700:1:1",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "10688:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10688:14:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10704:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10684:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10684:22:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10671:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10671:36:1"
},
"nodeType": "YulExpressionStatement",
"src": "10671:36:1"
}
]
},
"nodeType": "YulCase",
"src": "10099:618:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10104:1:1",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "10734:222:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10748:14:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10761:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10752:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10785:67:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10803:35:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "10822:3:1"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10827:9:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10818:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10818:19:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10812:5:1"
},
"nodeType": "YulFunctionCall",
"src": "10812:26:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10803:5:1"
}
]
}
]
},
"condition": {
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10778:6:1"
},
"nodeType": "YulIf",
"src": "10775:77:1"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "10872:4:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10931:5:1"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10938:6:1"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulIdentifier",
"src": "10878:52:1"
},
"nodeType": "YulFunctionCall",
"src": "10878:67:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10865:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10865:81:1"
},
"nodeType": "YulExpressionStatement",
"src": "10865:81:1"
}
]
},
"nodeType": "YulCase",
"src": "10726:230:1",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10079:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10087:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10076:2:1"
},
"nodeType": "YulFunctionCall",
"src": "10076:14:1"
},
"nodeType": "YulSwitch",
"src": "10069:887:1"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "9648:4:1",
"type": ""
},
{
"name": "src",
"nodeType": "YulTypedName",
"src": "9654:3:1",
"type": ""
}
],
"src": "9567:1395:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11082:34:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11092:18:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11107:3:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "11092:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11054:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "11059:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "11070:11:1",
"type": ""
}
],
"src": "10968:148:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11232:280:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11242:53:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11289:5:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "11256:32:1"
},
"nodeType": "YulFunctionCall",
"src": "11256:39:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "11246:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "11304:96:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11388:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11393:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11311:76:1"
},
"nodeType": "YulFunctionCall",
"src": "11311:89:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11304:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11448:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11455:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11444:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11444:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11462:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11467:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "11409:34:1"
},
"nodeType": "YulFunctionCall",
"src": "11409:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "11409:65:1"
},
{
"nodeType": "YulAssignment",
"src": "11483:23:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11494:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11499:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11490:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11490:16:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11483:3:1"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11213:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11220:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11228:3:1",
"type": ""
}
],
"src": "11122:390:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11654:139:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11665:102:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11754:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11763:3:1"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11672:81:1"
},
"nodeType": "YulFunctionCall",
"src": "11672:95:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11665:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11777:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11784:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11777:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11633:3:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11639:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11650:3:1",
"type": ""
}
],
"src": "11518:275:1"
}
]
},
"contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80632e64cec11461005c5780632ebce6311461007a5780636057361d146100ab5780636f760f41146100c75780638bab8dd5146100e3575b600080fd5b610064610113565b60405161007191906102b2565b60405180910390f35b610094600480360381019061008f919061030d565b61011c565b6040516100a29291906103ca565b60405180910390f35b6100c560048036038101906100c0919061030d565b6101d8565b005b6100e160048036038101906100dc919061052f565b6101e2565b005b6100fd60048036038101906100f8919061058b565b61026b565b60405161010a91906102b2565b60405180910390f35b60008054905090565b6001818154811061012c57600080fd5b906000526020600020906002020160009150905080600001549080600101805461015590610603565b80601f016020809104026020016040519081016040528092919081815260200182805461018190610603565b80156101ce5780601f106101a3576101008083540402835291602001916101ce565b820191906000526020600020905b8154815290600101906020018083116101b157829003601f168201915b5050505050905082565b8060008190555050565b6001604051806040016040528083815260200184815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101908161024191906107e0565b5050508060028360405161025591906108ee565b9081526020016040518091039020819055505050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6000819050919050565b6102ac81610299565b82525050565b60006020820190506102c760008301846102a3565b92915050565b6000604051905090565b600080fd5b600080fd5b6102ea81610299565b81146102f557600080fd5b50565b600081359050610307816102e1565b92915050565b600060208284031215610323576103226102d7565b5b6000610331848285016102f8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610374578082015181840152602081019050610359565b60008484015250505050565b6000601f19601f8301169050919050565b600061039c8261033a565b6103a68185610345565b93506103b6818560208601610356565b6103bf81610380565b840191505092915050565b60006040820190506103df60008301856102a3565b81810360208301526103f18184610391565b90509392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61043c82610380565b810181811067ffffffffffffffff8211171561045b5761045a610404565b5b80604052505050565b600061046e6102cd565b905061047a8282610433565b919050565b600067ffffffffffffffff82111561049a57610499610404565b5b6104a382610380565b9050602081019050919050565b82818337600083830152505050565b60006104d26104cd8461047f565b610464565b9050828152602081018484840111156104ee576104ed6103ff565b5b6104f98482856104b0565b509392505050565b600082601f830112610516576105156103fa565b5b81356105268482602086016104bf565b91505092915050565b60008060408385031215610546576105456102d7565b5b600083013567ffffffffffffffff811115610564576105636102dc565b5b61057085828601610501565b9250506020610581858286016102f8565b9150509250929050565b6000602082840312156105a1576105a06102d7565b5b600082013567ffffffffffffffff8111156105bf576105be6102dc565b5b6105cb84828501610501565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061061b57607f821691505b60208210810361062e5761062d6105d4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610659565b6106a08683610659565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106dd6106d86106d384610299565b6106b8565b610299565b9050919050565b6000819050919050565b6106f7836106c2565b61070b610703826106e4565b848454610666565b825550505050565b600090565b610720610713565b61072b8184846106ee565b505050565b5b8181101561074f57610744600082610718565b600181019050610731565b5050565b601f8211156107945761076581610634565b61076e84610649565b8101602085101561077d578190505b61079161078985610649565b830182610730565b50505b505050565b600082821c905092915050565b60006107b760001984600802610799565b1980831691505092915050565b60006107d083836107a6565b9150826002028217905092915050565b6107e98261033a565b67ffffffffffffffff81111561080257610801610404565b5b61080c8254610603565b610817828285610753565b600060209050601f83116001811461084a5760008415610838578287015190505b61084285826107c4565b8655506108aa565b601f19841661085886610634565b60005b828110156108805784890151825560018201915060208501945060208101905061085b565b8683101561089d5784890151610899601f8916826107a6565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60006108c88261033a565b6108d281856108b2565b93506108e2818560208601610356565b80840191505092915050565b60006108fa82846108bd565b91508190509291505056fea264697066735822122063ff1342db2d7d323b2f0015a2fc06956ee07ab1d26738ffdaef477ef0d589e064736f6c63430008130033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x2EBCE631 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x6F760F41 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x8BAB8DD5 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8F SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP3 SWAP2 SWAP1 PUSH2 0x3CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x1D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDC SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x58B JUMP JUMPDEST PUSH2 0x26B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10A SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x155 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x181 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1CE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP3 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x7E0 JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x8EE JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 ADD DUP1 MLOAD DUP5 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD KECCAK256 DUP2 DUP4 MSTORE DUP1 SWAP6 POP POP POP POP POP POP PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2AC DUP2 PUSH2 0x299 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EA DUP2 PUSH2 0x299 JUMP JUMPDEST DUP2 EQ PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x307 DUP2 PUSH2 0x2E1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x323 JUMPI PUSH2 0x322 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x331 DUP5 DUP3 DUP6 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x359 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x3A6 DUP2 DUP6 PUSH2 0x345 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3BF DUP2 PUSH2 0x380 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3DF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A3 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3F1 DUP2 DUP5 PUSH2 0x391 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x43C DUP3 PUSH2 0x380 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x45B JUMPI PUSH2 0x45A PUSH2 0x404 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46E PUSH2 0x2CD JUMP JUMPDEST SWAP1 POP PUSH2 0x47A DUP3 DUP3 PUSH2 0x433 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x49A JUMPI PUSH2 0x499 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x4A3 DUP3 PUSH2 0x380 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2 PUSH2 0x4CD DUP5 PUSH2 0x47F JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4ED PUSH2 0x3FF JUMP JUMPDEST JUMPDEST PUSH2 0x4F9 DUP5 DUP3 DUP6 PUSH2 0x4B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x516 JUMPI PUSH2 0x515 PUSH2 0x3FA JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x526 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x546 JUMPI PUSH2 0x545 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x564 JUMPI PUSH2 0x563 PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x570 DUP6 DUP3 DUP7 ADD PUSH2 0x501 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x581 DUP6 DUP3 DUP7 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5A1 JUMPI PUSH2 0x5A0 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BE PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x5CB DUP5 DUP3 DUP6 ADD PUSH2 0x501 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x61B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x62E JUMPI PUSH2 0x62D PUSH2 0x5D4 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x696 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x6A0 DUP7 DUP4 PUSH2 0x659 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DD PUSH2 0x6D8 PUSH2 0x6D3 DUP5 PUSH2 0x299 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F7 DUP4 PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0x70B PUSH2 0x703 DUP3 PUSH2 0x6E4 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x666 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x720 PUSH2 0x713 JUMP JUMPDEST PUSH2 0x72B DUP2 DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH2 0x744 PUSH1 0x0 DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x731 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x794 JUMPI PUSH2 0x765 DUP2 PUSH2 0x634 JUMP JUMPDEST PUSH2 0x76E DUP5 PUSH2 0x649 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x77D JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x791 PUSH2 0x789 DUP6 PUSH2 0x649 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x730 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x799 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D0 DUP4 DUP4 PUSH2 0x7A6 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E9 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x802 JUMPI PUSH2 0x801 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x80C DUP3 SLOAD PUSH2 0x603 JUMP JUMPDEST PUSH2 0x817 DUP3 DUP3 DUP6 PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x84A JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x838 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x842 DUP6 DUP3 PUSH2 0x7C4 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x8AA JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x858 DUP7 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x85B JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x89D JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x899 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x7A6 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C8 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x8D2 DUP2 DUP6 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 POP PUSH2 0x8E2 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FA DUP3 DUP5 PUSH2 0x8BD JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xFF1342DB 0x2D PUSH30 0x323B2F0015A2FC06956EE07AB1D26738FFDAEF477EF0D589E064736F6C63 NUMBER STOP ADDMOD SGT STOP CALLER ",
"sourceMap": "131:687:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;519:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;311:28;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;411:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;619:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;348:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;519:92;560:7;587:16;;580:23;;519:92;:::o;311:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;411:100::-;488:15;469:16;:34;;;;411:100;:::o;619:196::-;702:12;720:30;;;;;;;;727:15;720:30;;;;744:5;720:30;;;702:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;792:15;762:20;783:5;762:27;;;;;;:::i;:::-;;;;;;;;;;;;;:45;;;;619:196;;:::o;348:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:423::-;2541:4;2579:2;2568:9;2564:18;2556:26;;2592:71;2660:1;2649:9;2645:17;2636:6;2592:71;:::i;:::-;2710:9;2704:4;2700:20;2695:2;2684:9;2680:18;2673:48;2738:78;2811:4;2802:6;2738:78;:::i;:::-;2730:86;;2400:423;;;;;:::o;2829:117::-;2938:1;2935;2928:12;2952:117;3061:1;3058;3051:12;3075:180;3123:77;3120:1;3113:88;3220:4;3217:1;3210:15;3244:4;3241:1;3234:15;3261:281;3344:27;3366:4;3344:27;:::i;:::-;3336:6;3332:40;3474:6;3462:10;3459:22;3438:18;3426:10;3423:34;3420:62;3417:88;;;3485:18;;:::i;:::-;3417:88;3525:10;3521:2;3514:22;3304:238;3261:281;;:::o;3548:129::-;3582:6;3609:20;;:::i;:::-;3599:30;;3638:33;3666:4;3658:6;3638:33;:::i;:::-;3548:129;;;:::o;3683:308::-;3745:4;3835:18;3827:6;3824:30;3821:56;;;3857:18;;:::i;:::-;3821:56;3895:29;3917:6;3895:29;:::i;:::-;3887:37;;3979:4;3973;3969:15;3961:23;;3683:308;;;:::o;3997:146::-;4094:6;4089:3;4084;4071:30;4135:1;4126:6;4121:3;4117:16;4110:27;3997:146;;;:::o;4149:425::-;4227:5;4252:66;4268:49;4310:6;4268:49;:::i;:::-;4252:66;:::i;:::-;4243:75;;4341:6;4334:5;4327:21;4379:4;4372:5;4368:16;4417:3;4408:6;4403:3;4399:16;4396:25;4393:112;;;4424:79;;:::i;:::-;4393:112;4514:54;4561:6;4556:3;4551;4514:54;:::i;:::-;4233:341;4149:425;;;;;:::o;4594:340::-;4650:5;4699:3;4692:4;4684:6;4680:17;4676:27;4666:122;;4707:79;;:::i;:::-;4666:122;4824:6;4811:20;4849:79;4924:3;4916:6;4909:4;4901:6;4897:17;4849:79;:::i;:::-;4840:88;;4656:278;4594:340;;;;:::o;4940:654::-;5018:6;5026;5075:2;5063:9;5054:7;5050:23;5046:32;5043:119;;;5081:79;;:::i;:::-;5043:119;5229:1;5218:9;5214:17;5201:31;5259:18;5251:6;5248:30;5245:117;;;5281:79;;:::i;:::-;5245:117;5386:63;5441:7;5432:6;5421:9;5417:22;5386:63;:::i;:::-;5376:73;;5172:287;5498:2;5524:53;5569:7;5560:6;5549:9;5545:22;5524:53;:::i;:::-;5514:63;;5469:118;4940:654;;;;;:::o;5600:509::-;5669:6;5718:2;5706:9;5697:7;5693:23;5689:32;5686:119;;;5724:79;;:::i;:::-;5686:119;5872:1;5861:9;5857:17;5844:31;5902:18;5894:6;5891:30;5888:117;;;5924:79;;:::i;:::-;5888:117;6029:63;6084:7;6075:6;6064:9;6060:22;6029:63;:::i;:::-;6019:73;;5815:287;5600:509;;;;:::o;6115:180::-;6163:77;6160:1;6153:88;6260:4;6257:1;6250:15;6284:4;6281:1;6274:15;6301:320;6345:6;6382:1;6376:4;6372:12;6362:22;;6429:1;6423:4;6419:12;6450:18;6440:81;;6506:4;6498:6;6494:17;6484:27;;6440:81;6568:2;6560:6;6557:14;6537:18;6534:38;6531:84;;6587:18;;:::i;:::-;6531:84;6352:269;6301:320;;;:::o;6627:141::-;6676:4;6699:3;6691:11;;6722:3;6719:1;6712:14;6756:4;6753:1;6743:18;6735:26;;6627:141;;;:::o;6774:93::-;6811:6;6858:2;6853;6846:5;6842:14;6838:23;6828:33;;6774:93;;;:::o;6873:107::-;6917:8;6967:5;6961:4;6957:16;6936:37;;6873:107;;;;:::o;6986:393::-;7055:6;7105:1;7093:10;7089:18;7128:97;7158:66;7147:9;7128:97;:::i;:::-;7246:39;7276:8;7265:9;7246:39;:::i;:::-;7234:51;;7318:4;7314:9;7307:5;7303:21;7294:30;;7367:4;7357:8;7353:19;7346:5;7343:30;7333:40;;7062:317;;6986:393;;;;;:::o;7385:60::-;7413:3;7434:5;7427:12;;7385:60;;;:::o;7451:142::-;7501:9;7534:53;7552:34;7561:24;7579:5;7561:24;:::i;:::-;7552:34;:::i;:::-;7534:53;:::i;:::-;7521:66;;7451:142;;;:::o;7599:75::-;7642:3;7663:5;7656:12;;7599:75;;;:::o;7680:269::-;7790:39;7821:7;7790:39;:::i;:::-;7851:91;7900:41;7924:16;7900:41;:::i;:::-;7892:6;7885:4;7879:11;7851:91;:::i;:::-;7845:4;7838:105;7756:193;7680:269;;;:::o;7955:73::-;8000:3;7955:73;:::o;8034:189::-;8111:32;;:::i;:::-;8152:65;8210:6;8202;8196:4;8152:65;:::i;:::-;8087:136;8034:189;;:::o;8229:186::-;8289:120;8306:3;8299:5;8296:14;8289:120;;;8360:39;8397:1;8390:5;8360:39;:::i;:::-;8333:1;8326:5;8322:13;8313:22;;8289:120;;;8229:186;;:::o;8421:543::-;8522:2;8517:3;8514:11;8511:446;;;8556:38;8588:5;8556:38;:::i;:::-;8640:29;8658:10;8640:29;:::i;:::-;8630:8;8626:44;8823:2;8811:10;8808:18;8805:49;;;8844:8;8829:23;;8805:49;8867:80;8923:22;8941:3;8923:22;:::i;:::-;8913:8;8909:37;8896:11;8867:80;:::i;:::-;8526:431;;8511:446;8421:543;;;:::o;8970:117::-;9024:8;9074:5;9068:4;9064:16;9043:37;;8970:117;;;;:::o;9093:169::-;9137:6;9170:51;9218:1;9214:6;9206:5;9203:1;9199:13;9170:51;:::i;:::-;9166:56;9251:4;9245;9241:15;9231:25;;9144:118;9093:169;;;;:::o;9267:295::-;9343:4;9489:29;9514:3;9508:4;9489:29;:::i;:::-;9481:37;;9551:3;9548:1;9544:11;9538:4;9535:21;9527:29;;9267:295;;;;:::o;9567:1395::-;9684:37;9717:3;9684:37;:::i;:::-;9786:18;9778:6;9775:30;9772:56;;;9808:18;;:::i;:::-;9772:56;9852:38;9884:4;9878:11;9852:38;:::i;:::-;9937:67;9997:6;9989;9983:4;9937:67;:::i;:::-;10031:1;10055:4;10042:17;;10087:2;10079:6;10076:14;10104:1;10099:618;;;;10761:1;10778:6;10775:77;;;10827:9;10822:3;10818:19;10812:26;10803:35;;10775:77;10878:67;10938:6;10931:5;10878:67;:::i;:::-;10872:4;10865:81;10734:222;10069:887;;10099:618;10151:4;10147:9;10139:6;10135:22;10185:37;10217:4;10185:37;:::i;:::-;10244:1;10258:208;10272:7;10269:1;10266:14;10258:208;;;10351:9;10346:3;10342:19;10336:26;10328:6;10321:42;10402:1;10394:6;10390:14;10380:24;;10449:2;10438:9;10434:18;10421:31;;10295:4;10292:1;10288:12;10283:17;;10258:208;;;10494:6;10485:7;10482:19;10479:179;;;10552:9;10547:3;10543:19;10537:26;10595:48;10637:4;10629:6;10625:17;10614:9;10595:48;:::i;:::-;10587:6;10580:64;10502:156;10479:179;10704:1;10700;10692:6;10688:14;10684:22;10678:4;10671:36;10106:611;;;10069:887;;9659:1303;;;9567:1395;;:::o;10968:148::-;11070:11;11107:3;11092:18;;10968:148;;;;:::o;11122:390::-;11228:3;11256:39;11289:5;11256:39;:::i;:::-;11311:89;11393:6;11388:3;11311:89;:::i;:::-;11304:96;;11409:65;11467:6;11462:3;11455:4;11448:5;11444:16;11409:65;:::i;:::-;11499:6;11494:3;11490:16;11483:23;;11232:280;11122:390;;;;:::o;11518:275::-;11650:3;11672:95;11763:3;11754:6;11672:95;:::i;:::-;11665:102;;11784:3;11777:10;;11518:275;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "472600",
"executionCost": "505",
"totalCost": "473105"
},
"external": {
"addPerson(string,uint256)": "infinite",
"listOfPeople(uint256)": "infinite",
"nameToFavoriteNumber(string)": "infinite",
"retrieve()": "2415",
"store(uint256)": "22542"
}
},
"legacyAssembly": {
".code": [
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 131,
"end": 818,
"name": "MSTORE",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "ISZERO",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "REVERT",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 131,
"end": 818,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "POP",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH #[$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [$]",
"source": 0,
"value": "0000000000000000000000000000000000000000000000000000000000000000"
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 131,
"end": 818,
"name": "CODECOPY",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 131,
"end": 818,
"name": "RETURN",
"source": 0
}
],
".data": {
"0": {
".auxdata": "a264697066735822122063ff1342db2d7d323b2f0015a2fc06956ee07ab1d26738ffdaef477ef0d589e064736f6c63430008130033",
".code": [
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "80"
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 131,
"end": 818,
"name": "MSTORE",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "CALLVALUE",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "ISZERO",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "1"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "REVERT",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "tag",
"source": 0,
"value": "1"
},
{
"begin": 131,
"end": 818,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "POP",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 131,
"end": 818,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "LT",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "2"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 131,
"end": 818,
"name": "CALLDATALOAD",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "E0"
},
{
"begin": 131,
"end": 818,
"name": "SHR",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "2E64CEC1"
},
{
"begin": 131,
"end": 818,
"name": "EQ",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "3"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "2EBCE631"
},
{
"begin": 131,
"end": 818,
"name": "EQ",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "4"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "6057361D"
},
{
"begin": 131,
"end": 818,
"name": "EQ",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "5"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "6F760F41"
},
{
"begin": 131,
"end": 818,
"name": "EQ",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "6"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "8BAB8DD5"
},
{
"begin": 131,
"end": 818,
"name": "EQ",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH [tag]",
"source": 0,
"value": "7"
},
{
"begin": 131,
"end": 818,
"name": "JUMPI",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "tag",
"source": 0,
"value": "2"
},
{
"begin": 131,
"end": 818,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 131,
"end": 818,
"name": "DUP1",
"source": 0
},
{
"begin": 131,
"end": 818,
"name": "REVERT",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "tag",
"source": 0,
"value": "3"
},
{
"begin": 519,
"end": 611,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "PUSH [tag]",
"source": 0,
"value": "8"
},
{
"begin": 519,
"end": 611,
"name": "PUSH [tag]",
"source": 0,
"value": "9"
},
{
"begin": 519,
"end": 611,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "tag",
"source": 0,
"value": "8"
},
{
"begin": 519,
"end": 611,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 519,
"end": 611,
"name": "MLOAD",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "PUSH [tag]",
"source": 0,
"value": "10"
},
{
"begin": 519,
"end": 611,
"name": "SWAP2",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "SWAP1",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "PUSH [tag]",
"source": 0,
"value": "11"
},
{
"begin": 519,
"end": 611,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "tag",
"source": 0,
"value": "10"
},
{
"begin": 519,
"end": 611,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 519,
"end": 611,
"name": "MLOAD",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "DUP1",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "SWAP2",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "SUB",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "SWAP1",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "RETURN",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "4"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "12"
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SUB",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "13"
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "14"
},
{
"begin": 311,
"end": 339,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "13"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "15"
},
{
"begin": 311,
"end": 339,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "12"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 311,
"end": 339,
"name": "MLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "16"
},
{
"begin": 311,
"end": 339,
"name": "SWAP3",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "17"
},
{
"begin": 311,
"end": 339,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "16"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 311,
"end": 339,
"name": "MLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SUB",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "RETURN",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "tag",
"source": 0,
"value": "5"
},
{
"begin": 411,
"end": 511,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "PUSH [tag]",
"source": 0,
"value": "18"
},
{
"begin": 411,
"end": 511,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 411,
"end": 511,
"name": "DUP1",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "SUB",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "DUP2",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "ADD",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "SWAP1",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "PUSH [tag]",
"source": 0,
"value": "19"
},
{
"begin": 411,
"end": 511,
"name": "SWAP2",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "SWAP1",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "PUSH [tag]",
"source": 0,
"value": "14"
},
{
"begin": 411,
"end": 511,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "tag",
"source": 0,
"value": "19"
},
{
"begin": 411,
"end": 511,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "PUSH [tag]",
"source": 0,
"value": "20"
},
{
"begin": 411,
"end": 511,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "tag",
"source": 0,
"value": "18"
},
{
"begin": 411,
"end": 511,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "STOP",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "tag",
"source": 0,
"value": "6"
},
{
"begin": 619,
"end": 815,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "PUSH [tag]",
"source": 0,
"value": "21"
},
{
"begin": 619,
"end": 815,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 619,
"end": 815,
"name": "DUP1",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "SUB",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "DUP2",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "ADD",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "SWAP1",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "PUSH [tag]",
"source": 0,
"value": "22"
},
{
"begin": 619,
"end": 815,
"name": "SWAP2",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "SWAP1",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "PUSH [tag]",
"source": 0,
"value": "23"
},
{
"begin": 619,
"end": 815,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "tag",
"source": 0,
"value": "22"
},
{
"begin": 619,
"end": 815,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "PUSH [tag]",
"source": 0,
"value": "24"
},
{
"begin": 619,
"end": 815,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "tag",
"source": 0,
"value": "21"
},
{
"begin": 619,
"end": 815,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "STOP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "tag",
"source": 0,
"value": "7"
},
{
"begin": 348,
"end": 402,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH [tag]",
"source": 0,
"value": "25"
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "4"
},
{
"begin": 348,
"end": 402,
"name": "DUP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "CALLDATASIZE",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SUB",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "ADD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SWAP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH [tag]",
"source": 0,
"value": "26"
},
{
"begin": 348,
"end": 402,
"name": "SWAP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SWAP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH [tag]",
"source": 0,
"value": "27"
},
{
"begin": 348,
"end": 402,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "tag",
"source": 0,
"value": "26"
},
{
"begin": 348,
"end": 402,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH [tag]",
"source": 0,
"value": "28"
},
{
"begin": 348,
"end": 402,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "tag",
"source": 0,
"value": "25"
},
{
"begin": 348,
"end": 402,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 348,
"end": 402,
"name": "MLOAD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH [tag]",
"source": 0,
"value": "29"
},
{
"begin": 348,
"end": 402,
"name": "SWAP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SWAP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH [tag]",
"source": 0,
"value": "11"
},
{
"begin": 348,
"end": 402,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "tag",
"source": 0,
"value": "29"
},
{
"begin": 348,
"end": 402,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 348,
"end": 402,
"name": "MLOAD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SWAP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SUB",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SWAP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "RETURN",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "tag",
"source": 0,
"value": "9"
},
{
"begin": 519,
"end": 611,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 560,
"end": 567,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 587,
"end": 603,
"name": "DUP1",
"source": 0
},
{
"begin": 587,
"end": 603,
"name": "SLOAD",
"source": 0
},
{
"begin": 580,
"end": 603,
"name": "SWAP1",
"source": 0
},
{
"begin": 580,
"end": 603,
"name": "POP",
"source": 0
},
{
"begin": 519,
"end": 611,
"name": "SWAP1",
"source": 0
},
{
"begin": 519,
"end": 611,
"jumpType": "[out]",
"name": "JUMP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "15"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "LT",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "31"
},
{
"begin": 311,
"end": 339,
"name": "JUMPI",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "REVERT",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "31"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 311,
"end": 339,
"name": "MSTORE",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 311,
"end": 339,
"name": "KECCAK256",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 311,
"end": 339,
"name": "MUL",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "33"
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "34"
},
{
"begin": 311,
"end": 339,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "33"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "1F"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DIV",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "MUL",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 311,
"end": 339,
"name": "MLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 311,
"end": 339,
"name": "MSTORE",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP3",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "MSTORE",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP3",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "35"
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "34"
},
{
"begin": 311,
"end": 339,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "35"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "ISZERO",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "36"
},
{
"begin": 311,
"end": 339,
"name": "JUMPI",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "1F"
},
{
"begin": 311,
"end": 339,
"name": "LT",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "37"
},
{
"begin": 311,
"end": 339,
"name": "JUMPI",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "100"
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP4",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DIV",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "MUL",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP4",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "MSTORE",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "36"
},
{
"begin": 311,
"end": 339,
"name": "JUMP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "37"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP3",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 311,
"end": 339,
"name": "MSTORE",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 311,
"end": 339,
"name": "KECCAK256",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "38"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SLOAD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "MSTORE",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP4",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "GT",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH [tag]",
"source": 0,
"value": "38"
},
{
"begin": 311,
"end": 339,
"name": "JUMPI",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP3",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SUB",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "PUSH",
"source": 0,
"value": "1F"
},
{
"begin": 311,
"end": 339,
"name": "AND",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP3",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "ADD",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP2",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "tag",
"source": 0,
"value": "36"
},
{
"begin": 311,
"end": 339,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "SWAP1",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "POP",
"source": 0
},
{
"begin": 311,
"end": 339,
"name": "DUP3",
"source": 0
},
{
"begin": 311,
"end": 339,
"jumpType": "[out]",
"name": "JUMP",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "tag",
"source": 0,
"value": "20"
},
{
"begin": 411,
"end": 511,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 488,
"end": 503,
"name": "DUP1",
"source": 0
},
{
"begin": 469,
"end": 485,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 469,
"end": 503,
"name": "DUP2",
"source": 0
},
{
"begin": 469,
"end": 503,
"name": "SWAP1",
"source": 0
},
{
"begin": 469,
"end": 503,
"name": "SSTORE",
"source": 0
},
{
"begin": 469,
"end": 503,
"name": "POP",
"source": 0
},
{
"begin": 411,
"end": 511,
"name": "POP",
"source": 0
},
{
"begin": 411,
"end": 511,
"jumpType": "[out]",
"name": "JUMP",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "tag",
"source": 0,
"value": "24"
},
{
"begin": 619,
"end": 815,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 702,
"end": 714,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 720,
"end": 750,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 720,
"end": 750,
"name": "MLOAD",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "DUP1",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 720,
"end": 750,
"name": "ADD",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 720,
"end": 750,
"name": "MSTORE",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "DUP1",
"source": 0
},
{
"begin": 727,
"end": 742,
"name": "DUP4",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "DUP2",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "MSTORE",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 720,
"end": 750,
"name": "ADD",
"source": 0
},
{
"begin": 744,
"end": 749,
"name": "DUP5",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "DUP2",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "MSTORE",
"source": 0
},
{
"begin": 720,
"end": 750,
"name": "POP",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "DUP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 702,
"end": 751,
"name": "DUP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SLOAD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "ADD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "DUP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "DUP3",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SSTORE",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "DUP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "POP",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "POP",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SUB",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 702,
"end": 751,
"name": "MSTORE",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 702,
"end": 751,
"name": "KECCAK256",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 702,
"end": 751,
"name": "MUL",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "ADD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "POP",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 702,
"end": 751,
"name": "DUP3",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "ADD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "MLOAD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "DUP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 702,
"end": 751,
"name": "ADD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SSTORE",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 702,
"end": 751,
"name": "DUP3",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "ADD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "MLOAD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "DUP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH",
"source": 0,
"value": "1"
},
{
"begin": 702,
"end": 751,
"name": "ADD",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "DUP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH [tag]",
"source": 0,
"value": "42"
},
{
"begin": 702,
"end": 751,
"name": "SWAP2",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "SWAP1",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "PUSH [tag]",
"source": 0,
"value": "43"
},
{
"begin": 702,
"end": 751,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "tag",
"source": 0,
"value": "42"
},
{
"begin": 702,
"end": 751,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "POP",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "POP",
"source": 0
},
{
"begin": 702,
"end": 751,
"name": "POP",
"source": 0
},
{
"begin": 792,
"end": 807,
"name": "DUP1",
"source": 0
},
{
"begin": 762,
"end": 782,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 783,
"end": 788,
"name": "DUP4",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 762,
"end": 789,
"name": "MLOAD",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "PUSH [tag]",
"source": 0,
"value": "44"
},
{
"begin": 762,
"end": 789,
"name": "SWAP2",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "SWAP1",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "PUSH [tag]",
"source": 0,
"value": "45"
},
{
"begin": 762,
"end": 789,
"jumpType": "[in]",
"name": "JUMP",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "tag",
"source": 0,
"value": "44"
},
{
"begin": 762,
"end": 789,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "SWAP1",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "DUP2",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "MSTORE",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 762,
"end": 789,
"name": "ADD",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "PUSH",
"source": 0,
"value": "40"
},
{
"begin": 762,
"end": 789,
"name": "MLOAD",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "DUP1",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "SWAP2",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "SUB",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "SWAP1",
"source": 0
},
{
"begin": 762,
"end": 789,
"name": "KECCAK256",
"source": 0
},
{
"begin": 762,
"end": 807,
"name": "DUP2",
"source": 0
},
{
"begin": 762,
"end": 807,
"name": "SWAP1",
"source": 0
},
{
"begin": 762,
"end": 807,
"name": "SSTORE",
"source": 0
},
{
"begin": 762,
"end": 807,
"name": "POP",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "POP",
"source": 0
},
{
"begin": 619,
"end": 815,
"name": "POP",
"source": 0
},
{
"begin": 619,
"end": 815,
"jumpType": "[out]",
"name": "JUMP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "tag",
"source": 0,
"value": "28"
},
{
"begin": 348,
"end": 402,
"name": "JUMPDEST",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "2"
},
{
"begin": 348,
"end": 402,
"name": "DUP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "MLOAD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 348,
"end": 402,
"name": "DUP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "ADD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP3",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "ADD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "MLOAD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP5",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP3",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "MSTORE",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 348,
"end": 402,
"name": "DUP4",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "ADD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "20"
},
{
"begin": 348,
"end": 402,
"name": "DUP6",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "ADD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "KECCAK256",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP4",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "MSTORE",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SWAP6",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "PUSH",
"source": 0,
"value": "0"
},
{
"begin": 348,
"end": 402,
"name": "SWAP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SWAP1",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "POP",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "SLOAD",
"source": 0
},
{
"begin": 348,
"end": 402,
"name": "DUP2",
"source": 0
},
{
"begin": 348,
"end": 402,
"jumpType": "[out]",
"name": "JUMP",
"source": 0
},
{
"begin": 7,
"end": 84,
"name": "tag",
"source": 1,
"value": "46"
},
{
"begin": 7,
"end": 84,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 44,
"end": 51,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 73,
"end": 78,
"name": "DUP2",
"source": 1
},
{
"begin": 62,
"end": 78,
"name": "SWAP1",
"source": 1
},
{
"begin": 62,
"end": 78,
"name": "POP",
"source": 1
},
{
"begin": 7,
"end": 84,
"name": "SWAP2",
"source": 1
},
{
"begin": 7,
"end": 84,
"name": "SWAP1",
"source": 1
},
{
"begin": 7,
"end": 84,
"name": "POP",
"source": 1
},
{
"begin": 7,
"end": 84,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 90,
"end": 208,
"name": "tag",
"source": 1,
"value": "47"
},
{
"begin": 90,
"end": 208,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 177,
"end": 201,
"name": "PUSH [tag]",
"source": 1,
"value": "88"
},
{
"begin": 195,
"end": 200,
"name": "DUP2",
"source": 1
},
{
"begin": 177,
"end": 201,
"name": "PUSH [tag]",
"source": 1,
"value": "46"
},
{
"begin": 177,
"end": 201,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 177,
"end": 201,
"name": "tag",
"source": 1,
"value": "88"
},
{
"begin": 177,
"end": 201,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 172,
"end": 175,
"name": "DUP3",
"source": 1
},
{
"begin": 165,
"end": 202,
"name": "MSTORE",
"source": 1
},
{
"begin": 90,
"end": 208,
"name": "POP",
"source": 1
},
{
"begin": 90,
"end": 208,
"name": "POP",
"source": 1
},
{
"begin": 90,
"end": 208,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 214,
"end": 436,
"name": "tag",
"source": 1,
"value": "11"
},
{
"begin": 214,
"end": 436,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 307,
"end": 311,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 345,
"end": 347,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 334,
"end": 343,
"name": "DUP3",
"source": 1
},
{
"begin": 330,
"end": 348,
"name": "ADD",
"source": 1
},
{
"begin": 322,
"end": 348,
"name": "SWAP1",
"source": 1
},
{
"begin": 322,
"end": 348,
"name": "POP",
"source": 1
},
{
"begin": 358,
"end": 429,
"name": "PUSH [tag]",
"source": 1,
"value": "90"
},
{
"begin": 426,
"end": 427,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 415,
"end": 424,
"name": "DUP4",
"source": 1
},
{
"begin": 411,
"end": 428,
"name": "ADD",
"source": 1
},
{
"begin": 402,
"end": 408,
"name": "DUP5",
"source": 1
},
{
"begin": 358,
"end": 429,
"name": "PUSH [tag]",
"source": 1,
"value": "47"
},
{
"begin": 358,
"end": 429,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 358,
"end": 429,
"name": "tag",
"source": 1,
"value": "90"
},
{
"begin": 358,
"end": 429,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 214,
"end": 436,
"name": "SWAP3",
"source": 1
},
{
"begin": 214,
"end": 436,
"name": "SWAP2",
"source": 1
},
{
"begin": 214,
"end": 436,
"name": "POP",
"source": 1
},
{
"begin": 214,
"end": 436,
"name": "POP",
"source": 1
},
{
"begin": 214,
"end": 436,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 442,
"end": 517,
"name": "tag",
"source": 1,
"value": "48"
},
{
"begin": 442,
"end": 517,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 475,
"end": 481,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 508,
"end": 510,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 502,
"end": 511,
"name": "MLOAD",
"source": 1
},
{
"begin": 492,
"end": 511,
"name": "SWAP1",
"source": 1
},
{
"begin": 492,
"end": 511,
"name": "POP",
"source": 1
},
{
"begin": 442,
"end": 517,
"name": "SWAP1",
"source": 1
},
{
"begin": 442,
"end": 517,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 523,
"end": 640,
"name": "tag",
"source": 1,
"value": "49"
},
{
"begin": 523,
"end": 640,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 632,
"end": 633,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 629,
"end": 630,
"name": "DUP1",
"source": 1
},
{
"begin": 622,
"end": 634,
"name": "REVERT",
"source": 1
},
{
"begin": 646,
"end": 763,
"name": "tag",
"source": 1,
"value": "50"
},
{
"begin": 646,
"end": 763,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 755,
"end": 756,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 752,
"end": 753,
"name": "DUP1",
"source": 1
},
{
"begin": 745,
"end": 757,
"name": "REVERT",
"source": 1
},
{
"begin": 769,
"end": 891,
"name": "tag",
"source": 1,
"value": "51"
},
{
"begin": 769,
"end": 891,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 842,
"end": 866,
"name": "PUSH [tag]",
"source": 1,
"value": "95"
},
{
"begin": 860,
"end": 865,
"name": "DUP2",
"source": 1
},
{
"begin": 842,
"end": 866,
"name": "PUSH [tag]",
"source": 1,
"value": "46"
},
{
"begin": 842,
"end": 866,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 842,
"end": 866,
"name": "tag",
"source": 1,
"value": "95"
},
{
"begin": 842,
"end": 866,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 835,
"end": 840,
"name": "DUP2",
"source": 1
},
{
"begin": 832,
"end": 867,
"name": "EQ",
"source": 1
},
{
"begin": 822,
"end": 885,
"name": "PUSH [tag]",
"source": 1,
"value": "96"
},
{
"begin": 822,
"end": 885,
"name": "JUMPI",
"source": 1
},
{
"begin": 881,
"end": 882,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 878,
"end": 879,
"name": "DUP1",
"source": 1
},
{
"begin": 871,
"end": 883,
"name": "REVERT",
"source": 1
},
{
"begin": 822,
"end": 885,
"name": "tag",
"source": 1,
"value": "96"
},
{
"begin": 822,
"end": 885,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 769,
"end": 891,
"name": "POP",
"source": 1
},
{
"begin": 769,
"end": 891,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 897,
"end": 1036,
"name": "tag",
"source": 1,
"value": "52"
},
{
"begin": 897,
"end": 1036,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 943,
"end": 948,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 981,
"end": 987,
"name": "DUP2",
"source": 1
},
{
"begin": 968,
"end": 988,
"name": "CALLDATALOAD",
"source": 1
},
{
"begin": 959,
"end": 988,
"name": "SWAP1",
"source": 1
},
{
"begin": 959,
"end": 988,
"name": "POP",
"source": 1
},
{
"begin": 997,
"end": 1030,
"name": "PUSH [tag]",
"source": 1,
"value": "98"
},
{
"begin": 1024,
"end": 1029,
"name": "DUP2",
"source": 1
},
{
"begin": 997,
"end": 1030,
"name": "PUSH [tag]",
"source": 1,
"value": "51"
},
{
"begin": 997,
"end": 1030,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 997,
"end": 1030,
"name": "tag",
"source": 1,
"value": "98"
},
{
"begin": 997,
"end": 1030,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 897,
"end": 1036,
"name": "SWAP3",
"source": 1
},
{
"begin": 897,
"end": 1036,
"name": "SWAP2",
"source": 1
},
{
"begin": 897,
"end": 1036,
"name": "POP",
"source": 1
},
{
"begin": 897,
"end": 1036,
"name": "POP",
"source": 1
},
{
"begin": 897,
"end": 1036,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 1042,
"end": 1371,
"name": "tag",
"source": 1,
"value": "14"
},
{
"begin": 1042,
"end": 1371,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1101,
"end": 1107,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 1150,
"end": 1152,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 1138,
"end": 1147,
"name": "DUP3",
"source": 1
},
{
"begin": 1129,
"end": 1136,
"name": "DUP5",
"source": 1
},
{
"begin": 1125,
"end": 1148,
"name": "SUB",
"source": 1
},
{
"begin": 1121,
"end": 1153,
"name": "SLT",
"source": 1
},
{
"begin": 1118,
"end": 1237,
"name": "ISZERO",
"source": 1
},
{
"begin": 1118,
"end": 1237,
"name": "PUSH [tag]",
"source": 1,
"value": "100"
},
{
"begin": 1118,
"end": 1237,
"name": "JUMPI",
"source": 1
},
{
"begin": 1156,
"end": 1235,
"name": "PUSH [tag]",
"source": 1,
"value": "101"
},
{
"begin": 1156,
"end": 1235,
"name": "PUSH [tag]",
"source": 1,
"value": "49"
},
{
"begin": 1156,
"end": 1235,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 1156,
"end": 1235,
"name": "tag",
"source": 1,
"value": "101"
},
{
"begin": 1156,
"end": 1235,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1118,
"end": 1237,
"name": "tag",
"source": 1,
"value": "100"
},
{
"begin": 1118,
"end": 1237,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1276,
"end": 1277,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 1301,
"end": 1354,
"name": "PUSH [tag]",
"source": 1,
"value": "102"
},
{
"begin": 1346,
"end": 1353,
"name": "DUP5",
"source": 1
},
{
"begin": 1337,
"end": 1343,
"name": "DUP3",
"source": 1
},
{
"begin": 1326,
"end": 1335,
"name": "DUP6",
"source": 1
},
{
"begin": 1322,
"end": 1344,
"name": "ADD",
"source": 1
},
{
"begin": 1301,
"end": 1354,
"name": "PUSH [tag]",
"source": 1,
"value": "52"
},
{
"begin": 1301,
"end": 1354,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 1301,
"end": 1354,
"name": "tag",
"source": 1,
"value": "102"
},
{
"begin": 1301,
"end": 1354,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1291,
"end": 1354,
"name": "SWAP2",
"source": 1
},
{
"begin": 1291,
"end": 1354,
"name": "POP",
"source": 1
},
{
"begin": 1247,
"end": 1364,
"name": "POP",
"source": 1
},
{
"begin": 1042,
"end": 1371,
"name": "SWAP3",
"source": 1
},
{
"begin": 1042,
"end": 1371,
"name": "SWAP2",
"source": 1
},
{
"begin": 1042,
"end": 1371,
"name": "POP",
"source": 1
},
{
"begin": 1042,
"end": 1371,
"name": "POP",
"source": 1
},
{
"begin": 1042,
"end": 1371,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 1377,
"end": 1476,
"name": "tag",
"source": 1,
"value": "53"
},
{
"begin": 1377,
"end": 1476,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1429,
"end": 1435,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 1463,
"end": 1468,
"name": "DUP2",
"source": 1
},
{
"begin": 1457,
"end": 1469,
"name": "MLOAD",
"source": 1
},
{
"begin": 1447,
"end": 1469,
"name": "SWAP1",
"source": 1
},
{
"begin": 1447,
"end": 1469,
"name": "POP",
"source": 1
},
{
"begin": 1377,
"end": 1476,
"name": "SWAP2",
"source": 1
},
{
"begin": 1377,
"end": 1476,
"name": "SWAP1",
"source": 1
},
{
"begin": 1377,
"end": 1476,
"name": "POP",
"source": 1
},
{
"begin": 1377,
"end": 1476,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 1482,
"end": 1651,
"name": "tag",
"source": 1,
"value": "54"
},
{
"begin": 1482,
"end": 1651,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1566,
"end": 1577,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 1600,
"end": 1606,
"name": "DUP3",
"source": 1
},
{
"begin": 1595,
"end": 1598,
"name": "DUP3",
"source": 1
},
{
"begin": 1588,
"end": 1607,
"name": "MSTORE",
"source": 1
},
{
"begin": 1640,
"end": 1644,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 1635,
"end": 1638,
"name": "DUP3",
"source": 1
},
{
"begin": 1631,
"end": 1645,
"name": "ADD",
"source": 1
},
{
"begin": 1616,
"end": 1645,
"name": "SWAP1",
"source": 1
},
{
"begin": 1616,
"end": 1645,
"name": "POP",
"source": 1
},
{
"begin": 1482,
"end": 1651,
"name": "SWAP3",
"source": 1
},
{
"begin": 1482,
"end": 1651,
"name": "SWAP2",
"source": 1
},
{
"begin": 1482,
"end": 1651,
"name": "POP",
"source": 1
},
{
"begin": 1482,
"end": 1651,
"name": "POP",
"source": 1
},
{
"begin": 1482,
"end": 1651,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 1657,
"end": 1903,
"name": "tag",
"source": 1,
"value": "55"
},
{
"begin": 1657,
"end": 1903,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1738,
"end": 1739,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 1748,
"end": 1861,
"name": "tag",
"source": 1,
"value": "106"
},
{
"begin": 1748,
"end": 1861,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1762,
"end": 1768,
"name": "DUP4",
"source": 1
},
{
"begin": 1759,
"end": 1760,
"name": "DUP2",
"source": 1
},
{
"begin": 1756,
"end": 1769,
"name": "LT",
"source": 1
},
{
"begin": 1748,
"end": 1861,
"name": "ISZERO",
"source": 1
},
{
"begin": 1748,
"end": 1861,
"name": "PUSH [tag]",
"source": 1,
"value": "108"
},
{
"begin": 1748,
"end": 1861,
"name": "JUMPI",
"source": 1
},
{
"begin": 1847,
"end": 1848,
"name": "DUP1",
"source": 1
},
{
"begin": 1842,
"end": 1845,
"name": "DUP3",
"source": 1
},
{
"begin": 1838,
"end": 1849,
"name": "ADD",
"source": 1
},
{
"begin": 1832,
"end": 1850,
"name": "MLOAD",
"source": 1
},
{
"begin": 1828,
"end": 1829,
"name": "DUP2",
"source": 1
},
{
"begin": 1823,
"end": 1826,
"name": "DUP5",
"source": 1
},
{
"begin": 1819,
"end": 1830,
"name": "ADD",
"source": 1
},
{
"begin": 1812,
"end": 1851,
"name": "MSTORE",
"source": 1
},
{
"begin": 1784,
"end": 1786,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 1781,
"end": 1782,
"name": "DUP2",
"source": 1
},
{
"begin": 1777,
"end": 1787,
"name": "ADD",
"source": 1
},
{
"begin": 1772,
"end": 1787,
"name": "SWAP1",
"source": 1
},
{
"begin": 1772,
"end": 1787,
"name": "POP",
"source": 1
},
{
"begin": 1748,
"end": 1861,
"name": "PUSH [tag]",
"source": 1,
"value": "106"
},
{
"begin": 1748,
"end": 1861,
"name": "JUMP",
"source": 1
},
{
"begin": 1748,
"end": 1861,
"name": "tag",
"source": 1,
"value": "108"
},
{
"begin": 1748,
"end": 1861,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1895,
"end": 1896,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 1886,
"end": 1892,
"name": "DUP5",
"source": 1
},
{
"begin": 1881,
"end": 1884,
"name": "DUP5",
"source": 1
},
{
"begin": 1877,
"end": 1893,
"name": "ADD",
"source": 1
},
{
"begin": 1870,
"end": 1897,
"name": "MSTORE",
"source": 1
},
{
"begin": 1719,
"end": 1903,
"name": "POP",
"source": 1
},
{
"begin": 1657,
"end": 1903,
"name": "POP",
"source": 1
},
{
"begin": 1657,
"end": 1903,
"name": "POP",
"source": 1
},
{
"begin": 1657,
"end": 1903,
"name": "POP",
"source": 1
},
{
"begin": 1657,
"end": 1903,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 1909,
"end": 2011,
"name": "tag",
"source": 1,
"value": "56"
},
{
"begin": 1909,
"end": 2011,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 1950,
"end": 1956,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2001,
"end": 2003,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 1997,
"end": 2004,
"name": "NOT",
"source": 1
},
{
"begin": 1992,
"end": 1994,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 1985,
"end": 1990,
"name": "DUP4",
"source": 1
},
{
"begin": 1981,
"end": 1995,
"name": "ADD",
"source": 1
},
{
"begin": 1977,
"end": 2005,
"name": "AND",
"source": 1
},
{
"begin": 1967,
"end": 2005,
"name": "SWAP1",
"source": 1
},
{
"begin": 1967,
"end": 2005,
"name": "POP",
"source": 1
},
{
"begin": 1909,
"end": 2011,
"name": "SWAP2",
"source": 1
},
{
"begin": 1909,
"end": 2011,
"name": "SWAP1",
"source": 1
},
{
"begin": 1909,
"end": 2011,
"name": "POP",
"source": 1
},
{
"begin": 1909,
"end": 2011,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 2017,
"end": 2394,
"name": "tag",
"source": 1,
"value": "57"
},
{
"begin": 2017,
"end": 2394,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2105,
"end": 2108,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2133,
"end": 2172,
"name": "PUSH [tag]",
"source": 1,
"value": "111"
},
{
"begin": 2166,
"end": 2171,
"name": "DUP3",
"source": 1
},
{
"begin": 2133,
"end": 2172,
"name": "PUSH [tag]",
"source": 1,
"value": "53"
},
{
"begin": 2133,
"end": 2172,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2133,
"end": 2172,
"name": "tag",
"source": 1,
"value": "111"
},
{
"begin": 2133,
"end": 2172,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2188,
"end": 2259,
"name": "PUSH [tag]",
"source": 1,
"value": "112"
},
{
"begin": 2252,
"end": 2258,
"name": "DUP2",
"source": 1
},
{
"begin": 2247,
"end": 2250,
"name": "DUP6",
"source": 1
},
{
"begin": 2188,
"end": 2259,
"name": "PUSH [tag]",
"source": 1,
"value": "54"
},
{
"begin": 2188,
"end": 2259,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2188,
"end": 2259,
"name": "tag",
"source": 1,
"value": "112"
},
{
"begin": 2188,
"end": 2259,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2181,
"end": 2259,
"name": "SWAP4",
"source": 1
},
{
"begin": 2181,
"end": 2259,
"name": "POP",
"source": 1
},
{
"begin": 2268,
"end": 2333,
"name": "PUSH [tag]",
"source": 1,
"value": "113"
},
{
"begin": 2326,
"end": 2332,
"name": "DUP2",
"source": 1
},
{
"begin": 2321,
"end": 2324,
"name": "DUP6",
"source": 1
},
{
"begin": 2314,
"end": 2318,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2307,
"end": 2312,
"name": "DUP7",
"source": 1
},
{
"begin": 2303,
"end": 2319,
"name": "ADD",
"source": 1
},
{
"begin": 2268,
"end": 2333,
"name": "PUSH [tag]",
"source": 1,
"value": "55"
},
{
"begin": 2268,
"end": 2333,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2268,
"end": 2333,
"name": "tag",
"source": 1,
"value": "113"
},
{
"begin": 2268,
"end": 2333,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2358,
"end": 2387,
"name": "PUSH [tag]",
"source": 1,
"value": "114"
},
{
"begin": 2380,
"end": 2386,
"name": "DUP2",
"source": 1
},
{
"begin": 2358,
"end": 2387,
"name": "PUSH [tag]",
"source": 1,
"value": "56"
},
{
"begin": 2358,
"end": 2387,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2358,
"end": 2387,
"name": "tag",
"source": 1,
"value": "114"
},
{
"begin": 2358,
"end": 2387,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2353,
"end": 2356,
"name": "DUP5",
"source": 1
},
{
"begin": 2349,
"end": 2388,
"name": "ADD",
"source": 1
},
{
"begin": 2342,
"end": 2388,
"name": "SWAP2",
"source": 1
},
{
"begin": 2342,
"end": 2388,
"name": "POP",
"source": 1
},
{
"begin": 2109,
"end": 2394,
"name": "POP",
"source": 1
},
{
"begin": 2017,
"end": 2394,
"name": "SWAP3",
"source": 1
},
{
"begin": 2017,
"end": 2394,
"name": "SWAP2",
"source": 1
},
{
"begin": 2017,
"end": 2394,
"name": "POP",
"source": 1
},
{
"begin": 2017,
"end": 2394,
"name": "POP",
"source": 1
},
{
"begin": 2017,
"end": 2394,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 2400,
"end": 2823,
"name": "tag",
"source": 1,
"value": "17"
},
{
"begin": 2400,
"end": 2823,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2541,
"end": 2545,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2579,
"end": 2581,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 2568,
"end": 2577,
"name": "DUP3",
"source": 1
},
{
"begin": 2564,
"end": 2582,
"name": "ADD",
"source": 1
},
{
"begin": 2556,
"end": 2582,
"name": "SWAP1",
"source": 1
},
{
"begin": 2556,
"end": 2582,
"name": "POP",
"source": 1
},
{
"begin": 2592,
"end": 2663,
"name": "PUSH [tag]",
"source": 1,
"value": "116"
},
{
"begin": 2660,
"end": 2661,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2649,
"end": 2658,
"name": "DUP4",
"source": 1
},
{
"begin": 2645,
"end": 2662,
"name": "ADD",
"source": 1
},
{
"begin": 2636,
"end": 2642,
"name": "DUP6",
"source": 1
},
{
"begin": 2592,
"end": 2663,
"name": "PUSH [tag]",
"source": 1,
"value": "47"
},
{
"begin": 2592,
"end": 2663,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2592,
"end": 2663,
"name": "tag",
"source": 1,
"value": "116"
},
{
"begin": 2592,
"end": 2663,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2710,
"end": 2719,
"name": "DUP2",
"source": 1
},
{
"begin": 2704,
"end": 2708,
"name": "DUP2",
"source": 1
},
{
"begin": 2700,
"end": 2720,
"name": "SUB",
"source": 1
},
{
"begin": 2695,
"end": 2697,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 2684,
"end": 2693,
"name": "DUP4",
"source": 1
},
{
"begin": 2680,
"end": 2698,
"name": "ADD",
"source": 1
},
{
"begin": 2673,
"end": 2721,
"name": "MSTORE",
"source": 1
},
{
"begin": 2738,
"end": 2816,
"name": "PUSH [tag]",
"source": 1,
"value": "117"
},
{
"begin": 2811,
"end": 2815,
"name": "DUP2",
"source": 1
},
{
"begin": 2802,
"end": 2808,
"name": "DUP5",
"source": 1
},
{
"begin": 2738,
"end": 2816,
"name": "PUSH [tag]",
"source": 1,
"value": "57"
},
{
"begin": 2738,
"end": 2816,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 2738,
"end": 2816,
"name": "tag",
"source": 1,
"value": "117"
},
{
"begin": 2738,
"end": 2816,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2730,
"end": 2816,
"name": "SWAP1",
"source": 1
},
{
"begin": 2730,
"end": 2816,
"name": "POP",
"source": 1
},
{
"begin": 2400,
"end": 2823,
"name": "SWAP4",
"source": 1
},
{
"begin": 2400,
"end": 2823,
"name": "SWAP3",
"source": 1
},
{
"begin": 2400,
"end": 2823,
"name": "POP",
"source": 1
},
{
"begin": 2400,
"end": 2823,
"name": "POP",
"source": 1
},
{
"begin": 2400,
"end": 2823,
"name": "POP",
"source": 1
},
{
"begin": 2400,
"end": 2823,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 2829,
"end": 2946,
"name": "tag",
"source": 1,
"value": "58"
},
{
"begin": 2829,
"end": 2946,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 2938,
"end": 2939,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 2935,
"end": 2936,
"name": "DUP1",
"source": 1
},
{
"begin": 2928,
"end": 2940,
"name": "REVERT",
"source": 1
},
{
"begin": 2952,
"end": 3069,
"name": "tag",
"source": 1,
"value": "59"
},
{
"begin": 2952,
"end": 3069,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3061,
"end": 3062,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 3058,
"end": 3059,
"name": "DUP1",
"source": 1
},
{
"begin": 3051,
"end": 3063,
"name": "REVERT",
"source": 1
},
{
"begin": 3075,
"end": 3255,
"name": "tag",
"source": 1,
"value": "60"
},
{
"begin": 3075,
"end": 3255,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3123,
"end": 3200,
"name": "PUSH",
"source": 1,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 3120,
"end": 3121,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 3113,
"end": 3201,
"name": "MSTORE",
"source": 1
},
{
"begin": 3220,
"end": 3224,
"name": "PUSH",
"source": 1,
"value": "41"
},
{
"begin": 3217,
"end": 3218,
"name": "PUSH",
"source": 1,
"value": "4"
},
{
"begin": 3210,
"end": 3225,
"name": "MSTORE",
"source": 1
},
{
"begin": 3244,
"end": 3248,
"name": "PUSH",
"source": 1,
"value": "24"
},
{
"begin": 3241,
"end": 3242,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 3234,
"end": 3249,
"name": "REVERT",
"source": 1
},
{
"begin": 3261,
"end": 3542,
"name": "tag",
"source": 1,
"value": "61"
},
{
"begin": 3261,
"end": 3542,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3344,
"end": 3371,
"name": "PUSH [tag]",
"source": 1,
"value": "122"
},
{
"begin": 3366,
"end": 3370,
"name": "DUP3",
"source": 1
},
{
"begin": 3344,
"end": 3371,
"name": "PUSH [tag]",
"source": 1,
"value": "56"
},
{
"begin": 3344,
"end": 3371,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 3344,
"end": 3371,
"name": "tag",
"source": 1,
"value": "122"
},
{
"begin": 3344,
"end": 3371,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3336,
"end": 3342,
"name": "DUP2",
"source": 1
},
{
"begin": 3332,
"end": 3372,
"name": "ADD",
"source": 1
},
{
"begin": 3474,
"end": 3480,
"name": "DUP2",
"source": 1
},
{
"begin": 3462,
"end": 3472,
"name": "DUP2",
"source": 1
},
{
"begin": 3459,
"end": 3481,
"name": "LT",
"source": 1
},
{
"begin": 3438,
"end": 3456,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 3426,
"end": 3436,
"name": "DUP3",
"source": 1
},
{
"begin": 3423,
"end": 3457,
"name": "GT",
"source": 1
},
{
"begin": 3420,
"end": 3482,
"name": "OR",
"source": 1
},
{
"begin": 3417,
"end": 3505,
"name": "ISZERO",
"source": 1
},
{
"begin": 3417,
"end": 3505,
"name": "PUSH [tag]",
"source": 1,
"value": "123"
},
{
"begin": 3417,
"end": 3505,
"name": "JUMPI",
"source": 1
},
{
"begin": 3485,
"end": 3503,
"name": "PUSH [tag]",
"source": 1,
"value": "124"
},
{
"begin": 3485,
"end": 3503,
"name": "PUSH [tag]",
"source": 1,
"value": "60"
},
{
"begin": 3485,
"end": 3503,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 3485,
"end": 3503,
"name": "tag",
"source": 1,
"value": "124"
},
{
"begin": 3485,
"end": 3503,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3417,
"end": 3505,
"name": "tag",
"source": 1,
"value": "123"
},
{
"begin": 3417,
"end": 3505,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3525,
"end": 3535,
"name": "DUP1",
"source": 1
},
{
"begin": 3521,
"end": 3523,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 3514,
"end": 3536,
"name": "MSTORE",
"source": 1
},
{
"begin": 3304,
"end": 3542,
"name": "POP",
"source": 1
},
{
"begin": 3261,
"end": 3542,
"name": "POP",
"source": 1
},
{
"begin": 3261,
"end": 3542,
"name": "POP",
"source": 1
},
{
"begin": 3261,
"end": 3542,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 3548,
"end": 3677,
"name": "tag",
"source": 1,
"value": "62"
},
{
"begin": 3548,
"end": 3677,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3582,
"end": 3588,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 3609,
"end": 3629,
"name": "PUSH [tag]",
"source": 1,
"value": "126"
},
{
"begin": 3609,
"end": 3629,
"name": "PUSH [tag]",
"source": 1,
"value": "48"
},
{
"begin": 3609,
"end": 3629,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 3609,
"end": 3629,
"name": "tag",
"source": 1,
"value": "126"
},
{
"begin": 3609,
"end": 3629,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3599,
"end": 3629,
"name": "SWAP1",
"source": 1
},
{
"begin": 3599,
"end": 3629,
"name": "POP",
"source": 1
},
{
"begin": 3638,
"end": 3671,
"name": "PUSH [tag]",
"source": 1,
"value": "127"
},
{
"begin": 3666,
"end": 3670,
"name": "DUP3",
"source": 1
},
{
"begin": 3658,
"end": 3664,
"name": "DUP3",
"source": 1
},
{
"begin": 3638,
"end": 3671,
"name": "PUSH [tag]",
"source": 1,
"value": "61"
},
{
"begin": 3638,
"end": 3671,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 3638,
"end": 3671,
"name": "tag",
"source": 1,
"value": "127"
},
{
"begin": 3638,
"end": 3671,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3548,
"end": 3677,
"name": "SWAP2",
"source": 1
},
{
"begin": 3548,
"end": 3677,
"name": "SWAP1",
"source": 1
},
{
"begin": 3548,
"end": 3677,
"name": "POP",
"source": 1
},
{
"begin": 3548,
"end": 3677,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 3683,
"end": 3991,
"name": "tag",
"source": 1,
"value": "63"
},
{
"begin": 3683,
"end": 3991,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3745,
"end": 3749,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 3835,
"end": 3853,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 3827,
"end": 3833,
"name": "DUP3",
"source": 1
},
{
"begin": 3824,
"end": 3854,
"name": "GT",
"source": 1
},
{
"begin": 3821,
"end": 3877,
"name": "ISZERO",
"source": 1
},
{
"begin": 3821,
"end": 3877,
"name": "PUSH [tag]",
"source": 1,
"value": "129"
},
{
"begin": 3821,
"end": 3877,
"name": "JUMPI",
"source": 1
},
{
"begin": 3857,
"end": 3875,
"name": "PUSH [tag]",
"source": 1,
"value": "130"
},
{
"begin": 3857,
"end": 3875,
"name": "PUSH [tag]",
"source": 1,
"value": "60"
},
{
"begin": 3857,
"end": 3875,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 3857,
"end": 3875,
"name": "tag",
"source": 1,
"value": "130"
},
{
"begin": 3857,
"end": 3875,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3821,
"end": 3877,
"name": "tag",
"source": 1,
"value": "129"
},
{
"begin": 3821,
"end": 3877,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3895,
"end": 3924,
"name": "PUSH [tag]",
"source": 1,
"value": "131"
},
{
"begin": 3917,
"end": 3923,
"name": "DUP3",
"source": 1
},
{
"begin": 3895,
"end": 3924,
"name": "PUSH [tag]",
"source": 1,
"value": "56"
},
{
"begin": 3895,
"end": 3924,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 3895,
"end": 3924,
"name": "tag",
"source": 1,
"value": "131"
},
{
"begin": 3895,
"end": 3924,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 3887,
"end": 3924,
"name": "SWAP1",
"source": 1
},
{
"begin": 3887,
"end": 3924,
"name": "POP",
"source": 1
},
{
"begin": 3979,
"end": 3983,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 3973,
"end": 3977,
"name": "DUP2",
"source": 1
},
{
"begin": 3969,
"end": 3984,
"name": "ADD",
"source": 1
},
{
"begin": 3961,
"end": 3984,
"name": "SWAP1",
"source": 1
},
{
"begin": 3961,
"end": 3984,
"name": "POP",
"source": 1
},
{
"begin": 3683,
"end": 3991,
"name": "SWAP2",
"source": 1
},
{
"begin": 3683,
"end": 3991,
"name": "SWAP1",
"source": 1
},
{
"begin": 3683,
"end": 3991,
"name": "POP",
"source": 1
},
{
"begin": 3683,
"end": 3991,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 3997,
"end": 4143,
"name": "tag",
"source": 1,
"value": "64"
},
{
"begin": 3997,
"end": 4143,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4094,
"end": 4100,
"name": "DUP3",
"source": 1
},
{
"begin": 4089,
"end": 4092,
"name": "DUP2",
"source": 1
},
{
"begin": 4084,
"end": 4087,
"name": "DUP4",
"source": 1
},
{
"begin": 4071,
"end": 4101,
"name": "CALLDATACOPY",
"source": 1
},
{
"begin": 4135,
"end": 4136,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 4126,
"end": 4132,
"name": "DUP4",
"source": 1
},
{
"begin": 4121,
"end": 4124,
"name": "DUP4",
"source": 1
},
{
"begin": 4117,
"end": 4133,
"name": "ADD",
"source": 1
},
{
"begin": 4110,
"end": 4137,
"name": "MSTORE",
"source": 1
},
{
"begin": 3997,
"end": 4143,
"name": "POP",
"source": 1
},
{
"begin": 3997,
"end": 4143,
"name": "POP",
"source": 1
},
{
"begin": 3997,
"end": 4143,
"name": "POP",
"source": 1
},
{
"begin": 3997,
"end": 4143,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 4149,
"end": 4574,
"name": "tag",
"source": 1,
"value": "65"
},
{
"begin": 4149,
"end": 4574,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4227,
"end": 4232,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 4252,
"end": 4318,
"name": "PUSH [tag]",
"source": 1,
"value": "134"
},
{
"begin": 4268,
"end": 4317,
"name": "PUSH [tag]",
"source": 1,
"value": "135"
},
{
"begin": 4310,
"end": 4316,
"name": "DUP5",
"source": 1
},
{
"begin": 4268,
"end": 4317,
"name": "PUSH [tag]",
"source": 1,
"value": "63"
},
{
"begin": 4268,
"end": 4317,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 4268,
"end": 4317,
"name": "tag",
"source": 1,
"value": "135"
},
{
"begin": 4268,
"end": 4317,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4252,
"end": 4318,
"name": "PUSH [tag]",
"source": 1,
"value": "62"
},
{
"begin": 4252,
"end": 4318,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 4252,
"end": 4318,
"name": "tag",
"source": 1,
"value": "134"
},
{
"begin": 4252,
"end": 4318,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4243,
"end": 4318,
"name": "SWAP1",
"source": 1
},
{
"begin": 4243,
"end": 4318,
"name": "POP",
"source": 1
},
{
"begin": 4341,
"end": 4347,
"name": "DUP3",
"source": 1
},
{
"begin": 4334,
"end": 4339,
"name": "DUP2",
"source": 1
},
{
"begin": 4327,
"end": 4348,
"name": "MSTORE",
"source": 1
},
{
"begin": 4379,
"end": 4383,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 4372,
"end": 4377,
"name": "DUP2",
"source": 1
},
{
"begin": 4368,
"end": 4384,
"name": "ADD",
"source": 1
},
{
"begin": 4417,
"end": 4420,
"name": "DUP5",
"source": 1
},
{
"begin": 4408,
"end": 4414,
"name": "DUP5",
"source": 1
},
{
"begin": 4403,
"end": 4406,
"name": "DUP5",
"source": 1
},
{
"begin": 4399,
"end": 4415,
"name": "ADD",
"source": 1
},
{
"begin": 4396,
"end": 4421,
"name": "GT",
"source": 1
},
{
"begin": 4393,
"end": 4505,
"name": "ISZERO",
"source": 1
},
{
"begin": 4393,
"end": 4505,
"name": "PUSH [tag]",
"source": 1,
"value": "136"
},
{
"begin": 4393,
"end": 4505,
"name": "JUMPI",
"source": 1
},
{
"begin": 4424,
"end": 4503,
"name": "PUSH [tag]",
"source": 1,
"value": "137"
},
{
"begin": 4424,
"end": 4503,
"name": "PUSH [tag]",
"source": 1,
"value": "59"
},
{
"begin": 4424,
"end": 4503,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 4424,
"end": 4503,
"name": "tag",
"source": 1,
"value": "137"
},
{
"begin": 4424,
"end": 4503,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4393,
"end": 4505,
"name": "tag",
"source": 1,
"value": "136"
},
{
"begin": 4393,
"end": 4505,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4514,
"end": 4568,
"name": "PUSH [tag]",
"source": 1,
"value": "138"
},
{
"begin": 4561,
"end": 4567,
"name": "DUP5",
"source": 1
},
{
"begin": 4556,
"end": 4559,
"name": "DUP3",
"source": 1
},
{
"begin": 4551,
"end": 4554,
"name": "DUP6",
"source": 1
},
{
"begin": 4514,
"end": 4568,
"name": "PUSH [tag]",
"source": 1,
"value": "64"
},
{
"begin": 4514,
"end": 4568,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 4514,
"end": 4568,
"name": "tag",
"source": 1,
"value": "138"
},
{
"begin": 4514,
"end": 4568,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4233,
"end": 4574,
"name": "POP",
"source": 1
},
{
"begin": 4149,
"end": 4574,
"name": "SWAP4",
"source": 1
},
{
"begin": 4149,
"end": 4574,
"name": "SWAP3",
"source": 1
},
{
"begin": 4149,
"end": 4574,
"name": "POP",
"source": 1
},
{
"begin": 4149,
"end": 4574,
"name": "POP",
"source": 1
},
{
"begin": 4149,
"end": 4574,
"name": "POP",
"source": 1
},
{
"begin": 4149,
"end": 4574,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 4594,
"end": 4934,
"name": "tag",
"source": 1,
"value": "66"
},
{
"begin": 4594,
"end": 4934,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4650,
"end": 4655,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 4699,
"end": 4702,
"name": "DUP3",
"source": 1
},
{
"begin": 4692,
"end": 4696,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 4684,
"end": 4690,
"name": "DUP4",
"source": 1
},
{
"begin": 4680,
"end": 4697,
"name": "ADD",
"source": 1
},
{
"begin": 4676,
"end": 4703,
"name": "SLT",
"source": 1
},
{
"begin": 4666,
"end": 4788,
"name": "PUSH [tag]",
"source": 1,
"value": "140"
},
{
"begin": 4666,
"end": 4788,
"name": "JUMPI",
"source": 1
},
{
"begin": 4707,
"end": 4786,
"name": "PUSH [tag]",
"source": 1,
"value": "141"
},
{
"begin": 4707,
"end": 4786,
"name": "PUSH [tag]",
"source": 1,
"value": "58"
},
{
"begin": 4707,
"end": 4786,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 4707,
"end": 4786,
"name": "tag",
"source": 1,
"value": "141"
},
{
"begin": 4707,
"end": 4786,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4666,
"end": 4788,
"name": "tag",
"source": 1,
"value": "140"
},
{
"begin": 4666,
"end": 4788,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4824,
"end": 4830,
"name": "DUP2",
"source": 1
},
{
"begin": 4811,
"end": 4831,
"name": "CALLDATALOAD",
"source": 1
},
{
"begin": 4849,
"end": 4928,
"name": "PUSH [tag]",
"source": 1,
"value": "142"
},
{
"begin": 4924,
"end": 4927,
"name": "DUP5",
"source": 1
},
{
"begin": 4916,
"end": 4922,
"name": "DUP3",
"source": 1
},
{
"begin": 4909,
"end": 4913,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 4901,
"end": 4907,
"name": "DUP7",
"source": 1
},
{
"begin": 4897,
"end": 4914,
"name": "ADD",
"source": 1
},
{
"begin": 4849,
"end": 4928,
"name": "PUSH [tag]",
"source": 1,
"value": "65"
},
{
"begin": 4849,
"end": 4928,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 4849,
"end": 4928,
"name": "tag",
"source": 1,
"value": "142"
},
{
"begin": 4849,
"end": 4928,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 4840,
"end": 4928,
"name": "SWAP2",
"source": 1
},
{
"begin": 4840,
"end": 4928,
"name": "POP",
"source": 1
},
{
"begin": 4656,
"end": 4934,
"name": "POP",
"source": 1
},
{
"begin": 4594,
"end": 4934,
"name": "SWAP3",
"source": 1
},
{
"begin": 4594,
"end": 4934,
"name": "SWAP2",
"source": 1
},
{
"begin": 4594,
"end": 4934,
"name": "POP",
"source": 1
},
{
"begin": 4594,
"end": 4934,
"name": "POP",
"source": 1
},
{
"begin": 4594,
"end": 4934,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 4940,
"end": 5594,
"name": "tag",
"source": 1,
"value": "23"
},
{
"begin": 4940,
"end": 5594,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5018,
"end": 5024,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 5026,
"end": 5032,
"name": "DUP1",
"source": 1
},
{
"begin": 5075,
"end": 5077,
"name": "PUSH",
"source": 1,
"value": "40"
},
{
"begin": 5063,
"end": 5072,
"name": "DUP4",
"source": 1
},
{
"begin": 5054,
"end": 5061,
"name": "DUP6",
"source": 1
},
{
"begin": 5050,
"end": 5073,
"name": "SUB",
"source": 1
},
{
"begin": 5046,
"end": 5078,
"name": "SLT",
"source": 1
},
{
"begin": 5043,
"end": 5162,
"name": "ISZERO",
"source": 1
},
{
"begin": 5043,
"end": 5162,
"name": "PUSH [tag]",
"source": 1,
"value": "144"
},
{
"begin": 5043,
"end": 5162,
"name": "JUMPI",
"source": 1
},
{
"begin": 5081,
"end": 5160,
"name": "PUSH [tag]",
"source": 1,
"value": "145"
},
{
"begin": 5081,
"end": 5160,
"name": "PUSH [tag]",
"source": 1,
"value": "49"
},
{
"begin": 5081,
"end": 5160,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 5081,
"end": 5160,
"name": "tag",
"source": 1,
"value": "145"
},
{
"begin": 5081,
"end": 5160,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5043,
"end": 5162,
"name": "tag",
"source": 1,
"value": "144"
},
{
"begin": 5043,
"end": 5162,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5229,
"end": 5230,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 5218,
"end": 5227,
"name": "DUP4",
"source": 1
},
{
"begin": 5214,
"end": 5231,
"name": "ADD",
"source": 1
},
{
"begin": 5201,
"end": 5232,
"name": "CALLDATALOAD",
"source": 1
},
{
"begin": 5259,
"end": 5277,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 5251,
"end": 5257,
"name": "DUP2",
"source": 1
},
{
"begin": 5248,
"end": 5278,
"name": "GT",
"source": 1
},
{
"begin": 5245,
"end": 5362,
"name": "ISZERO",
"source": 1
},
{
"begin": 5245,
"end": 5362,
"name": "PUSH [tag]",
"source": 1,
"value": "146"
},
{
"begin": 5245,
"end": 5362,
"name": "JUMPI",
"source": 1
},
{
"begin": 5281,
"end": 5360,
"name": "PUSH [tag]",
"source": 1,
"value": "147"
},
{
"begin": 5281,
"end": 5360,
"name": "PUSH [tag]",
"source": 1,
"value": "50"
},
{
"begin": 5281,
"end": 5360,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 5281,
"end": 5360,
"name": "tag",
"source": 1,
"value": "147"
},
{
"begin": 5281,
"end": 5360,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5245,
"end": 5362,
"name": "tag",
"source": 1,
"value": "146"
},
{
"begin": 5245,
"end": 5362,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5386,
"end": 5449,
"name": "PUSH [tag]",
"source": 1,
"value": "148"
},
{
"begin": 5441,
"end": 5448,
"name": "DUP6",
"source": 1
},
{
"begin": 5432,
"end": 5438,
"name": "DUP3",
"source": 1
},
{
"begin": 5421,
"end": 5430,
"name": "DUP7",
"source": 1
},
{
"begin": 5417,
"end": 5439,
"name": "ADD",
"source": 1
},
{
"begin": 5386,
"end": 5449,
"name": "PUSH [tag]",
"source": 1,
"value": "66"
},
{
"begin": 5386,
"end": 5449,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 5386,
"end": 5449,
"name": "tag",
"source": 1,
"value": "148"
},
{
"begin": 5386,
"end": 5449,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5376,
"end": 5449,
"name": "SWAP3",
"source": 1
},
{
"begin": 5376,
"end": 5449,
"name": "POP",
"source": 1
},
{
"begin": 5172,
"end": 5459,
"name": "POP",
"source": 1
},
{
"begin": 5498,
"end": 5500,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 5524,
"end": 5577,
"name": "PUSH [tag]",
"source": 1,
"value": "149"
},
{
"begin": 5569,
"end": 5576,
"name": "DUP6",
"source": 1
},
{
"begin": 5560,
"end": 5566,
"name": "DUP3",
"source": 1
},
{
"begin": 5549,
"end": 5558,
"name": "DUP7",
"source": 1
},
{
"begin": 5545,
"end": 5567,
"name": "ADD",
"source": 1
},
{
"begin": 5524,
"end": 5577,
"name": "PUSH [tag]",
"source": 1,
"value": "52"
},
{
"begin": 5524,
"end": 5577,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 5524,
"end": 5577,
"name": "tag",
"source": 1,
"value": "149"
},
{
"begin": 5524,
"end": 5577,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5514,
"end": 5577,
"name": "SWAP2",
"source": 1
},
{
"begin": 5514,
"end": 5577,
"name": "POP",
"source": 1
},
{
"begin": 5469,
"end": 5587,
"name": "POP",
"source": 1
},
{
"begin": 4940,
"end": 5594,
"name": "SWAP3",
"source": 1
},
{
"begin": 4940,
"end": 5594,
"name": "POP",
"source": 1
},
{
"begin": 4940,
"end": 5594,
"name": "SWAP3",
"source": 1
},
{
"begin": 4940,
"end": 5594,
"name": "SWAP1",
"source": 1
},
{
"begin": 4940,
"end": 5594,
"name": "POP",
"source": 1
},
{
"begin": 4940,
"end": 5594,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 5600,
"end": 6109,
"name": "tag",
"source": 1,
"value": "27"
},
{
"begin": 5600,
"end": 6109,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5669,
"end": 5675,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 5718,
"end": 5720,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 5706,
"end": 5715,
"name": "DUP3",
"source": 1
},
{
"begin": 5697,
"end": 5704,
"name": "DUP5",
"source": 1
},
{
"begin": 5693,
"end": 5716,
"name": "SUB",
"source": 1
},
{
"begin": 5689,
"end": 5721,
"name": "SLT",
"source": 1
},
{
"begin": 5686,
"end": 5805,
"name": "ISZERO",
"source": 1
},
{
"begin": 5686,
"end": 5805,
"name": "PUSH [tag]",
"source": 1,
"value": "151"
},
{
"begin": 5686,
"end": 5805,
"name": "JUMPI",
"source": 1
},
{
"begin": 5724,
"end": 5803,
"name": "PUSH [tag]",
"source": 1,
"value": "152"
},
{
"begin": 5724,
"end": 5803,
"name": "PUSH [tag]",
"source": 1,
"value": "49"
},
{
"begin": 5724,
"end": 5803,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 5724,
"end": 5803,
"name": "tag",
"source": 1,
"value": "152"
},
{
"begin": 5724,
"end": 5803,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5686,
"end": 5805,
"name": "tag",
"source": 1,
"value": "151"
},
{
"begin": 5686,
"end": 5805,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5872,
"end": 5873,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 5861,
"end": 5870,
"name": "DUP3",
"source": 1
},
{
"begin": 5857,
"end": 5874,
"name": "ADD",
"source": 1
},
{
"begin": 5844,
"end": 5875,
"name": "CALLDATALOAD",
"source": 1
},
{
"begin": 5902,
"end": 5920,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 5894,
"end": 5900,
"name": "DUP2",
"source": 1
},
{
"begin": 5891,
"end": 5921,
"name": "GT",
"source": 1
},
{
"begin": 5888,
"end": 6005,
"name": "ISZERO",
"source": 1
},
{
"begin": 5888,
"end": 6005,
"name": "PUSH [tag]",
"source": 1,
"value": "153"
},
{
"begin": 5888,
"end": 6005,
"name": "JUMPI",
"source": 1
},
{
"begin": 5924,
"end": 6003,
"name": "PUSH [tag]",
"source": 1,
"value": "154"
},
{
"begin": 5924,
"end": 6003,
"name": "PUSH [tag]",
"source": 1,
"value": "50"
},
{
"begin": 5924,
"end": 6003,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 5924,
"end": 6003,
"name": "tag",
"source": 1,
"value": "154"
},
{
"begin": 5924,
"end": 6003,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 5888,
"end": 6005,
"name": "tag",
"source": 1,
"value": "153"
},
{
"begin": 5888,
"end": 6005,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6029,
"end": 6092,
"name": "PUSH [tag]",
"source": 1,
"value": "155"
},
{
"begin": 6084,
"end": 6091,
"name": "DUP5",
"source": 1
},
{
"begin": 6075,
"end": 6081,
"name": "DUP3",
"source": 1
},
{
"begin": 6064,
"end": 6073,
"name": "DUP6",
"source": 1
},
{
"begin": 6060,
"end": 6082,
"name": "ADD",
"source": 1
},
{
"begin": 6029,
"end": 6092,
"name": "PUSH [tag]",
"source": 1,
"value": "66"
},
{
"begin": 6029,
"end": 6092,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 6029,
"end": 6092,
"name": "tag",
"source": 1,
"value": "155"
},
{
"begin": 6029,
"end": 6092,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6019,
"end": 6092,
"name": "SWAP2",
"source": 1
},
{
"begin": 6019,
"end": 6092,
"name": "POP",
"source": 1
},
{
"begin": 5815,
"end": 6102,
"name": "POP",
"source": 1
},
{
"begin": 5600,
"end": 6109,
"name": "SWAP3",
"source": 1
},
{
"begin": 5600,
"end": 6109,
"name": "SWAP2",
"source": 1
},
{
"begin": 5600,
"end": 6109,
"name": "POP",
"source": 1
},
{
"begin": 5600,
"end": 6109,
"name": "POP",
"source": 1
},
{
"begin": 5600,
"end": 6109,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 6115,
"end": 6295,
"name": "tag",
"source": 1,
"value": "67"
},
{
"begin": 6115,
"end": 6295,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6163,
"end": 6240,
"name": "PUSH",
"source": 1,
"value": "4E487B7100000000000000000000000000000000000000000000000000000000"
},
{
"begin": 6160,
"end": 6161,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6153,
"end": 6241,
"name": "MSTORE",
"source": 1
},
{
"begin": 6260,
"end": 6264,
"name": "PUSH",
"source": 1,
"value": "22"
},
{
"begin": 6257,
"end": 6258,
"name": "PUSH",
"source": 1,
"value": "4"
},
{
"begin": 6250,
"end": 6265,
"name": "MSTORE",
"source": 1
},
{
"begin": 6284,
"end": 6288,
"name": "PUSH",
"source": 1,
"value": "24"
},
{
"begin": 6281,
"end": 6282,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6274,
"end": 6289,
"name": "REVERT",
"source": 1
},
{
"begin": 6301,
"end": 6621,
"name": "tag",
"source": 1,
"value": "34"
},
{
"begin": 6301,
"end": 6621,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6345,
"end": 6351,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6382,
"end": 6383,
"name": "PUSH",
"source": 1,
"value": "2"
},
{
"begin": 6376,
"end": 6380,
"name": "DUP3",
"source": 1
},
{
"begin": 6372,
"end": 6384,
"name": "DIV",
"source": 1
},
{
"begin": 6362,
"end": 6384,
"name": "SWAP1",
"source": 1
},
{
"begin": 6362,
"end": 6384,
"name": "POP",
"source": 1
},
{
"begin": 6429,
"end": 6430,
"name": "PUSH",
"source": 1,
"value": "1"
},
{
"begin": 6423,
"end": 6427,
"name": "DUP3",
"source": 1
},
{
"begin": 6419,
"end": 6431,
"name": "AND",
"source": 1
},
{
"begin": 6450,
"end": 6468,
"name": "DUP1",
"source": 1
},
{
"begin": 6440,
"end": 6521,
"name": "PUSH [tag]",
"source": 1,
"value": "158"
},
{
"begin": 6440,
"end": 6521,
"name": "JUMPI",
"source": 1
},
{
"begin": 6506,
"end": 6510,
"name": "PUSH",
"source": 1,
"value": "7F"
},
{
"begin": 6498,
"end": 6504,
"name": "DUP3",
"source": 1
},
{
"begin": 6494,
"end": 6511,
"name": "AND",
"source": 1
},
{
"begin": 6484,
"end": 6511,
"name": "SWAP2",
"source": 1
},
{
"begin": 6484,
"end": 6511,
"name": "POP",
"source": 1
},
{
"begin": 6440,
"end": 6521,
"name": "tag",
"source": 1,
"value": "158"
},
{
"begin": 6440,
"end": 6521,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6568,
"end": 6570,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 6560,
"end": 6566,
"name": "DUP3",
"source": 1
},
{
"begin": 6557,
"end": 6571,
"name": "LT",
"source": 1
},
{
"begin": 6537,
"end": 6555,
"name": "DUP2",
"source": 1
},
{
"begin": 6534,
"end": 6572,
"name": "SUB",
"source": 1
},
{
"begin": 6531,
"end": 6615,
"name": "PUSH [tag]",
"source": 1,
"value": "159"
},
{
"begin": 6531,
"end": 6615,
"name": "JUMPI",
"source": 1
},
{
"begin": 6587,
"end": 6605,
"name": "PUSH [tag]",
"source": 1,
"value": "160"
},
{
"begin": 6587,
"end": 6605,
"name": "PUSH [tag]",
"source": 1,
"value": "67"
},
{
"begin": 6587,
"end": 6605,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 6587,
"end": 6605,
"name": "tag",
"source": 1,
"value": "160"
},
{
"begin": 6587,
"end": 6605,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6531,
"end": 6615,
"name": "tag",
"source": 1,
"value": "159"
},
{
"begin": 6531,
"end": 6615,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6352,
"end": 6621,
"name": "POP",
"source": 1
},
{
"begin": 6301,
"end": 6621,
"name": "SWAP2",
"source": 1
},
{
"begin": 6301,
"end": 6621,
"name": "SWAP1",
"source": 1
},
{
"begin": 6301,
"end": 6621,
"name": "POP",
"source": 1
},
{
"begin": 6301,
"end": 6621,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 6627,
"end": 6768,
"name": "tag",
"source": 1,
"value": "68"
},
{
"begin": 6627,
"end": 6768,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6676,
"end": 6680,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6699,
"end": 6702,
"name": "DUP2",
"source": 1
},
{
"begin": 6691,
"end": 6702,
"name": "SWAP1",
"source": 1
},
{
"begin": 6691,
"end": 6702,
"name": "POP",
"source": 1
},
{
"begin": 6722,
"end": 6725,
"name": "DUP2",
"source": 1
},
{
"begin": 6719,
"end": 6720,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6712,
"end": 6726,
"name": "MSTORE",
"source": 1
},
{
"begin": 6756,
"end": 6760,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 6753,
"end": 6754,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6743,
"end": 6761,
"name": "KECCAK256",
"source": 1
},
{
"begin": 6735,
"end": 6761,
"name": "SWAP1",
"source": 1
},
{
"begin": 6735,
"end": 6761,
"name": "POP",
"source": 1
},
{
"begin": 6627,
"end": 6768,
"name": "SWAP2",
"source": 1
},
{
"begin": 6627,
"end": 6768,
"name": "SWAP1",
"source": 1
},
{
"begin": 6627,
"end": 6768,
"name": "POP",
"source": 1
},
{
"begin": 6627,
"end": 6768,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 6774,
"end": 6867,
"name": "tag",
"source": 1,
"value": "69"
},
{
"begin": 6774,
"end": 6867,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6811,
"end": 6817,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6858,
"end": 6860,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 6853,
"end": 6855,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 6846,
"end": 6851,
"name": "DUP4",
"source": 1
},
{
"begin": 6842,
"end": 6856,
"name": "ADD",
"source": 1
},
{
"begin": 6838,
"end": 6861,
"name": "DIV",
"source": 1
},
{
"begin": 6828,
"end": 6861,
"name": "SWAP1",
"source": 1
},
{
"begin": 6828,
"end": 6861,
"name": "POP",
"source": 1
},
{
"begin": 6774,
"end": 6867,
"name": "SWAP2",
"source": 1
},
{
"begin": 6774,
"end": 6867,
"name": "SWAP1",
"source": 1
},
{
"begin": 6774,
"end": 6867,
"name": "POP",
"source": 1
},
{
"begin": 6774,
"end": 6867,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 6873,
"end": 6980,
"name": "tag",
"source": 1,
"value": "70"
},
{
"begin": 6873,
"end": 6980,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 6917,
"end": 6925,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 6967,
"end": 6972,
"name": "DUP3",
"source": 1
},
{
"begin": 6961,
"end": 6965,
"name": "DUP3",
"source": 1
},
{
"begin": 6957,
"end": 6973,
"name": "SHL",
"source": 1
},
{
"begin": 6936,
"end": 6973,
"name": "SWAP1",
"source": 1
},
{
"begin": 6936,
"end": 6973,
"name": "POP",
"source": 1
},
{
"begin": 6873,
"end": 6980,
"name": "SWAP3",
"source": 1
},
{
"begin": 6873,
"end": 6980,
"name": "SWAP2",
"source": 1
},
{
"begin": 6873,
"end": 6980,
"name": "POP",
"source": 1
},
{
"begin": 6873,
"end": 6980,
"name": "POP",
"source": 1
},
{
"begin": 6873,
"end": 6980,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 6986,
"end": 7379,
"name": "tag",
"source": 1,
"value": "71"
},
{
"begin": 6986,
"end": 7379,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7055,
"end": 7061,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 7105,
"end": 7106,
"name": "PUSH",
"source": 1,
"value": "8"
},
{
"begin": 7093,
"end": 7103,
"name": "DUP4",
"source": 1
},
{
"begin": 7089,
"end": 7107,
"name": "MUL",
"source": 1
},
{
"begin": 7128,
"end": 7225,
"name": "PUSH [tag]",
"source": 1,
"value": "165"
},
{
"begin": 7158,
"end": 7224,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"
},
{
"begin": 7147,
"end": 7156,
"name": "DUP3",
"source": 1
},
{
"begin": 7128,
"end": 7225,
"name": "PUSH [tag]",
"source": 1,
"value": "70"
},
{
"begin": 7128,
"end": 7225,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7128,
"end": 7225,
"name": "tag",
"source": 1,
"value": "165"
},
{
"begin": 7128,
"end": 7225,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7246,
"end": 7285,
"name": "PUSH [tag]",
"source": 1,
"value": "166"
},
{
"begin": 7276,
"end": 7284,
"name": "DUP7",
"source": 1
},
{
"begin": 7265,
"end": 7274,
"name": "DUP4",
"source": 1
},
{
"begin": 7246,
"end": 7285,
"name": "PUSH [tag]",
"source": 1,
"value": "70"
},
{
"begin": 7246,
"end": 7285,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7246,
"end": 7285,
"name": "tag",
"source": 1,
"value": "166"
},
{
"begin": 7246,
"end": 7285,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7234,
"end": 7285,
"name": "SWAP6",
"source": 1
},
{
"begin": 7234,
"end": 7285,
"name": "POP",
"source": 1
},
{
"begin": 7318,
"end": 7322,
"name": "DUP1",
"source": 1
},
{
"begin": 7314,
"end": 7323,
"name": "NOT",
"source": 1
},
{
"begin": 7307,
"end": 7312,
"name": "DUP5",
"source": 1
},
{
"begin": 7303,
"end": 7324,
"name": "AND",
"source": 1
},
{
"begin": 7294,
"end": 7324,
"name": "SWAP4",
"source": 1
},
{
"begin": 7294,
"end": 7324,
"name": "POP",
"source": 1
},
{
"begin": 7367,
"end": 7371,
"name": "DUP1",
"source": 1
},
{
"begin": 7357,
"end": 7365,
"name": "DUP7",
"source": 1
},
{
"begin": 7353,
"end": 7372,
"name": "AND",
"source": 1
},
{
"begin": 7346,
"end": 7351,
"name": "DUP5",
"source": 1
},
{
"begin": 7343,
"end": 7373,
"name": "OR",
"source": 1
},
{
"begin": 7333,
"end": 7373,
"name": "SWAP3",
"source": 1
},
{
"begin": 7333,
"end": 7373,
"name": "POP",
"source": 1
},
{
"begin": 7062,
"end": 7379,
"name": "POP",
"source": 1
},
{
"begin": 7062,
"end": 7379,
"name": "POP",
"source": 1
},
{
"begin": 6986,
"end": 7379,
"name": "SWAP4",
"source": 1
},
{
"begin": 6986,
"end": 7379,
"name": "SWAP3",
"source": 1
},
{
"begin": 6986,
"end": 7379,
"name": "POP",
"source": 1
},
{
"begin": 6986,
"end": 7379,
"name": "POP",
"source": 1
},
{
"begin": 6986,
"end": 7379,
"name": "POP",
"source": 1
},
{
"begin": 6986,
"end": 7379,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 7385,
"end": 7445,
"name": "tag",
"source": 1,
"value": "72"
},
{
"begin": 7385,
"end": 7445,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7413,
"end": 7416,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 7434,
"end": 7439,
"name": "DUP2",
"source": 1
},
{
"begin": 7427,
"end": 7439,
"name": "SWAP1",
"source": 1
},
{
"begin": 7427,
"end": 7439,
"name": "POP",
"source": 1
},
{
"begin": 7385,
"end": 7445,
"name": "SWAP2",
"source": 1
},
{
"begin": 7385,
"end": 7445,
"name": "SWAP1",
"source": 1
},
{
"begin": 7385,
"end": 7445,
"name": "POP",
"source": 1
},
{
"begin": 7385,
"end": 7445,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 7451,
"end": 7593,
"name": "tag",
"source": 1,
"value": "73"
},
{
"begin": 7451,
"end": 7593,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7501,
"end": 7510,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 7534,
"end": 7587,
"name": "PUSH [tag]",
"source": 1,
"value": "169"
},
{
"begin": 7552,
"end": 7586,
"name": "PUSH [tag]",
"source": 1,
"value": "170"
},
{
"begin": 7561,
"end": 7585,
"name": "PUSH [tag]",
"source": 1,
"value": "171"
},
{
"begin": 7579,
"end": 7584,
"name": "DUP5",
"source": 1
},
{
"begin": 7561,
"end": 7585,
"name": "PUSH [tag]",
"source": 1,
"value": "46"
},
{
"begin": 7561,
"end": 7585,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7561,
"end": 7585,
"name": "tag",
"source": 1,
"value": "171"
},
{
"begin": 7561,
"end": 7585,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7552,
"end": 7586,
"name": "PUSH [tag]",
"source": 1,
"value": "72"
},
{
"begin": 7552,
"end": 7586,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7552,
"end": 7586,
"name": "tag",
"source": 1,
"value": "170"
},
{
"begin": 7552,
"end": 7586,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7534,
"end": 7587,
"name": "PUSH [tag]",
"source": 1,
"value": "46"
},
{
"begin": 7534,
"end": 7587,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7534,
"end": 7587,
"name": "tag",
"source": 1,
"value": "169"
},
{
"begin": 7534,
"end": 7587,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7521,
"end": 7587,
"name": "SWAP1",
"source": 1
},
{
"begin": 7521,
"end": 7587,
"name": "POP",
"source": 1
},
{
"begin": 7451,
"end": 7593,
"name": "SWAP2",
"source": 1
},
{
"begin": 7451,
"end": 7593,
"name": "SWAP1",
"source": 1
},
{
"begin": 7451,
"end": 7593,
"name": "POP",
"source": 1
},
{
"begin": 7451,
"end": 7593,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 7599,
"end": 7674,
"name": "tag",
"source": 1,
"value": "74"
},
{
"begin": 7599,
"end": 7674,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7642,
"end": 7645,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 7663,
"end": 7668,
"name": "DUP2",
"source": 1
},
{
"begin": 7656,
"end": 7668,
"name": "SWAP1",
"source": 1
},
{
"begin": 7656,
"end": 7668,
"name": "POP",
"source": 1
},
{
"begin": 7599,
"end": 7674,
"name": "SWAP2",
"source": 1
},
{
"begin": 7599,
"end": 7674,
"name": "SWAP1",
"source": 1
},
{
"begin": 7599,
"end": 7674,
"name": "POP",
"source": 1
},
{
"begin": 7599,
"end": 7674,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 7680,
"end": 7949,
"name": "tag",
"source": 1,
"value": "75"
},
{
"begin": 7680,
"end": 7949,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7790,
"end": 7829,
"name": "PUSH [tag]",
"source": 1,
"value": "174"
},
{
"begin": 7821,
"end": 7828,
"name": "DUP4",
"source": 1
},
{
"begin": 7790,
"end": 7829,
"name": "PUSH [tag]",
"source": 1,
"value": "73"
},
{
"begin": 7790,
"end": 7829,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7790,
"end": 7829,
"name": "tag",
"source": 1,
"value": "174"
},
{
"begin": 7790,
"end": 7829,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7851,
"end": 7942,
"name": "PUSH [tag]",
"source": 1,
"value": "175"
},
{
"begin": 7900,
"end": 7941,
"name": "PUSH [tag]",
"source": 1,
"value": "176"
},
{
"begin": 7924,
"end": 7940,
"name": "DUP3",
"source": 1
},
{
"begin": 7900,
"end": 7941,
"name": "PUSH [tag]",
"source": 1,
"value": "74"
},
{
"begin": 7900,
"end": 7941,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7900,
"end": 7941,
"name": "tag",
"source": 1,
"value": "176"
},
{
"begin": 7900,
"end": 7941,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7892,
"end": 7898,
"name": "DUP5",
"source": 1
},
{
"begin": 7885,
"end": 7889,
"name": "DUP5",
"source": 1
},
{
"begin": 7879,
"end": 7890,
"name": "SLOAD",
"source": 1
},
{
"begin": 7851,
"end": 7942,
"name": "PUSH [tag]",
"source": 1,
"value": "71"
},
{
"begin": 7851,
"end": 7942,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 7851,
"end": 7942,
"name": "tag",
"source": 1,
"value": "175"
},
{
"begin": 7851,
"end": 7942,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 7845,
"end": 7849,
"name": "DUP3",
"source": 1
},
{
"begin": 7838,
"end": 7943,
"name": "SSTORE",
"source": 1
},
{
"begin": 7756,
"end": 7949,
"name": "POP",
"source": 1
},
{
"begin": 7680,
"end": 7949,
"name": "POP",
"source": 1
},
{
"begin": 7680,
"end": 7949,
"name": "POP",
"source": 1
},
{
"begin": 7680,
"end": 7949,
"name": "POP",
"source": 1
},
{
"begin": 7680,
"end": 7949,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 7955,
"end": 8028,
"name": "tag",
"source": 1,
"value": "76"
},
{
"begin": 7955,
"end": 8028,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8000,
"end": 8003,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 7955,
"end": 8028,
"name": "SWAP1",
"source": 1
},
{
"begin": 7955,
"end": 8028,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 8034,
"end": 8223,
"name": "tag",
"source": 1,
"value": "77"
},
{
"begin": 8034,
"end": 8223,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8111,
"end": 8143,
"name": "PUSH [tag]",
"source": 1,
"value": "179"
},
{
"begin": 8111,
"end": 8143,
"name": "PUSH [tag]",
"source": 1,
"value": "76"
},
{
"begin": 8111,
"end": 8143,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 8111,
"end": 8143,
"name": "tag",
"source": 1,
"value": "179"
},
{
"begin": 8111,
"end": 8143,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8152,
"end": 8217,
"name": "PUSH [tag]",
"source": 1,
"value": "180"
},
{
"begin": 8210,
"end": 8216,
"name": "DUP2",
"source": 1
},
{
"begin": 8202,
"end": 8208,
"name": "DUP5",
"source": 1
},
{
"begin": 8196,
"end": 8200,
"name": "DUP5",
"source": 1
},
{
"begin": 8152,
"end": 8217,
"name": "PUSH [tag]",
"source": 1,
"value": "75"
},
{
"begin": 8152,
"end": 8217,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 8152,
"end": 8217,
"name": "tag",
"source": 1,
"value": "180"
},
{
"begin": 8152,
"end": 8217,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8087,
"end": 8223,
"name": "POP",
"source": 1
},
{
"begin": 8034,
"end": 8223,
"name": "POP",
"source": 1
},
{
"begin": 8034,
"end": 8223,
"name": "POP",
"source": 1
},
{
"begin": 8034,
"end": 8223,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 8229,
"end": 8415,
"name": "tag",
"source": 1,
"value": "78"
},
{
"begin": 8229,
"end": 8415,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8289,
"end": 8409,
"name": "tag",
"source": 1,
"value": "182"
},
{
"begin": 8289,
"end": 8409,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8306,
"end": 8309,
"name": "DUP2",
"source": 1
},
{
"begin": 8299,
"end": 8304,
"name": "DUP2",
"source": 1
},
{
"begin": 8296,
"end": 8310,
"name": "LT",
"source": 1
},
{
"begin": 8289,
"end": 8409,
"name": "ISZERO",
"source": 1
},
{
"begin": 8289,
"end": 8409,
"name": "PUSH [tag]",
"source": 1,
"value": "184"
},
{
"begin": 8289,
"end": 8409,
"name": "JUMPI",
"source": 1
},
{
"begin": 8360,
"end": 8399,
"name": "PUSH [tag]",
"source": 1,
"value": "185"
},
{
"begin": 8397,
"end": 8398,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 8390,
"end": 8395,
"name": "DUP3",
"source": 1
},
{
"begin": 8360,
"end": 8399,
"name": "PUSH [tag]",
"source": 1,
"value": "77"
},
{
"begin": 8360,
"end": 8399,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 8360,
"end": 8399,
"name": "tag",
"source": 1,
"value": "185"
},
{
"begin": 8360,
"end": 8399,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8333,
"end": 8334,
"name": "PUSH",
"source": 1,
"value": "1"
},
{
"begin": 8326,
"end": 8331,
"name": "DUP2",
"source": 1
},
{
"begin": 8322,
"end": 8335,
"name": "ADD",
"source": 1
},
{
"begin": 8313,
"end": 8335,
"name": "SWAP1",
"source": 1
},
{
"begin": 8313,
"end": 8335,
"name": "POP",
"source": 1
},
{
"begin": 8289,
"end": 8409,
"name": "PUSH [tag]",
"source": 1,
"value": "182"
},
{
"begin": 8289,
"end": 8409,
"name": "JUMP",
"source": 1
},
{
"begin": 8289,
"end": 8409,
"name": "tag",
"source": 1,
"value": "184"
},
{
"begin": 8289,
"end": 8409,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8229,
"end": 8415,
"name": "POP",
"source": 1
},
{
"begin": 8229,
"end": 8415,
"name": "POP",
"source": 1
},
{
"begin": 8229,
"end": 8415,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 8421,
"end": 8964,
"name": "tag",
"source": 1,
"value": "79"
},
{
"begin": 8421,
"end": 8964,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8522,
"end": 8524,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 8517,
"end": 8520,
"name": "DUP3",
"source": 1
},
{
"begin": 8514,
"end": 8525,
"name": "GT",
"source": 1
},
{
"begin": 8511,
"end": 8957,
"name": "ISZERO",
"source": 1
},
{
"begin": 8511,
"end": 8957,
"name": "PUSH [tag]",
"source": 1,
"value": "187"
},
{
"begin": 8511,
"end": 8957,
"name": "JUMPI",
"source": 1
},
{
"begin": 8556,
"end": 8594,
"name": "PUSH [tag]",
"source": 1,
"value": "188"
},
{
"begin": 8588,
"end": 8593,
"name": "DUP2",
"source": 1
},
{
"begin": 8556,
"end": 8594,
"name": "PUSH [tag]",
"source": 1,
"value": "68"
},
{
"begin": 8556,
"end": 8594,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 8556,
"end": 8594,
"name": "tag",
"source": 1,
"value": "188"
},
{
"begin": 8556,
"end": 8594,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8640,
"end": 8669,
"name": "PUSH [tag]",
"source": 1,
"value": "189"
},
{
"begin": 8658,
"end": 8668,
"name": "DUP5",
"source": 1
},
{
"begin": 8640,
"end": 8669,
"name": "PUSH [tag]",
"source": 1,
"value": "69"
},
{
"begin": 8640,
"end": 8669,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 8640,
"end": 8669,
"name": "tag",
"source": 1,
"value": "189"
},
{
"begin": 8640,
"end": 8669,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8630,
"end": 8638,
"name": "DUP2",
"source": 1
},
{
"begin": 8626,
"end": 8670,
"name": "ADD",
"source": 1
},
{
"begin": 8823,
"end": 8825,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 8811,
"end": 8821,
"name": "DUP6",
"source": 1
},
{
"begin": 8808,
"end": 8826,
"name": "LT",
"source": 1
},
{
"begin": 8805,
"end": 8854,
"name": "ISZERO",
"source": 1
},
{
"begin": 8805,
"end": 8854,
"name": "PUSH [tag]",
"source": 1,
"value": "190"
},
{
"begin": 8805,
"end": 8854,
"name": "JUMPI",
"source": 1
},
{
"begin": 8844,
"end": 8852,
"name": "DUP2",
"source": 1
},
{
"begin": 8829,
"end": 8852,
"name": "SWAP1",
"source": 1
},
{
"begin": 8829,
"end": 8852,
"name": "POP",
"source": 1
},
{
"begin": 8805,
"end": 8854,
"name": "tag",
"source": 1,
"value": "190"
},
{
"begin": 8805,
"end": 8854,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8867,
"end": 8947,
"name": "PUSH [tag]",
"source": 1,
"value": "191"
},
{
"begin": 8923,
"end": 8945,
"name": "PUSH [tag]",
"source": 1,
"value": "192"
},
{
"begin": 8941,
"end": 8944,
"name": "DUP6",
"source": 1
},
{
"begin": 8923,
"end": 8945,
"name": "PUSH [tag]",
"source": 1,
"value": "69"
},
{
"begin": 8923,
"end": 8945,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 8923,
"end": 8945,
"name": "tag",
"source": 1,
"value": "192"
},
{
"begin": 8923,
"end": 8945,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8913,
"end": 8921,
"name": "DUP4",
"source": 1
},
{
"begin": 8909,
"end": 8946,
"name": "ADD",
"source": 1
},
{
"begin": 8896,
"end": 8907,
"name": "DUP3",
"source": 1
},
{
"begin": 8867,
"end": 8947,
"name": "PUSH [tag]",
"source": 1,
"value": "78"
},
{
"begin": 8867,
"end": 8947,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 8867,
"end": 8947,
"name": "tag",
"source": 1,
"value": "191"
},
{
"begin": 8867,
"end": 8947,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8526,
"end": 8957,
"name": "POP",
"source": 1
},
{
"begin": 8526,
"end": 8957,
"name": "POP",
"source": 1
},
{
"begin": 8511,
"end": 8957,
"name": "tag",
"source": 1,
"value": "187"
},
{
"begin": 8511,
"end": 8957,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 8421,
"end": 8964,
"name": "POP",
"source": 1
},
{
"begin": 8421,
"end": 8964,
"name": "POP",
"source": 1
},
{
"begin": 8421,
"end": 8964,
"name": "POP",
"source": 1
},
{
"begin": 8421,
"end": 8964,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 8970,
"end": 9087,
"name": "tag",
"source": 1,
"value": "80"
},
{
"begin": 8970,
"end": 9087,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9024,
"end": 9032,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 9074,
"end": 9079,
"name": "DUP3",
"source": 1
},
{
"begin": 9068,
"end": 9072,
"name": "DUP3",
"source": 1
},
{
"begin": 9064,
"end": 9080,
"name": "SHR",
"source": 1
},
{
"begin": 9043,
"end": 9080,
"name": "SWAP1",
"source": 1
},
{
"begin": 9043,
"end": 9080,
"name": "POP",
"source": 1
},
{
"begin": 8970,
"end": 9087,
"name": "SWAP3",
"source": 1
},
{
"begin": 8970,
"end": 9087,
"name": "SWAP2",
"source": 1
},
{
"begin": 8970,
"end": 9087,
"name": "POP",
"source": 1
},
{
"begin": 8970,
"end": 9087,
"name": "POP",
"source": 1
},
{
"begin": 8970,
"end": 9087,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 9093,
"end": 9262,
"name": "tag",
"source": 1,
"value": "81"
},
{
"begin": 9093,
"end": 9262,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9137,
"end": 9143,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 9170,
"end": 9221,
"name": "PUSH [tag]",
"source": 1,
"value": "195"
},
{
"begin": 9218,
"end": 9219,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 9214,
"end": 9220,
"name": "NOT",
"source": 1
},
{
"begin": 9206,
"end": 9211,
"name": "DUP5",
"source": 1
},
{
"begin": 9203,
"end": 9204,
"name": "PUSH",
"source": 1,
"value": "8"
},
{
"begin": 9199,
"end": 9212,
"name": "MUL",
"source": 1
},
{
"begin": 9170,
"end": 9221,
"name": "PUSH [tag]",
"source": 1,
"value": "80"
},
{
"begin": 9170,
"end": 9221,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 9170,
"end": 9221,
"name": "tag",
"source": 1,
"value": "195"
},
{
"begin": 9170,
"end": 9221,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9166,
"end": 9222,
"name": "NOT",
"source": 1
},
{
"begin": 9251,
"end": 9255,
"name": "DUP1",
"source": 1
},
{
"begin": 9245,
"end": 9249,
"name": "DUP4",
"source": 1
},
{
"begin": 9241,
"end": 9256,
"name": "AND",
"source": 1
},
{
"begin": 9231,
"end": 9256,
"name": "SWAP2",
"source": 1
},
{
"begin": 9231,
"end": 9256,
"name": "POP",
"source": 1
},
{
"begin": 9144,
"end": 9262,
"name": "POP",
"source": 1
},
{
"begin": 9093,
"end": 9262,
"name": "SWAP3",
"source": 1
},
{
"begin": 9093,
"end": 9262,
"name": "SWAP2",
"source": 1
},
{
"begin": 9093,
"end": 9262,
"name": "POP",
"source": 1
},
{
"begin": 9093,
"end": 9262,
"name": "POP",
"source": 1
},
{
"begin": 9093,
"end": 9262,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 9267,
"end": 9562,
"name": "tag",
"source": 1,
"value": "82"
},
{
"begin": 9267,
"end": 9562,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9343,
"end": 9347,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 9489,
"end": 9518,
"name": "PUSH [tag]",
"source": 1,
"value": "197"
},
{
"begin": 9514,
"end": 9517,
"name": "DUP4",
"source": 1
},
{
"begin": 9508,
"end": 9512,
"name": "DUP4",
"source": 1
},
{
"begin": 9489,
"end": 9518,
"name": "PUSH [tag]",
"source": 1,
"value": "81"
},
{
"begin": 9489,
"end": 9518,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 9489,
"end": 9518,
"name": "tag",
"source": 1,
"value": "197"
},
{
"begin": 9489,
"end": 9518,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9481,
"end": 9518,
"name": "SWAP2",
"source": 1
},
{
"begin": 9481,
"end": 9518,
"name": "POP",
"source": 1
},
{
"begin": 9551,
"end": 9554,
"name": "DUP3",
"source": 1
},
{
"begin": 9548,
"end": 9549,
"name": "PUSH",
"source": 1,
"value": "2"
},
{
"begin": 9544,
"end": 9555,
"name": "MUL",
"source": 1
},
{
"begin": 9538,
"end": 9542,
"name": "DUP3",
"source": 1
},
{
"begin": 9535,
"end": 9556,
"name": "OR",
"source": 1
},
{
"begin": 9527,
"end": 9556,
"name": "SWAP1",
"source": 1
},
{
"begin": 9527,
"end": 9556,
"name": "POP",
"source": 1
},
{
"begin": 9267,
"end": 9562,
"name": "SWAP3",
"source": 1
},
{
"begin": 9267,
"end": 9562,
"name": "SWAP2",
"source": 1
},
{
"begin": 9267,
"end": 9562,
"name": "POP",
"source": 1
},
{
"begin": 9267,
"end": 9562,
"name": "POP",
"source": 1
},
{
"begin": 9267,
"end": 9562,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 9567,
"end": 10962,
"name": "tag",
"source": 1,
"value": "43"
},
{
"begin": 9567,
"end": 10962,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9684,
"end": 9721,
"name": "PUSH [tag]",
"source": 1,
"value": "199"
},
{
"begin": 9717,
"end": 9720,
"name": "DUP3",
"source": 1
},
{
"begin": 9684,
"end": 9721,
"name": "PUSH [tag]",
"source": 1,
"value": "53"
},
{
"begin": 9684,
"end": 9721,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 9684,
"end": 9721,
"name": "tag",
"source": 1,
"value": "199"
},
{
"begin": 9684,
"end": 9721,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9786,
"end": 9804,
"name": "PUSH",
"source": 1,
"value": "FFFFFFFFFFFFFFFF"
},
{
"begin": 9778,
"end": 9784,
"name": "DUP2",
"source": 1
},
{
"begin": 9775,
"end": 9805,
"name": "GT",
"source": 1
},
{
"begin": 9772,
"end": 9828,
"name": "ISZERO",
"source": 1
},
{
"begin": 9772,
"end": 9828,
"name": "PUSH [tag]",
"source": 1,
"value": "200"
},
{
"begin": 9772,
"end": 9828,
"name": "JUMPI",
"source": 1
},
{
"begin": 9808,
"end": 9826,
"name": "PUSH [tag]",
"source": 1,
"value": "201"
},
{
"begin": 9808,
"end": 9826,
"name": "PUSH [tag]",
"source": 1,
"value": "60"
},
{
"begin": 9808,
"end": 9826,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 9808,
"end": 9826,
"name": "tag",
"source": 1,
"value": "201"
},
{
"begin": 9808,
"end": 9826,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9772,
"end": 9828,
"name": "tag",
"source": 1,
"value": "200"
},
{
"begin": 9772,
"end": 9828,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9852,
"end": 9890,
"name": "PUSH [tag]",
"source": 1,
"value": "202"
},
{
"begin": 9884,
"end": 9888,
"name": "DUP3",
"source": 1
},
{
"begin": 9878,
"end": 9889,
"name": "SLOAD",
"source": 1
},
{
"begin": 9852,
"end": 9890,
"name": "PUSH [tag]",
"source": 1,
"value": "34"
},
{
"begin": 9852,
"end": 9890,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 9852,
"end": 9890,
"name": "tag",
"source": 1,
"value": "202"
},
{
"begin": 9852,
"end": 9890,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 9937,
"end": 10004,
"name": "PUSH [tag]",
"source": 1,
"value": "203"
},
{
"begin": 9997,
"end": 10003,
"name": "DUP3",
"source": 1
},
{
"begin": 9989,
"end": 9995,
"name": "DUP3",
"source": 1
},
{
"begin": 9983,
"end": 9987,
"name": "DUP6",
"source": 1
},
{
"begin": 9937,
"end": 10004,
"name": "PUSH [tag]",
"source": 1,
"value": "79"
},
{
"begin": 9937,
"end": 10004,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 9937,
"end": 10004,
"name": "tag",
"source": 1,
"value": "203"
},
{
"begin": 9937,
"end": 10004,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10031,
"end": 10032,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 10055,
"end": 10059,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 10042,
"end": 10059,
"name": "SWAP1",
"source": 1
},
{
"begin": 10042,
"end": 10059,
"name": "POP",
"source": 1
},
{
"begin": 10087,
"end": 10089,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 10079,
"end": 10085,
"name": "DUP4",
"source": 1
},
{
"begin": 10076,
"end": 10090,
"name": "GT",
"source": 1
},
{
"begin": 10104,
"end": 10105,
"name": "PUSH",
"source": 1,
"value": "1"
},
{
"begin": 10099,
"end": 10717,
"name": "DUP2",
"source": 1
},
{
"begin": 10099,
"end": 10717,
"name": "EQ",
"source": 1
},
{
"begin": 10099,
"end": 10717,
"name": "PUSH [tag]",
"source": 1,
"value": "205"
},
{
"begin": 10099,
"end": 10717,
"name": "JUMPI",
"source": 1
},
{
"begin": 10761,
"end": 10762,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 10778,
"end": 10784,
"name": "DUP5",
"source": 1
},
{
"begin": 10775,
"end": 10852,
"name": "ISZERO",
"source": 1
},
{
"begin": 10775,
"end": 10852,
"name": "PUSH [tag]",
"source": 1,
"value": "206"
},
{
"begin": 10775,
"end": 10852,
"name": "JUMPI",
"source": 1
},
{
"begin": 10827,
"end": 10836,
"name": "DUP3",
"source": 1
},
{
"begin": 10822,
"end": 10825,
"name": "DUP8",
"source": 1
},
{
"begin": 10818,
"end": 10837,
"name": "ADD",
"source": 1
},
{
"begin": 10812,
"end": 10838,
"name": "MLOAD",
"source": 1
},
{
"begin": 10803,
"end": 10838,
"name": "SWAP1",
"source": 1
},
{
"begin": 10803,
"end": 10838,
"name": "POP",
"source": 1
},
{
"begin": 10775,
"end": 10852,
"name": "tag",
"source": 1,
"value": "206"
},
{
"begin": 10775,
"end": 10852,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10878,
"end": 10945,
"name": "PUSH [tag]",
"source": 1,
"value": "207"
},
{
"begin": 10938,
"end": 10944,
"name": "DUP6",
"source": 1
},
{
"begin": 10931,
"end": 10936,
"name": "DUP3",
"source": 1
},
{
"begin": 10878,
"end": 10945,
"name": "PUSH [tag]",
"source": 1,
"value": "82"
},
{
"begin": 10878,
"end": 10945,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 10878,
"end": 10945,
"name": "tag",
"source": 1,
"value": "207"
},
{
"begin": 10878,
"end": 10945,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10872,
"end": 10876,
"name": "DUP7",
"source": 1
},
{
"begin": 10865,
"end": 10946,
"name": "SSTORE",
"source": 1
},
{
"begin": 10734,
"end": 10956,
"name": "POP",
"source": 1
},
{
"begin": 10069,
"end": 10956,
"name": "PUSH [tag]",
"source": 1,
"value": "204"
},
{
"begin": 10069,
"end": 10956,
"name": "JUMP",
"source": 1
},
{
"begin": 10099,
"end": 10717,
"name": "tag",
"source": 1,
"value": "205"
},
{
"begin": 10099,
"end": 10717,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10151,
"end": 10155,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 10147,
"end": 10156,
"name": "NOT",
"source": 1
},
{
"begin": 10139,
"end": 10145,
"name": "DUP5",
"source": 1
},
{
"begin": 10135,
"end": 10157,
"name": "AND",
"source": 1
},
{
"begin": 10185,
"end": 10222,
"name": "PUSH [tag]",
"source": 1,
"value": "208"
},
{
"begin": 10217,
"end": 10221,
"name": "DUP7",
"source": 1
},
{
"begin": 10185,
"end": 10222,
"name": "PUSH [tag]",
"source": 1,
"value": "68"
},
{
"begin": 10185,
"end": 10222,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 10185,
"end": 10222,
"name": "tag",
"source": 1,
"value": "208"
},
{
"begin": 10185,
"end": 10222,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10244,
"end": 10245,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 10258,
"end": 10466,
"name": "tag",
"source": 1,
"value": "209"
},
{
"begin": 10258,
"end": 10466,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10272,
"end": 10279,
"name": "DUP3",
"source": 1
},
{
"begin": 10269,
"end": 10270,
"name": "DUP2",
"source": 1
},
{
"begin": 10266,
"end": 10280,
"name": "LT",
"source": 1
},
{
"begin": 10258,
"end": 10466,
"name": "ISZERO",
"source": 1
},
{
"begin": 10258,
"end": 10466,
"name": "PUSH [tag]",
"source": 1,
"value": "211"
},
{
"begin": 10258,
"end": 10466,
"name": "JUMPI",
"source": 1
},
{
"begin": 10351,
"end": 10360,
"name": "DUP5",
"source": 1
},
{
"begin": 10346,
"end": 10349,
"name": "DUP10",
"source": 1
},
{
"begin": 10342,
"end": 10361,
"name": "ADD",
"source": 1
},
{
"begin": 10336,
"end": 10362,
"name": "MLOAD",
"source": 1
},
{
"begin": 10328,
"end": 10334,
"name": "DUP3",
"source": 1
},
{
"begin": 10321,
"end": 10363,
"name": "SSTORE",
"source": 1
},
{
"begin": 10402,
"end": 10403,
"name": "PUSH",
"source": 1,
"value": "1"
},
{
"begin": 10394,
"end": 10400,
"name": "DUP3",
"source": 1
},
{
"begin": 10390,
"end": 10404,
"name": "ADD",
"source": 1
},
{
"begin": 10380,
"end": 10404,
"name": "SWAP2",
"source": 1
},
{
"begin": 10380,
"end": 10404,
"name": "POP",
"source": 1
},
{
"begin": 10449,
"end": 10451,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 10438,
"end": 10447,
"name": "DUP6",
"source": 1
},
{
"begin": 10434,
"end": 10452,
"name": "ADD",
"source": 1
},
{
"begin": 10421,
"end": 10452,
"name": "SWAP5",
"source": 1
},
{
"begin": 10421,
"end": 10452,
"name": "POP",
"source": 1
},
{
"begin": 10295,
"end": 10299,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 10292,
"end": 10293,
"name": "DUP2",
"source": 1
},
{
"begin": 10288,
"end": 10300,
"name": "ADD",
"source": 1
},
{
"begin": 10283,
"end": 10300,
"name": "SWAP1",
"source": 1
},
{
"begin": 10283,
"end": 10300,
"name": "POP",
"source": 1
},
{
"begin": 10258,
"end": 10466,
"name": "PUSH [tag]",
"source": 1,
"value": "209"
},
{
"begin": 10258,
"end": 10466,
"name": "JUMP",
"source": 1
},
{
"begin": 10258,
"end": 10466,
"name": "tag",
"source": 1,
"value": "211"
},
{
"begin": 10258,
"end": 10466,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10494,
"end": 10500,
"name": "DUP7",
"source": 1
},
{
"begin": 10485,
"end": 10492,
"name": "DUP4",
"source": 1
},
{
"begin": 10482,
"end": 10501,
"name": "LT",
"source": 1
},
{
"begin": 10479,
"end": 10658,
"name": "ISZERO",
"source": 1
},
{
"begin": 10479,
"end": 10658,
"name": "PUSH [tag]",
"source": 1,
"value": "212"
},
{
"begin": 10479,
"end": 10658,
"name": "JUMPI",
"source": 1
},
{
"begin": 10552,
"end": 10561,
"name": "DUP5",
"source": 1
},
{
"begin": 10547,
"end": 10550,
"name": "DUP10",
"source": 1
},
{
"begin": 10543,
"end": 10562,
"name": "ADD",
"source": 1
},
{
"begin": 10537,
"end": 10563,
"name": "MLOAD",
"source": 1
},
{
"begin": 10595,
"end": 10643,
"name": "PUSH [tag]",
"source": 1,
"value": "213"
},
{
"begin": 10637,
"end": 10641,
"name": "PUSH",
"source": 1,
"value": "1F"
},
{
"begin": 10629,
"end": 10635,
"name": "DUP10",
"source": 1
},
{
"begin": 10625,
"end": 10642,
"name": "AND",
"source": 1
},
{
"begin": 10614,
"end": 10623,
"name": "DUP3",
"source": 1
},
{
"begin": 10595,
"end": 10643,
"name": "PUSH [tag]",
"source": 1,
"value": "81"
},
{
"begin": 10595,
"end": 10643,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 10595,
"end": 10643,
"name": "tag",
"source": 1,
"value": "213"
},
{
"begin": 10595,
"end": 10643,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10587,
"end": 10593,
"name": "DUP4",
"source": 1
},
{
"begin": 10580,
"end": 10644,
"name": "SSTORE",
"source": 1
},
{
"begin": 10502,
"end": 10658,
"name": "POP",
"source": 1
},
{
"begin": 10479,
"end": 10658,
"name": "tag",
"source": 1,
"value": "212"
},
{
"begin": 10479,
"end": 10658,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10704,
"end": 10705,
"name": "PUSH",
"source": 1,
"value": "1"
},
{
"begin": 10700,
"end": 10701,
"name": "PUSH",
"source": 1,
"value": "2"
},
{
"begin": 10692,
"end": 10698,
"name": "DUP9",
"source": 1
},
{
"begin": 10688,
"end": 10702,
"name": "MUL",
"source": 1
},
{
"begin": 10684,
"end": 10706,
"name": "ADD",
"source": 1
},
{
"begin": 10678,
"end": 10682,
"name": "DUP9",
"source": 1
},
{
"begin": 10671,
"end": 10707,
"name": "SSTORE",
"source": 1
},
{
"begin": 10106,
"end": 10717,
"name": "POP",
"source": 1
},
{
"begin": 10106,
"end": 10717,
"name": "POP",
"source": 1
},
{
"begin": 10106,
"end": 10717,
"name": "POP",
"source": 1
},
{
"begin": 10069,
"end": 10956,
"name": "tag",
"source": 1,
"value": "204"
},
{
"begin": 10069,
"end": 10956,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 10069,
"end": 10956,
"name": "POP",
"source": 1
},
{
"begin": 9659,
"end": 10962,
"name": "POP",
"source": 1
},
{
"begin": 9659,
"end": 10962,
"name": "POP",
"source": 1
},
{
"begin": 9659,
"end": 10962,
"name": "POP",
"source": 1
},
{
"begin": 9567,
"end": 10962,
"name": "POP",
"source": 1
},
{
"begin": 9567,
"end": 10962,
"name": "POP",
"source": 1
},
{
"begin": 9567,
"end": 10962,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 10968,
"end": 11116,
"name": "tag",
"source": 1,
"value": "83"
},
{
"begin": 10968,
"end": 11116,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 11070,
"end": 11081,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 11107,
"end": 11110,
"name": "DUP2",
"source": 1
},
{
"begin": 11092,
"end": 11110,
"name": "SWAP1",
"source": 1
},
{
"begin": 11092,
"end": 11110,
"name": "POP",
"source": 1
},
{
"begin": 10968,
"end": 11116,
"name": "SWAP3",
"source": 1
},
{
"begin": 10968,
"end": 11116,
"name": "SWAP2",
"source": 1
},
{
"begin": 10968,
"end": 11116,
"name": "POP",
"source": 1
},
{
"begin": 10968,
"end": 11116,
"name": "POP",
"source": 1
},
{
"begin": 10968,
"end": 11116,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 11122,
"end": 11512,
"name": "tag",
"source": 1,
"value": "84"
},
{
"begin": 11122,
"end": 11512,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 11228,
"end": 11231,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 11256,
"end": 11295,
"name": "PUSH [tag]",
"source": 1,
"value": "216"
},
{
"begin": 11289,
"end": 11294,
"name": "DUP3",
"source": 1
},
{
"begin": 11256,
"end": 11295,
"name": "PUSH [tag]",
"source": 1,
"value": "53"
},
{
"begin": 11256,
"end": 11295,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 11256,
"end": 11295,
"name": "tag",
"source": 1,
"value": "216"
},
{
"begin": 11256,
"end": 11295,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 11311,
"end": 11400,
"name": "PUSH [tag]",
"source": 1,
"value": "217"
},
{
"begin": 11393,
"end": 11399,
"name": "DUP2",
"source": 1
},
{
"begin": 11388,
"end": 11391,
"name": "DUP6",
"source": 1
},
{
"begin": 11311,
"end": 11400,
"name": "PUSH [tag]",
"source": 1,
"value": "83"
},
{
"begin": 11311,
"end": 11400,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 11311,
"end": 11400,
"name": "tag",
"source": 1,
"value": "217"
},
{
"begin": 11311,
"end": 11400,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 11304,
"end": 11400,
"name": "SWAP4",
"source": 1
},
{
"begin": 11304,
"end": 11400,
"name": "POP",
"source": 1
},
{
"begin": 11409,
"end": 11474,
"name": "PUSH [tag]",
"source": 1,
"value": "218"
},
{
"begin": 11467,
"end": 11473,
"name": "DUP2",
"source": 1
},
{
"begin": 11462,
"end": 11465,
"name": "DUP6",
"source": 1
},
{
"begin": 11455,
"end": 11459,
"name": "PUSH",
"source": 1,
"value": "20"
},
{
"begin": 11448,
"end": 11453,
"name": "DUP7",
"source": 1
},
{
"begin": 11444,
"end": 11460,
"name": "ADD",
"source": 1
},
{
"begin": 11409,
"end": 11474,
"name": "PUSH [tag]",
"source": 1,
"value": "55"
},
{
"begin": 11409,
"end": 11474,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 11409,
"end": 11474,
"name": "tag",
"source": 1,
"value": "218"
},
{
"begin": 11409,
"end": 11474,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 11499,
"end": 11505,
"name": "DUP1",
"source": 1
},
{
"begin": 11494,
"end": 11497,
"name": "DUP5",
"source": 1
},
{
"begin": 11490,
"end": 11506,
"name": "ADD",
"source": 1
},
{
"begin": 11483,
"end": 11506,
"name": "SWAP2",
"source": 1
},
{
"begin": 11483,
"end": 11506,
"name": "POP",
"source": 1
},
{
"begin": 11232,
"end": 11512,
"name": "POP",
"source": 1
},
{
"begin": 11122,
"end": 11512,
"name": "SWAP3",
"source": 1
},
{
"begin": 11122,
"end": 11512,
"name": "SWAP2",
"source": 1
},
{
"begin": 11122,
"end": 11512,
"name": "POP",
"source": 1
},
{
"begin": 11122,
"end": 11512,
"name": "POP",
"source": 1
},
{
"begin": 11122,
"end": 11512,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
},
{
"begin": 11518,
"end": 11793,
"name": "tag",
"source": 1,
"value": "45"
},
{
"begin": 11518,
"end": 11793,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 11650,
"end": 11653,
"name": "PUSH",
"source": 1,
"value": "0"
},
{
"begin": 11672,
"end": 11767,
"name": "PUSH [tag]",
"source": 1,
"value": "220"
},
{
"begin": 11763,
"end": 11766,
"name": "DUP3",
"source": 1
},
{
"begin": 11754,
"end": 11760,
"name": "DUP5",
"source": 1
},
{
"begin": 11672,
"end": 11767,
"name": "PUSH [tag]",
"source": 1,
"value": "84"
},
{
"begin": 11672,
"end": 11767,
"jumpType": "[in]",
"name": "JUMP",
"source": 1
},
{
"begin": 11672,
"end": 11767,
"name": "tag",
"source": 1,
"value": "220"
},
{
"begin": 11672,
"end": 11767,
"name": "JUMPDEST",
"source": 1
},
{
"begin": 11665,
"end": 11767,
"name": "SWAP2",
"source": 1
},
{
"begin": 11665,
"end": 11767,
"name": "POP",
"source": 1
},
{
"begin": 11784,
"end": 11787,
"name": "DUP2",
"source": 1
},
{
"begin": 11777,
"end": 11787,
"name": "SWAP1",
"source": 1
},
{
"begin": 11777,
"end": 11787,
"name": "POP",
"source": 1
},
{
"begin": 11518,
"end": 11793,
"name": "SWAP3",
"source": 1
},
{
"begin": 11518,
"end": 11793,
"name": "SWAP2",
"source": 1
},
{
"begin": 11518,
"end": 11793,
"name": "POP",
"source": 1
},
{
"begin": 11518,
"end": 11793,
"name": "POP",
"source": 1
},
{
"begin": 11518,
"end": 11793,
"jumpType": "[out]",
"name": "JUMP",
"source": 1
}
]
}
},
"sourceList": [
"Solidity Smart Contract Development/SimpleStorage.sol",
"#utility.yul"
]
},
"methodIdentifiers": {
"addPerson(string,uint256)": "6f760f41",
"listOfPeople(uint256)": "2ebce631",
"nameToFavoriteNumber(string)": "8bab8dd5",
"retrieve()": "2e64cec1",
"store(uint256)": "6057361d"
}
},
"metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_favoriteNumber\",\"type\":\"uint256\"}],\"name\":\"addPerson\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"listOfPeople\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"favoriteNumber\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"nameToFavoriteNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"retrieve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_favoriteNumber\",\"type\":\"uint256\"}],\"name\":\"store\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"Solidity Smart Contract Development/SimpleStorage.sol\":\"SimpleStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"Solidity Smart Contract Development/SimpleStorage.sol\":{\"keccak256\":\"0xb74f8ca1148975d6be7dd24d15d554b0ca7885e72b0b8dc801cc912dfc74bbc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://addf7220c9bb24370013ed9609a09ea503597cee14a97b1dc355e2b3c02933ce\",\"dweb:/ipfs/QmNZy1rWU5AM3cao3YJLGowTucU1HVKjDBXK9hDMYC4szk\"]}},\"version\":1}",
"storageLayout": {
"storage": [
{
"astId": 3,
"contract": "Solidity Smart Contract Development/SimpleStorage.sol:SimpleStorage",
"label": "myFavoriteNumber",
"offset": 0,
"slot": "0",
"type": "t_uint256"
},
{
"astId": 12,
"contract": "Solidity Smart Contract Development/SimpleStorage.sol:SimpleStorage",
"label": "listOfPeople",
"offset": 0,
"slot": "1",
"type": "t_array(t_struct(Person)8_storage)dyn_storage"
},
{
"astId": 16,
"contract": "Solidity Smart Contract Development/SimpleStorage.sol:SimpleStorage",
"label": "nameToFavoriteNumber",
"offset": 0,
"slot": "2",
"type": "t_mapping(t_string_memory_ptr,t_uint256)"
}
],
"types": {
"t_array(t_struct(Person)8_storage)dyn_storage": {
"base": "t_struct(Person)8_storage",
"encoding": "dynamic_array",
"label": "struct SimpleStorage.Person[]",
"numberOfBytes": "32"
},
"t_mapping(t_string_memory_ptr,t_uint256)": {
"encoding": "mapping",
"key": "t_string_memory_ptr",
"label": "mapping(string => uint256)",
"numberOfBytes": "32",
"value": "t_uint256"
},
"t_string_memory_ptr": {
"encoding": "bytes",
"label": "string",
"numberOfBytes": "32"
},
"t_string_storage": {
"encoding": "bytes",
"label": "string",
"numberOfBytes": "32"
},
"t_struct(Person)8_storage": {
"encoding": "inplace",
"label": "struct SimpleStorage.Person",
"members": [
{
"astId": 5,
"contract": "Solidity Smart Contract Development/SimpleStorage.sol:SimpleStorage",
"label": "favoriteNumber",
"offset": 0,
"slot": "0",
"type": "t_uint256"
},
{
"astId": 7,
"contract": "Solidity Smart Contract Development/SimpleStorage.sol:SimpleStorage",
"label": "name",
"offset": 0,
"slot": "1",
"type": "t_string_storage"
}
],
"numberOfBytes": "64"
},
"t_uint256": {
"encoding": "inplace",
"label": "uint256",
"numberOfBytes": "32"
}
}
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}
}
},
"sources": {
"Solidity Smart Contract Development/SimpleStorage.sol": {
"ast": {
"absolutePath": "Solidity Smart Contract Development/SimpleStorage.sol",
"exportedSymbols": {
"SimpleStorage": [
58
]
},
"id": 59,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"^",
"0.8",
".19"
],
"nodeType": "PragmaDirective",
"src": "37:24:0"
},
{
"abstract": false,
"baseContracts": [],
"canonicalName": "SimpleStorage",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"id": 58,
"linearizedBaseContracts": [
58
],
"name": "SimpleStorage",
"nameLocation": "140:13:0",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 3,
"mutability": "mutable",
"name": "myFavoriteNumber",
"nameLocation": "169:16:0",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "161:24:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "161:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"canonicalName": "SimpleStorage.Person",
"id": 8,
"members": [
{
"constant": false,
"id": 5,
"mutability": "mutable",
"name": "favoriteNumber",
"nameLocation": "227:14:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "219:22:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 4,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "219:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 7,
"mutability": "mutable",
"name": "name",
"nameLocation": "259:4:0",
"nodeType": "VariableDeclaration",
"scope": 8,
"src": "252:11:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
},
"typeName": {
"id": 6,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "252:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
}
],
"name": "Person",
"nameLocation": "201:6:0",
"nodeType": "StructDefinition",
"scope": 58,
"src": "194:77:0",
"visibility": "public"
},
{
"constant": false,
"functionSelector": "2ebce631",
"id": 12,
"mutability": "mutable",
"name": "listOfPeople",
"nameLocation": "327:12:0",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "311:28:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_Person_$8_storage_$dyn_storage",
"typeString": "struct SimpleStorage.Person[]"
},
"typeName": {
"baseType": {
"id": 10,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 9,
"name": "Person",
"nameLocations": [
"311:6:0"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8,
"src": "311:6:0"
},
"referencedDeclaration": 8,
"src": "311:6:0",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Person_$8_storage_ptr",
"typeString": "struct SimpleStorage.Person"
}
},
"id": 11,
"nodeType": "ArrayTypeName",
"src": "311:8:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_Person_$8_storage_$dyn_storage_ptr",
"typeString": "struct SimpleStorage.Person[]"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "8bab8dd5",
"id": 16,
"mutability": "mutable",
"name": "nameToFavoriteNumber",
"nameLocation": "382:20:0",
"nodeType": "VariableDeclaration",
"scope": 58,
"src": "348:54:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
"typeString": "mapping(string => uint256)"
},
"typeName": {
"id": 15,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 13,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "356:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"nodeType": "Mapping",
"src": "348:26:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
"typeString": "mapping(string => uint256)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 14,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "366:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "public"
},
{
"body": {
"id": 25,
"nodeType": "Block",
"src": "458:53:0",
"statements": [
{
"expression": {
"id": 23,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 21,
"name": "myFavoriteNumber",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3,
"src": "469:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 22,
"name": "_favoriteNumber",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 18,
"src": "488:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "469:34:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 24,
"nodeType": "ExpressionStatement",
"src": "469:34:0"
}
]
},
"functionSelector": "6057361d",
"id": 26,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "store",
"nameLocation": "420:5:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 19,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 18,
"mutability": "mutable",
"name": "_favoriteNumber",
"nameLocation": "434:15:0",
"nodeType": "VariableDeclaration",
"scope": 26,
"src": "426:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 17,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "426:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "425:25:0"
},
"returnParameters": {
"id": 20,
"nodeType": "ParameterList",
"parameters": [],
"src": "458:0:0"
},
"scope": 58,
"src": "411:100:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 33,
"nodeType": "Block",
"src": "569:42:0",
"statements": [
{
"expression": {
"id": 31,
"name": "myFavoriteNumber",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3,
"src": "587:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 30,
"id": 32,
"nodeType": "Return",
"src": "580:23:0"
}
]
},
"functionSelector": "2e64cec1",
"id": 34,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "retrieve",
"nameLocation": "528:8:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 27,
"nodeType": "ParameterList",
"parameters": [],
"src": "536:2:0"
},
"returnParameters": {
"id": 30,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 29,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 34,
"src": "560:7:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 28,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "560:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "559:9:0"
},
"scope": 58,
"src": "519:92:0",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 56,
"nodeType": "Block",
"src": "691:124:0",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"id": 45,
"name": "_favoriteNumber",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 38,
"src": "727:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 46,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 36,
"src": "744:5:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
],
"id": 44,
"name": "Person",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "720:6:0",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_Person_$8_storage_ptr_$",
"typeString": "type(struct SimpleStorage.Person storage pointer)"
}
},
"id": 47,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "720:30:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_Person_$8_memory_ptr",
"typeString": "struct SimpleStorage.Person memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Person_$8_memory_ptr",
"typeString": "struct SimpleStorage.Person memory"
}
],
"expression": {
"id": 41,
"name": "listOfPeople",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12,
"src": "702:12:0",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_struct$_Person_$8_storage_$dyn_storage",
"typeString": "struct SimpleStorage.Person storage ref[] storage ref"
}
},
"id": 43,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "715:4:0",
"memberName": "push",
"nodeType": "MemberAccess",
"src": "702:17:0",
"typeDescriptions": {
"typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_struct$_Person_$8_storage_$dyn_storage_ptr_$_t_struct$_Person_$8_storage_$returns$__$attached_to$_t_array$_t_struct$_Person_$8_storage_$dyn_storage_ptr_$",
"typeString": "function (struct SimpleStorage.Person storage ref[] storage pointer,struct SimpleStorage.Person storage ref)"
}
},
"id": 48,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "702:49:0",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 49,
"nodeType": "ExpressionStatement",
"src": "702:49:0"
},
{
"expression": {
"id": 54,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 50,
"name": "nameToFavoriteNumber",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 16,
"src": "762:20:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_uint256_$",
"typeString": "mapping(string memory => uint256)"
}
},
"id": 52,
"indexExpression": {
"id": 51,
"name": "_name",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 36,
"src": "783:5:0",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string memory"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "762:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 53,
"name": "_favoriteNumber",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 38,
"src": "792:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "762:45:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 55,
"nodeType": "ExpressionStatement",
"src": "762:45:0"
}
]
},
"functionSelector": "6f760f41",
"id": 57,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addPerson",
"nameLocation": "628:9:0",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 39,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 36,
"mutability": "mutable",
"name": "_name",
"nameLocation": "652:5:0",
"nodeType": "VariableDeclaration",
"scope": 57,
"src": "638:19:0",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_string_memory_ptr",
"typeString": "string"
},
"typeName": {
"id": 35,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "638:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 38,
"mutability": "mutable",
"name": "_favoriteNumber",
"nameLocation": "667:15:0",
"nodeType": "VariableDeclaration",
"scope": 57,
"src": "659:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 37,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "659:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "637:46:0"
},
"returnParameters": {
"id": 40,
"nodeType": "ParameterList",
"parameters": [],
"src": "691:0:0"
},
"scope": 58,
"src": "619:196:0",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
}
],
"scope": 59,
"src": "131:687:0",
"usedErrors": []
}
],
"src": "37:783:0"
},
"id": 0
}
}
}
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"goerli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"functionDebugData": {},
"generatedSources": [],
"linkReferences": {},
"object": "608060405234801561001057600080fd5b5061093b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80632e64cec11461005c5780632ebce6311461007a5780636057361d146100ab5780636f760f41146100c75780638bab8dd5146100e3575b600080fd5b610064610113565b60405161007191906102b2565b60405180910390f35b610094600480360381019061008f919061030d565b61011c565b6040516100a29291906103ca565b60405180910390f35b6100c560048036038101906100c0919061030d565b6101d8565b005b6100e160048036038101906100dc919061052f565b6101e2565b005b6100fd60048036038101906100f8919061058b565b61026b565b60405161010a91906102b2565b60405180910390f35b60008054905090565b6001818154811061012c57600080fd5b906000526020600020906002020160009150905080600001549080600101805461015590610603565b80601f016020809104026020016040519081016040528092919081815260200182805461018190610603565b80156101ce5780601f106101a3576101008083540402835291602001916101ce565b820191906000526020600020905b8154815290600101906020018083116101b157829003601f168201915b5050505050905082565b8060008190555050565b6001604051806040016040528083815260200184815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101908161024191906107e0565b5050508060028360405161025591906108ee565b9081526020016040518091039020819055505050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6000819050919050565b6102ac81610299565b82525050565b60006020820190506102c760008301846102a3565b92915050565b6000604051905090565b600080fd5b600080fd5b6102ea81610299565b81146102f557600080fd5b50565b600081359050610307816102e1565b92915050565b600060208284031215610323576103226102d7565b5b6000610331848285016102f8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610374578082015181840152602081019050610359565b60008484015250505050565b6000601f19601f8301169050919050565b600061039c8261033a565b6103a68185610345565b93506103b6818560208601610356565b6103bf81610380565b840191505092915050565b60006040820190506103df60008301856102a3565b81810360208301526103f18184610391565b90509392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61043c82610380565b810181811067ffffffffffffffff8211171561045b5761045a610404565b5b80604052505050565b600061046e6102cd565b905061047a8282610433565b919050565b600067ffffffffffffffff82111561049a57610499610404565b5b6104a382610380565b9050602081019050919050565b82818337600083830152505050565b60006104d26104cd8461047f565b610464565b9050828152602081018484840111156104ee576104ed6103ff565b5b6104f98482856104b0565b509392505050565b600082601f830112610516576105156103fa565b5b81356105268482602086016104bf565b91505092915050565b60008060408385031215610546576105456102d7565b5b600083013567ffffffffffffffff811115610564576105636102dc565b5b61057085828601610501565b9250506020610581858286016102f8565b9150509250929050565b6000602082840312156105a1576105a06102d7565b5b600082013567ffffffffffffffff8111156105bf576105be6102dc565b5b6105cb84828501610501565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061061b57607f821691505b60208210810361062e5761062d6105d4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610659565b6106a08683610659565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106dd6106d86106d384610299565b6106b8565b610299565b9050919050565b6000819050919050565b6106f7836106c2565b61070b610703826106e4565b848454610666565b825550505050565b600090565b610720610713565b61072b8184846106ee565b505050565b5b8181101561074f57610744600082610718565b600181019050610731565b5050565b601f8211156107945761076581610634565b61076e84610649565b8101602085101561077d578190505b61079161078985610649565b830182610730565b50505b505050565b600082821c905092915050565b60006107b760001984600802610799565b1980831691505092915050565b60006107d083836107a6565b9150826002028217905092915050565b6107e98261033a565b67ffffffffffffffff81111561080257610801610404565b5b61080c8254610603565b610817828285610753565b600060209050601f83116001811461084a5760008415610838578287015190505b61084285826107c4565b8655506108aa565b601f19841661085886610634565b60005b828110156108805784890151825560018201915060208501945060208101905061085b565b8683101561089d5784890151610899601f8916826107a6565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60006108c88261033a565b6108d281856108b2565b93506108e2818560208601610356565b80840191505092915050565b60006108fa82846108bd565b91508190509291505056fea264697066735822122063ff1342db2d7d323b2f0015a2fc06956ee07ab1d26738ffdaef477ef0d589e064736f6c63430008130033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93B DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x2EBCE631 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x6F760F41 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x8BAB8DD5 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8F SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP3 SWAP2 SWAP1 PUSH2 0x3CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x1D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDC SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x58B JUMP JUMPDEST PUSH2 0x26B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10A SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x155 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x181 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1CE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP3 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x7E0 JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x8EE JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 ADD DUP1 MLOAD DUP5 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD KECCAK256 DUP2 DUP4 MSTORE DUP1 SWAP6 POP POP POP POP POP POP PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2AC DUP2 PUSH2 0x299 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EA DUP2 PUSH2 0x299 JUMP JUMPDEST DUP2 EQ PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x307 DUP2 PUSH2 0x2E1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x323 JUMPI PUSH2 0x322 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x331 DUP5 DUP3 DUP6 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x359 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x3A6 DUP2 DUP6 PUSH2 0x345 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3BF DUP2 PUSH2 0x380 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3DF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A3 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3F1 DUP2 DUP5 PUSH2 0x391 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x43C DUP3 PUSH2 0x380 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x45B JUMPI PUSH2 0x45A PUSH2 0x404 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46E PUSH2 0x2CD JUMP JUMPDEST SWAP1 POP PUSH2 0x47A DUP3 DUP3 PUSH2 0x433 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x49A JUMPI PUSH2 0x499 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x4A3 DUP3 PUSH2 0x380 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2 PUSH2 0x4CD DUP5 PUSH2 0x47F JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4ED PUSH2 0x3FF JUMP JUMPDEST JUMPDEST PUSH2 0x4F9 DUP5 DUP3 DUP6 PUSH2 0x4B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x516 JUMPI PUSH2 0x515 PUSH2 0x3FA JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x526 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x546 JUMPI PUSH2 0x545 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x564 JUMPI PUSH2 0x563 PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x570 DUP6 DUP3 DUP7 ADD PUSH2 0x501 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x581 DUP6 DUP3 DUP7 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5A1 JUMPI PUSH2 0x5A0 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BE PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x5CB DUP5 DUP3 DUP6 ADD PUSH2 0x501 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x61B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x62E JUMPI PUSH2 0x62D PUSH2 0x5D4 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x696 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x6A0 DUP7 DUP4 PUSH2 0x659 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DD PUSH2 0x6D8 PUSH2 0x6D3 DUP5 PUSH2 0x299 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F7 DUP4 PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0x70B PUSH2 0x703 DUP3 PUSH2 0x6E4 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x666 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x720 PUSH2 0x713 JUMP JUMPDEST PUSH2 0x72B DUP2 DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH2 0x744 PUSH1 0x0 DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x731 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x794 JUMPI PUSH2 0x765 DUP2 PUSH2 0x634 JUMP JUMPDEST PUSH2 0x76E DUP5 PUSH2 0x649 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x77D JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x791 PUSH2 0x789 DUP6 PUSH2 0x649 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x730 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x799 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D0 DUP4 DUP4 PUSH2 0x7A6 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E9 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x802 JUMPI PUSH2 0x801 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x80C DUP3 SLOAD PUSH2 0x603 JUMP JUMPDEST PUSH2 0x817 DUP3 DUP3 DUP6 PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x84A JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x838 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x842 DUP6 DUP3 PUSH2 0x7C4 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x8AA JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x858 DUP7 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x85B JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x89D JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x899 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x7A6 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C8 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x8D2 DUP2 DUP6 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 POP PUSH2 0x8E2 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FA DUP3 DUP5 PUSH2 0x8BD JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xFF1342DB 0x2D PUSH30 0x323B2F0015A2FC06956EE07AB1D26738FFDAEF477EF0D589E064736F6C63 NUMBER STOP ADDMOD SGT STOP CALLER ",
"sourceMap": "131:687:0:-:0;;;;;;;;;;;;;;;;;;;"
},
"deployedBytecode": {
"functionDebugData": {
"@addPerson_57": {
"entryPoint": 482,
"id": 57,
"parameterSlots": 2,
"returnSlots": 0
},
"@listOfPeople_12": {
"entryPoint": 284,
"id": 12,
"parameterSlots": 0,
"returnSlots": 0
},
"@nameToFavoriteNumber_16": {
"entryPoint": 619,
"id": 16,
"parameterSlots": 0,
"returnSlots": 0
},
"@retrieve_34": {
"entryPoint": 275,
"id": 34,
"parameterSlots": 0,
"returnSlots": 1
},
"@store_26": {
"entryPoint": 472,
"id": 26,
"parameterSlots": 1,
"returnSlots": 0
},
"abi_decode_available_length_t_string_memory_ptr": {
"entryPoint": 1215,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"abi_decode_t_string_memory_ptr": {
"entryPoint": 1281,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_t_uint256": {
"entryPoint": 760,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptr": {
"entryPoint": 1419,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_decode_tuple_t_string_memory_ptrt_uint256": {
"entryPoint": 1327,
"id": null,
"parameterSlots": 2,
"returnSlots": 2
},
"abi_decode_tuple_t_uint256": {
"entryPoint": 781,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack": {
"entryPoint": 913,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2237,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_t_uint256_to_t_uint256_fromStack": {
"entryPoint": 675,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
"entryPoint": 2286,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
"entryPoint": 690,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed": {
"entryPoint": 970,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"allocate_memory": {
"entryPoint": 1124,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"allocate_unbounded": {
"entryPoint": 717,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
},
"array_allocation_size_t_string_memory_ptr": {
"entryPoint": 1151,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_dataslot_t_string_storage": {
"entryPoint": 1588,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_length_t_string_memory_ptr": {
"entryPoint": 826,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_fromStack": {
"entryPoint": 837,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": {
"entryPoint": 2226,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"clean_up_bytearray_end_slots_t_string_storage": {
"entryPoint": 1875,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"cleanup_t_uint256": {
"entryPoint": 665,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"clear_storage_range_t_bytes1": {
"entryPoint": 1840,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"convert_t_uint256_to_t_uint256": {
"entryPoint": 1730,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": {
"entryPoint": 2016,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"copy_calldata_to_memory_with_cleanup": {
"entryPoint": 1200,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"copy_memory_to_memory_with_cleanup": {
"entryPoint": 854,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"divide_by_32_ceil": {
"entryPoint": 1609,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_byte_array_length": {
"entryPoint": 1539,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"extract_used_part_and_set_length_of_short_byte_array": {
"entryPoint": 1988,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"finalize_allocation": {
"entryPoint": 1075,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"identity": {
"entryPoint": 1720,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"mask_bytes_dynamic": {
"entryPoint": 1958,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"panic_error_0x22": {
"entryPoint": 1492,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"panic_error_0x41": {
"entryPoint": 1028,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"prepare_store_t_uint256": {
"entryPoint": 1764,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": {
"entryPoint": 1018,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae": {
"entryPoint": 1023,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": {
"entryPoint": 732,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": {
"entryPoint": 727,
"id": null,
"parameterSlots": 0,
"returnSlots": 0
},
"round_up_to_mul_of_32": {
"entryPoint": 896,
"id": null,
"parameterSlots": 1,
"returnSlots": 1
},
"shift_left_dynamic": {
"entryPoint": 1625,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"shift_right_unsigned_dynamic": {
"entryPoint": 1945,
"id": null,
"parameterSlots": 2,
"returnSlots": 1
},
"storage_set_to_zero_t_uint256": {
"entryPoint": 1816,
"id": null,
"parameterSlots": 2,
"returnSlots": 0
},
"update_byte_slice_dynamic32": {
"entryPoint": 1638,
"id": null,
"parameterSlots": 3,
"returnSlots": 1
},
"update_storage_value_t_uint256_to_t_uint256": {
"entryPoint": 1774,
"id": null,
"parameterSlots": 3,
"returnSlots": 0
},
"validator_revert_t_uint256": {
"entryPoint": 737,
"id": null,
"parameterSlots": 1,
"returnSlots": 0
},
"zero_value_for_split_t_uint256": {
"entryPoint": 1811,
"id": null,
"parameterSlots": 0,
"returnSlots": 1
}
},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:11796:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "52:32:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "62:16:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "73:5:1"
},
"variableNames": [
{
"name": "cleaned",
"nodeType": "YulIdentifier",
"src": "62:7:1"
}
]
}
]
},
"name": "cleanup_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "34:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "cleaned",
"nodeType": "YulTypedName",
"src": "44:7:1",
"type": ""
}
],
"src": "7:77:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "155:53:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "172:3:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "195:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "177:17:1"
},
"nodeType": "YulFunctionCall",
"src": "177:24:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "165:6:1"
},
"nodeType": "YulFunctionCall",
"src": "165:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "165:37:1"
}
]
},
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "143:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "150:3:1",
"type": ""
}
],
"src": "90:118:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "312:124:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "322:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "334:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "345:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "330:3:1"
},
"nodeType": "YulFunctionCall",
"src": "330:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "322:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "402:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "415:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "426:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "411:3:1"
},
"nodeType": "YulFunctionCall",
"src": "411:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "358:43:1"
},
"nodeType": "YulFunctionCall",
"src": "358:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "358:71:1"
}
]
},
"name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "284:9:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "296:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "307:4:1",
"type": ""
}
],
"src": "214:222:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "482:35:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "492:19:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "508:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "502:5:1"
},
"nodeType": "YulFunctionCall",
"src": "502:9:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "492:6:1"
}
]
}
]
},
"name": "allocate_unbounded",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "475:6:1",
"type": ""
}
],
"src": "442:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "612:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "629:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "632:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "622:6:1"
},
"nodeType": "YulFunctionCall",
"src": "622:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "622:12:1"
}
]
},
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulFunctionDefinition",
"src": "523:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "735:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "752:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "755:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "745:6:1"
},
"nodeType": "YulFunctionCall",
"src": "745:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "745:12:1"
}
]
},
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulFunctionDefinition",
"src": "646:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "812:79:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "869:16:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "878:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "881:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "871:6:1"
},
"nodeType": "YulFunctionCall",
"src": "871:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "871:12:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "835:5:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "860:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "842:17:1"
},
"nodeType": "YulFunctionCall",
"src": "842:24:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "832:2:1"
},
"nodeType": "YulFunctionCall",
"src": "832:35:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "825:6:1"
},
"nodeType": "YulFunctionCall",
"src": "825:43:1"
},
"nodeType": "YulIf",
"src": "822:63:1"
}
]
},
"name": "validator_revert_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "805:5:1",
"type": ""
}
],
"src": "769:122:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "949:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "959:29:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "981:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "968:12:1"
},
"nodeType": "YulFunctionCall",
"src": "968:20:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "959:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1024:5:1"
}
],
"functionName": {
"name": "validator_revert_t_uint256",
"nodeType": "YulIdentifier",
"src": "997:26:1"
},
"nodeType": "YulFunctionCall",
"src": "997:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "997:33:1"
}
]
},
"name": "abi_decode_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "927:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "935:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "943:5:1",
"type": ""
}
],
"src": "897:139:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1108:263:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "1154:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "1156:77:1"
},
"nodeType": "YulFunctionCall",
"src": "1156:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "1156:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1129:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1138:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "1125:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1125:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1150:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "1121:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1121:32:1"
},
"nodeType": "YulIf",
"src": "1118:119:1"
},
{
"nodeType": "YulBlock",
"src": "1247:117:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1262:15:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1276:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "1266:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "1291:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "1326:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "1337:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1322:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1322:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "1346:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "1301:20:1"
},
"nodeType": "YulFunctionCall",
"src": "1301:53:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "1291:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "1078:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "1089:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "1101:6:1",
"type": ""
}
],
"src": "1042:329:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1436:40:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1447:22:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1463:5:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1457:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1457:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1447:6:1"
}
]
}
]
},
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1419:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1429:6:1",
"type": ""
}
],
"src": "1377:99:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1578:73:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1595:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1600:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1588:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1588:19:1"
},
"nodeType": "YulExpressionStatement",
"src": "1588:19:1"
},
{
"nodeType": "YulAssignment",
"src": "1616:29:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "1635:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1640:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1631:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1631:14:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "1616:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "1550:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1555:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "1566:11:1",
"type": ""
}
],
"src": "1482:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1719:184:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "1729:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "1738:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "1733:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "1798:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1823:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1828:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1819:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1819:11:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "1842:3:1"
},
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1847:1:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1838:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1838:11:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "1832:5:1"
},
"nodeType": "YulFunctionCall",
"src": "1832:18:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1812:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1812:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "1812:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1759:1:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1762:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "1756:2:1"
},
"nodeType": "YulFunctionCall",
"src": "1756:13:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "1770:19:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1772:15:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1781:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1784:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1777:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1777:10:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "1772:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "1752:3:1",
"statements": []
},
"src": "1748:113:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "1881:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "1886:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1877:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1877:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1895:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "1870:6:1"
},
"nodeType": "YulFunctionCall",
"src": "1870:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "1870:27:1"
}
]
},
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "1701:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "1706:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "1711:6:1",
"type": ""
}
],
"src": "1657:246:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "1957:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "1967:38:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "1985:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "1992:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "1981:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1981:14:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2001:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "1997:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1997:7:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "1977:3:1"
},
"nodeType": "YulFunctionCall",
"src": "1977:28:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "1967:6:1"
}
]
}
]
},
"name": "round_up_to_mul_of_32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "1940:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "1950:6:1",
"type": ""
}
],
"src": "1909:102:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2109:285:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "2119:53:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2166:5:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "2133:32:1"
},
"nodeType": "YulFunctionCall",
"src": "2133:39:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "2123:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "2181:78:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2247:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2252:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2188:58:1"
},
"nodeType": "YulFunctionCall",
"src": "2188:71:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2181:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "2307:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2314:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2303:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2303:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2321:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2326:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "2268:34:1"
},
"nodeType": "YulFunctionCall",
"src": "2268:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "2268:65:1"
},
{
"nodeType": "YulAssignment",
"src": "2342:46:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "2353:3:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "2380:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "2358:21:1"
},
"nodeType": "YulFunctionCall",
"src": "2358:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2349:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2349:39:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "2342:3:1"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "2090:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "2097:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "2105:3:1",
"type": ""
}
],
"src": "2017:377:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2546:277:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "2556:26:1",
"value": {
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2568:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2579:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2564:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2564:18:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2556:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "2636:6:1"
},
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2649:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2660:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2645:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2645:17:1"
}
],
"functionName": {
"name": "abi_encode_t_uint256_to_t_uint256_fromStack",
"nodeType": "YulIdentifier",
"src": "2592:43:1"
},
"nodeType": "YulFunctionCall",
"src": "2592:71:1"
},
"nodeType": "YulExpressionStatement",
"src": "2592:71:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2684:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2695:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "2680:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2680:18:1"
},
{
"arguments": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2704:4:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "2710:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "2700:3:1"
},
"nodeType": "YulFunctionCall",
"src": "2700:20:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "2673:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2673:48:1"
},
"nodeType": "YulExpressionStatement",
"src": "2673:48:1"
},
{
"nodeType": "YulAssignment",
"src": "2730:86:1",
"value": {
"arguments": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "2802:6:1"
},
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2811:4:1"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
"nodeType": "YulIdentifier",
"src": "2738:63:1"
},
"nodeType": "YulFunctionCall",
"src": "2738:78:1"
},
"variableNames": [
{
"name": "tail",
"nodeType": "YulIdentifier",
"src": "2730:4:1"
}
]
}
]
},
"name": "abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "2510:9:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "2522:6:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "2530:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "tail",
"nodeType": "YulTypedName",
"src": "2541:4:1",
"type": ""
}
],
"src": "2400:423:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "2918:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2935:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "2938:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "2928:6:1"
},
"nodeType": "YulFunctionCall",
"src": "2928:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "2928:12:1"
}
]
},
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulFunctionDefinition",
"src": "2829:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3041:28:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3058:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3061:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3051:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3051:12:1"
},
"nodeType": "YulExpressionStatement",
"src": "3051:12:1"
}
]
},
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulFunctionDefinition",
"src": "2952:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3103:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3120:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3123:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3113:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3113:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "3113:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3217:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3220:4:1",
"type": "",
"value": "0x41"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3210:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3210:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3210:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3241:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3244:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "3234:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3234:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "3234:15:1"
}
]
},
"name": "panic_error_0x41",
"nodeType": "YulFunctionDefinition",
"src": "3075:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3304:238:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "3314:58:1",
"value": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3336:6:1"
},
{
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3366:4:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3344:21:1"
},
"nodeType": "YulFunctionCall",
"src": "3344:27:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3332:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3332:40:1"
},
"variables": [
{
"name": "newFreePtr",
"nodeType": "YulTypedName",
"src": "3318:10:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "3483:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "3485:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3485:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3485:18:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3426:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3438:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3423:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3423:34:1"
},
{
"arguments": [
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3462:10:1"
},
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3474:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "3459:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3459:22:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "3420:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3420:62:1"
},
"nodeType": "YulIf",
"src": "3417:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3521:2:1",
"type": "",
"value": "64"
},
{
"name": "newFreePtr",
"nodeType": "YulIdentifier",
"src": "3525:10:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "3514:6:1"
},
"nodeType": "YulFunctionCall",
"src": "3514:22:1"
},
"nodeType": "YulExpressionStatement",
"src": "3514:22:1"
}
]
},
"name": "finalize_allocation",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3290:6:1",
"type": ""
},
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3298:4:1",
"type": ""
}
],
"src": "3261:281:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3589:88:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "3599:30:1",
"value": {
"arguments": [],
"functionName": {
"name": "allocate_unbounded",
"nodeType": "YulIdentifier",
"src": "3609:18:1"
},
"nodeType": "YulFunctionCall",
"src": "3609:20:1"
},
"variableNames": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3599:6:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "memPtr",
"nodeType": "YulIdentifier",
"src": "3658:6:1"
},
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3666:4:1"
}
],
"functionName": {
"name": "finalize_allocation",
"nodeType": "YulIdentifier",
"src": "3638:19:1"
},
"nodeType": "YulFunctionCall",
"src": "3638:33:1"
},
"nodeType": "YulExpressionStatement",
"src": "3638:33:1"
}
]
},
"name": "allocate_memory",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3573:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "memPtr",
"nodeType": "YulTypedName",
"src": "3582:6:1",
"type": ""
}
],
"src": "3548:129:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "3750:241:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "3855:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "3857:16:1"
},
"nodeType": "YulFunctionCall",
"src": "3857:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "3857:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3827:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3835:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "3824:2:1"
},
"nodeType": "YulFunctionCall",
"src": "3824:30:1"
},
"nodeType": "YulIf",
"src": "3821:56:1"
},
{
"nodeType": "YulAssignment",
"src": "3887:37:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "3917:6:1"
}
],
"functionName": {
"name": "round_up_to_mul_of_32",
"nodeType": "YulIdentifier",
"src": "3895:21:1"
},
"nodeType": "YulFunctionCall",
"src": "3895:29:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3887:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "3961:23:1",
"value": {
"arguments": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3973:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "3979:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "3969:3:1"
},
"nodeType": "YulFunctionCall",
"src": "3969:15:1"
},
"variableNames": [
{
"name": "size",
"nodeType": "YulIdentifier",
"src": "3961:4:1"
}
]
}
]
},
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "3734:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "size",
"nodeType": "YulTypedName",
"src": "3745:4:1",
"type": ""
}
],
"src": "3683:308:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4061:82:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4084:3:1"
},
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4089:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4094:6:1"
}
],
"functionName": {
"name": "calldatacopy",
"nodeType": "YulIdentifier",
"src": "4071:12:1"
},
"nodeType": "YulFunctionCall",
"src": "4071:30:1"
},
"nodeType": "YulExpressionStatement",
"src": "4071:30:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4121:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4126:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4117:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4117:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4135:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4110:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4110:27:1"
},
"nodeType": "YulExpressionStatement",
"src": "4110:27:1"
}
]
},
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4043:3:1",
"type": ""
},
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4048:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4053:6:1",
"type": ""
}
],
"src": "3997:146:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4233:341:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "4243:75:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4310:6:1"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4268:41:1"
},
"nodeType": "YulFunctionCall",
"src": "4268:49:1"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "4252:15:1"
},
"nodeType": "YulFunctionCall",
"src": "4252:66:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4243:5:1"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4334:5:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4341:6:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "4327:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4327:21:1"
},
"nodeType": "YulExpressionStatement",
"src": "4327:21:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4357:27:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4372:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4379:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4368:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4368:16:1"
},
"variables": [
{
"name": "dst",
"nodeType": "YulTypedName",
"src": "4361:3:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "4422:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae",
"nodeType": "YulIdentifier",
"src": "4424:77:1"
},
"nodeType": "YulFunctionCall",
"src": "4424:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "4424:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4403:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4408:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4399:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4399:16:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4417:3:1"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "4396:2:1"
},
"nodeType": "YulFunctionCall",
"src": "4396:25:1"
},
"nodeType": "YulIf",
"src": "4393:112:1"
},
{
"expression": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "4551:3:1"
},
{
"name": "dst",
"nodeType": "YulIdentifier",
"src": "4556:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4561:6:1"
}
],
"functionName": {
"name": "copy_calldata_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "4514:36:1"
},
"nodeType": "YulFunctionCall",
"src": "4514:54:1"
},
"nodeType": "YulExpressionStatement",
"src": "4514:54:1"
}
]
},
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "src",
"nodeType": "YulTypedName",
"src": "4206:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4211:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4219:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4227:5:1",
"type": ""
}
],
"src": "4149:425:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "4656:278:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "4705:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d",
"nodeType": "YulIdentifier",
"src": "4707:77:1"
},
"nodeType": "YulFunctionCall",
"src": "4707:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "4707:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4684:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4692:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4680:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4680:17:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4699:3:1"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "4676:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4676:27:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "4669:6:1"
},
"nodeType": "YulFunctionCall",
"src": "4669:35:1"
},
"nodeType": "YulIf",
"src": "4666:122:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "4797:34:1",
"value": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4824:6:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "4811:12:1"
},
"nodeType": "YulFunctionCall",
"src": "4811:20:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "4801:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "4840:88:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "4901:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "4909:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "4897:3:1"
},
"nodeType": "YulFunctionCall",
"src": "4897:17:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "4916:6:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "4924:3:1"
}
],
"functionName": {
"name": "abi_decode_available_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "4849:47:1"
},
"nodeType": "YulFunctionCall",
"src": "4849:79:1"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "4840:5:1"
}
]
}
]
},
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "4634:6:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "4642:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "4650:5:1",
"type": ""
}
],
"src": "4594:340:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5033:561:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5079:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5081:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5081:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5081:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5054:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5063:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5050:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5050:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5075:2:1",
"type": "",
"value": "64"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5046:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5046:32:1"
},
"nodeType": "YulIf",
"src": "5043:119:1"
},
{
"nodeType": "YulBlock",
"src": "5172:287:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5187:45:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5218:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5229:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5214:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5214:17:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5201:12:1"
},
"nodeType": "YulFunctionCall",
"src": "5201:31:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5191:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5279:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "5281:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5281:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5281:79:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5251:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5259:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5248:2:1"
},
"nodeType": "YulFunctionCall",
"src": "5248:30:1"
},
"nodeType": "YulIf",
"src": "5245:117:1"
},
{
"nodeType": "YulAssignment",
"src": "5376:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5421:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5432:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5417:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5417:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5441:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "5386:30:1"
},
"nodeType": "YulFunctionCall",
"src": "5386:63:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "5376:6:1"
}
]
}
]
},
{
"nodeType": "YulBlock",
"src": "5469:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5484:16:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "5498:2:1",
"type": "",
"value": "32"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5488:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "5514:63:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5549:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5560:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5545:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5545:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5569:7:1"
}
],
"functionName": {
"name": "abi_decode_t_uint256",
"nodeType": "YulIdentifier",
"src": "5524:20:1"
},
"nodeType": "YulFunctionCall",
"src": "5524:53:1"
},
"variableNames": [
{
"name": "value1",
"nodeType": "YulIdentifier",
"src": "5514:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptrt_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "4995:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5006:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5018:6:1",
"type": ""
},
{
"name": "value1",
"nodeType": "YulTypedName",
"src": "5026:6:1",
"type": ""
}
],
"src": "4940:654:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "5676:433:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "5722:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b",
"nodeType": "YulIdentifier",
"src": "5724:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5724:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5724:79:1"
}
]
},
"condition": {
"arguments": [
{
"arguments": [
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "5697:7:1"
},
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5706:9:1"
}
],
"functionName": {
"name": "sub",
"nodeType": "YulIdentifier",
"src": "5693:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5693:23:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5718:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "slt",
"nodeType": "YulIdentifier",
"src": "5689:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5689:32:1"
},
"nodeType": "YulIf",
"src": "5686:119:1"
},
{
"nodeType": "YulBlock",
"src": "5815:287:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "5830:45:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "5861:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5872:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "5857:3:1"
},
"nodeType": "YulFunctionCall",
"src": "5857:17:1"
}
],
"functionName": {
"name": "calldataload",
"nodeType": "YulIdentifier",
"src": "5844:12:1"
},
"nodeType": "YulFunctionCall",
"src": "5844:31:1"
},
"variables": [
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "5834:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "5922:83:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db",
"nodeType": "YulIdentifier",
"src": "5924:77:1"
},
"nodeType": "YulFunctionCall",
"src": "5924:79:1"
},
"nodeType": "YulExpressionStatement",
"src": "5924:79:1"
}
]
},
"condition": {
"arguments": [
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "5894:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "5902:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "5891:2:1"
},
"nodeType": "YulFunctionCall",
"src": "5891:30:1"
},
"nodeType": "YulIf",
"src": "5888:117:1"
},
{
"nodeType": "YulAssignment",
"src": "6019:73:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "headStart",
"nodeType": "YulIdentifier",
"src": "6064:9:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "6075:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6060:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6060:22:1"
},
{
"name": "dataEnd",
"nodeType": "YulIdentifier",
"src": "6084:7:1"
}
],
"functionName": {
"name": "abi_decode_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "6029:30:1"
},
"nodeType": "YulFunctionCall",
"src": "6029:63:1"
},
"variableNames": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "6019:6:1"
}
]
}
]
}
]
},
"name": "abi_decode_tuple_t_string_memory_ptr",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "headStart",
"nodeType": "YulTypedName",
"src": "5646:9:1",
"type": ""
},
{
"name": "dataEnd",
"nodeType": "YulTypedName",
"src": "5657:7:1",
"type": ""
}
],
"returnVariables": [
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "5669:6:1",
"type": ""
}
],
"src": "5600:509:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6143:152:1",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6160:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6163:77:1",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6153:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6153:88:1"
},
"nodeType": "YulExpressionStatement",
"src": "6153:88:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6257:1:1",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6260:4:1",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6250:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6250:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "6250:15:1"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6281:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6284:4:1",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "6274:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6274:15:1"
},
"nodeType": "YulExpressionStatement",
"src": "6274:15:1"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "6115:180:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6352:269:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6362:22:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6376:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6382:1:1",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "6372:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6372:12:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6362:6:1"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "6393:38:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6423:4:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6429:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6419:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6419:12:1"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "6397:18:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "6470:51:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6484:27:1",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6498:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6506:4:1",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "6494:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6494:17:1"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6484:6:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "6450:18:1"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "6443:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6443:26:1"
},
"nodeType": "YulIf",
"src": "6440:81:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6573:42:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "6587:16:1"
},
"nodeType": "YulFunctionCall",
"src": "6587:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "6587:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "6537:18:1"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "6560:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6568:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "6557:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6557:14:1"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "6534:2:1"
},
"nodeType": "YulFunctionCall",
"src": "6534:38:1"
},
"nodeType": "YulIf",
"src": "6531:84:1"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6336:4:1",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "6345:6:1",
"type": ""
}
],
"src": "6301:320:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6681:87:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6691:11:1",
"value": {
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6699:3:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6691:4:1"
}
]
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6719:1:1",
"type": "",
"value": "0"
},
{
"name": "ptr",
"nodeType": "YulIdentifier",
"src": "6722:3:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6712:6:1"
},
"nodeType": "YulFunctionCall",
"src": "6712:14:1"
},
"nodeType": "YulExpressionStatement",
"src": "6712:14:1"
},
{
"nodeType": "YulAssignment",
"src": "6735:26:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6753:1:1",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6756:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "keccak256",
"nodeType": "YulIdentifier",
"src": "6743:9:1"
},
"nodeType": "YulFunctionCall",
"src": "6743:18:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "6735:4:1"
}
]
}
]
},
"name": "array_dataslot_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "ptr",
"nodeType": "YulTypedName",
"src": "6668:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "6676:4:1",
"type": ""
}
],
"src": "6627:141:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6818:49:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6828:33:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6846:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6853:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6842:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6842:14:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6858:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "6838:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6838:23:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "6828:6:1"
}
]
}
]
},
"name": "divide_by_32_ceil",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6801:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "6811:6:1",
"type": ""
}
],
"src": "6774:93:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "6926:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "6936:37:1",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "6961:4:1"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "6967:5:1"
}
],
"functionName": {
"name": "shl",
"nodeType": "YulIdentifier",
"src": "6957:3:1"
},
"nodeType": "YulFunctionCall",
"src": "6957:16:1"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "6936:8:1"
}
]
}
]
},
"name": "shift_left_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "6901:4:1",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "6907:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "6917:8:1",
"type": ""
}
],
"src": "6873:107:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7062:317:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7072:35:1",
"value": {
"arguments": [
{
"name": "shiftBytes",
"nodeType": "YulIdentifier",
"src": "7093:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7105:1:1",
"type": "",
"value": "8"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "7089:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7089:18:1"
},
"variables": [
{
"name": "shiftBits",
"nodeType": "YulTypedName",
"src": "7076:9:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "7116:109:1",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "7147:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7158:66:1",
"type": "",
"value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "7128:18:1"
},
"nodeType": "YulFunctionCall",
"src": "7128:97:1"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "7120:4:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "7234:51:1",
"value": {
"arguments": [
{
"name": "shiftBits",
"nodeType": "YulIdentifier",
"src": "7265:9:1"
},
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "7276:8:1"
}
],
"functionName": {
"name": "shift_left_dynamic",
"nodeType": "YulIdentifier",
"src": "7246:18:1"
},
"nodeType": "YulFunctionCall",
"src": "7246:39:1"
},
"variableNames": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "7234:8:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7294:30:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7307:5:1"
},
{
"arguments": [
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "7318:4:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "7314:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7314:9:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7303:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7303:21:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7294:5:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "7333:40:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7346:5:1"
},
{
"arguments": [
{
"name": "toInsert",
"nodeType": "YulIdentifier",
"src": "7357:8:1"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "7367:4:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "7353:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7353:19:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "7343:2:1"
},
"nodeType": "YulFunctionCall",
"src": "7343:30:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "7333:6:1"
}
]
}
]
},
"name": "update_byte_slice_dynamic32",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7023:5:1",
"type": ""
},
{
"name": "shiftBytes",
"nodeType": "YulTypedName",
"src": "7030:10:1",
"type": ""
},
{
"name": "toInsert",
"nodeType": "YulTypedName",
"src": "7042:8:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "7055:6:1",
"type": ""
}
],
"src": "6986:393:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7417:28:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7427:12:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "7434:5:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "7427:3:1"
}
]
}
]
},
"name": "identity",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7403:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "7413:3:1",
"type": ""
}
],
"src": "7385:60:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7511:82:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7521:66:1",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "7579:5:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7561:17:1"
},
"nodeType": "YulFunctionCall",
"src": "7561:24:1"
}
],
"functionName": {
"name": "identity",
"nodeType": "YulIdentifier",
"src": "7552:8:1"
},
"nodeType": "YulFunctionCall",
"src": "7552:34:1"
}
],
"functionName": {
"name": "cleanup_t_uint256",
"nodeType": "YulIdentifier",
"src": "7534:17:1"
},
"nodeType": "YulFunctionCall",
"src": "7534:53:1"
},
"variableNames": [
{
"name": "converted",
"nodeType": "YulIdentifier",
"src": "7521:9:1"
}
]
}
]
},
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7491:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "converted",
"nodeType": "YulTypedName",
"src": "7501:9:1",
"type": ""
}
],
"src": "7451:142:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7646:28:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "7656:12:1",
"value": {
"name": "value",
"nodeType": "YulIdentifier",
"src": "7663:5:1"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "7656:3:1"
}
]
}
]
},
"name": "prepare_store_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "7632:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "7642:3:1",
"type": ""
}
],
"src": "7599:75:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "7756:193:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7766:63:1",
"value": {
"arguments": [
{
"name": "value_0",
"nodeType": "YulIdentifier",
"src": "7821:7:1"
}
],
"functionName": {
"name": "convert_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "7790:30:1"
},
"nodeType": "YulFunctionCall",
"src": "7790:39:1"
},
"variables": [
{
"name": "convertedValue_0",
"nodeType": "YulTypedName",
"src": "7770:16:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "7845:4:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "7885:4:1"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "7879:5:1"
},
"nodeType": "YulFunctionCall",
"src": "7879:11:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "7892:6:1"
},
{
"arguments": [
{
"name": "convertedValue_0",
"nodeType": "YulIdentifier",
"src": "7924:16:1"
}
],
"functionName": {
"name": "prepare_store_t_uint256",
"nodeType": "YulIdentifier",
"src": "7900:23:1"
},
"nodeType": "YulFunctionCall",
"src": "7900:41:1"
}
],
"functionName": {
"name": "update_byte_slice_dynamic32",
"nodeType": "YulIdentifier",
"src": "7851:27:1"
},
"nodeType": "YulFunctionCall",
"src": "7851:91:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "7838:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7838:105:1"
},
"nodeType": "YulExpressionStatement",
"src": "7838:105:1"
}
]
},
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "7733:4:1",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "7739:6:1",
"type": ""
},
{
"name": "value_0",
"nodeType": "YulTypedName",
"src": "7747:7:1",
"type": ""
}
],
"src": "7680:269:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8004:24:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8014:8:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "8021:1:1",
"type": "",
"value": "0"
},
"variableNames": [
{
"name": "ret",
"nodeType": "YulIdentifier",
"src": "8014:3:1"
}
]
}
]
},
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulFunctionDefinition",
"returnVariables": [
{
"name": "ret",
"nodeType": "YulTypedName",
"src": "8000:3:1",
"type": ""
}
],
"src": "7955:73:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8087:136:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8097:46:1",
"value": {
"arguments": [],
"functionName": {
"name": "zero_value_for_split_t_uint256",
"nodeType": "YulIdentifier",
"src": "8111:30:1"
},
"nodeType": "YulFunctionCall",
"src": "8111:32:1"
},
"variables": [
{
"name": "zero_0",
"nodeType": "YulTypedName",
"src": "8101:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "8196:4:1"
},
{
"name": "offset",
"nodeType": "YulIdentifier",
"src": "8202:6:1"
},
{
"name": "zero_0",
"nodeType": "YulIdentifier",
"src": "8210:6:1"
}
],
"functionName": {
"name": "update_storage_value_t_uint256_to_t_uint256",
"nodeType": "YulIdentifier",
"src": "8152:43:1"
},
"nodeType": "YulFunctionCall",
"src": "8152:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "8152:65:1"
}
]
},
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "8073:4:1",
"type": ""
},
{
"name": "offset",
"nodeType": "YulTypedName",
"src": "8079:6:1",
"type": ""
}
],
"src": "8034:189:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8279:136:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8346:63:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8390:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8397:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "storage_set_to_zero_t_uint256",
"nodeType": "YulIdentifier",
"src": "8360:29:1"
},
"nodeType": "YulFunctionCall",
"src": "8360:39:1"
},
"nodeType": "YulExpressionStatement",
"src": "8360:39:1"
}
]
},
"condition": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8299:5:1"
},
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "8306:3:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8296:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8296:14:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "8311:26:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8313:22:1",
"value": {
"arguments": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8326:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8333:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8322:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8322:13:1"
},
"variableNames": [
{
"name": "start",
"nodeType": "YulIdentifier",
"src": "8313:5:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "8293:2:1",
"statements": []
},
"src": "8289:120:1"
}
]
},
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "start",
"nodeType": "YulTypedName",
"src": "8267:5:1",
"type": ""
},
{
"name": "end",
"nodeType": "YulTypedName",
"src": "8274:3:1",
"type": ""
}
],
"src": "8229:186:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "8500:464:1",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "8526:431:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "8540:54:1",
"value": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "8588:5:1"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "8556:31:1"
},
"nodeType": "YulFunctionCall",
"src": "8556:38:1"
},
"variables": [
{
"name": "dataArea",
"nodeType": "YulTypedName",
"src": "8544:8:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "8607:63:1",
"value": {
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "8630:8:1"
},
{
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "8658:10:1"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "8640:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8640:29:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8626:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8626:44:1"
},
"variables": [
{
"name": "deleteStart",
"nodeType": "YulTypedName",
"src": "8611:11:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "8827:27:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "8829:23:1",
"value": {
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "8844:8:1"
},
"variableNames": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "8829:11:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "startIndex",
"nodeType": "YulIdentifier",
"src": "8811:10:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8823:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "8808:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8808:18:1"
},
"nodeType": "YulIf",
"src": "8805:49:1"
},
{
"expression": {
"arguments": [
{
"name": "deleteStart",
"nodeType": "YulIdentifier",
"src": "8896:11:1"
},
{
"arguments": [
{
"name": "dataArea",
"nodeType": "YulIdentifier",
"src": "8913:8:1"
},
{
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "8941:3:1"
}
],
"functionName": {
"name": "divide_by_32_ceil",
"nodeType": "YulIdentifier",
"src": "8923:17:1"
},
"nodeType": "YulFunctionCall",
"src": "8923:22:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "8909:3:1"
},
"nodeType": "YulFunctionCall",
"src": "8909:37:1"
}
],
"functionName": {
"name": "clear_storage_range_t_bytes1",
"nodeType": "YulIdentifier",
"src": "8867:28:1"
},
"nodeType": "YulFunctionCall",
"src": "8867:80:1"
},
"nodeType": "YulExpressionStatement",
"src": "8867:80:1"
}
]
},
"condition": {
"arguments": [
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "8517:3:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "8522:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "8514:2:1"
},
"nodeType": "YulFunctionCall",
"src": "8514:11:1"
},
"nodeType": "YulIf",
"src": "8511:446:1"
}
]
},
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "array",
"nodeType": "YulTypedName",
"src": "8476:5:1",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "8483:3:1",
"type": ""
},
{
"name": "startIndex",
"nodeType": "YulTypedName",
"src": "8488:10:1",
"type": ""
}
],
"src": "8421:543:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9033:54:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9043:37:1",
"value": {
"arguments": [
{
"name": "bits",
"nodeType": "YulIdentifier",
"src": "9068:4:1"
},
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "9074:5:1"
}
],
"functionName": {
"name": "shr",
"nodeType": "YulIdentifier",
"src": "9064:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9064:16:1"
},
"variableNames": [
{
"name": "newValue",
"nodeType": "YulIdentifier",
"src": "9043:8:1"
}
]
}
]
},
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "bits",
"nodeType": "YulTypedName",
"src": "9008:4:1",
"type": ""
},
{
"name": "value",
"nodeType": "YulTypedName",
"src": "9014:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "newValue",
"nodeType": "YulTypedName",
"src": "9024:8:1",
"type": ""
}
],
"src": "8970:117:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9144:118:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9154:68:1",
"value": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9203:1:1",
"type": "",
"value": "8"
},
{
"name": "bytes",
"nodeType": "YulIdentifier",
"src": "9206:5:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "9199:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9199:13:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9218:1:1",
"type": "",
"value": "0"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "9214:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9214:6:1"
}
],
"functionName": {
"name": "shift_right_unsigned_dynamic",
"nodeType": "YulIdentifier",
"src": "9170:28:1"
},
"nodeType": "YulFunctionCall",
"src": "9170:51:1"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "9166:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9166:56:1"
},
"variables": [
{
"name": "mask",
"nodeType": "YulTypedName",
"src": "9158:4:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "9231:25:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9245:4:1"
},
{
"name": "mask",
"nodeType": "YulIdentifier",
"src": "9251:4:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "9241:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9241:15:1"
},
"variableNames": [
{
"name": "result",
"nodeType": "YulIdentifier",
"src": "9231:6:1"
}
]
}
]
},
"name": "mask_bytes_dynamic",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "9121:4:1",
"type": ""
},
{
"name": "bytes",
"nodeType": "YulTypedName",
"src": "9127:5:1",
"type": ""
}
],
"returnVariables": [
{
"name": "result",
"nodeType": "YulTypedName",
"src": "9137:6:1",
"type": ""
}
],
"src": "9093:169:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9348:214:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "9481:37:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9508:4:1"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "9514:3:1"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "9489:18:1"
},
"nodeType": "YulFunctionCall",
"src": "9489:29:1"
},
"variableNames": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9481:4:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "9527:29:1",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "9538:4:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9548:1:1",
"type": "",
"value": "2"
},
{
"name": "len",
"nodeType": "YulIdentifier",
"src": "9551:3:1"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "9544:3:1"
},
"nodeType": "YulFunctionCall",
"src": "9544:11:1"
}
],
"functionName": {
"name": "or",
"nodeType": "YulIdentifier",
"src": "9535:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9535:21:1"
},
"variableNames": [
{
"name": "used",
"nodeType": "YulIdentifier",
"src": "9527:4:1"
}
]
}
]
},
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "9329:4:1",
"type": ""
},
{
"name": "len",
"nodeType": "YulTypedName",
"src": "9335:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "used",
"nodeType": "YulTypedName",
"src": "9343:4:1",
"type": ""
}
],
"src": "9267:295:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "9659:1303:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "9670:51:1",
"value": {
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "9717:3:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "9684:32:1"
},
"nodeType": "YulFunctionCall",
"src": "9684:37:1"
},
"variables": [
{
"name": "newLen",
"nodeType": "YulTypedName",
"src": "9674:6:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "9806:22:1",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x41",
"nodeType": "YulIdentifier",
"src": "9808:16:1"
},
"nodeType": "YulFunctionCall",
"src": "9808:18:1"
},
"nodeType": "YulExpressionStatement",
"src": "9808:18:1"
}
]
},
"condition": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "9778:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "9786:18:1",
"type": "",
"value": "0xffffffffffffffff"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "9775:2:1"
},
"nodeType": "YulFunctionCall",
"src": "9775:30:1"
},
"nodeType": "YulIf",
"src": "9772:56:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "9838:52:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "9884:4:1"
}
],
"functionName": {
"name": "sload",
"nodeType": "YulIdentifier",
"src": "9878:5:1"
},
"nodeType": "YulFunctionCall",
"src": "9878:11:1"
}
],
"functionName": {
"name": "extract_byte_array_length",
"nodeType": "YulIdentifier",
"src": "9852:25:1"
},
"nodeType": "YulFunctionCall",
"src": "9852:38:1"
},
"variables": [
{
"name": "oldLen",
"nodeType": "YulTypedName",
"src": "9842:6:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "9983:4:1"
},
{
"name": "oldLen",
"nodeType": "YulIdentifier",
"src": "9989:6:1"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "9997:6:1"
}
],
"functionName": {
"name": "clean_up_bytearray_end_slots_t_string_storage",
"nodeType": "YulIdentifier",
"src": "9937:45:1"
},
"nodeType": "YulFunctionCall",
"src": "9937:67:1"
},
"nodeType": "YulExpressionStatement",
"src": "9937:67:1"
},
{
"nodeType": "YulVariableDeclaration",
"src": "10014:18:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10031:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "srcOffset",
"nodeType": "YulTypedName",
"src": "10018:9:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "10042:17:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10055:4:1",
"type": "",
"value": "0x20"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10042:9:1"
}
]
},
{
"cases": [
{
"body": {
"nodeType": "YulBlock",
"src": "10106:611:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10120:37:1",
"value": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10139:6:1"
},
{
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10151:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "not",
"nodeType": "YulIdentifier",
"src": "10147:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10147:9:1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10135:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10135:22:1"
},
"variables": [
{
"name": "loopEnd",
"nodeType": "YulTypedName",
"src": "10124:7:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10171:51:1",
"value": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "10217:4:1"
}
],
"functionName": {
"name": "array_dataslot_t_string_storage",
"nodeType": "YulIdentifier",
"src": "10185:31:1"
},
"nodeType": "YulFunctionCall",
"src": "10185:37:1"
},
"variables": [
{
"name": "dstPtr",
"nodeType": "YulTypedName",
"src": "10175:6:1",
"type": ""
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "10235:10:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10244:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "i",
"nodeType": "YulTypedName",
"src": "10239:1:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10303:163:1",
"statements": [
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10328:6:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "10346:3:1"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10351:9:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10342:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10342:19:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10336:5:1"
},
"nodeType": "YulFunctionCall",
"src": "10336:26:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10321:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10321:42:1"
},
"nodeType": "YulExpressionStatement",
"src": "10321:42:1"
},
{
"nodeType": "YulAssignment",
"src": "10380:24:1",
"value": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10394:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10402:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10390:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10390:14:1"
},
"variableNames": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10380:6:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "10421:31:1",
"value": {
"arguments": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10438:9:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10449:2:1",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10434:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10434:18:1"
},
"variableNames": [
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10421:9:1"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10269:1:1"
},
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "10272:7:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "10266:2:1"
},
"nodeType": "YulFunctionCall",
"src": "10266:14:1"
},
"nodeType": "YulForLoop",
"post": {
"nodeType": "YulBlock",
"src": "10281:21:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10283:17:1",
"value": {
"arguments": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10292:1:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10295:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10288:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10288:12:1"
},
"variableNames": [
{
"name": "i",
"nodeType": "YulIdentifier",
"src": "10283:1:1"
}
]
}
]
},
"pre": {
"nodeType": "YulBlock",
"src": "10262:3:1",
"statements": []
},
"src": "10258:208:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "10502:156:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10520:43:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "10547:3:1"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10552:9:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10543:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10543:19:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10537:5:1"
},
"nodeType": "YulFunctionCall",
"src": "10537:26:1"
},
"variables": [
{
"name": "lastValue",
"nodeType": "YulTypedName",
"src": "10524:9:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "dstPtr",
"nodeType": "YulIdentifier",
"src": "10587:6:1"
},
{
"arguments": [
{
"name": "lastValue",
"nodeType": "YulIdentifier",
"src": "10614:9:1"
},
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10629:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10637:4:1",
"type": "",
"value": "0x1f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "10625:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10625:17:1"
}
],
"functionName": {
"name": "mask_bytes_dynamic",
"nodeType": "YulIdentifier",
"src": "10595:18:1"
},
"nodeType": "YulFunctionCall",
"src": "10595:48:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10580:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10580:64:1"
},
"nodeType": "YulExpressionStatement",
"src": "10580:64:1"
}
]
},
"condition": {
"arguments": [
{
"name": "loopEnd",
"nodeType": "YulIdentifier",
"src": "10485:7:1"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10494:6:1"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "10482:2:1"
},
"nodeType": "YulFunctionCall",
"src": "10482:19:1"
},
"nodeType": "YulIf",
"src": "10479:179:1"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "10678:4:1"
},
{
"arguments": [
{
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10692:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10700:1:1",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "mul",
"nodeType": "YulIdentifier",
"src": "10688:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10688:14:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10704:1:1",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10684:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10684:22:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10671:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10671:36:1"
},
"nodeType": "YulExpressionStatement",
"src": "10671:36:1"
}
]
},
"nodeType": "YulCase",
"src": "10099:618:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10104:1:1",
"type": "",
"value": "1"
}
},
{
"body": {
"nodeType": "YulBlock",
"src": "10734:222:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "10748:14:1",
"value": {
"kind": "number",
"nodeType": "YulLiteral",
"src": "10761:1:1",
"type": "",
"value": "0"
},
"variables": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "10752:5:1",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "10785:67:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "10803:35:1",
"value": {
"arguments": [
{
"arguments": [
{
"name": "src",
"nodeType": "YulIdentifier",
"src": "10822:3:1"
},
{
"name": "srcOffset",
"nodeType": "YulIdentifier",
"src": "10827:9:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "10818:3:1"
},
"nodeType": "YulFunctionCall",
"src": "10818:19:1"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "10812:5:1"
},
"nodeType": "YulFunctionCall",
"src": "10812:26:1"
},
"variableNames": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10803:5:1"
}
]
}
]
},
"condition": {
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10778:6:1"
},
"nodeType": "YulIf",
"src": "10775:77:1"
},
{
"expression": {
"arguments": [
{
"name": "slot",
"nodeType": "YulIdentifier",
"src": "10872:4:1"
},
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "10931:5:1"
},
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10938:6:1"
}
],
"functionName": {
"name": "extract_used_part_and_set_length_of_short_byte_array",
"nodeType": "YulIdentifier",
"src": "10878:52:1"
},
"nodeType": "YulFunctionCall",
"src": "10878:67:1"
}
],
"functionName": {
"name": "sstore",
"nodeType": "YulIdentifier",
"src": "10865:6:1"
},
"nodeType": "YulFunctionCall",
"src": "10865:81:1"
},
"nodeType": "YulExpressionStatement",
"src": "10865:81:1"
}
]
},
"nodeType": "YulCase",
"src": "10726:230:1",
"value": "default"
}
],
"expression": {
"arguments": [
{
"name": "newLen",
"nodeType": "YulIdentifier",
"src": "10079:6:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "10087:2:1",
"type": "",
"value": "31"
}
],
"functionName": {
"name": "gt",
"nodeType": "YulIdentifier",
"src": "10076:2:1"
},
"nodeType": "YulFunctionCall",
"src": "10076:14:1"
},
"nodeType": "YulSwitch",
"src": "10069:887:1"
}
]
},
"name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "slot",
"nodeType": "YulTypedName",
"src": "9648:4:1",
"type": ""
},
{
"name": "src",
"nodeType": "YulTypedName",
"src": "9654:3:1",
"type": ""
}
],
"src": "9567:1395:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11082:34:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11092:18:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11107:3:1"
},
"variableNames": [
{
"name": "updated_pos",
"nodeType": "YulIdentifier",
"src": "11092:11:1"
}
]
}
]
},
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11054:3:1",
"type": ""
},
{
"name": "length",
"nodeType": "YulTypedName",
"src": "11059:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "updated_pos",
"nodeType": "YulTypedName",
"src": "11070:11:1",
"type": ""
}
],
"src": "10968:148:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11232:280:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "11242:53:1",
"value": {
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11289:5:1"
}
],
"functionName": {
"name": "array_length_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "11256:32:1"
},
"nodeType": "YulFunctionCall",
"src": "11256:39:1"
},
"variables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "11246:6:1",
"type": ""
}
]
},
{
"nodeType": "YulAssignment",
"src": "11304:96:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11388:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11393:6:1"
}
],
"functionName": {
"name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11311:76:1"
},
"nodeType": "YulFunctionCall",
"src": "11311:89:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11304:3:1"
}
]
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "value",
"nodeType": "YulIdentifier",
"src": "11448:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "11455:4:1",
"type": "",
"value": "0x20"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11444:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11444:16:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11462:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11467:6:1"
}
],
"functionName": {
"name": "copy_memory_to_memory_with_cleanup",
"nodeType": "YulIdentifier",
"src": "11409:34:1"
},
"nodeType": "YulFunctionCall",
"src": "11409:65:1"
},
"nodeType": "YulExpressionStatement",
"src": "11409:65:1"
},
{
"nodeType": "YulAssignment",
"src": "11483:23:1",
"value": {
"arguments": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11494:3:1"
},
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "11499:6:1"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "11490:3:1"
},
"nodeType": "YulFunctionCall",
"src": "11490:16:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11483:3:1"
}
]
}
]
},
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "value",
"nodeType": "YulTypedName",
"src": "11213:5:1",
"type": ""
},
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11220:3:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11228:3:1",
"type": ""
}
],
"src": "11122:390:1"
},
{
"body": {
"nodeType": "YulBlock",
"src": "11654:139:1",
"statements": [
{
"nodeType": "YulAssignment",
"src": "11665:102:1",
"value": {
"arguments": [
{
"name": "value0",
"nodeType": "YulIdentifier",
"src": "11754:6:1"
},
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11763:3:1"
}
],
"functionName": {
"name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack",
"nodeType": "YulIdentifier",
"src": "11672:81:1"
},
"nodeType": "YulFunctionCall",
"src": "11672:95:1"
},
"variableNames": [
{
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11665:3:1"
}
]
},
{
"nodeType": "YulAssignment",
"src": "11777:10:1",
"value": {
"name": "pos",
"nodeType": "YulIdentifier",
"src": "11784:3:1"
},
"variableNames": [
{
"name": "end",
"nodeType": "YulIdentifier",
"src": "11777:3:1"
}
]
}
]
},
"name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "pos",
"nodeType": "YulTypedName",
"src": "11633:3:1",
"type": ""
},
{
"name": "value0",
"nodeType": "YulTypedName",
"src": "11639:6:1",
"type": ""
}
],
"returnVariables": [
{
"name": "end",
"nodeType": "YulTypedName",
"src": "11650:3:1",
"type": ""
}
],
"src": "11518:275:1"
}
]
},
"contents": "{\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function copy_memory_to_memory_with_cleanup(src, dst, length) {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n\n function round_up_to_mul_of_32(value) -> result {\n result := and(add(value, 31), not(31))\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, round_up_to_mul_of_32(length))\n }\n\n function abi_encode_tuple_t_uint256_t_string_memory_ptr__to_t_uint256_t_string_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n mstore(add(headStart, 32), sub(tail, headStart))\n tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value1, tail)\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() {\n revert(0, 0)\n }\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function finalize_allocation(memPtr, size) {\n let newFreePtr := add(memPtr, round_up_to_mul_of_32(size))\n // protect against overflow\n if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n\n function allocate_memory(size) -> memPtr {\n memPtr := allocate_unbounded()\n finalize_allocation(memPtr, size)\n }\n\n function array_allocation_size_t_string_memory_ptr(length) -> size {\n // Make sure we can allocate memory without overflow\n if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n\n size := round_up_to_mul_of_32(length)\n\n // add length slot\n size := add(size, 0x20)\n\n }\n\n function copy_calldata_to_memory_with_cleanup(src, dst, length) {\n calldatacopy(dst, src, length)\n mstore(add(dst, length), 0)\n }\n\n function abi_decode_available_length_t_string_memory_ptr(src, length, end) -> array {\n array := allocate_memory(array_allocation_size_t_string_memory_ptr(length))\n mstore(array, length)\n let dst := add(array, 0x20)\n if gt(add(src, length), end) { revert_error_987264b3b1d58a9c7f8255e93e81c77d86d6299019c33110a076957a3e06e2ae() }\n copy_calldata_to_memory_with_cleanup(src, dst, length)\n }\n\n // string\n function abi_decode_t_string_memory_ptr(offset, end) -> array {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n let length := calldataload(offset)\n array := abi_decode_available_length_t_string_memory_ptr(add(offset, 0x20), length, end)\n }\n\n function abi_decode_tuple_t_string_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := calldataload(add(headStart, 0))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value0 := abi_decode_t_string_memory_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n let length := array_length_t_string_memory_ptr(value)\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), pos, length)\n end := add(pos, length)\n }\n\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos , value0) -> end {\n\n pos := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_nonPadded_inplace_fromStack(value0, pos)\n\n end := pos\n }\n\n}\n",
"id": 1,
"language": "Yul",
"name": "#utility.yul"
}
],
"immutableReferences": {},
"linkReferences": {},
"object": "608060405234801561001057600080fd5b50600436106100575760003560e01c80632e64cec11461005c5780632ebce6311461007a5780636057361d146100ab5780636f760f41146100c75780638bab8dd5146100e3575b600080fd5b610064610113565b60405161007191906102b2565b60405180910390f35b610094600480360381019061008f919061030d565b61011c565b6040516100a29291906103ca565b60405180910390f35b6100c560048036038101906100c0919061030d565b6101d8565b005b6100e160048036038101906100dc919061052f565b6101e2565b005b6100fd60048036038101906100f8919061058b565b61026b565b60405161010a91906102b2565b60405180910390f35b60008054905090565b6001818154811061012c57600080fd5b906000526020600020906002020160009150905080600001549080600101805461015590610603565b80601f016020809104026020016040519081016040528092919081815260200182805461018190610603565b80156101ce5780601f106101a3576101008083540402835291602001916101ce565b820191906000526020600020905b8154815290600101906020018083116101b157829003601f168201915b5050505050905082565b8060008190555050565b6001604051806040016040528083815260200184815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000155602082015181600101908161024191906107e0565b5050508060028360405161025591906108ee565b9081526020016040518091039020819055505050565b6002818051602081018201805184825260208301602085012081835280955050505050506000915090505481565b6000819050919050565b6102ac81610299565b82525050565b60006020820190506102c760008301846102a3565b92915050565b6000604051905090565b600080fd5b600080fd5b6102ea81610299565b81146102f557600080fd5b50565b600081359050610307816102e1565b92915050565b600060208284031215610323576103226102d7565b5b6000610331848285016102f8565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610374578082015181840152602081019050610359565b60008484015250505050565b6000601f19601f8301169050919050565b600061039c8261033a565b6103a68185610345565b93506103b6818560208601610356565b6103bf81610380565b840191505092915050565b60006040820190506103df60008301856102a3565b81810360208301526103f18184610391565b90509392505050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61043c82610380565b810181811067ffffffffffffffff8211171561045b5761045a610404565b5b80604052505050565b600061046e6102cd565b905061047a8282610433565b919050565b600067ffffffffffffffff82111561049a57610499610404565b5b6104a382610380565b9050602081019050919050565b82818337600083830152505050565b60006104d26104cd8461047f565b610464565b9050828152602081018484840111156104ee576104ed6103ff565b5b6104f98482856104b0565b509392505050565b600082601f830112610516576105156103fa565b5b81356105268482602086016104bf565b91505092915050565b60008060408385031215610546576105456102d7565b5b600083013567ffffffffffffffff811115610564576105636102dc565b5b61057085828601610501565b9250506020610581858286016102f8565b9150509250929050565b6000602082840312156105a1576105a06102d7565b5b600082013567ffffffffffffffff8111156105bf576105be6102dc565b5b6105cb84828501610501565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061061b57607f821691505b60208210810361062e5761062d6105d4565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026106967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610659565b6106a08683610659565b95508019841693508086168417925050509392505050565b6000819050919050565b60006106dd6106d86106d384610299565b6106b8565b610299565b9050919050565b6000819050919050565b6106f7836106c2565b61070b610703826106e4565b848454610666565b825550505050565b600090565b610720610713565b61072b8184846106ee565b505050565b5b8181101561074f57610744600082610718565b600181019050610731565b5050565b601f8211156107945761076581610634565b61076e84610649565b8101602085101561077d578190505b61079161078985610649565b830182610730565b50505b505050565b600082821c905092915050565b60006107b760001984600802610799565b1980831691505092915050565b60006107d083836107a6565b9150826002028217905092915050565b6107e98261033a565b67ffffffffffffffff81111561080257610801610404565b5b61080c8254610603565b610817828285610753565b600060209050601f83116001811461084a5760008415610838578287015190505b61084285826107c4565b8655506108aa565b601f19841661085886610634565b60005b828110156108805784890151825560018201915060208501945060208101905061085b565b8683101561089d5784890151610899601f8916826107a6565b8355505b6001600288020188555050505b505050505050565b600081905092915050565b60006108c88261033a565b6108d281856108b2565b93506108e2818560208601610356565b80840191505092915050565b60006108fa82846108bd565b91508190509291505056fea264697066735822122063ff1342db2d7d323b2f0015a2fc06956ee07ab1d26738ffdaef477ef0d589e064736f6c63430008130033",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x57 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x2E64CEC1 EQ PUSH2 0x5C JUMPI DUP1 PUSH4 0x2EBCE631 EQ PUSH2 0x7A JUMPI DUP1 PUSH4 0x6057361D EQ PUSH2 0xAB JUMPI DUP1 PUSH4 0x6F760F41 EQ PUSH2 0xC7 JUMPI DUP1 PUSH4 0x8BAB8DD5 EQ PUSH2 0xE3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x113 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x71 SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x94 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x8F SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x11C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xA2 SWAP3 SWAP2 SWAP1 PUSH2 0x3CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xC5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xC0 SWAP2 SWAP1 PUSH2 0x30D JUMP JUMPDEST PUSH2 0x1D8 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xDC SWAP2 SWAP1 PUSH2 0x52F JUMP JUMPDEST PUSH2 0x1E2 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x58B JUMP JUMPDEST PUSH2 0x26B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10A SWAP2 SWAP1 PUSH2 0x2B2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x12C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP2 POP SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD SWAP1 DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x155 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x181 SWAP1 PUSH2 0x603 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1CE JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1A3 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1CE JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1B1 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP3 JUMP JUMPDEST DUP1 PUSH1 0x0 DUP2 SWAP1 SSTORE POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP PUSH1 0x1 SWAP1 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x241 SWAP2 SWAP1 PUSH2 0x7E0 JUMP JUMPDEST POP POP POP DUP1 PUSH1 0x2 DUP4 PUSH1 0x40 MLOAD PUSH2 0x255 SWAP2 SWAP1 PUSH2 0x8EE JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP2 DUP1 MLOAD PUSH1 0x20 DUP2 ADD DUP3 ADD DUP1 MLOAD DUP5 DUP3 MSTORE PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP6 ADD KECCAK256 DUP2 DUP4 MSTORE DUP1 SWAP6 POP POP POP POP POP POP PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2AC DUP2 PUSH2 0x299 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x2C7 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x2A3 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2EA DUP2 PUSH2 0x299 JUMP JUMPDEST DUP2 EQ PUSH2 0x2F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x307 DUP2 PUSH2 0x2E1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x323 JUMPI PUSH2 0x322 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x331 DUP5 DUP3 DUP6 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374 JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x359 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP5 ADD MSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x39C DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x3A6 DUP2 DUP6 PUSH2 0x345 JUMP JUMPDEST SWAP4 POP PUSH2 0x3B6 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST PUSH2 0x3BF DUP2 PUSH2 0x380 JUMP JUMPDEST DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x3DF PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x2A3 JUMP JUMPDEST DUP2 DUP2 SUB PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x3F1 DUP2 DUP5 PUSH2 0x391 JUMP JUMPDEST SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x43C DUP3 PUSH2 0x380 JUMP JUMPDEST DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x45B JUMPI PUSH2 0x45A PUSH2 0x404 JUMP JUMPDEST JUMPDEST DUP1 PUSH1 0x40 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x46E PUSH2 0x2CD JUMP JUMPDEST SWAP1 POP PUSH2 0x47A DUP3 DUP3 PUSH2 0x433 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x49A JUMPI PUSH2 0x499 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x4A3 DUP3 PUSH2 0x380 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 DUP2 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP2 DUP4 CALLDATACOPY PUSH1 0x0 DUP4 DUP4 ADD MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4D2 PUSH2 0x4CD DUP5 PUSH2 0x47F JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 DUP5 DUP5 ADD GT ISZERO PUSH2 0x4EE JUMPI PUSH2 0x4ED PUSH2 0x3FF JUMP JUMPDEST JUMPDEST PUSH2 0x4F9 DUP5 DUP3 DUP6 PUSH2 0x4B0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x516 JUMPI PUSH2 0x515 PUSH2 0x3FA JUMP JUMPDEST JUMPDEST DUP2 CALLDATALOAD PUSH2 0x526 DUP5 DUP3 PUSH1 0x20 DUP7 ADD PUSH2 0x4BF JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x546 JUMPI PUSH2 0x545 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x564 JUMPI PUSH2 0x563 PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x570 DUP6 DUP3 DUP7 ADD PUSH2 0x501 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x581 DUP6 DUP3 DUP7 ADD PUSH2 0x2F8 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5A1 JUMPI PUSH2 0x5A0 PUSH2 0x2D7 JUMP JUMPDEST JUMPDEST PUSH1 0x0 DUP3 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x5BF JUMPI PUSH2 0x5BE PUSH2 0x2DC JUMP JUMPDEST JUMPDEST PUSH2 0x5CB DUP5 DUP3 DUP6 ADD PUSH2 0x501 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x61B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x62E JUMPI PUSH2 0x62D PUSH2 0x5D4 JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x8 DUP4 MUL PUSH2 0x696 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x659 JUMP JUMPDEST PUSH2 0x6A0 DUP7 DUP4 PUSH2 0x659 JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6DD PUSH2 0x6D8 PUSH2 0x6D3 DUP5 PUSH2 0x299 JUMP JUMPDEST PUSH2 0x6B8 JUMP JUMPDEST PUSH2 0x299 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x6F7 DUP4 PUSH2 0x6C2 JUMP JUMPDEST PUSH2 0x70B PUSH2 0x703 DUP3 PUSH2 0x6E4 JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x666 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x720 PUSH2 0x713 JUMP JUMPDEST PUSH2 0x72B DUP2 DUP5 DUP5 PUSH2 0x6EE JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x74F JUMPI PUSH2 0x744 PUSH1 0x0 DUP3 PUSH2 0x718 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x731 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x794 JUMPI PUSH2 0x765 DUP2 PUSH2 0x634 JUMP JUMPDEST PUSH2 0x76E DUP5 PUSH2 0x649 JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x77D JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x791 PUSH2 0x789 DUP6 PUSH2 0x649 JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x730 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7B7 PUSH1 0x0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x799 JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x7D0 DUP4 DUP4 PUSH2 0x7A6 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x7E9 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x802 JUMPI PUSH2 0x801 PUSH2 0x404 JUMP JUMPDEST JUMPDEST PUSH2 0x80C DUP3 SLOAD PUSH2 0x603 JUMP JUMPDEST PUSH2 0x817 DUP3 DUP3 DUP6 PUSH2 0x753 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x84A JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x838 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x842 DUP6 DUP3 PUSH2 0x7C4 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x8AA JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x858 DUP7 PUSH2 0x634 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x880 JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x85B JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x89D JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x899 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x7A6 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8C8 DUP3 PUSH2 0x33A JUMP JUMPDEST PUSH2 0x8D2 DUP2 DUP6 PUSH2 0x8B2 JUMP JUMPDEST SWAP4 POP PUSH2 0x8E2 DUP2 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x356 JUMP JUMPDEST DUP1 DUP5 ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x8FA DUP3 DUP5 PUSH2 0x8BD JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH4 0xFF1342DB 0x2D PUSH30 0x323B2F0015A2FC06956EE07AB1D26738FFDAEF477EF0D589E064736F6C63 NUMBER STOP ADDMOD SGT STOP CALLER ",
"sourceMap": "131:687:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;519:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;311:28;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;411:100;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;619:196;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;348:54;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;519:92;560:7;587:16;;580:23;;519:92;:::o;311:28::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;411:100::-;488:15;469:16;:34;;;;411:100;:::o;619:196::-;702:12;720:30;;;;;;;;727:15;720:30;;;;744:5;720:30;;;702:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;792:15;762:20;783:5;762:27;;;;;;:::i;:::-;;;;;;;;;;;;;:45;;;;619:196;;:::o;348:54::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:423::-;2541:4;2579:2;2568:9;2564:18;2556:26;;2592:71;2660:1;2649:9;2645:17;2636:6;2592:71;:::i;:::-;2710:9;2704:4;2700:20;2695:2;2684:9;2680:18;2673:48;2738:78;2811:4;2802:6;2738:78;:::i;:::-;2730:86;;2400:423;;;;;:::o;2829:117::-;2938:1;2935;2928:12;2952:117;3061:1;3058;3051:12;3075:180;3123:77;3120:1;3113:88;3220:4;3217:1;3210:15;3244:4;3241:1;3234:15;3261:281;3344:27;3366:4;3344:27;:::i;:::-;3336:6;3332:40;3474:6;3462:10;3459:22;3438:18;3426:10;3423:34;3420:62;3417:88;;;3485:18;;:::i;:::-;3417:88;3525:10;3521:2;3514:22;3304:238;3261:281;;:::o;3548:129::-;3582:6;3609:20;;:::i;:::-;3599:30;;3638:33;3666:4;3658:6;3638:33;:::i;:::-;3548:129;;;:::o;3683:308::-;3745:4;3835:18;3827:6;3824:30;3821:56;;;3857:18;;:::i;:::-;3821:56;3895:29;3917:6;3895:29;:::i;:::-;3887:37;;3979:4;3973;3969:15;3961:23;;3683:308;;;:::o;3997:146::-;4094:6;4089:3;4084;4071:30;4135:1;4126:6;4121:3;4117:16;4110:27;3997:146;;;:::o;4149:425::-;4227:5;4252:66;4268:49;4310:6;4268:49;:::i;:::-;4252:66;:::i;:::-;4243:75;;4341:6;4334:5;4327:21;4379:4;4372:5;4368:16;4417:3;4408:6;4403:3;4399:16;4396:25;4393:112;;;4424:79;;:::i;:::-;4393:112;4514:54;4561:6;4556:3;4551;4514:54;:::i;:::-;4233:341;4149:425;;;;;:::o;4594:340::-;4650:5;4699:3;4692:4;4684:6;4680:17;4676:27;4666:122;;4707:79;;:::i;:::-;4666:122;4824:6;4811:20;4849:79;4924:3;4916:6;4909:4;4901:6;4897:17;4849:79;:::i;:::-;4840:88;;4656:278;4594:340;;;;:::o;4940:654::-;5018:6;5026;5075:2;5063:9;5054:7;5050:23;5046:32;5043:119;;;5081:79;;:::i;:::-;5043:119;5229:1;5218:9;5214:17;5201:31;5259:18;5251:6;5248:30;5245:117;;;5281:79;;:::i;:::-;5245:117;5386:63;5441:7;5432:6;5421:9;5417:22;5386:63;:::i;:::-;5376:73;;5172:287;5498:2;5524:53;5569:7;5560:6;5549:9;5545:22;5524:53;:::i;:::-;5514:63;;5469:118;4940:654;;;;;:::o;5600:509::-;5669:6;5718:2;5706:9;5697:7;5693:23;5689:32;5686:119;;;5724:79;;:::i;:::-;5686:119;5872:1;5861:9;5857:17;5844:31;5902:18;5894:6;5891:30;5888:117;;;5924:79;;:::i;:::-;5888:117;6029:63;6084:7;6075:6;6064:9;6060:22;6029:63;:::i;:::-;6019:73;;5815:287;5600:509;;;;:::o;6115:180::-;6163:77;6160:1;6153:88;6260:4;6257:1;6250:15;6284:4;6281:1;6274:15;6301:320;6345:6;6382:1;6376:4;6372:12;6362:22;;6429:1;6423:4;6419:12;6450:18;6440:81;;6506:4;6498:6;6494:17;6484:27;;6440:81;6568:2;6560:6;6557:14;6537:18;6534:38;6531:84;;6587:18;;:::i;:::-;6531:84;6352:269;6301:320;;;:::o;6627:141::-;6676:4;6699:3;6691:11;;6722:3;6719:1;6712:14;6756:4;6753:1;6743:18;6735:26;;6627:141;;;:::o;6774:93::-;6811:6;6858:2;6853;6846:5;6842:14;6838:23;6828:33;;6774:93;;;:::o;6873:107::-;6917:8;6967:5;6961:4;6957:16;6936:37;;6873:107;;;;:::o;6986:393::-;7055:6;7105:1;7093:10;7089:18;7128:97;7158:66;7147:9;7128:97;:::i;:::-;7246:39;7276:8;7265:9;7246:39;:::i;:::-;7234:51;;7318:4;7314:9;7307:5;7303:21;7294:30;;7367:4;7357:8;7353:19;7346:5;7343:30;7333:40;;7062:317;;6986:393;;;;;:::o;7385:60::-;7413:3;7434:5;7427:12;;7385:60;;;:::o;7451:142::-;7501:9;7534:53;7552:34;7561:24;7579:5;7561:24;:::i;:::-;7552:34;:::i;:::-;7534:53;:::i;:::-;7521:66;;7451:142;;;:::o;7599:75::-;7642:3;7663:5;7656:12;;7599:75;;;:::o;7680:269::-;7790:39;7821:7;7790:39;:::i;:::-;7851:91;7900:41;7924:16;7900:41;:::i;:::-;7892:6;7885:4;7879:11;7851:91;:::i;:::-;7845:4;7838:105;7756:193;7680:269;;;:::o;7955:73::-;8000:3;7955:73;:::o;8034:189::-;8111:32;;:::i;:::-;8152:65;8210:6;8202;8196:4;8152:65;:::i;:::-;8087:136;8034:189;;:::o;8229:186::-;8289:120;8306:3;8299:5;8296:14;8289:120;;;8360:39;8397:1;8390:5;8360:39;:::i;:::-;8333:1;8326:5;8322:13;8313:22;;8289:120;;;8229:186;;:::o;8421:543::-;8522:2;8517:3;8514:11;8511:446;;;8556:38;8588:5;8556:38;:::i;:::-;8640:29;8658:10;8640:29;:::i;:::-;8630:8;8626:44;8823:2;8811:10;8808:18;8805:49;;;8844:8;8829:23;;8805:49;8867:80;8923:22;8941:3;8923:22;:::i;:::-;8913:8;8909:37;8896:11;8867:80;:::i;:::-;8526:431;;8511:446;8421:543;;;:::o;8970:117::-;9024:8;9074:5;9068:4;9064:16;9043:37;;8970:117;;;;:::o;9093:169::-;9137:6;9170:51;9218:1;9214:6;9206:5;9203:1;9199:13;9170:51;:::i;:::-;9166:56;9251:4;9245;9241:15;9231:25;;9144:118;9093:169;;;;:::o;9267:295::-;9343:4;9489:29;9514:3;9508:4;9489:29;:::i;:::-;9481:37;;9551:3;9548:1;9544:11;9538:4;9535:21;9527:29;;9267:295;;;;:::o;9567:1395::-;9684:37;9717:3;9684:37;:::i;:::-;9786:18;9778:6;9775:30;9772:56;;;9808:18;;:::i;:::-;9772:56;9852:38;9884:4;9878:11;9852:38;:::i;:::-;9937:67;9997:6;9989;9983:4;9937:67;:::i;:::-;10031:1;10055:4;10042:17;;10087:2;10079:6;10076:14;10104:1;10099:618;;;;10761:1;10778:6;10775:77;;;10827:9;10822:3;10818:19;10812:26;10803:35;;10775:77;10878:67;10938:6;10931:5;10878:67;:::i;:::-;10872:4;10865:81;10734:222;10069:887;;10099:618;10151:4;10147:9;10139:6;10135:22;10185:37;10217:4;10185:37;:::i;:::-;10244:1;10258:208;10272:7;10269:1;10266:14;10258:208;;;10351:9;10346:3;10342:19;10336:26;10328:6;10321:42;10402:1;10394:6;10390:14;10380:24;;10449:2;10438:9;10434:18;10421:31;;10295:4;10292:1;10288:12;10283:17;;10258:208;;;10494:6;10485:7;10482:19;10479:179;;;10552:9;10547:3;10543:19;10537:26;10595:48;10637:4;10629:6;10625:17;10614:9;10595:48;:::i;:::-;10587:6;10580:64;10502:156;10479:179;10704:1;10700;10692:6;10688:14;10684:22;10678:4;10671:36;10106:611;;;10069:887;;9659:1303;;;9567:1395;;:::o;10968:148::-;11070:11;11107:3;11092:18;;10968:148;;;;:::o;11122:390::-;11228:3;11256:39;11289:5;11256:39;:::i;:::-;11311:89;11393:6;11388:3;11311:89;:::i;:::-;11304:96;;11409:65;11467:6;11462:3;11455:4;11448:5;11444:16;11409:65;:::i;:::-;11499:6;11494:3;11490:16;11483:23;;11232:280;11122:390;;;;:::o;11518:275::-;11650:3;11672:95;11763:3;11754:6;11672:95;:::i;:::-;11665:102;;11784:3;11777:10;;11518:275;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "472600",
"executionCost": "505",
"totalCost": "473105"
},
"external": {
"addPerson(string,uint256)": "infinite",
"listOfPeople(uint256)": "infinite",
"nameToFavoriteNumber(string)": "infinite",
"retrieve()": "2415",
"store(uint256)": "22542"
}
},
"methodIdentifiers": {
"addPerson(string,uint256)": "6f760f41",
"listOfPeople(uint256)": "2ebce631",
"nameToFavoriteNumber(string)": "8bab8dd5",
"retrieve()": "2e64cec1",
"store(uint256)": "6057361d"
}
},
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "uint256",
"name": "_favoriteNumber",
"type": "uint256"
}
],
"name": "addPerson",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "listOfPeople",
"outputs": [
{
"internalType": "uint256",
"name": "favoriteNumber",
"type": "uint256"
},
{
"internalType": "string",
"name": "name",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "nameToFavoriteNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_favoriteNumber",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
]
}
{
"compiler": {
"version": "0.8.19+commit.7dd6d404"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "string",
"name": "_name",
"type": "string"
},
{
"internalType": "uint256",
"name": "_favoriteNumber",
"type": "uint256"
}
],
"name": "addPerson",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "listOfPeople",
"outputs": [
{
"internalType": "uint256",
"name": "favoriteNumber",
"type": "uint256"
},
{
"internalType": "string",
"name": "name",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "nameToFavoriteNumber",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "retrieve",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_favoriteNumber",
"type": "uint256"
}
],
"name": "store",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"compilationTarget": {
"Solidity Smart Contract Development/SimpleStorage.sol": "SimpleStorage"
},
"evmVersion": "paris",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"Solidity Smart Contract Development/SimpleStorage.sol": {
"keccak256": "0xb74f8ca1148975d6be7dd24d15d554b0ca7885e72b0b8dc801cc912dfc74bbc7",
"license": "MIT",
"urls": [
"bzz-raw://addf7220c9bb24370013ed9609a09ea503597cee14a97b1dc355e2b3c02933ce",
"dweb:/ipfs/QmNZy1rWU5AM3cao3YJLGowTucU1HVKjDBXK9hDMYC4szk"
]
}
},
"version": 1
}

Solidity Types

Solidity supports various elementary types that can be combined to create more complex ones. You can read more about them in the Solidity documentation.

🕵️‍♂️ For now, let's focus on the most commonly used

  • Boolean (bool): true or false
  • Unsigned Integer (uint): unsigned whole number (positive)
  • Integer (int): signed whole number (positive and negative)
  • Address (address): 20 bytes value. An example of an address can be found within your MetaMask account.
  • Bytes (bytes): low-level raw byte data

Variables definition

Variables are just placeholders for values. A value can be one data type described in the list above. For instance, we could create a Boolean variable named hasFavoriteNumber, which would represent whether someone has a favourite number or not (constant true or false).

bool hasFavoriteNumber = true; // The variable `hasFavoriteNumber` represents the value `true`

It's possible to specify the number of bits used for uint and int. For example, uint256 specifies that the variable has 256 bits. uint is a shorthand for uint256.

🗒️ NOTE:br It's always advisable to be explicit when specifying the length of the data type.

The semicolon at the end of each line signifies that a statement is completed.

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

contract SimpleStorage {
    // Basic types
    bool hasFavoriteNumber = true;
    uint256 favoriteNumber = 88;
    string favoriteNumberInText = "eighty-eight";
    int256 favoriteInt = -88;
    address myAddress = 0xaB1B7206AA6840C795aB7A6AE8b15417b7E63a8d;
    bytes32 favoriteBytes32 = "cat";
}

Bytes and strings

Bytes are a collection of characters written in hexadecimal representation.

bytes1 minBytes = "I am a fixed size byte array of 1 byte";
bytes32 maxBytes = "I am a fixed size byte array of 32 bytes";
bytes dynamicBytes = "I am a dynamic array, so you can manipulate my size";

Bytes can be allocated in size (up to bytes32). However, bytes and bytes32 represent distinct data types.

Strings are internally represented as dynamic byte arrays (bytes type) and designed specifically for working with text. For this reason, a string can easily be converted into bytes.

Bits and Bytes overview

The contract logic

📋 Let's explore a scenario where there is a task involving the storage of a favourite number. For this purpose, we can start storing the variable favoriteNumber of type uint:

uint256 favoriteNumber;

👀❗IMPORTANT:br Every variable in Solidity comes with a default value. Uninitialized uint256 for example, defaults to 0 (zero) and an uninitialized boolean defaults to false.

Arrays and structs

First we need to replace the uint256 favoriteNumber with a list of uint256 numbers:

uint256[] list_of_favorite_numbers;

The brackets indicate that we have a list of uint256, an array of numbers. If we want to initialize this array we can do so by specifying its content:

uint256[] list_of_favorite_numbers = [0, 78, 90];

🗒️ NOTE:br Arrays are zero-indexed: the first element is at position zero (has index 0), the second element is at position one (has index 1), and so on.

The issue with this data structure is that we cannot link the owner with its favorite value. One solution is to establish a new type using the struct keyword, named Person, which is made of two attributes: a favorite number and a name.

struct Person {
    uint256 my_favorite_number;
    string name;
}

🚧 WARNING:br Rename the variables favorite_number to avoid name clashes

From this struct, we can instantiate a variable my_friend that has the type Person, with a favorite number of seven and the name 'Pat'. We can retrieve these details using the getter function that was generated by the public keyword.

Person public my_friend = Person(7, 'Pat');
/* equals to
Person public my_friend = Person({
    favorite_number:7,
    name:'Pat'});
*/

Array of struct

Creating individual variables that represent several people might become a tedious task, due to the repetitive steps of the process. Instead of manually instantiating a variable for each person, we can combine the two concepts we just learned about: arrays and structs.

Person[] public list_of_people; // this is a dynamic array
Person[3] public another_list_of_three_people; // this is a static array

When using a dynamic array, we can add as many Person objects as we like, as the size of the array it's not static but can grow and shrink. We can access each Person object in our array by its index.

To add people to this list, we can create a function that populates the array:

function add_person(string memory _name, uint256 _favorite_number) public {
    list_of_people.push(Person(_favorite_number, _name));
}

add_person is a function that takes two variables as input - the name and favourite number of the person. It creates first a new Person object and then it pushes it to our list_of_people array.

Errors and Warnings

If we remove a semicolon from the code and then try to compile it, you'll encounter some 🚫 error messages. They will prevent the compiler from converting the code into a machine-readable form.

Restoring the semicolon to its correct position will prevent any errors, enabling us to proceed with deploying the code to the Remix VM. On the other hand, if we delete the SPDX license identifier from the top of our code and recompile, we will receive a yellow box showing a ⚠️ warning.

> Warning: SPDX license identifier not provided in source file

Unlike errors, warnings allow the code to be compiled and deployed but it's wise to take them seriously and aim to remove them entirely. They point out poor or risky practices in your code and sometimes indicate potential bugs.

If it's red, there is a compilation error in the code and it needs to be solved before deployment.

If it's yellow, you might want to double-check and adjust your code.

Leverage your resources In situations when you do not understand the error that's prompted, using some online resources can make the situation clearer:

AI Frens (ChatGPT, Phind, Bard, AI Chrome extensions,..)

Github Discussions

Stack Exchange Ethereum

Peeranha

Phind Let's now attempt to resolve the semicolon error we intentionally created before by using Phind. Phind is an AI-powered search engine for developers. It operates by first conducting a Google search based on your query, and then parsing the results to give you a contextual response.

We can input the compiler error under the drop-down menu, execute the search, and get a comprehensive explanation of why the error happened and how to fix it.

Other resources It is advised to make active use of AI tools, as they can substantially boost your understanding and skills. Later in this course, we will explore how to ask effective questions, utilize AI prompts, structure your inquiries, and improve your search and learning techniques.

You can also take part of online communities like GitHub discussions and Stack Exchange, where you'll find valuable insights, answers to your questions, and support from fellow developers.

💡 TIP One of the most important aspects of being an excellent software engineer or prompt engineer is not just having the information but knowing where to find it.

Memory storage and calldata

how Solidity manages data storage, focusing on the differences between storage, memory, and calldata, and why these concepts are crucial for writing optimized and secure smart contracts.

Data Locations Solidity can store data in six different locations. In this lesson, we will focus on the first three:

Calldata

Memory

Storage

Stack

Code

Logs

Calldata and Memory In Solidity, calldata and memory are temporary storage locations for variables during function execution. calldata is read-only, used for function inputs that can't be modified. In contrast, memory allows for read-write access, letting variables be changed within the function. To modify calldata variables, they must first be loaded into memory.

🚧 WARNING Most variable types default to memory automatically. However, for strings, you must specify either memory or calldata due to the way arrays are handled in memory.

string memory variableName = "someValue";

Calldata Calldata variables are read-only and cheaper than memory. They are mostly used for input parameters.

In the following example, if we try to replace the keyword memory with calldata, we receive an error because calldata variables can't be manipulated.

function addPerson(string calldata _name, uitn256 _favoriteNumber) public {
    _name = "cat";
    listOfPeople.push(Person(_favoriteNumber, _name));
}

Storage Variables stored in storage are persistent on the blockchain, retaining their values between function calls and transactions.

In our contract, the variable myFavoriteNumber is a storage variable. Variables which are declared outside any function are implicitly converted to storage variables.

contract MyContract {
    uint256 favoriteNumber; // this is a storage variable
};

Strings and primitive types If you try to specify the memory keyword for an uint256 variable, you'll encounter this error:

> Data location can only be specified for array, struct, or mapping type

In Solidity, a string is recognized as an array of bytes. On the other hand, primitive types, like uint256 have built-in mechanisms that dictate how and where they are stored, accessed and manipulated.

🚧 WARNING You can't use the storage keyword for variables inside a function. Only memory and calldata are allowed here, as the variable only exists temporarily.

function addPerson(string memory _name, uitn256 _favoriteNumber) public {  // cannot use storage as input parameters
    uint256 test = 0; // variable here can be stored in memory or stack
    listOfPeople.push(Person(_favoriteNumber, _name));
}

Mapping

Avoiding Costly Iterations

If we want to know just one person's favorite number (e.g. Chelsea's) but our contract holds a (long) array of Person, we would need to iterate through the whole list to find the desired value:

list_of_people.add(Person("Pat", 7));
list_of_people.add(Person("John", 8));
list_of_people.add(Person("Mariah", 10));
list_of_people.add(Person("Chelsea", 232));

// Go through all the people to check their favorite number.
// If name is "Chelsea" -> return 232

Iterating through a long list of data is usually expensive and time-consuming, especially when we do not need to access elements by their index.

Mapping

To directly access the desired value without the need to iterate through the whole array, we can use mappings. They are sets of 🔑 (unique) keys linked to a 🍱 value and they are similar to hash tables or dictionaries in other programming languages. In our case, looking up a name (key) will return its correspondent favorite number (value).

A mapping is defined using the mapping keyword, followed by the key type, the value type, the visibility, and the mapping name. In our example, we can construct an object that maps every name to its favorite number.

mapping (string => uint256) public nameToFavoriteNumber;

Previously, we created an addPerson function that was adding a struct Person to an array list_of_people. Let's modify this function and add the struct Person to a mapping instead of an array:

nameToFavoriteNumber[_name] = _favoriteNumber;

👀❗IMPORTANT:br Mappings have a constant time complexity for lookups, meaning that retrieving a value by its key is done in constant time.

🗒️ NOTE:br The default value for all key types is zero. In our case, nameToFavoriteNumber["ET"] equals 0.

Mapping can be a versatile tool to increase efficiency when attempting to find elements within a larger set of data.

Deploying your first contract

we crafted the SimpleStorage contract. It defines a custom type Person, includes an internal variable that can be read and updated, and contains a public array and mapping that can also be modified. In this lesson, we will deploy the contract to a real testnet, which fully simulates a live blockchain environment without using real Ether.

> 🔥 CAUTION
You could be tempted to immediately deploy this contract to the mainnet. As a general rule, I caution against this. Make sure to write tests, carry out audits and ensure the robustness of your contract before deploying it to production. However, for the sake of this demonstration, we're going to deploy this as a dummy contract on a testnet.

Before deploying, be always sure to make a compilation check. This ensures that the contract has no errors or warnings, and is fit for deployment.

Deployment on a testnet We can start the deployment process by going into the deployment tab and switching from the local virtual environment (Remix VM) to the Injected Provider - MetaMask. This action will allow Remix to send requests and interact with your MetaMask account.

You will be then prompted to select an account from your MetaMask wallet. Once you've connected that account to Remix, you should see a confirmation that the account is properly linked and that you are using the Sepolia testnet.

Ensure you have enough Sepolia ETH in your account, which you can obtain from a faucet. Once your balance is sufficient, you can proceed by clicking the "Deploy" button.

After that, MetaMask will ask to sign and send the transaction on the testnet.

Once the transaction is executed, the contract address will be listed under deployed contracts, along with the transaction details. This is how the deployment transaction is displayed on Etherscan.

Contract interaction Since the contract has been deployed, we can now interact with it and update the blockchain. For example, if you want to store a number, you can do so by clicking the button 'store': MetaMask will ask for another transaction confirmation, that will update the favorite number. We can check the details on etherscan at the deployed address:

👀❗IMPORTANT View and pure functions will not send transactions

💡 TIP Celebrate small victories and milestones. These psychological boosts will keep you engaged in the learning process.

It's possible to deploy a contract to different testnets or a real mainnet, just by switching the MetaMask network. Be sure to have enough net-compatible ETHs to deploy your contract.

Conclusion Deploying a Solidity contract to a testnet is a crucial step in the development process, allowing you to test its functionality in a live blockchain environment without the risk of using real Ether. Always remember to perform necessary audits and tests to confirm the contract's safety and correctness before deployment.

Quiz

  1. What programming language is primarily used for EVM-based smart contract development?
  2. What's the keyword pragma used for?
  3. What does compiling a contract mean?
  4. Which of these is NOT a valid Solidity type?
a. float
b. bytes32
c. uint256
d. bool
  1. What is the struct keyword used for?
a. To declare a variable to be in storage.
b. To create code that runs before or after a function.
c. To define an array.
d. To establish a new data type that groups multiple variables.
  1. Which of the following is a location for storage that is NOT temporary?
a. Memory
b. Calldata
c. Storage
d. Public
  1. In Solidity, which of the following function visibility specifiers allows a function to be called internally within the contract and externally by users or other contracts?
a. public
b. internal
c. external
d. private
  1. Why can't the storage location be used for new variables inside a function in Solidity?
a. Because storage variables can only be used for external function parameters.
b. Because storage variables are reserved for constants only.
c. Because storage variables are automatically initialized to zero.
d. Because storage variables are meant to persist between function calls and are only declared at the contract level.
  1. Given the following mapping mapping(address->uint256), what is the default value returned when accessing a key that does not exist?
a. Empty string
b. Zero
c. Null
d. Error
  1. What is the purpose of the 'view' keyword when declaring a function in Solidity?
a. To indicate that the function only reads state data and does not modify it.
b. To restrict function access to the current contract only.
c. To declare a function that can be accessed from both inside and outside the contract.
d. To enable the function to receive Ether along with a call.
  1. Which of the following code snippets is a valid way to declare a public function that accepts a uint256 parameter and sets a state variable to its value?
a. function store public(uint256 _favoriteNumber) { favoriteNumber = _favoriteNumber; }
b. function store(uint256 _favoriteNumber) public { favoriteNumber = _favoriteNumber; }
c. function store(uint256 _favoriteNumber) public { _favoriteNumber = favoriteNumber; }
d. function store(uint256 _favoriteNumber) { favoriteNumber = _favoriteNumber; }
  1. What keyword can be used in a function declaration to specify that the function can only be accessed from within the same contract?
a. public
b. private
c. external
d. internal

🧑‍💻 Test yourself

  1. 📕 What's the difference between a variable and a value?
  2. 📕 Describe the default value of the following types: bool, uint, int256, string, address, bytes, bytes32
  3. 📕 How does uint differ from bytes?
  4. 🧑‍💻 Write a smart contract that contains at least five storage variables, each with a distinct data type.
  5. 📕 Define the difference between a dynamic array and a static array. Make an example of each.
  6. 📕 What is an array and what is a struct?
  7. 🧑‍💻 Create a smart contract that can store and view a list of animals. Add manually three (3) animals and give the possibility to the user to manually add an indefinite number of animals into the smart contract.
  8. 📕 What's the difference between a warning and an error? Make an example of each.
  9. 🧑‍💻 Make a written list (or a bookmark in your browser) with at least 3 useful online resources will help you solve future bugs.
  10. 📕 How does the Solidity compiler handle primitive types and strings in terms of memory management?
  11. 📕 Why can't the storage keyword be used for variables inside a function?
  12. 🧑‍💻 Write a smart contract that uses storage, memory and calldata keywords for its variables.
  13. 📕 In which cases is better to use an array instead of a mapping?
  14. 🧑‍💻 Create a Solidity contract with a mapping named addressToBalance. Implement functions to add and retrieve data from this mapping.
  15. 📕 What steps should you take before deploying a contract to a testnet?
  16. 🧑‍💻 Deploy one simple Solidity contract to the Sepolia testnet. Which important information can you see on etherscan?
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;
// pragma solidity ^0.8.0;
// pragma solidity >=0.8.0 <0.9.0;
contract SimpleStorage {
uint256 myFavoriteNumber;
struct Person {
uint256 favoriteNumber;
string name;
}
// uint256[] public anArray;
Person[] public listOfPeople;
mapping(string => uint256) public nameToFavoriteNumber;
function store(uint256 _favoriteNumber) public {
myFavoriteNumber = _favoriteNumber;
}
function retrieve() public view returns (uint256) {
return myFavoriteNumber;
}
function addPerson(string memory _name, uint256 _favoriteNumber) public {
listOfPeople.push(Person(_favoriteNumber, _name));
nameToFavoriteNumber[_name] = _favoriteNumber;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment