0xbae9…81c7

All memos sent from and to 0xbae9…81c7.

0xbae9802a…81c7·#22,110,906·0x1e573cae…5cd577
Stalked Token IDfullSizeCanvas.cssthestalkerFRESHHELL.js $(,048<@DHLPTX\`d`;RnABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_data:image/svg+xml;base64,{"name":"the stalker #", "description":"a permissionle`ss collaboration program running` on EVM - int.art x XCOPY - Orig`@inal artwork by XCOPY (FRESH HEL``L).","attributes":", "animation_url": "data:application/json;base64,const svgData = 'thestalkerFRESHHELL(svgData)<g id="DUDE"><style type="text/css">@keyframes shakeAnimation {0%,75% {transform: translate(0.3%, 0.3%) scale(1.1, 1.1);}76%,100% {transform: translate(-0.3%, -0.3%) scale(1.1, 1.1);}}#DUDE {animation: shakeAnimation 0.16s infinite;transform-origin: center;}</style><link rel="stylesheet" href="data:text/css;base64,
0xbae9802a…81c7·#19,165,932·0xb5e675bb…418409
fullSizeCanvas.cssthestalkerCrypToadzV2.js"/></foreignObject></g></svg>CrypToadz - SpeedCrypToadz - IntensitybackgroundFilterCrypToadz - Background FilterCrypToadz - DistortCrypToadz - DistortStalked Token IDABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_a"BWa"Aa!HV[[a"Na"rWa"qa!HV[[a"~;thestalkerCrypToadz(config)data:image/svg+xml;base64,{"name":"the stalker #", "description":"a permissionle`ss collaboration program running` on EVM - int.art x Gremplin - O`@riginal artwork by Gremplin (Cry``pToadz).","animation_url":"data:application/json;base64,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml" viewBox="0 0 100 100" x="0" y="0" width="100%" height="100%" style="image-rendering:pixelated;image-rendering:-moz-crisp-edges;-ms-interpolation-mode:nearest-neighbor;"><g id="DUDE"><style type="text/css">@keyframes shakeAnimation{0%,30%{transform: translate(0.3%, 0.5%) scale(1.1, 1.1);}60%,100% {transform: translate(-0.7%, -0.1%) scale(1.1, 1.1);}}#DUDE {animation: shakeAnimation 0.2s infinite;transform-origin: center;}</style><foreignObject x="0" y="0" width="100" height="100"><xhtml:img style="width:100%;height:100%" src="<link rel="stylesheet" href="data:text/css;base64,
thestalkerCrypToadzV2.jsbGV0IHRoZXN0YWxrZXJDcnlwVG9hZHo9ZT0+e2xldCB0PShlLHQpPT5udWxsPT1lfHxudWxsPT1lP3Q6ZSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLG49aS5nZXRDb250ZXh0KCIyZCIpO24uaW1hZ2VTbW9vdGhpbmdFbmFibGVkPSExLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSk7bGV0IG8sZCxyLGEsaD0zNixsPTAsdz0wLHM9ITEsbT0xLGM9W10sZz13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxmPXBhcnNlRmxvYXQodChlLnNwZWVkLDUpKS8xMDArLjAxLHk9cGFyc2VGbG9hdCh0KGUuaW50ZW5zaXR5LDEwMCkpLzUwKy41LE09cGFyc2VGbG9hdCh0KGUuYmFja2dyb3VuZEZpbHRlciwwKSkvMTAscD1wYXJzZUludCh0KGUuZGlzdG9ydCwxKSksdT1bM2UzLDFlNF0seD0oKT0+e2xldCBlPWkud2lkdGgvaDtmb3IobGV0IHQ9MDt0PGg7dCsrKWZvcihsZXQgaT0wO2k8aDtpKyspe2xldCBvPW4uZ2V0SW1hZ2VEYXRhKHQqZSxpKmUsMSwxKS5kYXRhLGQ9e2NvbG9yOiJyZ2IoIitbb1swXSxvWzFdLG9bMl1dLmpvaW4oIiwiKSsiKSIsb3g6dCxveTppLGZyYW1lOjFlMypNYXRoLnJhbmRvbSgpLGZyYW1lU3BlZWQ6TWF0aC5yYW5kb20oKSxyOk1hdGgucmFuZG9tKCl9O2QueD1kLm94LGQueT1kLm95O2xldCByPWQueC0uNSpoLGE9ZC55LS41Kmg7ZC5kPU1hdGguc3FydChyKnIrYSphKSxkLnM9bS9oKmcsYy5wdXNoKGQpfWkuc3R5bGUud2lkdGg9IjEwMCUiLGkuc3R5bGUuaGVpZ2h0PSIxMDAlIixvPWNbMF0sVygpLEUobyksdighMCksSCgpfSx2PWU9PntsZXQgdD13LS41KndpbmRvdy5pbm5lckhlaWdodCxpPWwtLjUqd2luZG93LmlubmVyV2lkdGgsZD1NYXRoLnNxcnQoaSppK3QqdCkvbSp5LHI9TWF0aC5hdGFuMih0LGkpLGE9bS9oKmcscD0uNSood2luZG93LmlubmVyV2lkdGgtbSkqZyx1PS41Kih3aW5kb3cuaW5uZXJIZWlnaHQtbSkqZztmb3IobGV0IHQ9MDt0PGMubGVuZ3RoO3QrKyl7aWYoY1t0XS5jb2xvcj09by5jb2xvciYmY1t0XS5yPk0pY29udGludWU7bGV0IGksbCx3LHk9Y1t0XSx4PWEsdj1kO3M/KGk9LjUqd2luZG93LmlubmVyV2lkdGgqZytNYXRoLmNvcyh5LmZyYW1lKSp5LnIqbSpnLS41KnkucyxsPS41KndpbmRvdy5pbm5lckhlaWdodCpnK01hdGguc2luKHkuZnJhbWUpKnkuciptKmctLjUqeS5zLHc9NSphKnkucik6KGk9eS5veCphK01hdGguY29zKHIpKnkuZCpkKm0vaCtwLGw9eS5veSphK01hdGguc2luKHIpKnkuZCpkKm0vaCt1LHc9MS4xKngrdipnKSxlJiYoeS54PWkseS55PWwseS5zPXcpLHkueCs9KGkteS54KSpmLHkueSs9KGwteS55KSpmLHkucys9KHcteS5zKSpmLHkuZnJhbWUrPXkuZnJhbWVTcGVlZCpmLG4uYmVnaW5QYXRoKCksbi5yZWN0KE1hdGguZmxvb3IoeS54KSxNYXRoLmZsb29yKHkueSksTWF0aC5mbG9vcih5LnMpLE1hdGguZmxvb3IoeS5zKSksbi5maWxsU3R5bGU9eS5jb2xvcixuLmZpbGwoKX19LEU9ZT0+e24uYmVnaW5QYXRoKCksbi5yZWN0KDAsMCxpLndpZHRoLGkuaGVpZ2h0KSxuLmZpbGxTdHlsZT1lLmNvbG9yLG4uZmlsbCgpfSxIPSgpPT57dighMSksZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoSCl9LFc9KCk9PntpLndpZHRoPXdpbmRvdy5pbm5lcldpZHRoKmcsaS5oZWlnaHQ9d2luZG93LmlubmVySGVpZ2h0KmcsbT1NYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aCx3aW5kb3cuaW5uZXJIZWlnaHQpLGw9LjUqd2luZG93LmlubmVyV2lkdGgsdz0uNSp3aW5kb3cuaW5uZXJIZWlnaHQsRShvKSx2KCEwKX07Y29uc3QgYj0oKT0+e3ImJmNsZWFyVGltZW91dChyKSxhJiZjbGVhclRpbWVvdXQoYSkscj1zZXRUaW1lb3V0KCgoKT0+e0YoKX0pLDNlMyl9LEY9KCk9PntpZihzKXJldHVybjtsPU1hdGgucmFuZG9tKCkqd2luZG93LmlubmVyV2lkdGgsdz1NYXRoLnJhbmRvbSgpKndpbmRvdy5pbm5lckhlaWdodDtsZXQgZT1NYXRoLnJhbmRvbSgpKih1WzFdLXVbMF0pK3VbMF07YT1zZXRUaW1lb3V0KCgoKT0+e0YoKX0pLGUpfTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLChlPT57bD1lLmNsaWVudFgsdz1lLmNsaWVudFksYigpfSkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsKCgpPT57cCYmKHM9ITApfSkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLCgoKT0+e3M9ITEsYigpfSkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLFcpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwoZT0+ezY1PT09ZS5rZXlDb2RlJiYoZD9kJiYoY2FuY2VsQW5pbWF0aW9uRnJhbWUoZCksZD12b2lkIDApOkgoKSl9KSksKCgpPT57bGV0IHQ9bmV3IEltYWdlO3Qub25sb2FkPSgpPT57aS53aWR0aD10LndpZHRoLGkuaGVpZ2h0PXQuaGVpZ2h0LGkud2lkdGg+MzYmJihoPXQud2lkdGgvMTApLG4uZHJhd0ltYWdlKHQsMCwwKSx4KCl9LHQuc3JjPWUuZGF0YX0pKCksYigpfTs=
0xbae9802a…81c7·#19,165,710·0x27ee6d51…a407c8
fullSizeCanvas.cssthestalkerCrypToadz.js"/></foreignObject></g></svg>CrypToadz - SpeedCrypToadz - IntensitybackgroundFilterCrypToadz - Background FilterCrypToadz - DistortCrypToadz - DistortStalked Token IDABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_a"BWa"Aa!HV[[a"Na"rWa"qa!HV[[a"~;thestalkerCrypToadz(config)data:image/svg+xml;base64,{"name":"the stalker #", "description":"a permissionle`ss collaboration program running` on EVM - int.art x Gremplin - O`@riginal artwork by Gremplin (Cry``pToadz).","animation_url":"data:application/json;base64,<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xhtml="http://www.w3.org/1999/xhtml" viewBox="0 0 100 100" x="0" y="0" width="100%" height="100%" style="image-rendering:pixelated;image-rendering:-moz-crisp-edges;-ms-interpolation-mode:nearest-neighbor;"><g id="DUDE"><style type="text/css">@keyframes shakeAnimation{0%,30%{transform: translate(0.3%, 0.5%) scale(1.1, 1.1);}60%,100% {transform: translate(-0.7%, -0.1%) scale(1.1, 1.1);}}#DUDE {animation: shakeAnimation 0.2s infinite;transform-origin: center;}</style><foreignObject x="0" y="0" width="100" height="100"><xhtml:img style="width:100%;height:100%" src="<link rel="stylesheet" href="data:text/css;base64,
thestalkerCrypToadz.jsbGV0IHRoZXN0YWxrZXJDcnlwVG9hZHo9ZT0+e2xldCB0PShlLHQpPT5udWxsPT1lfHxudWxsPT1lP3Q6ZSxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLG49aS5nZXRDb250ZXh0KCIyZCIpO24uaW1hZ2VTbW9vdGhpbmdFbmFibGVkPSExLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSk7bGV0IG8sZCxhLHIsaD0zNixsPTAsdz0wLHM9ITEsbT0xLGM9W10sZz13aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyxmPXBhcnNlRmxvYXQodChlLnNwZWVkLDUpKS8xMDArLjAxLHk9cGFyc2VGbG9hdCh0KGUuaW50ZW5zaXR5LDEwMCkpLzUwKy41LE09cGFyc2VGbG9hdCh0KGUuYmFja2dyb3VuZEZpbHRlciwwKSkvMTAscD1wYXJzZUludCh0KGUuZGlzdG9ydCwxKSksdT1bM2UzLDFlNF0seD0oKT0+e2xldCBlPWkud2lkdGgvaDtmb3IobGV0IHQ9MDt0PGg7dCsrKWZvcihsZXQgaT0wO2k8aDtpKyspe2xldCBvPW4uZ2V0SW1hZ2VEYXRhKHQqZSxpKmUsMSwxKS5kYXRhLGQ9e2NvbG9yOiJyZ2IoIitbb1swXSxvWzFdLG9bMl1dLmpvaW4oIiwiKSsiKSIsb3g6dCxveTppLGZyYW1lOjFlMypNYXRoLnJhbmRvbSgpLGZyYW1lU3BlZWQ6TWF0aC5yYW5kb20oKSxyOk1hdGgucmFuZG9tKCl9O2QueD1kLm94LGQueT1kLm95O2xldCBhPWQueC0uNSpoLHI9ZC55LS41Kmg7ZC5kPU1hdGguc3FydChhKmErcipyKSxkLnM9bS9oKmcsYy5wdXNoKGQpfWkuc3R5bGUud2lkdGg9IjEwMCUiLGkuc3R5bGUuaGVpZ2h0PSIxMDAlIixvPWNbMF0sVygpLEUobyksdighMCksSCgpfSx2PWU9PntsZXQgdD13LS41KndpbmRvdy5pbm5lckhlaWdodCxpPWwtLjUqd2luZG93LmlubmVyV2lkdGgsZD1NYXRoLnNxcnQoaSppK3QqdCkvbSp5LGE9TWF0aC5hdGFuMih0LGkpLHI9bS9oKjIscD13aW5kb3cuaW5uZXJXaWR0aC1tLHU9d2luZG93LmlubmVySGVpZ2h0LW07Zm9yKGxldCB0PTA7dDxjLmxlbmd0aDt0Kyspe2lmKGNbdF0uY29sb3I9PW8uY29sb3ImJmNbdF0ucj5NKWNvbnRpbnVlO2xldCBpLGwsdyx5PWNbdF0seD1yLHY9ZDtzPyhpPXdpbmRvdy5pbm5lcldpZHRoK01hdGguY29zKHkuZnJhbWUpKnkuciptKmctLjUqeS5zLGw9d2luZG93LmlubmVySGVpZ2h0K01hdGguc2luKHkuZnJhbWUpKnkuciptKmctLjUqeS5zLHc9NSpyKnkucik6KGk9eS5veCpyK01hdGguY29zKGEpKnkuZCpkKm0vaCtwLGw9eS5veSpyK01hdGguc2luKGEpKnkuZCpkKm0vaCt1LHc9MS4xKngrdipnKSxlJiYoeS54PWkseS55PWwseS5zPXcpLHkueCs9KGkteS54KSpmLHkueSs9KGwteS55KSpmLHkucys9KHcteS5zKSpmLHkuZnJhbWUrPXkuZnJhbWVTcGVlZCpmLG4uYmVnaW5QYXRoKCksbi5yZWN0KE1hdGguZmxvb3IoeS54KSxNYXRoLmZsb29yKHkueSksTWF0aC5mbG9vcih5LnMpLE1hdGguZmxvb3IoeS5zKSksbi5maWxsU3R5bGU9eS5jb2xvcixuLmZpbGwoKX19LEU9ZT0+e24uYmVnaW5QYXRoKCksbi5yZWN0KDAsMCxpLndpZHRoLGkuaGVpZ2h0KSxuLmZpbGxTdHlsZT1lLmNvbG9yLG4uZmlsbCgpfSxIPSgpPT57dighMSksZD1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoSCl9LFc9KCk9PntpLndpZHRoPXdpbmRvdy5pbm5lcldpZHRoKmcsaS5oZWlnaHQ9d2luZG93LmlubmVySGVpZ2h0KmcsbT1NYXRoLm1pbih3aW5kb3cuaW5uZXJXaWR0aCx3aW5kb3cuaW5uZXJIZWlnaHQpLGw9LjUqd2luZG93LmlubmVyV2lkdGgsdz0uNSp3aW5kb3cuaW5uZXJIZWlnaHQsRShvKSx2KCEwKX07Y29uc3QgYj0oKT0+e2EmJmNsZWFyVGltZW91dChhKSxyJiZjbGVhclRpbWVvdXQociksYT1zZXRUaW1lb3V0KCgoKT0+e0YoKX0pLDNlMyl9LEY9KCk9PntsPU1hdGgucmFuZG9tKCkqd2luZG93LmlubmVyV2lkdGgsdz1NYXRoLnJhbmRvbSgpKndpbmRvdy5pbm5lckhlaWdodDtsZXQgZT1NYXRoLnJhbmRvbSgpKih1WzFdLXVbMF0pK3VbMF07cj1zZXRUaW1lb3V0KCgoKT0+e0YoKX0pLGUpfTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigicG9pbnRlcm1vdmUiLChlPT57bD1lLmNsaWVudFgsdz1lLmNsaWVudFksYigpfSkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVyZG93biIsKCgpPT57cCYmKHM9ITApfSkpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb2ludGVydXAiLCgoKT0+e3M9ITF9KSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsVyksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLChlPT57NjU9PT1lLmtleUNvZGUmJihkP2QmJihjYW5jZWxBbmltYXRpb25GcmFtZShkKSxkPXZvaWQgMCk6SCgpKX0pKSwoKCk9PntsZXQgdD1uZXcgSW1hZ2U7dC5vbmxvYWQ9KCk9PntpLndpZHRoPXQud2lkdGgsaS5oZWlnaHQ9dC5oZWlnaHQsaS53aWR0aD4zNiYmKGg9dC53aWR0aC8xMCksbi5kcmF3SW1hZ2UodCwwLDApLHgoKX0sdC5zcmM9ZS5kYXRhfSkoKSxiKCl9Ow==
fullSizeCanvas.cssaHRtbHtoZWlnaHQ6MTAwJX1ib2R5e21pbi1oZWlnaHQ6MTAwJTttYXJnaW46MDtwYWRkaW5nOjB9Y2FudmFze3BhZGRpbmc6MDttYXJnaW46YXV0bztkaXNwbGF5OmJsb2NrO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xlZnQ6MDtyaWdodDowfQ==
0xbae9802a…81c7·#19,151,423·0xab9b83c3…151f31
Stalked Token IDfullSizeCanvas.cssthestalkerFRESHHELL.js $(,048<@DHLPTX\`d`;RnABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_data:image/svg+xml;base64,{"name":"the stalker #", "description":"a permissionle`ss collaboration program running` on EVM - int.art x XCOPY - Orig`@inal artwork by XCOPY (FRESH HEL``L).","attributes":", "animation_url": "data:application/json;base64,const svgData = 'thestalkerFRESHHELL(svgData)<g id="DUDE"><style type="text/css">@keyframes shakeAnimation {0%,75% {transform: translate(0.3%, 0.3%) scale(1.1, 1.1);}76%,100% {transform: translate(-0.3%, -0.3%) scale(1.1, 1.1);}}#DUDE {animation: shakeAnimation 0.16s infinite;transform-origin: center;}</style><link rel="stylesheet" href="data:text/css;base64,
0xbae9802a…81c7·#19,151,422·0x346090c3…95eb10
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_data:image/svg+xml;base64,{"name":"the stalker #", "description":"[no collab fou`data:application/json;base64,3<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" shape-rendering="crispEdges"><rect width="10" height="10" fill="#fff"/><g transform="translate(4.35, 4) scale(0.2,0.2)"><path stroke="#000000" d="M1 0h5M0 1h1M6 1h1M0 2h1M6 2h1M0 3h1M4 3h3M0 4h1M6 4h1M0 5h3M6 5h1M0 6h1M6 6h1M0 7h1M6 7h1M1 8h5" /></g></svg>
0xbae9802a…81c7·#18,843,983·0x5a45b878…48638a
fullSizeCanvas.cssthestalkerFRESHHELL.js $(,048<@DHLPTX\`d`;RnABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_data:image/svg+xml;base64,{"name":"the stalker #", "description":"a permissionle`ss collaboration program running` on EVM - int.art x XCOPY - Orig`@inal artwork by XCOPY (FRESH HEL``L).","animation_url":"data:application/json;base64,const svgData = 'thestalkerFRESHHELL(svgData)a(TWa(Sa&)V[[PV[`<g id="DUDE"><style type="text/css">@keyframes shakeAnimation {0%,75% {transform: translate(0.3%, 0.3%) scale(1.1, 1.1);}76%,100% {transform: translate(-0.3%, -0.3%) scale(1.1, 1.1);}}#DUDE {animation: shakeAnimation 0.16s infinite;transform-origin: center;}</style><link rel="stylesheet" href="data:text/css;base64,
0xbae9802a…81c7·#18,843,982·0x0f543dfb…86d81c
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_data:image/svg+xml;base64,{"name":"the stalker #", "description":"[no collab fou`data:application/json;base64,3<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" shape-rendering="crispEdges"><rect width="10" height="10" fill="#fff"/><g transform="translate(4.35, 4) scale(0.2,0.2)"><path stroke="#000000" d="M1 0h5M0 1h1M6 1h1M0 2h1M6 2h1M0 3h1M4 3h3M0 4h1M6 4h1M0 5h3M6 5h1M0 6h1M6 6h1M0 7h1M6 7h1M1 8h5" /></g></svg>
0xbae9802a…81c7·#18,650,366·0xca1cd5eb…51c8d3
intart_the_metro_v2o0123456789abcdef`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_let theMetroConfig={seed:"};_sb.scripts.theMetro=theMetro(theMetroConfig);_sb.scripts.theM` Ownable: new owner is the zero a` ","lineColors":[Ownable: caller is not the owner`@an on-chain, evolving, interactive metro! Double click, use mous` e wheel or pinch to zoom in. Whe`@n zoomed in, tap and drag to exp``lore the metro map.{"name":"metro #", "description": "","animation_url":"data:image/svg+xml;utf8,","attributes": [data:application/json;base64,{"trait_type": "
0xbae9802a…81c7·#18,650,365·0x2033ad31…f3d950
<style>.g {transform: scale(Ownable: new owner is the zero aOwnable: caller is not the owner`@DynamicBuffer: Appending out of }</style><symbol id='group' stroke-width='12' stroke-linecap='round' stroke-join='round' fill='transparent'>);}</style><g transform-origin='center' class='g'><use xlink:href='#group' transform='translate(<svg width='100%' height='100%' viewBox='0 0 20000 20000' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><style>.t{font: bold 900px sans-serif;fill:}.d{font: bold 400px sans-serif;fill:</text><text x='22%' y='19%' class='d'>// under construction</text></text><text x='22%' y='19%' class='d'>// under review</text>'><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'>'/><g stroke-width='40' x='20%' y='10%' width='60%' height='80%' fill='</symbol><defs><pattern id='tenthGrid' width='100' height='100' patternUnits='userSpaceOnUse'><path d='M 100 0 L 0 0 0 100' fill='none' stroke='black' opacity='0.1' stroke-width='10'/></pattern><pattern id='grid' width='1000' height='1000' patternUnits='userSpaceOnUse'><rect width='1000' height='1000' fill='url(#tenthGrid)'/><path d='M 1000 0 L 0 0 0 1000' fill='none' stroke='black' opacity='0.15' stroke-width='20'/></pattern></defs>'><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(-3, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(5, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'><rect width='100%' height='100%' opacity='1' fill='</text><text x='22%' y='19%' class='d'>// construction stopped</text></text><text x='22%' y='19%' class='d'>// complete</text>'><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(5, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'>
0xbae9802a…81c7·#18,650,364·0xeb6eb1ea…989bef
UPPP[PPPPPPV[cNH{q`PPPPPPPPPPPPPV[`a'遅a"rV[a'􁃆a$|V[PPPP`Ownable: new owner is the zero a` Ownable: caller is not the owner`@
0xbae9802a…81c7·#18,650,314·0x7d59f3e6…1f4950
intart_the_metro_v2o0123456789abcdef`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_let theMetroConfig={seed:"};_sb.scripts.theMetro=theMetro(theMetroConfig);_sb.scripts.theM` Ownable: new owner is the zero a` ","lineColors":[Ownable: caller is not the owner`@an on-chain, evolving, interactive metro! Double click, use mous` e wheel or pinch to zoom in. Whe`@n zoomed in, tap and drag to exp``lore the metro map.{"name":"metro #", "description": "","animation_url":"data:image/svg+xml;utf8,","attributes": [data:application/json;base64,{"trait_type": "
intart_the_metro_v2let theMetro=e=>{let t=new Random(e.seed),o={inverseScaleBase:5,inverseScaleConstant:5,minInverScale:1.5,ignoreAutoScaleCanvas:!1,stopRadius:2.5,lineWidth:2,wagonWidth:1,stopWidth:1.5,lineSeperationScale:1.5,wagonStrokeScale:2.8,metroLineId:0,metroLines:[],metroLinePaths:[],metroLineGroups:[],flatStops:[],wagons:[],metroLineSize:{},metroLineCenter:{},metroLineScale:1,minViewScale:1,viewScale:1,windowScale:1,targetViewScale:1,maxViewScale:0,viewScaleRelativeToWindow:1,pointerOffsetX:0,pointerOffsetY:0,pointerDown:!1,pointerDownX:0,pointerDownY:0,pointerX:0,pointerY:0,baseCameraX:0,baseCameraY:0,targetCameraX:0,targetCameraY:0,cameraX:0,cameraY:0,cameraDownX:0,cameraDownY:0,pickedWagon:void 0,wagonsEnabled:!0,zoomEnabled:!1,zoomScale:5,maxZoomScale:5,isZoomedIn:!1,isInIdleMode:!1,smoothness:0,targetSmoothness:0,idleModeTimer:0,idleModeChangeCount:0,isFinished:!1,previousWidth:0,previousHeight:0,touches:[]};(()=>{if(Object.keys(e).forEach((t=>{o[t]=e[t]})),e.canvas?o.canvas=e.canvas:(_sb.createMainCanvas(),o.canvas=_sb.mainCanvas),e.ignoreBodyStyle||(document.body.style.overflow="hidden",document.body.style.margin="0"),o.ctx=o.canvas.getContext("2d"),o.canvas.style.touchAction="none",e.ignoreAutoScaleCanvas||(o.canvas.style.width="100%",o.canvas.style.height="100%"),e.pixelRatio?o.pScale=e.pixelRatio:o.pScale=window.devicePixelRatio,!e.ignoreMetaTag){let e=document.createElement("meta");e.name="viewport",e.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0",document.getElementsByTagName("head")[0].appendChild(e)}o.theme=e.theme,(!o.theme.ls||o.theme.ls&&0==o.theme.ls.length)&&(o.theme.ls=o.theme.b)})();let n=(e,t)=>{let n=o.theme.lineColors.filter((t=>t[0]==e));return 1==n.length?n[0]:0==n.length?o.theme.lineColors[t%o.theme.lineColors.length]:n[t%n.length]},a=e=>e&&1==e?o.viewScale>1:o.viewScale>.5,i=({x:e,y:t,x1:n,y1:a,width:i,color:r})=>{o.ctx.beginPath(),o.ctx.moveTo(e,t),o.ctx.lineTo(n,a),o.ctx.globalAlpha=1,o.ctx.strokeStyle=r,o.ctx.lineCap="round",o.ctx.lineWidth=i,o.ctx.stroke()},r=({x:e,y:t,x1:o,y1:n,width:a,stroke:r,color:s,strokeColor:l})=>{i({x:e,y:t,x1:o,y1:n,width:r,color:l}),i({x:e,y:t,x1:o,y1:n,width:a,color:s})},s=e=>e.x+"_"+e.y,l=(e,t)=>{let o=(e=>{let t=2*Math.PI;for(e%=t;e<0;)e+=t;return e})(e-t);return 90==Math.floor(180*o/Math.PI)},c=(e,t)=>e.x==t.x||e.y==t.y,h=(e,t)=>e*(o.viewScale+o.inverseScaleBase/Math.max(o.minInverScale,o.viewScale/.5)*o.inverseScaleConstant*t),d=(e,t)=>{let o=m(t.stop0,t.stop1)+.5*Math.PI,n=t.indexes[e.id]-(t.lineCount-1)/2;return{x:Math.cos(o)*n,y:Math.sin(o)*n}},m=(e,t)=>{let o=e.x-t.x,n=e.y-t.y;return Math.atan2(n,o)},g=(e,t)=>{let o=[e.ox+""+e.oy,t.ox+""+t.oy];return o.sort(),o.join("")},p=(e,t,n,a)=>({x:e.x+a*Math.cos(t-Math.PI/2)*n*h(o.lineWidth+.5*o.lineSeperationScale,.1)*.5,y:e.y+a*Math.sin(t-Math.PI/2)*n*h(o.lineWidth+.5*o.lineSeperationScale,.1)*.5}),u=e=>{e.forEach((e=>{let t=1;if(e.stopScale>1&&(t=.6*e.stopScale),e.stopScale<3)(({x:e,y:t,r:n,width:i})=>{a(1)&&(o.ctx.beginPath(),o.ctx.arc(e,t,n,0,2*Math.PI),o.ctx.lineWidth=i,o.ctx.fillStyle=o.theme.sf,o.ctx.strokeStyle=o.theme.ss,o.ctx.fill(),o.ctx.stroke())})({x:e.x,y:e.y,r:h(o.stopRadius*t,.05),width:h(o.stopWidth,.05)});else if(t=1,e.massiveConnections.length>1){if(!a(1))return;e.massiveConnections.forEach((n=>{let a=p(e,n.angle,n.count,1),r=p(e,n.angle,n.count,-1);i({x:a.x,y:a.y,x1:r.x,y1:r.y,width:h(2*o.stopWidth*t*2,.05),color:o.theme.ss})})),e.massiveConnections.forEach((n=>{let a=p(e,n.angle,n.count,1),r=p(e,n.angle,n.count,-1);i({x:a.x,y:a.y,x1:r.x,y1:r.y,width:h(2*o.stopWidth*t,.05),color:o.theme.sf})}))}else if(e.crossPairs){if(!a(1))return;e.crossPairs.forEach((n=>{let a=p(e,n.angle,n.count,1),r=p(e,n.angle,n.count,-1);i({x:a.x,y:a.y,x1:r.x,y1:r.y,width:h(2*o.stopWidth*t*2,.05),color:o.theme.ss})})),e.crossPairs.forEach((n=>{let a=p(e,n.angle,n.count,1),r=p(e,n.angle,n.count,-1);i({x:a.x,y:a.y,x1:r.x,y1:r.y,width:h(2*o.stopWidth*t,.05),color:o.theme.sf})}))}else{if(!a(1))return;let n=p(e,e.biggestAngle.angle,e.biggestAngle.count,1),i=p(e,e.biggestAngle.angle,e.biggestAngle.count,-1);r({x:n.x,y:n.y,x1:i.x,y1:i.y,width:h(2*o.stopWidth*t,.05),stroke:h(2*o.stopWidth*t*2,.05),color:o.theme.sf,strokeColor:o.theme.ss})}}))},x=e=>{if(!o.wagonsEnabled)return;let t=h(.8*o.lineWidth,.1),n=h(.8*o.lineWidth*o.wagonStrokeScale,.1),a=n,i=h(o.wagonWidth,.1),s=i,l=y(e);e.order=l.order,l.progress>.7?(s=i*Math.abs(1-l.progress)/.3,a=n*Math.abs(1-l.progress)/.1):l.progress<.3?(s=i*(1-Math.abs(l.progress-.3)/.3),a=n*(1-Math.abs(l.progress-.1)/.1)):(s=i,a=n),l.progress>.9?a=n*Math.abs(1-l.progress)/.1:l.progress<.1?a=n*(1-Math.abs(l.progress-.1)/.1):(s=i,a=n);let c=Math.cos(l.angle)*s+l.x,d=Math.sin(l.angle)*s+l.y,m=Math.cos(l.angle)*-s+l.x,g=Math.sin(l.angle)*-s+l.y;r({x:c,y:d,x1:m,y1:g,width:t,stroke:a,color:e.metroLine.color[1],strokeColor:e.metroLine.color[0]}),e.progress>100?(e.waitProgress+=e.speed,e.waitProgress>105&&(e.progress=0,e.waitProgress=0,e.currentPath.wagons=e.currentPath.wagons.filter((t=>t!=e)),e.direction?(e.index++,e.index==e.metroLine.paths.length&&(e.index=e.metroLine.paths.length-1,e.direction=0)):(e.index--,e.index<0&&(e.index=0,e.direction=1)),e.currentPath=e.metroLine.paths[e.index],e.metroLine.paths[e.index].wagons.push(e))):e.progress+=e.speed},w=e=>{let t={x:1e13,y:1e13,r:0,b:0,center:{x:0,y:0}};return e.forEach((e=>{e.stops.forEach((e=>{t.x=Math.min(t.x,e.x),t.y=Math.min(t.y,e.y),t.r=Math.max(t.r,e.x),t.b=Math.max(t.b,e.y),t.center.x+=e.x,t.center.y+=e.y}))})),t.center.x=(t.r+t.x)/2,t.center.y=(t.b+t.y)/2,t},f=e=>{(e=>{let t=w(e),o=Math.abs(t.r-t.x),n=Math.abs(t.b-t.y);Math.max(o,n),e.forEach((e=>{e.stops.forEach((e=>{e.x=e.x-t.center.x,e.y=e.y-t.center.y,e.ox=e.x,e.oy=e.y}))}))})(e);let t=w(e);o.metroLineCenter.x=.5*Math.floor(t.r-t.x)+t.x,o.metroLineCenter.y=.5*Math.floor(t.b-t.y)+t.y,o.metroLineSize.width=Math.abs(t.r-t.x),o.metroLineSize.height=Math.abs(t.b-t.y),o.metroLineSize.maxSize=Math.max(o.metroLineSize.width,o.metroLineSize.height),o.metroLineSize.volume=o.metroLineSize.width*o.metroLineSize.height},y=e=>{let t,n,a=e=>-(Math.cos(Math.PI*e)-1)/2,i=h(o.lineWidth,.1),r=e.metroLine.paths[e.index],s=r.lines[e.metroLine.id].stop0,l=r.lines[e.metroLine.id].stop1,c=d(e.metroLine,r);return c.x*=i*o.lineSeperationScale,c.y*=i*o.lineSeperationScale,e.direction?(t={x:s.x+c.x,y:s.y+c.y},n={x:l.x+c.x,y:l.y+c.y}):(n={x:s.x+c.x,y:s.y+c.y},t={x:l.x+c.x,y:l.y+c.y}),{x:t.x+a(e.progress/100)*(n.x-t.x),y:t.y+a(e.progress/100)*(n.y-t.y),angle:m(t,n),progress:e.progress/100,order:r.lineCount}},v=(e,o,n,a)=>({metroLine:e,progress:100*t.random_dec(),waitProgress:0,speed:o,index:n,direction:a,order:0,currentPath:e.paths[n]}),S=()=>{if(o.isFinished||window.requestAnimationFrame(S),M(),o.targetSmoothness=o.isInIdleMode?.005:.1,o.smoothness+=.01*(o.targetSmoothness-o.smoothness),o.isInIdleMode&&o.pickedWagon){let e=y(o.pickedWagon);o.targetCameraX=-(e.x-o.pointerOffsetX)+.5*o.canvas.width,o.targetCameraY=-(e.y-o.pointerOffsetY)+.5*o.canvas.height}var e;o.viewScale+=(o.targetViewScale-o.viewScale)*o.smoothness,o.cameraX+=(o.targetCameraX-o.cameraX)*o.smoothness,o.cameraY+=(o.targetCameraY-o.cameraY)*o.smoothness,o.pointerOffsetX=o.cameraX,o.pointerOffsetY=o.cameraY,e=o.metroLines,o.flatStops,e.forEach((e=>{e.stops.forEach(((e,t)=>{e.x=e.ox*o.viewScale+o.pointerOffsetX*o.pScale,e.y=e.oy*o.viewScale+o.pointerOffsetY*o.pScale}))})),o.ctx.beginPath(),o.ctx.rect(0,0,o.canvas.width,o.canvas.height),o.ctx.fillStyle=o.theme.b,o.ctx.fill(),((e,t)=>{a(1)||t.forEach((t=>{t.lineList.forEach((n=>{let a=e[n.metroLineId],i=h(o.lineWidth,.2),s=h(o.lineWidth,.15),l=n.stop0,c=n.stop1,m=d(a,t);m.x*=s*o.lineSeperationScale,m.y*=s*o.lineSeperationScale;let g=o.theme.ls;if(g&&g.length>0){let e=.18;o.theme.ls==o.theme.b&&(e=0),r({x:l.x+m.x,y:l.y+m.y,x1:c.x+m.x,y1:c.y+m.y,width:i,stroke:h(2*o.lineWidth,e),color:a.color[0],strokeColor:g})}}))}))})(o.metroLines,o.metroLinePaths,o.wagons),((e,t,n)=>{t.forEach((t=>{t.lineList.forEach((n=>{let s=e[n.metroLineId],l=h(o.lineWidth,.2),c=h(o.lineWidth,.15),m=n.stop0,g=n.stop1,p=d(s,t);p.x*=c*o.lineSeperationScale,p.y*=c*o.lineSeperationScale;let u=o.theme.ls;if(u&&u.length>0&&a(1)){let e=.15;o.theme.ls==o.theme.b&&(e=0),r({x:m.x+p.x,y:m.y+p.y,x1:g.x+p.x,y1:g.y+p.y,width:l,stroke:h(2*o.lineWidth,e),color:s.color[0],strokeColor:u})}else i({x:m.x+p.x,y:m.y+p.y,x1:g.x+p.x,y1:g.y+p.y,width:l,color:s.color[0]})})),t.wagons.forEach((e=>{x(e)}))}))})(o.metroLines,o.metroLinePaths,o.wagons),u(o.flatStops),o.onRender&&o.onRender()},L=()=>{e.svgData?o.metroLines=(e=>{let t=e.split("<symbol id='group'")[1].split("</symbol")[0].split("<path d='M"),a=[];for(let e=1;e<t.length;e++){let i=t[e].split("' stroke='"),r=i[0],s=i[1].split("'/>")[0],l=r.split(" "),c=[];for(let e=0;e<l.length;e+=2){let t=parseInt(l[e]),o=parseInt(l[e+1]);c.push({x:t,y:o,tx:t,ty:o})}let h=e=>c[e];c.forEach(((e,t)=>{e.n||(e.n=[]),0==t?c[0].n.push(1):t<c.length-1?(c[t].n.push(t-1),c[t].n.push(t+1)):t==c.length-1&&c[t].n.push(t-1)})),a.push({stops:c,id:o.metroLineId,color:n(s,o.metroLineId),getStop:h}),o.metroLineId++}return a})(e.svgData):o.metroLines=(e=>{let t=[];return e.forEach((e=>{let a=[];e.stops.forEach((e=>{a.push({x:e.x,y:e.y})})),a.forEach(((e,t)=>{e.n||(e.n=[]),0==t?a[0].n.push(1):t<a.length-1?(a[t].n.push(t-1),a[t].n.push(t+1)):t==a.length-1&&a[t].n.push(t-1)})),t.push({stops:a,id:o.metroLineId,color:n(e.color,o.metroLineId),getStop:e=>a[e]}),o.metroLineId++})),t})(e.data),f(o.metroLines),o.flatStops=(e=>{let t={},o=0;e.forEach((e=>{e.stops.forEach(((n,a)=>{let i=s(n);if(t[i]){t[i].lineIds.includes(e.id)||t[i].lineIds.push(e.id);let o=n.n.map((o=>{let a=e.getStop(o),r=e.id+""+s(a),l=m(n,a),h=c(a,n);return t[i].outGoingDirections[l]?(t[i].outGoingDirections[l].count++,t[i].outGoingDirections[l].count>t[i].maxDirectionAngle.count&&(t[i].maxDirectionAngle={angle:l,count:t[i].outGoingDirections[l].count})):(t[i].totalDifferentOutgoinDirection++,t[i].outGoingDirections[l]={count:1,isAngular:h}),t[i].maxDirection=Math.max(t[i].outGoingDirections[l].count,t[i].maxDirection),t[i].maxDirection>1?t[i].stopScale=1.2*t[i].maxDirection:t[i].stopScale=t[i].maxDirection,{id:r,metroLine:e.id,direction:l,indexInLine:o,stop:a}}));t[i].neighbours=t[i].neighbours.concat(o),e.stops[a]=t[i]}else{let r={},l=0,h=0,d={};t[i]={id:o,x:n.x,y:n.y,ox:n.x,oy:n.y,lineIds:[e.id],outGoingDirections:{},stopScale:1,neighbours:n.n.map((t=>{let o=e.getStop(t),a=e.id+"_"+s(o),i=m(n,o),g=c(o,n);return r[i]?(r[i].count++,r[i].count>d.count&&(d={angle:i,count:r[i].count,stop0:n,stop1:o})):(l++,d={angle:i,count:1},r[i]={count:1,isAngular:g}),h=Math.max(r[i].count,h),{id:a,metroLine:e.id,direction:i,indexInLine:t,stop:o,maxDirectionAngle:d}}))},t[i].outGoingDirections=r,t[i].totalDifferentOutgoinDirection=l,t[i].maxDirection=h,t[i].maxDirectionAngle=d,e.stops[a]=t[i],o++}}))}));let n=Object.values(t);return n.forEach((e=>{let t=Object.keys(e.outGoingDirections),o=[],n=[];t.forEach((t=>{let a=e.outGoingDirections[t].isAngular,i=e.outGoingDirections[t].count;i>2&&o.push({angle:t,count:i,isAngular:a}),i>3&&n.push({angle:t,count:i})})),o.sort(((e,t)=>{let o=Math.pow(e.count,3)+(e.isAngular?5:0);return Math.pow(t.count,3)+(t.isAngular?5:0)-o}));let a=!1,i=[];o.forEach((e=>{o.forEach((t=>{l(e.angle,t.angle)&&e!=t&&(a=!0,i.push({connection1:e,connection2:t}))}))})),i.sort(((e,t)=>e.connection1.count+e.connection2.count-(t.connection1.count+t.connection2.count))),e.hasAngularDirection=!1,e.angularDirectionAngle=0,e.bigConnections=o,e.hasAnyCross=a,e.massiveConnections=n,i.length>0&&(e.crossPairs=[i[0].connection1,i[0].connection2]),o.length>0?e.biggestAngle={angle:o[0].angle,count:o[0].count}:e.biggestAngle={angle:e.maxDirectionAngle.angle,count:e.maxDirectionAngle.count}})),n})(o.metroLines),o.metroLinePaths=(e=>{let t={};e.forEach((e=>{e.paths=[];for(let o=0;o<e.stops.length-1;o++){let n=e.stops[o],a=e.stops[o+1],i=g(n,a);if(t[i]){let o={metroLineId:e.id,stop0:n,stop1:a,angle:m(n,a)};o.stop0=n,o.stop1=a,o.isAngular=c(n,a),t[i].lines[e.id]=o}else{let o={lines:[],wagons:[]};o.lines[e.id]={metroLineId:e.id,stop0:n,stop1:a,angle:m(n,a)},o.stop0=n,o.stop1=a,o.isAngular=c(n,a),t[i]=o}e.paths.push(t[i])}})),e.forEach((e=>{e.paths.forEach((t=>{let o=Object.keys(t.lines);o.sort(((e,t)=>e.metroLineId>t.metroLineId));let n=o.indexOf(e.id.toString());t.indexes||(t.indexes={}),t.lineCount=o.length,t.indexes[e.id]=n}))}));let o=Object.values(t);return o.forEach((e=>{e.lineList=Object.values(e.lines)})),o.sort(((e,t)=>Math.pow(e.lineCount,3)+(e.isAngular?1:0)-(Math.pow(t.lineCount,3)+(t.isAngular?1:0)))),o})(o.metroLines),o.wagons=(e=>{let o=[];return e.forEach((e=>{let n=.6*t.random_dec()+.2,a=v(e,n,0,1),i=v(e,n,e.stops.length-2,0);if(a.currentPath.wagons.push(a),i.currentPath.wagons.push(i),o.push(a),o.push(i),e.stops.length>6){let t=v(e,n,Math.floor((e.stops.length-1)/2),1),a=v(e,n,Math.floor((e.stops.length-1)/2),0);t.currentPath.wagons.push(t),a.currentPath.wagons.push(a),o.push(t),o.push(a)}})),o})(o.metroLines)},M=()=>{o.canvasBoundry=o.canvas.getBoundingClientRect(),o.ignoreAutoScaleCanvas?(o.canvas.width=o.canvasBoundry.width*o.pScale,o.canvas.height=o.canvasBoundry.height*o.pScale):(o.canvas.width=window.innerWidth*o.pScale,o.canvas.height=window.innerHeight*o.pScale);let e=0;if(e=o.canvas.width/o.canvas.height>o.metroLineSize.width/o.metroLineSize.height?o.canvas.height/o.metroLineSize.height*.8:o.canvas.width/o.metroLineSize.width*.8,o.maxViewScale>0&&e>o.maxViewScale&&(e=o.maxViewScale),o.previousWidth!=o.canvas.width||o.previousHeight!=o.canvas.height){let t=o.canvas.width/o.previousWidth,n=o.canvas.height/o.previousHeight,a=e/o.windowScale;o.viewScale*=a,o.cameraX*=t,o.cameraY*=n,o.targetCameraX=o.cameraX,o.targetCameraY=o.cameraY,o.targetViewScale=o.viewScale,o.minViewScale=e,o.windowScale=e,o.previousWidth=o.canvas.width,o.previousHeight=o.canvas.height,e<2&&(o.zoomEnabled=!0)}},C=()=>o.targetViewScale!=o.minViewScale,b=e=>{if(o.zoomEnabled)if(C()||o.isInIdleMode)o.targetViewScale=o.minViewScale,o.targetCameraX=.5*o.canvasBoundry.width,o.targetCameraY=.5*o.canvasBoundry.height,o.pickedWagon=void 0,o.isZoomedIn=!1,E();else{Y();let e=o.maxZoomScale,t=(o.pointerX-o.cameraX)/o.viewScale,n=(o.pointerY-o.cameraY)/o.viewScale;o.targetCameraX=o.pointerX-t*e,o.targetCameraY=o.pointerY-n*e,o.targetViewScale=e,o.isZoomedIn=!0}},I=()=>{o.zoomEnabled&&(C()&&!o.isInIdleMode||(o.smoothness=.005,o.targetViewScale=o.maxZoomScale,o.pickedWagon=t.random_choice(o.wagons),o.isInIdleMode=!0,X()))},E=()=>{Y(),o.pickedWagon=null,isIdleModeChanging=!1,o.idleModeChangeCount=0,o.isInIdleMode=!1,o.idleModeTimer=setTimeout((()=>{I()}),1e4)},Y=()=>{o.isInIdleMode=!1,o.idleModeTimer&&clearInterval(o.idleModeTimer)},X=()=>{o.idleModeTimer&&clearInterval(o.idleModeTimer),o.idleModeChangeCount++,o.idleModeTimer=setTimeout((()=>{o.idleModeChangeCount>2?D():I()}),35e3)},D=()=>{o.idleModeChangeCount=0,o.pickedWagon=void 0,o.targetCameraX=.5*o.canvasBoundry.width,o.targetCameraY=.5*o.canvasBoundry.height,o.targetViewScale=o.minViewScale,Y(),o.idleModeTimer=setTimeout((()=>{I()}),3e4)},W=()=>{o.metroLineScale=1,o.viewScale=o.minViewScale,o.targetViewScale=o.minViewScale,o.pointerX=.5*o.canvasBoundry.width,o.pointerY=.5*o.canvasBoundry.height,o.cameraX=.5*o.canvasBoundry.width,o.cameraY=.5*o.canvasBoundry.height,o.targetCameraX=o.cameraX,o.targetCameraY=o.cameraY,Y(),o.idleModeTimer=setTimeout((()=>{I()}),3e4)},k=!1,A=e=>{var t;if(e.preventDefault(),(t=e).toffsetX=t.offsetX,t.toffsetY=t.offsetY,o.touches.push(t),o.pointerDown=!0,1==o.touches.length){if(o.pointerX=e.offsetX,o.pointerY=e.offsetY,o.pointerDownX=o.pointerX,o.pointerDownY=o.pointerY,o.cameraDownX=o.cameraX,o.cameraDownY=o.cameraY,!k)return k=!0,setTimeout((function(){k=!1}),300),!1;b()}},P=e=>{(e=>{const t=o.touches.findIndex((t=>t.pointerId===e.pointerId));o.touches.splice(t,1)})(e),o.pointerDown=!1,o.touchDistance=void 0},V=e=>{var t;if(t=e,o.touches.forEach((e=>{e.pointerId===t.pointerId&&(e.toffsetX=t.offsetX,e.toffsetY=t.offsetY)})),o.pointerDown){let t=0,n=0;if(o.touches.forEach((e=>{t+=e.offsetX})),o.touches.forEach((e=>{n+=e.offsetY})),t/=o.touches.length,n/=o.touches.length,o.pointerX=t,o.pointerY=n,1==o.touches.length){if(o.isInIdleMode&&(Y(),b()),!o.isZoomedIn)return;o.cameraX=o.cameraDownX-(o.pointerDownX-e.offsetX),o.cameraY=o.cameraDownY-(o.pointerDownY-e.offsetY),o.targetCameraX=o.cameraX,o.targetCameraY=o.cameraY}else if(2==o.touches.length){let e=o.touches[1].toffsetX-o.touches[0].toffsetX,t=o.touches[1].toffsetY-o.touches[0].toffsetY,n=Math.sqrt(e*e+t*t);if(null!=o.touchDistance){let e=n-o.touchDistance;O(.01*e),o.touchDistance=n}else o.touchDistance=n}}else o.pointerX=e.offsetX,o.pointerY=e.offsetY;doubleTap=!1},T=e=>{87===e.keyCode&&(o.wagonsEnabled=!o.wagonsEnabled),83===e.keyCode&&(e=>{let t=document.createElement("a");t.href=e,t.download="themetro",document.body.appendChild(t),t.click()})(o.canvas.toDataURL("image/png"))},z=e=>{O(.005*e.wheelDeltaY)},O=e=>{if(!o.zoomEnabled)return;Y();let t=o.viewScale;t+=e,t>o.maxZoomScale&&(t=o.maxZoomScale),t<o.minViewScale&&(t=o.minViewScale,E());let n=(o.pointerX-o.cameraX)/o.viewScale,a=(o.pointerY-o.cameraY)/o.viewScale;o.viewScale=t,o.cameraX=o.pointerX-n*t,o.cameraY=o.pointerY-a*t,o.targetCameraX=o.cameraX,o.targetCameraY=o.cameraY,o.targetViewScale=o.viewScale,o.isZoomedIn=!0},B=!1,G=()=>{B||(B=!0,L(),S(),W(),o.canvas.addEventListener("pointerdown",A),o.canvas.addEventListener("pointerup",P),o.canvas.addEventListener("pointermove",V),o.canvas.addEventListener("keydown",T),o.canvas.addEventListener("wheel",z))},R=()=>{0==o.canvas.width||0==o.canvas.height||0==window.innerWidth||0==window.innerHeight?setTimeout((()=>{R()}),1):G()};return o.start=()=>{window&&(R(),window.addEventListener("load",(()=>{R()})))},o.finish=()=>{o.isFinished=!0,o.canvas.removeEventListener("pointerdown",A),o.canvas.removeEventListener("pointerup",P),o.canvas.removeEventListener("pointermove",V),o.canvas.removeEventListener("keydown",T),o.canvas.removeEventListener("wheel",z),Y()},o};
0xbae9802a…81c7·#18,650,311·0xaebbd13b…41a439
<style>.g {transform: scale(Ownable: new owner is the zero aOwnable: caller is not the owner`@DynamicBuffer: Appending out of }</style><symbol id='group' stroke-width='12' stroke-linecap='round' stroke-join='round' fill='transparent'>);}</style><g transform-origin='center' class='g'><use xlink:href='#group' transform='translate(<svg width='100%' height='100%' viewBox='0 0 20000 20000' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><style>.t{font: bold 900px sans-serif;fill:}.d{font: bold 400px sans-serif;fill:</text><text x='22%' y='19%' class='d'>// under construction</text></text><text x='22%' y='19%' class='d'>// under review</text>'><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'>'/><g stroke-width='40' x='20%' y='10%' width='60%' height='80%' fill='</symbol><defs><pattern id='tenthGrid' width='100' height='100' patternUnits='userSpaceOnUse'><path d='M 100 0 L 0 0 0 100' fill='none' stroke='black' opacity='0.1' stroke-width='10'/></pattern><pattern id='grid' width='1000' height='1000' patternUnits='userSpaceOnUse'><rect width='1000' height='1000' fill='url(#tenthGrid)'/><path d='M 1000 0 L 0 0 0 1000' fill='none' stroke='black' opacity='0.15' stroke-width='20'/></pattern></defs>'><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(-3, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(5, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'><rect width='100%' height='100%' opacity='1' fill='</text><text x='22%' y='19%' class='d'>// construction stopped</text></text><text x='22%' y='19%' class='d'>// complete</text>'><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(5, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'>
0xbae9802a…81c7·#18,650,310·0x7f68737b…6d791f
UPPP[PPPPPPV[cNH{q`PPPPPPPPPPPPPV[`a'遅a"rV[a'􁃆a$|V[PPPP`Ownable: new owner is the zero a` Ownable: caller is not the owner`@
0xbae9802a…81c7·#17,681,682·0x044bcb32…f8ff34
%3C%2Fbody%3E%3C%2Fhtml%3Etdata%3Atext%2Fhtml%2C`Xdata:text/html;base64,data:text/html;base64,tdata%3Atext%2Fhtml%2C`XRl%3C%2Fhead%3E`%3C%2Fbody%3E%3C%2Fhtml%3E%2522%253E%253C%252Fscript%253E%2522%253E%253C%252Fscript%253E%2522%253E%253C%252Fscript%253EABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_DynamicBuffer: Appending out of `D<script src="data:text/javascript;base64,%253Cscript%2520src%253D%2522data%253Atext%252Fjavascript%253Bbase64%252C<script type="text/javascript+gzip" src="data:text/javascript;base64,%253Cscript%2520type%253D%2522text%252Fjavascript%252Bgzip%2522%2520src%253D%2522data%253Atext%252Fjavascript%253Bbase64%252C%253Cscript%2520type%253D%2522text%252Fjavascript%252Bpng%2522%2520src%253D%2522data%253Atext%252Fjavascript%253Bbase64%252C<script type="text/javascript+png" src="data:text/javascript;base64,
0xbae9802a…81c7·#17,304,064·0x363837f1…cdb273
Ownable: new owner is the zero a`@Invalid metro ownerOwnable: caller is not the owner`@This metro is already usedToken has already metro extensio`@
0xbae9802a…81c7·#17,062,453·0x4af68c42…637c7b
intart_the_metroo0123456789abcdef`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_let theMetroConfig={seed:"};_sb.scripts.theMetro=theMetro(theMetroConfig);_sb.scripts.theM` ","lineColors":[Ownable: new owner is the zero a` Ownable: caller is not the owner`@{"name":"metro #", "description": "an on-chain, evolving, interactive metro! Dou` ble click to zoom in. When zoome`@d in, tap and drag to explore th``e metro map.", "image":data:image/svg+xml;utf8,","animation_url":"","attributes": [data:application/json;base64,{"trait_type": "
0xbae9802a…81c7·#16,981,803·0x3da92360…4c12a1
<style>.g {transform: scale(Ownable: new owner is the zero aDynamicBuffer: Appending out of Ownable: caller is not the owner`@}</style><symbol id='group' stroke-width='12' stroke-linecap='round' stroke-join='round' fill='transparent'>);}</style><g transform-origin='center' class='g'><use xlink:href='#group' transform='translate(<svg width='100%' height='100%' viewBox='0 0 20000 20000' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><style>.t{font: bold 900px sans-serif;fill:}.d{font: bold 400px sans-serif;fill:</text><text x='22%' y='19%' class='d'>// under construction</text></text><text x='22%' y='19%' class='d'>// under review</text>'><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'>'/><g stroke-width='40' x='20%' y='10%' width='60%' height='80%' fill='</symbol><defs><pattern id='tenthGrid' width='100' height='100' patternUnits='userSpaceOnUse'><path d='M 100 0 L 0 0 0 100' fill='none' stroke='black' opacity='0.1' stroke-width='10'/></pattern><pattern id='grid' width='1000' height='1000' patternUnits='userSpaceOnUse'><rect width='1000' height='1000' fill='url(#tenthGrid)'/><path d='M 1000 0 L 0 0 0 1000' fill='none' stroke='black' opacity='0.15' stroke-width='20'/></pattern></defs>'><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(-3, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(5, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'><rect width='100%' height='100%' opacity='1' fill='</text><text x='22%' y='19%' class='d'>// construction stopped</text></text><text x='22%' y='19%' class='d'>// complete</text>'><rect x='20%' y='10%' width='60%' height='80%' transform='rotate(5, 6000, 6000)'/><rect x='20%' y='10%' width='60%' height='80%'/></g><rect x='20%' y='10%' width='60%' height='80%' fill='url(#grid)'/><text x='22%' y='15.8%' class='t'>
0xbae9802a…81c7·#16,981,802·0xcacebd0c…7d40c4
intart_the_metroo0123456789abcdef`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_let theMetroConfig={seed:"};_sb.scripts.theMetro=theMetro(theMetroConfig);_sb.scripts.theM` Ownable: new owner is the zero a` Ownable: caller is not the owner`@{"name":"metro #", "description": "an on-chain, evolving, interactive metro! Dou` ble click to zoom in. When zoome`@d in, tap and drag to explore th``e metro map.", "image":data:image/svg+xml;utf8,","animation_url":"","attributes": [data:application/json;base64,{"trait_type": "
0xbae9802a…81c7·#16,981,800·0x25231858…769b03
ERC2981: royalty fee will exceed` ERC2981: invalid receivera *Wa *3a#}V[a 5a4lWa4la40V[`@RPPV[`Ownable: new owner is the zero aOwnable: caller is not the ownerERC2981: royalty fee will exceedERC2981: invalid receiver
intart_the_metrolet theMetro=e=>{let t=new Random(e.seed),n={inverseScaleBase:1,inverseScaleConstant:2,autoScaleCanvas:!0,stopRadius:2.5,lineWidth:2,wagonWidth:1,stopWidth:1.5,lineSeperationScale:1.5,wagonStrokeScale:2.8,metroLineId:0,metroLines:[],metroLinePaths:[],metroLineGroups:[],flatStops:[],wagons:[],metroLineSize:{},metroLineCenter:{},metroLineScale:1,minViewScale:1,viewScale:1,targetMetroLineScale:1,pointerOffsetX:0,pointerOffsetY:0,pointerDown:!1,pointerDownX:0,pointerDownY:0,pointerX:0,pointerY:0,targetCameraX:0,targetCameraY:0,cameraX:0,cameraY:0,cameraDownX:0,cameraDownY:0,pickedWagon:void 0,wagonsEnabled:!0,zoomEnabled:!1,zoomScale:5,isZoomedIn:!1,isInIdleMode:!1,smoothness:0,targetSmoothness:0,idleModeTimer:0,idleModeChangeCount:0,isFinished:!1};(()=>{if(Object.keys(e).forEach((t=>{n[t]=e[t]})),e.canvas?n.canvas=e.canvas:(_sb.createMainCanvas(),n.canvas=_sb.mainCanvas),n.ctx=n.canvas.getContext("2d"),n.canvas.style.touchAction="none",n.canvas.style.width="100%",n.canvas.style.height="100%",e.pixelRatio?n.pScale=e.pixelRatio:n.pScale=window.devicePixelRatio,!e.ignoreMetaTag){let e=document.createElement("meta");e.name="viewport",e.content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0",document.getElementsByTagName("head")[0].appendChild(e)}n.theme=e.theme,(!n.theme.ls||n.theme.ls&&0==n.theme.ls.length)&&(n.theme.ls=n.theme.b)})();let o,i,a=(e,t)=>{let o=n.theme.lineColors.filter((t=>t[0]==e));return 1==o.length?o[0]:o[t%o.length]},r=({x:e,y:t,x1:o,y1:i,width:a,color:r})=>{n.ctx.beginPath(),n.ctx.moveTo(e,t),n.ctx.lineTo(o,i),n.ctx.globalAlpha=1,n.ctx.strokeStyle=r,n.ctx.lineCap="round",n.ctx.lineWidth=a,n.ctx.stroke()},s=({x:e,y:t,x1:n,y1:o,width:i,stroke:a,color:s,strokeColor:l})=>{r({x:e,y:t,x1:n,y1:o,width:a,color:l}),r({x:e,y:t,x1:n,y1:o,width:i,color:s})},l=e=>e.x+""+e.y,c=(e,t)=>{let n=(e=>{let t=2*Math.PI;for(e%=t;e<0;)e+=t;return e})(e-t);return 90==Math.floor(180*n/Math.PI)},h=(e,t)=>e.x==t.x||e.y==t.y,d=(e,t)=>e*(n.viewScale*n.metroLineScale+n.inverseScaleBase/(n.viewScale*n.metroLineScale)*n.inverseScaleConstant*t),m=(e,t)=>{let n=g(t.stop0,t.stop1)+.5*Math.PI,o=t.indexes[e.id]-(t.lineCount-1)/2;return{x:Math.cos(n)*o,y:Math.sin(n)*o}},g=(e,t)=>{let n=e.x-t.x,o=e.y-t.y;return Math.atan2(o,n)},p=(e,t)=>{let n=[e.ox+""+e.oy,t.ox+""+t.oy];return n.sort(),n.join("")},u=(e,t,o,i)=>({x:e.x+i*Math.cos(t-Math.PI/2)*o*d(n.lineWidth+.5*n.lineSeperationScale,0)*.5,y:e.y+i*Math.sin(t-Math.PI/2)*o*d(n.lineWidth+.5*n.lineSeperationScale,0)*.5}),x=e=>{e.forEach((e=>{let t=1;if(e.stopScale>1&&(t=.6*e.stopScale),e.stopScale<3)(({x:e,y:t,r:o,width:i})=>{n.ctx.beginPath(),n.ctx.arc(e,t,o,0,2*Math.PI),n.ctx.lineWidth=i,n.ctx.fillStyle=n.theme.sf,n.ctx.strokeStyle=n.theme.ss,n.ctx.fill(),n.ctx.stroke()})({x:e.x,y:e.y,r:d(n.stopRadius*t,0),width:n.stopWidth*(n.metroLineScale*n.viewScale)});else if(t=1,e.massiveConnections.length>1)e.massiveConnections.forEach((o=>{let i=u(e,o.angle,o.count,1),a=u(e,o.angle,o.count,-1);r({x:i.x,y:i.y,x1:a.x,y1:a.y,width:d(2*n.stopWidth*t+3,0),color:n.theme.ss})})),e.massiveConnections.forEach((o=>{let i=u(e,o.angle,o.count,1),a=u(e,o.angle,o.count,-1);r({x:i.x,y:i.y,x1:a.x,y1:a.y,width:d(2*n.stopWidth*t,0),color:n.theme.sf})}));else if(e.crossPairs)e.crossPairs.forEach((o=>{let i=u(e,o.angle,o.count,1),a=u(e,o.angle,o.count,-1);r({x:i.x,y:i.y,x1:a.x,y1:a.y,width:d(2*n.stopWidth*t+3,0),color:n.theme.ss})})),e.crossPairs.forEach((o=>{let i=u(e,o.angle,o.count,1),a=u(e,o.angle,o.count,-1);r({x:i.x,y:i.y,x1:a.x,y1:a.y,width:d(2*n.stopWidth*t,0),color:n.theme.sf})}));else{let o=u(e,e.biggestAngle.angle,e.biggestAngle.count,1),i=u(e,e.biggestAngle.angle,e.biggestAngle.count,-1);s({x:o.x,y:o.y,x1:i.x,y1:i.y,width:d(2*n.stopWidth*t,0),stroke:d(2*n.stopWidth*t+3,0),color:n.theme.sf,strokeColor:n.theme.ss})}}))},w=e=>{if(!n.wagonsEnabled)return;let t=d(.8*n.lineWidth,0),o=d(.8*n.lineWidth*n.wagonStrokeScale,0),i=o,a=d(n.wagonWidth,0),r=a,l=S(e);e.order=l.order,l.progress>.7?(r=a*Math.abs(1-l.progress)/.3,i=o*Math.abs(1-l.progress)/.1):l.progress<.3?(r=a*(1-Math.abs(l.progress-.3)/.3),i=o*(1-Math.abs(l.progress-.1)/.1)):(r=a,i=o),l.progress>.9?i=o*Math.abs(1-l.progress)/.1:l.progress<.1?i=o*(1-Math.abs(l.progress-.1)/.1):(r=a,i=o);let c=Math.cos(l.angle)*r+l.x,h=Math.sin(l.angle)*r+l.y,m=Math.cos(l.angle)*-r+l.x,g=Math.sin(l.angle)*-r+l.y;s({x:c,y:h,x1:m,y1:g,width:t,stroke:i,color:e.metroLine.color[1],strokeColor:e.metroLine.color[0]}),e.progress>100?(e.waitProgress+=e.speed,e.waitProgress>105&&(e.progress=0,e.waitProgress=0,e.currentPath.wagons=e.currentPath.wagons.filter((t=>t!=e)),e.direction?(e.index++,e.index==e.metroLine.paths.length&&(e.index=e.metroLine.paths.length-1,e.direction=0)):(e.index--,e.index<0&&(e.index=0,e.direction=1)),e.currentPath=e.metroLine.paths[e.index],e.metroLine.paths[e.index].wagons.push(e))):e.progress+=e.speed},y=e=>{let t=(e=>{let t={x:1e13,y:1e13,r:0,b:0};return n.metroLineCenter={x:0,y:0},e.forEach((e=>{e.stops.forEach((e=>{t.x=Math.min(t.x,e.x),t.y=Math.min(t.y,e.y),t.r=Math.max(t.r,e.x),t.b=Math.max(t.b,e.y),e.ox=e.x,e.oy=e.y,n.metroLineCenter.x+=e.x,n.metroLineCenter.y+=e.y}))})),t})(e);n.metroLineCenter.x=.5*Math.floor(t.r-t.x)+t.x,n.metroLineCenter.y=.5*Math.floor(t.b-t.y)+t.y,n.metroLineSize.width=Math.abs(t.r-t.x),n.metroLineSize.height=Math.abs(t.b-t.y),n.metroLineSize.maxSize=Math.max(n.metroLineSize.width,n.metroLineSize.height),n.metroLineSize.volume=n.metroLineSize.width*n.metroLineSize.height},S=e=>{let t,o,i=e=>-(Math.cos(Math.PI*e)-1)/2,a=d(n.lineWidth,.1),r=e.metroLine.paths[e.index],s=r.lines[e.metroLine.id].stop0,l=r.lines[e.metroLine.id].stop1,c=m(e.metroLine,r);return c.x*=a*n.lineSeperationScale,c.y*=a*n.lineSeperationScale,e.direction?(t={x:s.x+c.x,y:s.y+c.y},o={x:l.x+c.x,y:l.y+c.y}):(o={x:s.x+c.x,y:s.y+c.y},t={x:l.x+c.x,y:l.y+c.y}),{x:t.x+i(e.progress/100)*(o.x-t.x),y:t.y+i(e.progress/100)*(o.y-t.y),angle:g(t,o),progress:e.progress/100,order:r.lineCount}},L=(e,n,o,i)=>({metroLine:e,progress:100*t.random_dec(),waitProgress:0,speed:n,index:o,direction:i,order:0,currentPath:e.paths[o]}),f=()=>{if(n.isFinished||window.requestAnimationFrame(f),M(),n.targetSmoothness=n.isInIdleMode?.005:.1,n.smoothness+=.01*(n.targetSmoothness-n.smoothness),n.isInIdleMode&&n.pickedWagon){let e=S(n.pickedWagon);n.targetCameraX=-(e.x-n.pointerOffsetX)+.5*n.canvas.width,n.targetCameraY=-(e.y-n.pointerOffsetY)+.5*n.canvas.height}var e,t;n.metroLineScale+=(n.targetMetroLineScale-n.metroLineScale)*n.smoothness,n.cameraX+=(n.targetCameraX-n.cameraX)*n.smoothness,n.cameraY+=(n.targetCameraY-n.cameraY)*n.smoothness,n.pointerOffsetX=n.cameraX,n.pointerOffsetY=n.cameraY,((e,t)=>{let o=.5*n.canvas.width,i=.5*n.canvas.height,a=o-n.metroLineCenter.x*(n.metroLineScale*n.viewScale),r=i-n.metroLineCenter.y*(n.metroLineScale*n.viewScale);e.forEach((e=>{e.stops.forEach(((e,t)=>{e.x=e.ox*(n.metroLineScale*n.viewScale)+a+n.pointerOffsetX,e.y=e.oy*(n.metroLineScale*n.viewScale)+r+n.pointerOffsetY}))}))})(n.metroLines,n.flatStops),n.ctx.beginPath(),n.ctx.rect(0,0,n.canvas.width,n.canvas.height),n.ctx.fillStyle=n.theme.b,n.ctx.fill(),e=n.metroLines,t=n.metroLinePaths,n.wagons,t.forEach((t=>{t.lineList.forEach((o=>{let i=e[o.metroLineId],a=d(n.lineWidth,.1),l=o.stop0,c=o.stop1,h=m(i,t);h.x*=a*n.lineSeperationScale,h.y*=a*n.lineSeperationScale;let g=n.theme.ls;g&&g.length>0?s({x:l.x+h.x,y:l.y+h.y,x1:c.x+h.x,y1:c.y+h.y,width:a,stroke:2*a,color:i.color[0],strokeColor:g}):r({x:l.x+h.x,y:l.y+h.y,x1:c.x+h.x,y1:c.y+h.y,width:a,color:i.color[0]})})),t.wagons.forEach((e=>{w(e)}))})),x(n.flatStops),n.onRender&&n.onRender()},v=()=>{e.svgData?n.metroLines=(e=>{let t=e.split("<symbol id='group'")[1].split("</symbol")[0].split("<path d='M"),o=[];for(let e=1;e<t.length;e++){let i=t[e].split("' stroke='"),r=i[0],s=i[1].split("'/>")[0],l=r.split(" "),c=[];for(let e=0;e<l.length;e+=2){let t=parseInt(l[e]),n=parseInt(l[e+1]);c.push({x:t,y:n})}let h=e=>c[e];c.forEach(((e,t)=>{e.n||(e.n=[]),0==t?c[0].n.push(1):t<c.length-1?(c[t].n.push(t-1),c[t].n.push(t+1)):t==c.length-1&&c[t].n.push(t-1)})),o.push({stops:c,id:n.metroLineId,color:a(s,n.metroLineId),getStop:h}),n.metroLineId++}return o})(e.svgData):n.metroLines=(e=>{let t=[];return e.forEach((e=>{let o=[];e.stops.forEach((e=>{o.push({x:e.x,y:e.y})})),o.forEach(((e,t)=>{e.n||(e.n=[]),0==t?o[0].n.push(1):t<o.length-1?(o[t].n.push(t-1),o[t].n.push(t+1)):t==o.length-1&&o[t].n.push(t-1)})),t.push({stops:o,id:n.metroLineId,color:a(e.color,n.metroLineId),getStop:e=>o[e]}),n.metroLineId++})),t})(e.data),n.flatStops=(e=>{let t={},n=0;e.forEach((e=>{e.stops.forEach(((o,i)=>{let a=l(o);if(t[a]){t[a].lineIds.includes(e.id)||t[a].lineIds.push(e.id);let n=o.n.map((n=>{let i=e.getStop(n),r=e.id+""+l(i),s=g(o,i),c=h(i,o);return t[a].outGoingDirections[s]?(t[a].outGoingDirections[s].count++,t[a].outGoingDirections[s].count>t[a].maxDirectionAngle.count&&(t[a].maxDirectionAngle={angle:s,count:t[a].outGoingDirections[s].count})):(t[a].totalDifferentOutgoinDirection++,t[a].outGoingDirections[s]={count:1,isAngular:c}),t[a].maxDirection=Math.max(t[a].outGoingDirections[s].count,t[a].maxDirection),t[a].maxDirection>1?t[a].stopScale=1.2*t[a].maxDirection:t[a].stopScale=t[a].maxDirection,{id:r,metroLine:e.id,direction:s,indexInLine:n,stop:i}}));t[a].neighbours=t[a].neighbours.concat(n),e.stops[i]=t[a]}else{let r={},s=0,c=0,d={};t[a]={id:n,x:o.x,y:o.y,ox:o.x,oy:o.y,lineIds:[e.id],outGoingDirections:{},stopScale:1,neighbours:o.n.map((t=>{let n=e.getStop(t),i=e.id+"_"+l(n),a=g(o,n),m=h(n,o);return r[a]?(r[a].count++,r[a].count>d.count&&(d={angle:a,count:r[a].count,stop0:o,stop1:n})):(s++,d={angle:a,count:1},r[a]={count:1,isAngular:m}),c=Math.max(r[a].count,c),{id:i,metroLine:e.id,direction:a,indexInLine:t,stop:n,maxDirectionAngle:d}}))},t[a].outGoingDirections=r,t[a].totalDifferentOutgoinDirection=s,t[a].maxDirection=c,t[a].maxDirectionAngle=d,e.stops[i]=t[a],n++}}))}));let o=Object.values(t);return o.forEach((e=>{let t=Object.keys(e.outGoingDirections),n=[],o=[];t.forEach((t=>{let i=e.outGoingDirections[t].isAngular,a=e.outGoingDirections[t].count;a>2&&n.push({angle:t,count:a,isAngular:i}),a>3&&o.push({angle:t,count:a})})),n.sort(((e,t)=>{let n=Math.pow(e.count,3)+(e.isAngular?5:0);return Math.pow(t.count,3)+(t.isAngular?5:0)-n}));let i=!1,a=[];n.forEach((e=>{n.forEach((t=>{c(e.angle,t.angle)&&e!=t&&(i=!0,a.push({connection1:e,connection2:t}))}))})),a.sort(((e,t)=>e.connection1.count+e.connection2.count-(t.connection1.count+t.connection2.count))),e.hasAngularDirection=!1,e.angularDirectionAngle=0,e.bigConnections=n,e.hasAnyCross=i,e.massiveConnections=o,a.length>0&&(e.crossPairs=[a[0].connection1,a[0].connection2]),n.length>0?e.biggestAngle={angle:n[0].angle,count:n[0].count}:e.biggestAngle={angle:e.maxDirectionAngle.angle,count:e.maxDirectionAngle.count}})),o})(n.metroLines),y(n.metroLines),n.metroLinePaths=(e=>{let t={};e.forEach((e=>{e.paths=[];for(let n=0;n<e.stops.length-1;n++){let o=e.stops[n],i=e.stops[n+1],a=p(o,i);if(t[a]){let n={metroLineId:e.id,stop0:o,stop1:i,angle:g(o,i)};n.stop0=o,n.stop1=i,n.isAngular=h(o,i),t[a].lines[e.id]=n}else{let n={lines:[],wagons:[]};n.lines[e.id]={metroLineId:e.id,stop0:o,stop1:i,angle:g(o,i)},n.stop0=o,n.stop1=i,n.isAngular=h(o,i),t[a]=n}e.paths.push(t[a])}})),e.forEach((e=>{e.paths.forEach((t=>{let n=Object.keys(t.lines);n.sort(((e,t)=>e.metroLineId>t.metroLineId));let o=n.indexOf(e.id.toString());t.indexes||(t.indexes={}),t.lineCount=n.length,t.indexes[e.id]=o}))}));let n=Object.values(t);return n.forEach((e=>{e.lineList=Object.values(e.lines)})),n.sort(((e,t)=>Math.pow(e.lineCount,3)+(e.isAngular?1:0)-(Math.pow(t.lineCount,3)+(t.isAngular?1:0)))),n})(n.metroLines),n.wagons=(e=>{let n=[];return e.forEach((e=>{let o=.6*t.random_dec()+.2,i=L(e,o,0,1),a=L(e,o,e.stops.length-2,0);if(i.currentPath.wagons.push(i),a.currentPath.wagons.push(a),n.push(i),n.push(a),e.stops.length>6){let t=L(e,o,Math.floor((e.stops.length-1)/2),1),i=L(e,o,Math.floor((e.stops.length-1)/2),0);t.currentPath.wagons.push(t),i.currentPath.wagons.push(i),n.push(t),n.push(i)}})),n})(n.metroLines)},M=()=>{if(o==window.innerWidth&&i==window.innerHeight)return;o=window.innerWidth,i=window.innerHeight,n.autoScaleCanvas&&(n.canvas.width=window.innerWidth*n.pScale,n.canvas.height=window.innerHeight*n.pScale);let e=0;e=n.canvas.width/n.canvas.height>n.metroLineSize.width/n.metroLineSize.height?n.canvas.height/n.metroLineSize.height*.7:n.canvas.width/n.metroLineSize.width*.7,n.targetCameraX*=e/n.viewScale,n.targetCameraY*=e/n.viewScale,n.cameraX*=e/n.viewScale,n.cameraY*=e/n.viewScale,n.minViewScale=e,n.viewScale=e,n.viewScale<2&&(n.zoomEnabled=!0)},C=e=>{n.zoomEnabled&&(n.isZoomedIn||n.isInIdleMode?(n.targetMetroLineScale=1,n.targetCameraX=0,n.targetCameraY=0,n.pickedWagon=void 0,n.isZoomedIn=!1,b()):(D(),n.targetCameraX=(.5*window.innerWidth-n.pointerX)/(n.viewScale*n.metroLineScale)*(n.zoomScale*n.pScale),n.targetCameraY=(.5*window.innerHeight-n.pointerY)/(n.viewScale*n.metroLineScale)*(n.zoomScale*n.pScale),n.targetMetroLineScale=1/n.minViewScale*n.zoomScale,n.isZoomedIn=!0))},I=()=>{n.zoomEnabled&&(n.smoothness=.005,n.targetMetroLineScale=1/n.minViewScale*n.zoomScale,n.pickedWagon=t.random_choice(n.wagons),n.isInIdleMode=!0,n.isZoomedIn=!1,E())},b=()=>{D(),n.pickedWagon=null,isIdleModeChanging=!1,n.idleModeChangeCount=0,n.isInIdleMode=!1,n.idleModeTimer=setTimeout((()=>{I()}),1e4)},D=()=>{n.isInIdleMode=!1,n.idleModeTimer&&clearInterval(n.idleModeTimer)},E=()=>{n.idleModeTimer&&clearInterval(n.idleModeTimer),n.idleModeChangeCount++,n.idleModeTimer=setTimeout((()=>{n.idleModeChangeCount>2?X():I()}),35e3)},X=()=>{n.targetMetroLineScale=1,n.idleModeChangeCount=0,n.pickedWagon=void 0,n.targetCameraX=0,n.targetCameraY=0,n.isZoomedIn=!1,D(),n.idleModeTimer=setTimeout((()=>{I()}),3e4)},Y=!1,W=e=>{if(n.pointerDown=!0,n.pointerX=e.pageX,n.pointerY=e.pageY,n.pointerDownX=n.pointerX,n.pointerDownY=n.pointerY,n.cameraDownX=n.cameraX,n.cameraDownY=n.cameraY,!Y)return Y=!0,setTimeout((function(){Y=!1}),300),!1;e.preventDefault(),C()},k=e=>{n.pointerDown=!1},P=e=>{if(n.pointerX=e.pageX,n.pointerY=e.pageY,doubleTap=!1,n.pointerDown){if(n.isInIdleMode&&(D(),C()),!n.isZoomedIn)return;n.cameraX=n.cameraDownX-2*(n.pointerDownX-e.pageX),n.cameraY=n.cameraDownY-2*(n.pointerDownY-e.pageY),n.targetCameraX=n.cameraX,n.targetCameraY=n.cameraY}},A=e=>{87===e.keyCode&&(n.wagonsEnabled=!n.wagonsEnabled),83===e.keyCode&&(e=>{let t=document.createElement("a");t.href=e,t.download="themetro",document.body.appendChild(t),t.click()})(n.canvas.toDataURL("image/png"))},z=!1,T=()=>{z||(z=!0,v(),f(),n.metroLineScale=1,n.viewScale=n.minViewScale,n.targetMetroLineScale=n.metroLineScale,n.pointerX=.5*window.innerWidth,n.pointerY=.5*window.innerHeight,b(),window.addEventListener("pointerdown",W),window.addEventListener("pointerup",k),window.addEventListener("pointermove",P),window.addEventListener("keydown",A))},O=()=>{0==n.canvas.width||0==n.canvas.height||0==window.innerWidth||0==window.innerHeight?setTimeout((()=>{O()}),10):T()};return n.start=()=>{window&&window.addEventListener("load",(()=>{O()}))},n.finish=()=>{n.isFinished=!0,window.removeEventListener("pointerdown",W),window.removeEventListener("pointerup",k),window.removeEventListener("pointermove",P),window.removeEventListener("keydown",A),D()},n};
intart_randomclass Random{constructor(hash){this.useA=!1;let sfc32=function(uint128Hex){let a=parseInt(uint128Hex.substr(0,8),16),b=parseInt(uint128Hex.substr(8,8),16),c=parseInt(uint128Hex.substr(16,8),16),d=parseInt(uint128Hex.substr(24,8),16);return function(){a|=0,b|=0,c|=0,d|=0;let t=(a+b|0)+d|0;return d=d+1|0,a=b^b>>>9,b=c+(c<<3)|0,c=c<<21|c>>>11,c=c+t|0,(t>>>0)/4294967296}};this.prngA=new sfc32(hash.substr(2,32)),this.prngB=new sfc32(hash.substr(34,32));for(let i=0;i<1e6;i+=2)this.prngA(),this.prngB()}random_dec(){return this.useA=!this.useA,this.useA?this.prngA():this.prngB()}random_num(a,b){return a+(b-a)*this.random_dec()}random_int(a,b){return Math.floor(this.random_num(a,b+1))}random_bool(p){return this.random_dec()<p}random_choice(list){return list[this.random_int(0,list.length-1)]}}
scriptyBaselet _sb={};_sb.events=[];_sb.scripts={};_sb.addEvent=(s,e)=>{if(!_sb.events[s]){_sb.events[s]=[e]}else{_sb.events[s].push(e)}};_sb.callEvents=(s,...e)=>{if(_sb.events[s]){_sb.events[s].forEach((s=>s(...e)))}};_sb.createMainCanvas=()=>{if(_sb.mainCanvas){return _sb.mainCanvas}const s=document.createElement("canvas");_sb.mainCanvas=s;_sb.mainContext2d=s.getContext("2d");document.body.appendChild(s);return s};
0xbae9802a…81c7·#16,422,430·0x00abef3d…86e922
r%253C%252Fbody%253E`htdata%3Atext%2Fhtml%2C`X<body style='margin:0;'>data:text/html;base64,<body style='margin:0;'>tdata%3Atext%2Fhtml%2C`XRr%253C%252Fbody%253E`h<body style='margin:0;'>ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef`ghijklmnopqrstuvwxyz0123456789-_%2522%253E%253C%252Fscript%253E%2522%253E%253C%252Fscript%253E%2522%253E%253C%252Fscript%253EDynamicBuffer: Appending out of `D<script src="data:text/javascript;base64,%253Cbody%2520style%253D%2527margin%253A0%253B%2527%253E%253Cscript%2520src%253D%2522data%253Atext%252Fjavascript%253Bbase64%252C<script type="text/javascript+gzip" src="data:text/javascript;base64,%253Cscript%2520type%253D%2522text%252Fjavascript%252Bgzip%2522%2520src%253D%2522data%253Atext%252Fjavascript%253Bbase64%252C%253Cscript%2520type%253D%2522text%252Fjavascript%252Bpng%2522%2520src%253D%2522data%253Atext%252Fjavascript%253Bbase64%252C<script type="text/javascript+png" src="data:text/javascript;base64,
0xbae9802a…81c7·#15,828,906·0xacef958b…32495b
Ownable: new owner is the zero a`@Ownable: caller is not the owner`@Not authorised - Invalid ownerNope, try a different answer.This pixel has no social extensi`@https://thedudes.mypinata.cloud/ipfs/QmRda822WS9x6sDmLEHHCdiTLqwvH2zkaEzJM8gmazZgzS/the_spooky_coffin.jsonhttps://thedudes.mypinata.cloud/ipfs/QmRda822WS9x6sDmLEHHCdiTLqwvH2zkaEzJM8gmazZgzS/the_spooky_pixel.json
0xbae9802a…81c7·#15,777,099·0xe1177be3…eb5910
Ownable: new owner is the zero a`@Ownable: caller is not the owner`@You should deposit a splat first`@Splatting is not enabledAlready a splat deposited
1-50 of 104