AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Are you bored? Try this AHK script out
Goto page 1, 2  Next
 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions
View previous topic :: View next topic  
Author Message
adamrgolf



Joined: 28 Dec 2006
Posts: 358

PostPosted: Thu Jun 05, 2008 9:54 am    Post subject: Are you bored? Try this AHK script out Reply with quote



Code:
;TODO: Add simple stats

#SingleInstance,Force
OnExit,GuiClose

Gui,Add,Text,Center,
(
The goal here is simple:
Click the 'Start' button and then
try to pick up your mouse
without moving the cursor.

If you lift the mouse without
moving the cursor, left click for
your prize.
)
Gui,Font,s20
Gui,Add,Button,w150 h85 gStart vStart,Start
Gui,Font
Gui,Add,StatusBar,,Press Start

Gui,Show,w170,Mouse Pick-Up

Return

Start:
   GuiControl,Disable,Start
   SB_SetText("Now lift that mouse in air")
   WinGetPos,,,,th,Mouse Pick-Up
   Tooltip,and wave it like you just don't care,0,0 + th
   MouseGetPos,sx,sy
   Loop,
      {
         MouseGetPos,nsx,nsy
         If (nsx<>sx) OR (nsy<>sy)
            {
               SB_SetText("You Fail")
               ToolTip,
               SoundBeep,100,100
               SoundBeep,50,200
               Break
            }
         If (nsx=sx) AND (nsy=sy)
            {
               GetKeyState, wincheck,LButton,P
               If wincheck=D
                  {
                     SB_SetText("You WIN!")
                     ToolTip,
                     SoundBeep,1000,100
                     SoundBeep,1050,200
                     Break
                  }
            }
      }
   GuiControl,Enable,Start
   SB_SetText("Press Start")
Return

GuiClose:
   ExitApp
Back to top
View user's profile Send private message
Rhys



Joined: 17 Apr 2007
Posts: 710
Location: Florida

PostPosted: Thu Jun 05, 2008 1:23 pm    Post subject: Reply with quote

Cool script - Easy w/trackball Cool
_________________
[Join IRC!]
Back to top
View user's profile Send private message
adamrgolf



Joined: 28 Dec 2006
Posts: 358

PostPosted: Thu Jun 05, 2008 1:42 pm    Post subject: Reply with quote

Indeed, it is easy w/ a trackball mouse -- I guess you could try it by turning it upside down Razz.
Back to top
View user's profile Send private message
Zippo



Joined: 21 Apr 2006
Posts: 56
Location: East Coast, USA

PostPosted: Thu Jun 05, 2008 11:33 pm    Post subject: Reply with quote

I like the script, and I have a good use for it. I make up little scripts like these for a friend who is a local 4H counselor. She uses them as crowd control at meetings.

Anyhow, thought I'd help keep the topic alive and post one of my own random pieces, if you don't mind that is. I can always edit it out.

This script is one of the more polished ones, but I converted it to use embedded images before posting (thanks Veovis). It was a quick convert so it might be buggy.

Most people that can fog a mirror have seen this, but for the ones that haven't, don't look too far into the script before trying it or you spoil it.

Not much more to say, just something to do if you're bored Very Happy



Mind Reader

Code:
;/////////////////////////////////////////////////////////////////////
; The image embedding code in this script is from Veovis' post here:
;
; http://www.autohotkey.com/forum/topic10957.html
;/////////////////////////////////////////////////////////////////////

;/////////////////////////////////////////////////////////////////////
; The images embedded with that code are from this page:
;
; http://www.jfitz.com/cards/
;
; ...except for the topmost logo which nobody else would take
; credit for so I have to.
;/////////////////////////////////////////////////////////////////////




CoordMode, Mouse, Screen

Gui, Color, 000000
SetBatchLines, -1
gosub, definepicture
WriteFile("logo.png",picture)
Gui, Add, Picture, +Center y20 x130, logo.png
FileDelete, logo.png
VarSetCapacity(picture,0)
picture =

gosub, defineyangyin
WriteFile("yangyin.png",yangyin)
Gui, Add, Picture,yp+110 xp-117 vPic, yangyin.png
FileDelete, yangyin.png
VarSetCapacity(yangyin,0)
yangyin =
SetBatchLines, 10ms


Gosub, SetText
Gui, Font, s10 cffffff, Verdana
Gui, Add, Text, yp+100 xp-0 vTxt, %Text%
Gui, Show, h400 w450, Mind Reader
Return


WriteFile(file,data)
{
   Handle :=  DllCall("CreateFile","str",file,"Uint",0x40000000
                  ,"Uint",0,"UInt",0,"UInt",4,"Uint",0,"UInt",0)
   Loop
   {
     if strlen(data) = 0
        break
     StringLeft, Hex, data, 2         
     StringTrimLeft, data, data, 2
     Hex = 0x%Hex%
     DllCall("WriteFile","UInt", Handle,"UChar *", Hex
     ,"UInt",1,"UInt *",UnusedVariable,"UInt",0)
    }
 
   DllCall("CloseHandle", "Uint", Handle)
   return
}

definepicture:
picture =
(join
89504e470d0a1a0a0000000d49484452000000c8000000640806000000c3867f0b000000017352474200aece1c
e900000006624b474400ff00ff00ffa0bda793000000097048597300000b1300000b1301009a9c1800001f2149
44415478daed5d77981455b6ff55ec30d3131840105001416004c4804a1084074a104124892b22690113200b88
8a22a8c8921646c21a50f4892c9204148912252349e01104140601993cdd5de1bc3fa6bba6aabb3a4c709d50e7
fbeafba6a7eebd7d6fd5f9dd7b7203005957e9bc1a346840fbf7efa7df7efb8d468d1a451cc759cfa5f82feb21
94c6ebd65b6fa54b972e919e366cd840494949d6f3b10052be2f9ee769f7eedd6446e7ce9da3bbefbedb7a4ec5
74b1b0a8d4d1983163d0b46953edf392254b50b3664dd4a953075bb66cc1e2c58bad87548c64ed14a5e8bae596
5b282727473b31162d5a440cc358cfc612b1ac0b002d5ebc5803c7891327c8e17058cfc502887501a0c68d1b93
aaaa1a409a376f6e3d170b20d15d3366cca0b4b4345abd7a353df8e08365f265ad58b14203c7e2c58b2de62d29
00a95cb932cd9f3f9fae5dbb46696969b46ad52a6ad5aa55895944cf9e3d0d961c5555e9c30f3f2497cb55665e
54c3860db5f5b9dd6ebaedb6db2ce62d0900494e4ea68b172f9a9a143ffcf043b2dbed61fbf7ebd78f6ebef9e6
3f6d014ea7932e5cb8603abfc3870f979917f5c9279f68eb9a3a75aac5b8250120d5ab57a7df7efb8dc2d19e3d
7bc23aa73c1e0f656464509f3e7dfe94058c1933c6309f2b57ae50cb962dc9e170941905b66ad5aae4f1788888
282727872a57ae6c31ee5f0d108ee368fbf6ed140d1d3e7c982a56ac1834464c4c8cd6e6faf5ebc53e7987c341
57ae5c31cca54d9b3665ee254d9e3c595bdfac59b32ca62d0900193d7a341111c9b24c13264ca0a4a424baf9e6
9b69e2c489e476bb8340b27bf76e8a8989318c51bb766dedfeb56bd78a7df23367ce34cc61f9f2e565d26b9e9a
9a4a44441e8f87aa55ab6631ed5f0d906ad5aa51767636298a622a1ad5af5f9f8e1d3b160492152b56189c564f
3cf184766fc99225c53af1fefdfb077dffbdf7de5be65e50b76eddb4f57dfef9e716c39604807cfcf1c7444434
64c890901d63636369e3c68d414cfae69b6f6a6de6ce9dabfdbf57af5ec536e9071e784093c9fdb471e3c688fd
dab66d4ba9a9a994929242090909a5e205ad59b3465b6359355f973a801c3e7c98860e1d1ab1b3cd66a3cd9b37
079958dbb76f4f1cc7690a7e464606399dce629970e5ca95e9d75f7f0d02e6638f3d16b65f870e1d0c211a274f
9e2cf12fa75ab56a24cb3211111d3870c062d6d2e8288c8b8ba313274e189835353595060d1a64300717c76439
8e333db52e5ebc18361762d0a041244992a1cf8c19334afccb19356a9436dfc183075bcc5a5a3de9c9c9c9949b
9b1b749214b7683071e244532bda5b6fbd15b2cfecd9b30d6d3d1e0f8d1831a254bc9c3d7bf6688ec1d222125a
0009718d1c39d294798f1e3d5a2ce3b76edd9a1445d182f4f454bb76ed90fd9a356b468b162da22d5bb6d0ecd9
b3a94e9d3aa5e2c5d4ac59535bdfd75f7f6d316a690708c77174e8d0a120803cfffcf3451ebb62c58a9a3ef3d5
575f1914d77dfbf695c9173376ec586d8dddba75b318b52c042bb669d3260820c3860d2bf2b8cb972f2722a2e3
c78f536262226567676be38f1e3dba4cbe98bd7bf71211517a7a3a89a268316a5989e6ddb46953500a28cff385
1e6fc080014444949d9d4dc9c9c9d4a2450bc3f875ebd62d732fa56ad5aa9a0e6745ed96b194db03070e183edf
76db6de8ddbb77a1c6aa55ab1666ce9c090078f9e59771ecd8313cf4d043dafdb367cfe2d4a953459ef3c89123
919696865ebd7a856de770383065ca145cbd7a1583070f2ed277b66cd912478f1ec5952b57307af468701ca7dd
ebd4a91318860100ac5ab5caca792d2b29b73ccfd3e5cb9783c4ac23478e14382d946559daba75abe6a1f7ff7f
f5ead5dab873e6cc09d9ffce3befa4f3e7cfd3dab56ba953a74e2103179f7df659c35c77eedc498d1b370e6a97
9494a4893d7e2bdd8a152b0a1538d8b163c72047e7f6eddba94a952a86bc0f49922ceb555912b1ba74e91264e2
f553e7ce9d0b34d6881123349f4aa54a95b4ff5fbd7a35a2f25ab56a553a7ffebce1fb7ff8e187a076eddbb727
b7db4dc3870f37b40d54fc5d2e17eddfbf9f8888c68e1d4b4f3df594a1d44e41d6f5f0c30f1b4ce2c78e1da305
0b16d0d6ad5be9f0e1c364b3d9282b2b8b8888366dda6431685902887fe75bb870211d397224a86653b4e3d4ad
5b57f37a77eddad534f891880cc0f15f8220d0ae5dbb68c78e1df4c0030f686d737373831290ae5fbf4e7dfaf4
a1aa55ab1ac6ddba75abc13af7dd77df1111d184091308003569d2446b2b4952d4ebaa5fbf3e656464687dbff8
e28b20fdac63c78edafd575f7dd562d0b202902a55aa90d7eb2522a2a64d9b529f3e7d824e91e4e4e488e3300c
43dbb66dd318487f4f3fe6f1e3c74dfbcf9a358b962f5f4e76bbdd00a89d3b771adaeddab58b3a74e84000e8fe
fbef37cc73faf4e95abb69d3a61111d1071f7c60c80df75366666654cf272121814e9d3aa5f55bba7429b12c1b
d46ee1c2855a9bfbefbfdf62d0b20290b7df7e9b8888f6efdfafedbc7a8620229a3f7f7ec471fce24e6a6a2a55
a850c170cfcface1c2575e7ae9252dece491471ed1da8f1f3f3e6cd6a39938e84fe55dbf7ebd61a76fdebcb9d6
f6e79f7f8eeaf92c5bb64cebb37fff7ed3d8b40a152a6826ecb4b434ab9468590188c3e1d0748301030668ff7f
eeb9e70c8c979d9d4d898989616b3ef945909e3d7b06dddfb2654b81fc2b7a675ba3468d42b69b3e7dba411473
3a9d54bb766d4a4f4fa773e7ce05cd591f82be72e5ca88f3d01b02b2b2b2427af3df7aebad028d6b5da5042083
070f2622a2ab57af1a72d40541084ad90de759f75ba8bef9e61b53d12b2d2dad40f15d7e07e32fbffc12b69d5f
a4f333a62008b477ef5ef27abda662ce4b2fbda4b59f3c7972c488dcf4f474adfdc0810343b6f32be765d9015a
ee00c2300c1d3f7e9c8888de79e79da0fbe3c78f3700e4e0c183a6e3f4e8d14393e96bd4a81174bf56ad5ada18
8aa2440c9f675996fef8e38f8869aaa2281aac4a7dfbf6d58222c78c1963da272525456bffe4934f465de86df3
e6cd51b523226ad9b2a5c59c6501207e395d9224aa5ebdba691c5560a46f93264d8242e6fd95ca478d1a65fa3d
faecc4b367cf469c57d3a64da3ca53d77be6737272a855ab56244912fdf8e38f2175007d0eccadb7de1a72ec56
ad5a19a288efb8e38e90e6f1cccc4cadadd7ebb52a26960580b02caba5de2e5ab42864bb7ffffbdf0680cc9e3d
db707fce9c395af187506129fa50f7b56bd7469cdb840913b46211e1425dde78e30d4331b6fdfbf793c7e3a17a
f5ea85ece33f99525353a38aa722229a366d9a699ba4a424ba74e992c10051560330cb1d40faf6ed1b9512acf7
1bf84bf3f877e77beeb9470b636fd1a245c83156ae5c696a860d751d38708088883efdf4d302e91f444493264d
8a2a0c3d9c22ed779a1211ddb87123c822a7b76e2d5cb8d0901c959292623166690788de8cfbdd77df456c1f18
0adfa64d1b6259564b0a0af479045ee7ce9dd3fa0e1d3a946eb9e5969096ac1a356a44152a9e9898a8a5b4deb8
7183ae5dbb46bffcf24b58f1a677efde0645ba49932674e6cc99a0767ecf7b385d66d0a04174fefc798a8b8ba3
2fbffc526b3f68d0208b314b3b40f4e119d194217df1c5170d0099376f1e0d193244337d862b67e372b90c7d3b
75ea44cb962d0b094c7ff256767636391c8e90162fbde3d10f944805ee66cd9aa5f5e9debd3b5dba7489de7bef
bd907a4d464606c5c5c5058dd3b87163cacacaa2d6ad5b13003a79f2a4d6a769d3a654b76e5d5ab76e9dc5a0a5
1120152a54a0ebd7af07856584bb929292344fbbdf24ec1fe3b5d75e0bdbf7c1071f3400c41f02ffcc33cf844d
555db66c193df9e49321e57ffdae4d44b477efde884195fa34d893274fd2a54b9728363636e4b866b9eff1f1f1
74ead4291a376e9c5621c62f662a8a42952a55a263c78e51972e5d2c062d8d00f12bd5050d425cbf7ebd69c185
48161bbf9f45afc4baddee20c60c8cd7fae73fff4967ce9c318d88b5dbed06cb111151bb76edc2ce233e3e5e3b
69fcd4bf7fffa072487aab5da0b2cfb22cad59b38656ae5ca981b159b366866a2b5f7cf105ad5ebdda62ced208
90e4e4640393ac5ab52aea50f661c3860501a45fbf7e05aea0184eef99346992a10a7aa853a66bd7ae86f176ec
d811711e8f3df698a1cf4f3ffd14144fa5af346f968fffde7befd1e9d3a70da01d3a74a8c11c4c4474d75d7759
cc59da00d2a95327d39a54d17a7df5cab39fa2a9fcfefdf7df07f51b3972a4a9e1403fbf708eb9a54b971ac66b
dfbe7dc479cc9b37cfd0c71fec18caa43d71e2c4a0ecc8cccccc208b9fbec01e11d1b7df7e6b3166690288d3e9
34449906d2efbfff1ed5973dfdf4d3417da3a9fa6ef6f30b666546f5bbb72ccbd4b061c390fa90bebe703445d9
18863180cf2cbf24d05af7e8a38f0625493dfef8e3417d76ecd861585bf7eedd2dc62c2d00a953a74e506e875f
1458bc78310d1f3e9c1a346810d597e9b301fde4575411a67a63600256565696a997dbaf4013112d58b020e498
afbcf28a61bcbe7dfb469cbb3e82379ccf460f3c7fb6e1430f3d4439393921eb71f91d8ffe220d917e73c5ba4a
1040f4fe077df293595849a44b1fe4e7dfe503c34ecc12a06edcb811949e1a2e14c5ed766be9ab66973e0cffc2
850b240842c4b9ebc5a043870e856ce78f2c5055952a56ac48cf3efb2c656767d3bbefbe1bb28fde586045f196
3280f4ecd9d3609559b16245a1f3140441a083070f6a0c14ad43ac458b1674edda356d0e3367ce0c6ae30f9824
22fae8a38fc28ed7b97367daba752b656464988a3c66d7efbfff1e56fff15f2d5bb634640d4613f13b65ca14ad
6da85834eb2ac13a48c3860d69f3e6cd74e6cc992217a1ae57af1e9d3e7d3a6214ac5938f892254b282323c3f4
d75ddbb56b473b76eca0ab57af860c0a2ccad5b56b57dab76f1ffdfaebafa6a9be8129c3dbb66da3d3a74fd313
4f3c1175cac0e5cb97a966cd9a165396a08bf1a3c4228b4a22ddce70982ec6a212c3e22339171fcb6ea8ffc5ef
b700625189a59b1916cb6cf1a8cce4976fdba14878c19b89b4ff12dbb2d66bb0a8241207608e186b00070034e7
04acb2c52399e12c8058547ee9efbc0377b182f6798dec414bf70d3cecbe811f5509ff125d96886551f915ad36
d81260f7955f5d2e7b304acafa4be6629d201695381acb3b35709c5515bcfa1781c3028845258eea311c3a71a2
f6798c9405cf5f381f0b207f125504834f451778eb51148846084eadb2fd6ad983fdaafc97cec77a7f7f1235e5
04b4e444f4e5ecf8547103005c607037cbe32e964732cba326c3c10e60bf2a63ba9c830ba496eb677607c3a19d
eff4f010618a9cf397cfc902c89f448d98bc473b5470a03acbe24156403d8603ebdb1df5548de5f01027a0bb27
1de7ca314806f076edefcf64377e2b01cfc2b262152355068347391b3a7222ee6579533084a3bd8a845ede8c72
f9ec2a81c1367b224486819b082ddd3770bd04b0a67582149144005d381b7a7036dccbf29afc5c18ba8f133092
7760869c5bee76ad67783b44dfb35bacb84b0438ac13a4884af8d3bc1d4ff176546422db3a4ea83276a9120eaa
324eab0a52494516082c80ea0c8bffe144bcc03b11c330d8a87831cc9b09a99c3c4b0ec04e7b222a312cbc4468
e54ec315940c51d33a410a48b160f03cefc0b3ba1d2f14a9449821e76295e2c1c530f2f45952b14076e39caa60
be2d0e6d3911037907e6cab9e5e299b6654554f26d326b156f8901076099790b74d4f6e26cd8644fc060c1610a
0e95087b14099b142f00e03829489173c382434f3fa8f9674677ce566e9e6d2f3e7fad8b7c16bf9242d60912a5
02f92fd185fb39c1f4fe4955c632c5835572deee37438805006c570a262455d1896a3733e563efba092c1ef2c5
5c1d53651cfc8bfd1e16400a48cd590133c4d8203d4321c25ac58b858a3be8a536f70169875a308074d079907f
2f27e6dec778119cef34fe427697b8f95900096759e1ec78437006996bbf533c982ae598fa2c1a311c2a322c3c
44d85b0080b8c0e039dea17ddead960f15bd934f94f410618d4f34b500520aa8032be24d31c6f0bfeba462ac37
0b1bc330efc3be5360af2aa120affb35c1a929aa00f07909dc4d8b9baa332c1ab3792cb859f522b3041a542d80
84a07f084ec3e713aa8c01de4c5c8e20faf84325361440ffe8cdd9d043e745fe46f6e0082965fe1977d689942b
646f899ca305901014a313abceaa0a9ef264444cf3acc6b068c0f22022ac8b525c68cd0a784bc83fa9d249c524
29bb5c3ce3477de25526a9d8ac964c805866de10b446c90fb27e53ca8e2a07baa36f473c447254b6fc87580173
4517041f185522bceccdc2d572e0bbad04060d7d69b33f285289758a5a0009419fc86ec894c7a8072228ccef0b
31d8614fc0183e4f2cfb368ad363206fc787a20b36dd493553ce35f842a2a12a60b1cc16875df6448ce41dd862
4bc0594712f6d8130b2c4a8ce39df8c99e8825621c1a3345172eee63797c678bc71e7b2206f17603b3b5e1442d
2c674314a74771ad3390fcd98bef09313073fb5aa12661688a10831ebc1d5ddd69381c4627f8da168726bafce9
4eee34fc6cd2be0218dcc3f2f8bbe030b4078025b21b630b285a890096dbe2519f3567e65ab9d7a31e679ee842
6b9d4e20fba200e6cab9b89de1708e1414442b6acd0a9827ba0c0ed57d8a8461de4c5c0361bee8423b4e844c84
7bdc37c22ae8455de71b82135d391b562a1ea448b9b8e6fb2e1ec0325b3ceef48d9b492a56285e4cd0bd07eb04
0943b3e45c6413e1199d026d460b24a3c569b8906faefdde168fb38e249c7524619fa302e60780090096ca6e8c
2b84de3192776a4cb35791d0ce9d56e03104001fe8c021116193e2c5f7aa177fe36d18c73bb1c2168f55b678d4
8cd279f900cb63ae0e1cffa7ca58ecab67f5992d0e22f2fc4b00b05795235aaf8ab2ceb6ac80677907121816fd
780786eadecd08dea98103005c0c8b3e01110c1640c2d02552f1ae948d2e9c0db5c230c716d50b8948a78bd8f0
a4ef41bf2665e3ac6abef72a449826e5e01f5276818ff19a0c8bfe3ee0feaa2a18e4cdc4994258bede1762d1c6
078eeba4a287271d03bd9978de9b8566ee341c27194e86417d96c7625b7cc4f16a331c1688719ae8b852f6a0a3
271daf4ad9e8edcd40474f3a9ab1029cbefb919ca94559673c18bc23c61a4ec58f7ce6f37b591e43783bb288f0
a4273dff9d583a48c1e87f150fd6295ef4d339f102e96156d4146d3f4d1062702bc3628f2aa383270d6f7ab371
489590492a3249c5b78a075d3ce948296440e2cbbc53fbceb15216320a2129bfc03bf0b82f0e2a9d543cedc908
12259fd0eda8a9114cdc2e305820ba10eb9bd7b78a0723a5ac20a6d3e79cef88600e2fca3a270931a8a8d32cd6
295e5c22157600d38458b00c83f15216cee936b0c0d3cc32f346c34811aa6a74e1456db76cc8f2a8c572886118
cc125de8e1498704e033c58dcf8a2910af26c36a4cb651f1626721e297dab0025ef6815e26c2506f264e0680e3
3686450b9d38f85504e7e5fb620c6ab27996a9a3aa8c51deac20768e07838e3ed065908a2324ff29ebecced9d0
8a13b1419534dfd4629f65f225de891a2c87a5b21bdf285edca713b302437cac13a488140b060fb3792f60ade2
c10bde4c787ce2562396c71b424cb17fe700dea185bfcc91f24f207dad419942efb495c1e07d3156b3224d9573
f0a309f3bdc0e71750c821c24ac51396211ff1317e0e115ef466c20c4efd793b1cbe31f7a87258637861d7793b
c3e135c18921de0cd4f699922f93829daa843a0c87e7783b7e53154c94f272deefd601e45c80386c01a488d489
1361f3a5896e5325fc4c0ade95f28b0df4e5ede8568ca1eb7160b4f17e5265fca4db81abeaf4a46b61586f9ae8
42055fdbed8a17ff3639191a311cbaea44a1d58a07a1cc083781c51bbac883b7a56cfc62228edd04160375a26a
b858b5a2ac7318efc0142907e944a8e53bd156c95e1080b78518080c83715236fce7dbfdba53f258c0896601a4
88e47f895b5549db313f53dc58a7db6d270b31a8574cb564bb73366d075e1ac0d8fa68e0a3210c033d389b166d
9c45843126d6330ec03bba1306009686393dc60b4eb87c4cfba322e1ab106dc70b4e4d390780436144a6a2ac73
a49485c58a4773dc02c037becf4d39016b640fb6ebc0f9870eccbb03e664e92045a01a0cabc9af6b0298e21fde
6cd4b3f1b895e5606718cc175de8ea49c78d22b89d36d8120c79227b5419ac4f39eecc8918c9e7efe24b4c4e85
0a60304eb7d3ff53ca318d2d1bca3b6007032202c330b8a02ad81782999bb23c3afb147d2f11c687d0d7dab282
16c809e499930f8718b3a8ebf4933f94e5bcaae0142998c3bb904b844992b19cd0ab5236dc00ee6179fc6401a4
f8a8076703c330c825c28600ef792608c3bc9958668b878d615083e5305774e16fde8c4287550cf16662bd3d21
df2aa3fb5b4f9fcb6e6c30115f460b4e24f818efa82a9b66ef3564380ce61d58ab7850cb675e5d15e6f47855a7
637d26bb4d530012c060b2188b2f653706fafc102748095931b1a8ebf42bf87ef1ea5bc58b3e9c0db7b11ce648
394161405ee499e3cdc80248218903b408dc8d8a1766c6da9f49c1eb5236def7d9e29b7202de16620aec31f753
139d32f92f29077f10a13d276a21e34754199fc8b9586fc23475190e3d74bad04413df8b13c04cd18519520eba
e9d26043e569b4650534f27d7706a9214dd6ef8a31d8a678f1bb8e31c389574559a73637dd69b55df562a6e8c2
0d5fee7f41c8024821a90d2be026df6ebc3ccc0ebb54f12059e6343f4a4fde8e33a4982ac691a89deea52f513c
b8446ad4a6e31142be4568bde2351599260bb1b84c2ad6a95ebccec668569d93211c732fe9c4b5b9722ed24dc4
c75e9c0d77323c3a78d3315977da1c0f0390a2acd34fad7d96c5aba4a201cba322c362ba9483ac028ab896925e
00ba8561315f7481033486bf4e2ab646f0064f9272b04be7101bcb3bd145c704d19e580ff876d0f3aa824b0548
c9bd9de1d0dec730448419527049cfa77ccafb086f265aeaac3a1b429c1ef7b2bc16a69145842fe4e04da21ec3
e1752106af4859c802215977329c5015d464587c1af03b1f4559a79f1cbef9f98d06037807b288f0692136250b
2005a02a0c8b769c88a9422c9af92c41df289e88417c0a80e1de4c9cf7595c1886c15421568b478a861ab1bc66
293a1485c3ac1d2b60a32d4f76efc7db358bd45655c2898013e14e86c3782106237da1f6fa796d5525f4e06cd8
6033ea017fe3ecba5dde1db433bbc02045742145cec56e558613798e47202facff22299827baf05900d316659d
f98603418b03abc2b0b88961b15471172a63d1024801a89e2f04bcab4e3eff8f1c5d71fe34109ef36620ddb723
0a0c83b9a22bea9f12bb47b7fb1e8ec038ed5801734417e6c9b9b00186d32a90211391378f143957337d36f581
5f26422b56c01431160b74fa8513407bdd98ff1b30260360a6188b33a468b5bdeae94ab1fe422a5e17627091d4
a0f4e5c2ae534fcd74006fe44b60fbac9029cc16400a406d03cafe1c5765d3b0f650748e54fcdd9ba90536c632
0c3eb1c54515257b978e71fe2fcc7776e144a4882e7ca978f01fc58356aca8edc8574935e49be4fd0ea00b3f91
8c0f7c4c568361b5df05e41906030507b62b5e2cd1e959ad7dce510038a5ca381b20068de69da8c57018e5cd37
f9d6d76d04d519168ff3364c3311f50abb4e034074efc9c630d8a3caa68e4b0b20c5480960f0608048f4552176
a5ddaa8c7f4859201f482a322c3eb7c5a17a0490d4d531d8f9108cd39fb36386108b5daa84b77d96b2563a6659
a7780d06ce378518c4310c46eb18f9ae809c0b9508930318591f9f15985adc93b3e16fbc1d43bd990691a69e6e
5c9161f083e235dd5c0abb4ebd68573fe0540ee7e4b400524cf4182782d77981dd445851c832352b152fded1fd
f6455586c397621caa8501490ddd4bbf16b01b0ac88b5c7d5d8cc1095230dc9b1f41ab67787d21bbe7383bda72
02067a320d26ea86019984ab156f9015abb16e4cfd0fdcb466054c146230c29b19a4e70446127c1542342dec3a
f5c6037d99264f01ea0358002902750f489a5aad788a54a6e623d98d79ba00bc6a2c87c5621c6e0901127da8b9
9eb56a312cfe638bc753bc1de75505fd3c190685b9968ee10efac4ab0eac881705079ef3640639cd1a049c209f
9a9857f5631ef301e43e96c707a20bef4b39a6cebbdbd9fc3e99a462538834dbc2ae331f20c6537ebb2a15d8b4
6b01a410543b60075c540c75abde97730ce3546339fcc7166f1ab7355eca42b64f2c6bccf2a8c1b0789577628d
2d018d581ee754057d3c195a3aa99ff4f91304a00f67c3bb620c0699ecf200505bc7c86755c5b414e8055f3f22
828abcb8a985621c3e91ddf83884bf82d7e565ec56e59035c30abb4eed04648dcfeedb2216a3b3001225e9ad38
7b14a9d8ea564d90b20df1449518164b6cf1681db013ee5465b475dfc01e45c2d7b678fc604fc440c1011bc360
9f22a187271da92691ad29ba536a8fa302c60931f8bb37137b4358888eeafebf310473bd266523cb17a7b5df51
0153c5587c2ce7626a989f4cd317c2db13c66f54d875fa495f283c9708df1743b546b2aee8aea1bc83f6d913a9
31c317ebb80c405384183aeb48d2aed3f60af432ef202ea02d0fd0f3bc8376db1369a73d8106f3f6a036815727
4ea43df644fa528ca3da0c17b62d07d070df3a1b86695b9361e92b318e36db12e811568c6a9dbd391bedb62752
75868dd8b630eb04402c40dd381badb5c5d328de511cefc6aa6a5252e86d21067d03749d9f551929722e0e2832
aab12cfa7276dcc7f268e949b31ed87f812c8094301ac73b314870846d335dcac19c72f2e33a16402c0aa241bc
1d6375e9ae7a3aa048e8e9cd806a3d260b20e599ba7222de15620d9517cfaa0a7a7ad2f187f5ca2c805894e75c
7b4570e20e86c33655c27b524ea1cafb586401c4228bfe14b2fc2016596401c4228b2c8058649105108b2cfa6f
d2ff03fa55525f7fb79c6f0000000049454e44ae426082
)
return

defineyangyin:
yangyin =
(join
89504e470d0a1a0a0000000d49484452000001a500000060080200000032e2fa4a000000017352474200aece1c
e9000000097048597300000b1300000b1301009a9c1800001f924944415478daed5ddb92eab80eb5283e7c9f2f
d7798024ba2cc997d88166929aea62d87413c5f2f2d2bd947fe5d7ae5ba25ba25ba25ba248a27ffffef1af5cff
fefdbb25ba25ba25ba258212512985997f09c489e896e896e896e896c84bf428f7755ff7755fff8deb0961f078
fdc7019ea42c3fc464a55c7f5828a3697f5ff1ccbafcc8329995facbb0f0cbfcce801d7ce7beeeebbefac00ebe
f387f16e07ef9f6043bbc3f297347017e76fcb05358df9ef2a1e5c971f51bfd7bafc71416effdd7d7d1389f8a1
63e9654cfcd841fbd7af1befeeeb06bb1bec6ebcbbaffbfa886dfb3b02dd6077e3dd7ddd5742f17e4aa03b38f6
75d7f3cfaddc9463f396e8bb247a25a3104996f7a7257a25a39894dd5beb3e2ed1d31eb0c1ef247f8b88b8e8fc
a9fd75ed05753efa89cf37ffd2ddff225fec3f5fff2c45914fb14b93ba24cabd42d1fbefdf7abdde5eecaf49ff
13fec0328972c86bfc5e22724b005e57f965fe000714cc435eef933c034ad3251a4319bc83c43d70113a37b489
da257a4c1198ba34ab05ecae3a37e063dadff44be5e56859a76b8ec1e85bdeeab5e956e3ad246047db35fd806e
5a7ab00abcbff77ae17fe67f582e9c91ee8c986663f7ae9d940b3e83e4e70064acd3490376c1a6439be8250991
d25a12ef775e0ff0b5fd7f45419e79caf09d16b09bb49d8637e7ebdee4f2c0bbad2ad5ebd727a243240ed7be45
429ed51ff7bf09d84dc371885255644a208f0a97f77fea75fa0d06ec5e2f77a8e2feeded17bdb22eb186bce482
f0fd5eb3e0e77cb0eb871829fec83e22ad958774344c8c1ee117eaffad6af60179f2a11cf04c1e4febcceedc76
f27fbfdf9a789f48c6b085a7033c5167a283bb7f20605455c2ca649040c0c1ff521b0db9d48353d30d0afe4bb0
4fff49ba9e1255358411bab1f827f393da7c35ddbcbbeb90d71ff4fbc86befbe1c1cd27cf908066dc167bb182d
fd12ceea3e0566d56980d88f50e33f7e714d888cc6f9225d0fc6e9d4ae58e77b4e547f9da36fa1ee055a6e10a5
476caf6e448692f95526f14bb3a950f5401ad1904dc924ae0d6fb471efaa83a52e1c37fbc83e9c4667d8e9c3f5
d92572d7767d2d53e231b57f8d02a5262e3c41111b573aa9f156a79333dfcdf309f7deb2363b147d0bd777e006
fd45fefca2ab5937228abdaf1d65c7f941310e5bec727f2bd4106a3e8dc0ce72ab7cea886afe7d667ca218b7e6
394a73d27f370344bf2dd172d7f846a061e4fb8bbc66d0a7d1e2af99ee9194058e55d8fd888b60e9d19df83721
378feee2edb77d29cc0901cfe8005a5c363fa79cee83dbbb93b7fa7d0496c3666d5c8377e7620581470e486b65
234a8ede339be17cb820723a30487d38158f3be9eea1f8f9edf642b416ed206bb22be6c46a73adebd10de8666d
048e8931cd5ceba6680889abac0b9aef47faee3d6b8b5ab0f3019b7da4341990d8f685e051bca33e575ce3b2e9
e0d768f6c9d042a6e8b047e2b24c0ee977e0a0734c6eb95f76c1ef87ac36d1bcaec738271a936b5d9f6e1cbd70
0696436a029d3066e706a95ae836724c4fe7ddfa91c4724172eaf791592632470e3702599fb3eb11bb48285fed
c685dca5c2c0d16e00f7af5f4b3071401bbd176f8cb80dec0448afba644934effc7d8eecedaad635ebc694e8aa
82bc21cba0aa75b39e67b2b356d9b3fd9ebb2e30a2f521b2477eb626447af28d31c7cf86a7801d7cdf250c535f
a41d41de522fa4e70e82a92d7117ae16abfe4e836e4c097ccbc29f033b1668dd7d41966a1f54fdd17747321fa9
190c1364e8e5affc9204eef3fa0d04b1bcc902cd5a7ff0d4d3f72339655deb70c61de38ee1908fe73f6fd0e9f7
8e0d5290ea3ea2f6b6fefd9af2d0bfcc1176b208ff0d95603458071c68ffa7b76bd8215950bc16bb63fd7dce5b
0bf1b128263b27569b6a5dbb6e6c0b645df86347e04708cec940f02ad4ee84bbf7f98a8cd9a4d33827d50dd163
197a5c8f5006102c564837d031024aab824ad30e7bdb59db37dadeb4043c5fefc13191af97d94b223acb013a24
b5e2030fb0265144f19a115cfcca76b65122c570257ca3d60d10c15d2ecf235a289e60fdb442ebe66ac81e3137
a50bcb0fd28e061fb57dc478e354206f54d99ee00fa1e4694e9761cf2f69716d8864a8e3b70eff8be9b372fad8
dca34a888f3853bd64069102bbf07063b872f09fe64a044a2a440e6d418d0fd05296822af7bd93658a44b9d6e1
8fc5ba8173f79b216f0a13af6a5db4b713e5a97152f26779f228c6176808ec441b21b78f3894c59a179360e1d1
48142905bbddcecd614e2ea748c10b6e606e403da830cf3b49f8c367cfd1df61da58b549306edaf11b4894f0bb
e36ee3b5d845362e0b7f26cf97a87db953dd882023293958eb4cedccb3432953d9892243b43e703f99f475ee4a
b147f03e92676a7a006fea3703165aebc9b86d7de5067b55a91797da7eb490a338557b5e57a5bc824add923bcf
e4521922224184458523b96ac145ee9e76c450140fe66a89f3ccd0ace9f467d83fa58efaf4c35126da9590d753
76996177f59e2f15b00fec0eb582fb488286acc5cc30fab474cf0e011a1e854081bdaf0399a61dbc09caa03b45
a5abe86a6f328945d090a7a8a814d3dc39a7058c970da601ed28643f28b31cae5604d84a6d3368a6bb90222f1b
72a78470fcb7a6e74096d78b74c29ebd5a7c05028c3b0cf849ebe64c8dcad87d23de0ff0bb6a0f278ec0e56010
2f70a1c4649ebb95aa0db9cc29e497cd80b51496bc0a8a62755e837a029a0f873d8b66766639aab50ce6b1730d
3b562c93873ce406e25a913ce77fea6a6bb7ce64dfdb2147b4c43f6edc6ed7a4dd48271533b1fee6205be855ec
c81bd950a5eeb0a1917bc1f3f10ef23bb9a3fcb3a61ad221e7118bea5ad4dc6d3a433f42cfa4efe1a075a889b1
8d53cb9ee9e2cf6e8fcd7afd36923b758f997dfb16c4439e463bf94f4a16b843b8301d216ca88b0bf64f1da192
1ef7d0ff18fdfc140d544891a2986989ae1f888ab9d940c162f3482a8076f8c0f097dc4db66d63059adfdb67a4
1e6390df9903c4a0467b3b9d20228379c492d5e257c9392626be45928ccc8036fcdbaf893f48bcfd0e0b27dafe
b1e97bc6ec5bc0efc8c1410076569784e9eb7164114a440e4463af35863565c727ef3887ed1ee812a4734e153b
f10556b9c194690a981dad9782dc6def2c0fcd18e1f27e93a24c80827ae7f1a6d3dccfef5ae757087fb6392d0b
b3657f2da635d42dcbd8f5d7ad3b76596d06f2ae36f953aad14eeb02b07befc63d34f3fe2473d98edcb9d00092
f2dc141edbeb5880481dec68f14ad4c0ce2be1ee0b37fd42027d2bd2a52573308d9fcb77d65a8111b2690564fc
1ceba1c3be831b7a66c72b176dcfd0d86f4fe590f0ebd47fa79fd1d1ad870adb0409a987300df6bd5ea853e14c
bce3aadb28e080be17023400cd2901f7262d38914ac07a8c4bcbcc3d308efc833c68b0136f1f892c138bdb93fd
630c76cbef08ac91073b95e042a9e76f3de41597b02afbb3339700cfbd31a8d02d7a9356b6637baf948033f325
acb715a31ef430589db6045bcbece4a820e3d07fbfb3031fab8fc993c68086784a0a5261eec4127e1798b718f2
12470907b686407abb4897b9550c7780ccced33ae9b0671701408d37268bc441e264ceef8c7d545c2e9e5582cb
2bae8e70446c3b1f2b8538a87ff2de5b2476ac41c6e96125e2ad070245e220c2b16f781f46cbc95d59c9efcc5d
f93b14c18722325e2b3a2c579c9cbf6fff83bd8bf3ec5927e005f75e7cd673b0a29fe80cb78e00e3e6a42bb656
18cff260077e0d0764d4a7d685c920676cf2df09b0a37c2ce2e560e70341ce4f6457cae07b4f5931343568fe1a
916a7ca5fd7459cb745b62a06792501b5999bd40781398493dd82824507d61c625bb6fe1332ee3667bd6267043
0356bd4f5b9577fe33a27892ee2ee777ef2d0ebca4a664d8825d5059023d26fbd134ad0c0b1c1b9647800346dc
99c9789207a93ca83fc0b12515727699cdf796165fd12ceffd4c2a3f5f2f2e08ccfa0e13d2d565acf27d437932
d5786073ac8dd3f99de17a30de5a2d17912b4e6844819b0e5cd6c42b1ac21410f2dee758fcb380538e3cea95ab
26a71867b06c7e05c06ebb3f38c2951aeccd45fceea87bf3cf4ddc19cb9c06e7b2b4056a7c35e441a48b00421e
5b14f4d14dbcc9bb75c2c1193f6f9d3073b1afbd3a91fb4fa27feab923d1f26305bf8b9d77e46311d21a0dcda9
bd69a8de48acfed4ba7c1401aec5246aa4862d753e3b61c69267558b20efd8f0e4ce5e83c2ee24a5e08c65bb78
9fe90765f16a3b88e43e3998200e02ea48055fcef29c74a6d08528f401356ab5d1679c313e0bc2e579e3ca135b
848202529b624cc73ba83366e79686fa1c79e892e9902caa984eba83baf91d4ba64dd69b98b3bf468b6c277a36
41642d33aafb050cd891309a6453267faeda01747b209596c21f4ac755c1d96399a8a8d21f3f27ddc4677d9074
1dd8490b2eea89007b0448f3caff274931ed73ac590bbac2d91aa34f2e1d0ca6e7c62c0923c46cab89fcce533c
70def00e1da0c358f69c2972f78f744378746f1ef788219d6ef7e535a2de52434aa6dd966aad970e83c33e747b
ac90adff9b4cc6c352b00325a5e29e0ec3d09dd21e170ec823fd9756029e09cce559a9c6ae97fbdc23b828d814
69e408f2d690557cb29a07cea8d27e008245e86095ffce280fc6325644cf44214272d7088b73edd9e31814a5fe
3e2213754979d31c023f93ef8a33e496f03b225563656b62362155e69d3e6c8f5c76db5f0037bf5a5fdfe39a5f
226f91afee0eed62729c6e2d6a031e84862882e48cc809084711c8ca197686ed02140ff95da21e9eb04bb723ac
d16465fb2f695e9fe080ae81d9c69074b553250c76c3823cc6f11c597ff5f0458f13f418cc7609bf6366e30eb1
b06b5a0ce89a2ad7e14bdd3fe4c7eb7c7a52b995b5aef99da2cf88dcc9aa6c35bfe6422f9e0923e485aea6c101
b71ce1de1141c6f49f6dcc52c6efa2e6a7de9ec55e5ab654928bb22517f9efaab163e79154339173c33f42fc5e
a1faeb676b230d0dba47618dea13942853161700daba6bcd654abcd338edb2eb5dd1096d5985e09ebaead348c6
2e9413bdbcf3e04d6367f377e812b03bca0c90bfb5460eac72c62de784d4e2c5d4043c451a737ee7c12e316c0d
c9cd19e244e03335b325ee90b473ce976d67b2cd5ee1664e3d77965b94d20b79fdfd519c4cde8cb5cfd41bb665
efb4a19cdf86dc1d7d44cc23bb0c1d52e56b27aaa64e23b2bc1622b874b292f68b1dde09d7b01e4283cb745dd7
6be8786e94411e30a96af007cbfe2e1ad62320cff7588c80ef8c29b002e63cbf33e7536841dbf47bc0726c0b32
6faf44607a31bff31b604fa2897c79dec4b05ff2297e3755c33d0bbe98df312477c56617962027ded0decd17b6
beabda867311e4c11ba060674272c7f0882a36516e963445a8bdbff76a65458e83a86f70814d03279e49d62c40
a72005e0e4198072976f9fcfb767bb3033f99d67762c8c26c8f23c3efa7ac08bf99ddfc9f35e37592e2b10dc53
33d3c24fe71bc7db4331c4e5f35b599b99ec6c1c1fe9334d4f2353a8f83a4557aa450bda2398be7511c58b06f6
557b6718d420026e9615fcce82143a8dd8e77e32a67bbe0a251c64dec9cdfbfba3b8b82969d3063077a138307c
a1ac71d7daa230af73156d1a46cccb9d512df5d273214f3d5b563e1159779dfe85b7d71efd8595634fbdb5b255
14bc95c255c876954340339d05ad7bb7575bb028c60bec6deac40157d99ba8be118e6a5aa1d8514f1a0376ad74
154dc88335185dd20cf1bbadd0d2fb4d7c0f710a589e91818f4075c8e3a7eb5f6454bed45042fcc9d7d7b0a1d0
9e755b07b65474f6ac5b011af7789eb1fed449deac038db7a448fdaebada889ebb2ec5f91f15b5491d1dd51e0e
bad7a6cdfee5250346d2a1c14737770552a5d8835f0ff9c260671a090fb85ccffaef70f9db168b60029007f131
741bb3ea873e17ece01809a2055de32f41076cd5223b149c4f7ec0ae76f0c93f7299382cb24f551a6a3cfff77d
87319747333a32c89bab0db6fbf496c310393a7abbbc3067aafede98732df4007f956ea092e14a1b1e86ae5532
a0d99bea30c2ef64563ae69c32a318b23cc4ecf07d2fe3777e60922944872d682a4adce54d5b6fcce659c17b4d
1bd9fe9722962bfd2987239f3e85e05e49bcb78e9a57dfdb1906f26876dc368918c02fa2a216026219e3be4980
e2050d24ce7270b6de3495f8790c0cd836c956b56d014ba4a0853bc830c4d2b940a7f85d971e90aeca501d5d3e
caef8a8b24d80261d15f17fa9e8fff557566870af0e590c7e6d551e9eca6bb33f09c9ac12be6ef5c0676a6a547
aedfbed96a9f170c42de9a094480b92053149a0870ffb7f2bb0590a76b7571552c23c2c23a6fe1307277721d8c
09f3a9fbf3e3158454b05d1bd8415eee80b0bed0c51cc1ec287204d0d44ebc9dbec6f72cf89185090d795752a1
bd4a8084bf5c76f4f585a5f2c1ab7da22b934adccd712e70b3203250d1b3b1c56a785e0894967cad013b8505ba
d71143ea8ab8613cb3d4b60600aabea61dff5e9854a9f30d5a21f8ce6f55133e52da697827554d761ec6aa1675
f74c208f8a018ba3d3e168afab6ebf83e8dfcdee3efd64cca35e47640882b00c5b5a7e05ccc9a69ec77d6ea545
62248defc75d443da98a9771d3c65b41f1f6283f97c8eb4ab2610f39a4f3ee5ae7d0a0a00de264ab420e543bfa
1420cf89a9f6cd8a2bdc5784c0b112c4b32ad756ffa3d25a588a5b0a56da35fc4e772ec16c25e8ee596579b04d
407199531395cf1c32e684872ccf5a2529999690c7578d3dde052093e769c1179f93d2bd02f95d0926b75e0979
32cf4e4ef982ff558d040aa676e4c1c773be141a03536733da1ec819bfbb70bc9c557552cebb02b25c2d5b8c9a
05241da8e6fbef6444c9b7a81bf3e559df591c3498b9b59c2974e482facdc66a984bd1d939b993c820e64593de
ed0e11e3bf39b4176442b85d20e9073cd79e6860db9061dc2ea938bf8bc6ba029f103ebfd28630a492eb26e2bd
f5325739d90ed1b2aabdb70cdde03891c463e827504b9ec804bf4249da55aad41d9f4503cffb42243e626b8e01
46bd9eaf0c6b520c5805b53836b0881780df791257fbefe46355cd08712c4f650b4a82e3f218a00eafe9b00620
cf0f2d6d0c142847166ae8b008e97a9f52d4e229416d47111c49e7959319cdcdbb7c1448eef0503d1421445df3
2a4dcca6f9ef0a185bd7e0bf6bf4e5a1f7570d1348b7846928c492d62166073200bc139ab97ce472d314a10784
60772cd75949ce00d375fbf3a717caac2be8d2aafe54536028c488bd4e802b4ef6095e14ae8dd1910df7199aea
4e3921c5b3ed7279d5de51f305d1464a6a30ec0026d70fdcb41ff74d4627dbb3a48f4491214d9e01150abb7b26
797990e5adb69b2869f4927a5f9cc16b3d114411b3a5f2a92b406155a4ed92a7fc2faae99aecbbdcafe6e0652f
fe93b580f0a729f8319deb7dcb32e0375ce37f30942b316693252b895f08b5877a3d055a0676c50d902da8d949
a945f6a3a0c7f99636fdfebb62e21566a928611584784605f2e2e6c0cb3652318b64837631d8e511f44f11bbc8
46f25987457b6170a3813885cbf4599962c9bed6df7bacc744f7f9fa60a06d500c3e7d291a17aa75cc00b2306c
549ae6af115c14538f68900e92bb1277d88e9a6e94fe307a777cb608378af27905d936d104bcaa01eb19d66c4b
a998434936f8d7f69db0d4b46de5c1ce34bcfba22b88cf4add9129266a9948d73fc65eefb91bc99ca33287a338
6a69def415178c62ee7ebbd28ae018da50a41d086ae73ba89235a744b8ea314cb12a47b78545202eadd108ecf4
58abcc05697a6b9bfd25e3b330df70a6ff8e503eb7cf1b2aa5e261893aa9641469cd89f4ca9ee303bc827225f1
0f841c10fa81341debd7f9f258ef7beb8a55f135b046ac13a711bf6b69b832c0efeccc75f18e0e9d15838cbe97
06c1fda957d388b0b434b84d47ec688ea2072d5130991b7c6ca5077ccf8c31a8b46756cb22b362e3b9da2b47db
8c1c023de2fd78efae7dd4cdefded1e2dcd3df703c7ad4ab8629e6aed5b1f7f7c98a44e508873bb073b44e1290
e2060f978273aa3fe3bd733925d008f547540bbf337326a7f33b719e831099e1e6498214eb8b0824601a07f9d2
d62fd444ee38c2be434543aab5ea1c82f626b3329b7c4eab19702e2ddf2d638a691b95f5ca6690c067b2ed24a4
2ef4df4144f34934b9114a0ef564e9225ce91548a1e6bf15d13efebd54641aca4b03d656d7bb80516434ed2d15
567a21d5d655fddc097207c7ec84e7b4eabf83459d13fd8d9070c121a7d0f553dba5aa01e7e5ad5f2cd8b1b31e
cccdb0f5b16a98239f7a7989fda03b8fc91a92fcd87861e00697849af76d18c8a48fa8917c80fefe2808f5603c
85dbacabe2c6a48713c817749a2d5b9659310d9cb72fa43413ca764c02ee249c8c4297809d45b1b61a03f64f1b
c591580c16284745d7f2f46383adf0a7c5fa9a6d9180ddbaf82c8ec9ee272d6a34ed31da1e03811a2cb71fc424
86705cbdbb5bdea622c5a5cd6247924db81b90b183df450f51a05e29a8a51d653cd13ea374d0f8920db4d168e0
753b325d91d2fba6346e3d32cd58e0dd8f8f0acddd90251b3e7f5383c4dad16e8cfa6ba6de54c12e81aaa34991
cdea628f320bf99d67761ac5129ba9b824355df5f4814819a49fce2f612bd077664771dac0a6a88ae50d8bd9c3
efd22ff04d71f7fc06e019111d924ba900c4227e07a02b964b8d7770486ddbab901a4a505caba8d5dc27ff00a9
e00cf9b3545659a885d3e67f71d53f5f72b52476252777d1f46af57a41bee66f32c7ee8badd75cfda2c921d037
eadbb2c10c3be9943c73a63e4fed25445ee5a8f68296d064541355316725bf8b17c6181124333a70ea9081751c
298fa6f9b46cc82912994899d72d78bcf9b49b24a5639d445d5ca3c452240cf9e3c051d060e906aac1554daebb
32260a1e5bb690c3c2964b6e267acfec4074038f53f2201df7d6b5ecb956d2b1f0d022ab740f9e9cdd5aa27da2
00f738937d4d958a2146f66cd85da6b74066482215f5461d44f2b58b34190e4fe1cb1164679d9e686494adab95
da54addb6fcc18b0a2442169c0435562d86adfcc05bbed278c0ebbbef616ece43e02431a47d1e9794a1e772afa
5607a5b59c3b43ba90df9dceee359116ef0332ff64be9a5dd3e0c80ed21f0befe495ebc3e7bacb9961545e2209
7625ed1b8c9cfaf25738010123c22c894a1c5e88a216d07eacea737d2f4d3d96ec48e9d69e2edcabc98bb4ae0a
0ec5d5ff6b2a17eea3c3d945e3377082df51f84e84e5039959a4db05037e47676dddc8968cfec9241ebeb5c4f1
269076e414cee4499ace7a74a2e55f24857fbd2757a7657078edaafc6ea244f2a1f9a1e02da9243091a0459f2b
1f5e3c2e7de76eed0669a326af58a390f9b6a02d55f6510702a737f018023ba420545556ee5f75d5a29ab2db98
93d1d6d2c03249f71a43f6752ec844a2c693bc77ed568b3e10f8d945d8b6902e0deed2e7355a3777d7b46bf20a
fdabbe9f4733b27d249b4a854e89caa67d94afbca4bf3f00f8ae4379ed399ce8283b2b5136e3fdaab066af6247
7ed88b1f7e23c5d387e8f05d7e85d67dab4eb4422107895f33b0be02788f6e354ffee2826c326eac44c5ef2ca3
189d7c866aaeae3c6fee0baf38e12385fe4e89e48c2158397be234e5217dfe98d65db988235ad7324030e80279
e5a9ffe843a0cecfa8668d0dc1a68e87cec5b63be469eb1d7d52d5900547533b68566f66c803c0533e293b65fa
a56c942b8a5f0ddb7449d47b8499f6ebf314adabda0a03bb6678dda768dde09133c0dbba32ef90208f537bb4ed
337e6ee69c7d7bc9d425e7f0cac609b5a0c3be69a3daaf936a97e4a0b4fff13c49301170fa516dba588d419ec6
113aa5cfcbb40e67e6af674013b4ae753a3415d22e1db7402dfb28bb49550c5afcac9667efb38965e3c276b734
3ecaf1d58ceaf2471d70b94298517e3221284787019fd4140d3e43afe0da914cbca6704122dc9c040aa0f1754e
82c262d8367d9eae756314ac4af1da3579b6d651cf275567312ed85402e234923b3b6b4609f52c1fbd269c5ba7
d52e571444f8abb02814b419fc284ece3c43481306316b5be6a305cf7c23c9b4555d7a5c254abd3506176b5da3
1ec2686604eebd9a7cbd19abe1d59688fa8a66afc9dcd2e2395ea07ebce3528841ef610622517530eb3c16b602
f2926cdba39d7d7042f62dd21a48ea3a75f4cf06dfb3a6f3dc7fd637e99a4ac7057e003874a22395ac4d9fe73e
ed9c67659855a3552d9afc6d178356e16e1ff5d6cc0604fc79ea066b8e8c8e24c131488afa2acc80bc9a47dfb7
d207fdd4a8d97cf065ad17e868b5731758268e25aad1ccb912f99dc0ac7a5e51e3a1d2a8cfc9a8985147c1c0ae
b1fd569d22b66b72341667ce4a3594f5ef3dfbccbaf87dd471577e52d1d9fa8a124c7c838f5226dd9bd6f4e29d
96c1ac0cfb05cfb38d736fa31ec2840391a616b22ff72248099ee5068ad48545afdd225e9bff551b8e8214aa9a
50e749ba4bc4b73f8f1b6635f3b032ffb0a6cf8b7c7340c7f21157d20bcf21a64f097c9db3ee1943b7a6ea896b
c8d4147728cee4fa0aa86b116b40a3d2f13b6d90876f63b64faa5ec95b6b04329cdd0e0bdd1722b89ec4bdabaa
ff5f6aa01e10f2ce3825c9b69837fd3ec18e8bb04fe1e058a7866846c95c7fab4334186994031c1203b6d16707
1baf9f803c96ad8412586cd9478377e5275f9cc5bb01b06b38b83f5e7210b7c3ad2c95ef8b9bb1aa0b9b234545
cdc998b1ccc99232b5e9f37aa01479e08239647fba1b38b5e833f8c0926186046748b74c95ce21afe509cfd974
7212b83a2d15f4183b29f1f6c0dd74f27ab6af47efc96cdb60e62f8a4a649b82bc93250a68f22e6954747d1982
8fac11aa7fa7da07c6be8ea7ae51d7491abb408634adda6561b14453561f1a8fd77c6fda8170410b835ebcfbe6
e0ce0a37ca2dd12d5113e4fd8a44d5b8f0cf68dda3dcd77dddd77a7be23e5d6ebcbbaffbfa9b17d1cf09f49f68
f472e3dd7dddd710d8fd10219a1b13b8f1eebeeeeb06bb1bec3e7f3dffb6da95b2b472fb362ba6c8f29122b9e5
36ecdfd7c0281bfc17d62bd84737bffb96eb539dc8eeebbe7e6c2325ef3c7f47aa5f84bc5b9cef55b9bf2f5db5
f7e7ef81c3cdefeeebbeeeebbf723d4a29fffbdfff7e469e972cb744b744b744b7445ea252fefd1c86df12dd12
dd12dd122189fe0ff3221192da4c98540000000049454e44ae426082
)
Return

defineyinyang:
yinyang =
(join
89504e470d0a1a0a0000000d494844520000015f000000600802000000358ce61a000000017352474200aece1c
e9000000097048597300000b1300000b1301009a9c180000000774494d4507d80605110331ed30abce00001b12
4944415478daed5ddb72e3b80e045cfef0d92fc779b04de1d280488954121fa95259db9bb144126c028d1bd13f
fab6eb1ed13da27b44b346f4efdf3ff996ebdfbf7ff788ee11dd239a3222262211f926c863e67b44f788ee119d
1fd183eeebbeeeebbed0f584a0b1bdfee370c87a2c7f5c4bd2631111f7f60b4eaaef198e95babfbb89be597770
d0003fb9affb5a0b0df0933f8c0e0deabec28e6a44cb170c241eaddf31b46c747f7a3cef9fbf7cddbcc31f568b
be8c06bbaf1b1deeeb8686fbbad1e1bed6ebe1f7755f373adc17501feeebbe965ecf3f278b538ecd3f3da2973b
d385dfdc6b748f68fa889efad95fff68f4bb98b9d1cd9bf3e6f5ba7de2de7e3ee1c1799f38bf3bb7657add4988
48e4b515dbefb645cf0bcdb1114180187d18666effe2b538f5ebf0cff11d8746547328ed73f7672f91e3d7eabc
978bf427ee2db9ff353e5113f7a49e763cabf63991eca5933f77448fd1afe3cf6506bc2b4a716b6a6860fefc98
fdb97dbe4439a7f1bdb42142bfc4c4199b88fdbb5f5bdc5d445e1ff7fc763376523a0fa0d8476436917bedffae
6fe88086cb0ef636ed4e1ae1fd1d3428bf6fdf039f1bd4a3f331c5e2b77b380f107a01e05bfd8f99c191cd6496
fec420b3ed31b448fee0eade1876a07c7293e817eeedb1bbbf2641e8fd43f96b871773a1a140cf17343013710a
10fe4c096f3ba16126400c1e6c596c8493bacf738e1c802706f54855edbde54fd14bcfcba61498b7dc460ebe81
d5ef53281845c17d020142f223e9b542fd36c5cf066b76defdb5cd767f1a5214d0c0a7d76808741a40c867ff4b
f2f63204c71b07c9a1bb4f812450ea98f7d4079e70b83e871061577ffb19a5bf43f8dae150cb5f83868d74b08b
a4ad47ba3633efcc469ab0267d7b8c6780f895520731f4ecdc6adaa6cfe26e16362935c7b12d2eb9a60104785a
ce8dab539645b9068d09535423eb357e3d27fa6daeeb85bbe0bd76e43989f0fd9a88832682f0ea1c69935159b0
70efcd955071e8815321ec5476a6a9787d42a21507092a43943ad9dfab081ec6c7147c16241fb687fdde504e87
5deab516c4eba57ff7beda63c3e5c31bc2a53c6adc1fd36cc7d89e1eb47f776dcd76ec525eba4cbbd3585b3473
3d11133488c8c18d280e6ea1e1d356eac38ceb1194796bf6e733e84eddc61ea1dfc0fd461e2bf7e7f0a4deb82b
dc8e719044503acf52e8713cefbfe819d181bbebffc5ea9a6b051cb34aa2cf224390a6d826a238c62f9c42c36e
46102a0e4eeae2de91eabe9c2a1583237af49bfd8e2d1cd21d829a2a6a94d2050d6b148e360ac73844cdb03143
7a38acbc39bb1b7832fb35081f3daff51975a5c3728f05003e0bbd4d9a68fd16738f0778910ff0f93f8f838203
34c037dbc73916efa0bd686716a2d75b3b55591dd28de5a886391407317d4407ee5e48e1059b6dd7b152f00e87
8570e91a05b39f91ff8d75a08f13b95e5bef18cd3132658f3d5545f47f9467a5e1961c0588cf1474d865071487
a8acc24f5eb0ddd431e3aae8a49490fa708dfa3ddf4bff1384e8eee72f8040d0f03b8961eef824551c5c58e491
83b7d8cb8333f6e8038769d2d0c239b8bf3edd629b8254b48c7b2498cbe058494d4fd27d2d5ba9a86fbaf85dfa
2d459876c8357db8b6df922b893f78063caa2dba47f20f850c5a6239786bb2af5a763e6c2792b3f7f6d893c80f
b102882c046b37346bd6a0cedcfd172a2345aca4f3659c79ec999694a7d2bce66b0302cce15494ff82cf26917a
48b93c391defd0b15d1b486b6ceb700774946f1b84a7ce7de2163ece3b4768688a43d0e435b1af312503889ed7
1347d47947099a5123fcdbaeab03b4a72048e7883abfaa47bea0efac58978378213b9a6f3b992234ec4a9d081d
e1240e8de309a7b0d8966ebe5c9edf599ac725719eb3309b5b81ca187b6fe36953c26e781843ada3fd0501848e
aa3c793af58fa8f3ee8e9bec8fa49865f9778e6857a2acf36fe700028b386f8dfaf7514b6e7603ef97bad1ad74
4e7718fc2e6741114ad48618bfaf417ce4af41e9f1c36acfd9b36d0920735b9068d81860a93870104bbc9803be
f4eaee519dae55bc48985d30a2ce58c9dd4d6a8c7cb9c4d3bc63980368d818963da9dbf21efbb6d2b1eb396565
93f4b28f558f2a4754617c5a5ead6d3fc514afa0a199b29fbbc2589a6d689f158600b1c803dfff9d75550e2a99
b0cc5d6a0a0d4cda4ebbcf996537439dda5514d93dd1aff77d6868a01013d9022c3d791fbfe71c425d810ebac2
8b478d64319543940af3a1695fbc660921346c38fdb11924ca568486cfa36a2b2332cfbfc4095754a9a8432a4c
b81419b379dd15c991988ca4550f31317ba00ed1cf4fbe3e48ac2e1626dc6ca8cf107afd9d2763db9e27974d43
9d5e8c9a196911e8d9825d163e6084c9457c1189520944fdd6258734fc6fd4432610bf122376ff0696663aa5d1
0dca18292745900df6e790450d0d10fd04d995d01001026e0477d2d430d14ce3a6831c90ba399645b62a05575a
a4a8c42377a1f0d1e6eb09fdcd84998d9a10b43a17beb2591c4120749cd54f45f2406bce571f4255b004e8593f
a9e600aba7944c486bfc08526bae01aa426ef34b628f6ba0cc683e77fac602530bd141d9e7ad0c1ce487c1430b
c2915ab35db1a39c81a3cbf5e98c4cfe680ddaf1c901ce4dce0f1973835c81c31fca522d084b51c79a5844c016
849a8b0b8ee29ed3725ce795108673c972d09658a9552157b2b4381a9dc611fd00267b68db6bc327eee3d85269
f55b0d29c102fbe3b0edf5dcd131e1266e81caea21b6c8e4736588b4775aab70db57298f00ab72663c2953b37f
991a1b42b63c99ae5048c143a66b2b6d0b8d026d2e283019439e94b78f0efc865f7b4d0c181b031c1811f07847
610462612594d5b325d9a0af6d323a989819273a2f29b48f5518231a170869564e1a962cd4e747bc06c1a9e689
e86ee7302302517d6f7c514ccdd254b4060a36d6dbe899de12ccf4736d16590859ad076de5ceadffdfd90ea3bf
e196930b31423bc2642fb648e345463d6876df4b1d7b856215ef20e1f0151532f8da529badc1b5b5dff29f8c50
6acbfc580de8c306a126aed2900d8e56b15a6f979d0730de4488ac28a9e22c3efd5b63537c80f782203b629b0d
54967addd29828753b404d941c38bd09e5cb88d585170d2deaaa512dca0e45949fe6638eb2ba1e70d1e7e80eac
8f1193772a84f488377a25bf37078135e6a57da132c9ae43746a1acda687c7b869b69cf0b6d229a9e6be6a5ba4
b514033a3aa1060158fd000dee9c65a20b50db4103561fdcc1d5f302aaebea76b2a9c9aba0c1a548144c3c642e
75b6745488a0757c40ea1efda3da82344630e2b5b3ddef0217a2236455ad8157449afeadca2e6b747763a7d07e
9d39a5f1232da47319a66383bf71525cb1f0fc5795c9c59fbf17a0b622803d089a43921545eacc1fc65119660b
e9d5ff10872b6ca6060d6c4d0c6b8a56a0af3dbb111a625b0317ff3ab464cfd1b1b92d215ad090ad21315634c9
7ad2dfcb0910ce5da7b4d49d3d7ab5b9916d4627cdedabb097f41247456d79bf85d2f364f67cd3079d8b1cbf84
e48fbb283686224597b658356d2ae818b66c2d6c0c42bab84b06e5b5397de64aced1ee3f64b4ca47c5ef79181a
8cfd9c63848e1a8c9eff1c179a30735996720a331476907942ea4f1cf3d36521d229c6cb6122aff349caa0105b
bbc871fb80716825f65a30f56acb42b0d3ced977622140c550e21e25517770035f811112255c756374ca66d27f
c4f2dff9fc37303d5c51e6d90f0dc040b5c5f02046188030ec778a0b196d3b773bed46d77e806f3b9780f5a8bf
c12e98d84988327da5faa0eb0e8a0e12553bc7f739cdc48e8b7757405cec28b961ba65dd5ac563426c1c32e601
22c8d4800e0eecc37b836ca72065f685a50f887141ba8832c701e2d9bd48214396fd7e867a840188041a988a2d
ca8bb4f13aba5667c20830592ba1e1ed347bdf4012236bfa49bb69a73e500d04e77232165f328b0de6b90087a5
ba03d2780025ac4b9ff7fc86481dedc74518ee1fdb02440b2cccb39cc1de54351081dd7158ef1eeeb2fbf6a032
38ea75f269349e00347c46533040ebca9f6ae328283de6434e48078cdf6498ff981a04cbc9cf123b2f400a1a62
5c605681b015dadc6a67e57ce452dd01e450a13d160f92e235f459b8526e66f5790934188109e715cc7b6eaee8
1a385ccdd7182fbfc267215126dab3fa769976639832f5366e83c9ac478ca45aa78a4bc0854cc97c030457aa07
14eb0d2b3f3e1d52f57b1759128e3dd164b004639b03506e12a6219b51efc0dc8c9f8b77da511ff7589496faf5
aed6b0c85ba189788110a0c2528c8782b0561b8539c05cac233f36b07ede81752173578822959586850e26cb10
6946eecc550091d3fc31cd3cd20d5ee3457ae94b69d426062d4bc4e2115240f23f8b915dd99fba3a510b82bbd4
d35aad7b4a990617331ad9a5b9a65375da7d0e9cb2661f21369f358ba40f6567528d4add90cf22554e70f29f59
519bfc9b84acd15e48f9f4b3e94d8bc4c44a428282b44d440e59cea20184e52c971817c96e87cde6383794dea7
a81e9d58f688dc61be648d8cf619a0c16f9503fd4190e2e0216981c4c5bc5ea73be4f957680896ed524a3d9fd4
209e078647a88f66546962ce59fcd06977ccd5ed9602843361c5927c3a14ca0965921decc7c02dc65c79315610
93b5de475517897438859ae19b83ad51f1a0d6e03b5d9f6637c0413e1fef98b2d607487770756ee09a50e8f068
fd71408398cc3b0cb100ae9ab8ce083255033a0aabade31d74b8a7a30c55c15bab4128264f68cbe08ad6a07bfb
5e184b522e3a9a60db38dd1a536cefa2ed9f243c2597bc830edd5b473d30e21a50b0993f545c8faff0c2d30dba
6de20af24133859a7de08c77c87f74cab0999f4f38ac0d963fb28f1ef4772e99fd6d1c8f779f391b428953a2df
67283123bb8c7081b3894713a4e55b2ea9843fcebae9c60ab46c75434211bef3a121b82af41eb6882c4596910d
91e0b8528e11e73eee668aeee00082a39290c1368300d0e6aeb0949947a5f99645e7b73bdba1b02cfa15ffe9a5
ca3c51fa79dc98200cdfb2b32ce089f75148b413310b949a783451967eaece7f09ed1d39279238504211205665
d9a39056a2340882f60a82e7ea860f43a065fe5aa4edab181957d69807708a3f4113ad7251c1414c46879298f4
83d7c514012be9cbe0400657e9e1b266852265a89282014725790e458884d3d4ac97f9b2d9c1c9a3293dc6c577
528f0541f33264e2bedfd3c92bb6535930d6456d1de0231dd6d86d29755db6335257691001b339a124550a8ced
9ccea05b7916127685ee50b4f16a4abbf94b1d55bdb7491a34cc0f7a6fd8e43408b700b2c363c92711506c0238
d15631c1d15d1a92a6eb0ea97f11d668489c17918884704f6b3470f8a5b114fdf1ca5421a9c16b0d0ba001aacf
4e83a0e0497525b6215240dda125ecfb420457ea0e659997a0515bacde75edae8306a041d8d5732e0949000296
780841be288f68059352ebf9204f7163b90fec7609f94b7397298b6e4081f88721c29a2a416b58071070c7ba62
42eef6bb4828e5438fea0e8fd1515108418d6523058545120aa094e44bae81068a655db41783eb5e6768150447
adc103b0ab21e209ea213d8a15c5d522a609464cba52099f1a9912db1149aff89ed9c98e7a70b1b887fa897a34
775a83aca9a9abcf57cb175a45269f044b155b7a2584f13aff45bf9e37d3a3a9c2f22542832080201bd17ca5d6
40a13646f46268f51b2a460e3eb6c43b36a4ba6bd316a33097a8457128b60dc7fb49246f1d1082d6745c833e00
605cf30ca43393060396280faead5f13ca778c39e3d3d7283604a0d0749293fa3a45aa85e9fad374f3a09f0ee1
dd1cdec164c8c0fc4bd78dd65ae71288c9080d8bf2ed63927ff062ece8ffbeeebe6c656c29898a5f94e143a50f
4202efe0ea1451c23ec4e6a06423e245393b17a56c666290758be9c9c50a39f8c0a058bd462ee15a3f09bc7bdd
ce4b65b2b3b8f4e84322f71c1a46e41d0a5c204bab680b9ff78a4a416858b43c147b43a20a578d4247ba28321c
ca56b817089fdfa809e940a14759533fcde3a9bae8976da0ac036301f142adf4f11bb4546da8ed73267f0803e7
e2b291e97d14dd76193500fbbfc0056d553044e53abaa21293758798c8b19dab092e902d6ae000820a8c0867c5
228088e540386898fd820bce3acbae5d792e799750a8360dabc51946d080454711f8f518614ab686135843a12e
6c23e23f170681c610b85768434ea3a969c258cf2ecb5d0cbb469d768786f33c3c302a4b3cb9e3ca29f0ceef5e
159e2bf39d267278ae810a29569219db6f99de0b254c77cdb80c208c59419e74707c81eb3ad9564a87e8d2e5ea
83773a22568d91c7455c99490e905154c197d5861247d92b00c2e5b0effea5c3d3c3c3798e0e896115a1a42d85
77b1d8de0a8e42dd2960bb061a7cc3b8ba2e100379d5389815856e6ba35bf50a2dafbb66f84814ec8069adf0a1
0ee3dbed21436b92b8bdbe50e80e1fedd49793d49fa8ea9888bc58080db1148d4b358c6db8b3d621a807276034
6021ecf93e0b97e4c39fd874507efeb33360c57ad7f3c230e479217c5905e1baccddd6a40b8243889fd9c238c5
afb42f7b7f71e767e35c0831e0daf689bc83aa6e6f1d6c65f3b96525bca4395309e51c7056d662ef85a0c3cf39
b0d6495d9c34d44f584545e3563752e8c28d2ca27168a003d150e1de1cf5056ac0413bf102d454ac5c8f58b4a9
9ca610e7da6b165eb346e7554e40d0b2a4e03db615330e841a6772e229d43d1724280eeb0ad8c39d13aa4c90ab
5e7f8623f4d5cf166461e928cf5891257a3160ab9b0c29a26bc674871f54ec8e4743256d26856d03a8daa46c32
c7488fd06d3bd728789ba6d0ba4e87b6c8de5270798a84a4524f4efb922d154fca74cfb974037bc681f23b0bf9
f6e85883d06b746d03eba647e4d4f291df507da065a3d3ca69eb85157b4a3b68702976754fbd807d476cbe83ba
03d4675efa828bf7a224c32abe6d7d7a55956a592d6a8eb793789e04ad816c1d57d7bc074e912e96e3d2041642
830068904886db98190e1c4acc6ebc66757a34a368a81febbb0beba3ac2b78e53a62bbc2b9f6c0e7a81d642695
ad580f6240466be10d7b3425e65c26a1a95083b546bbdf21cd9979a5e4b96276313ac3fa1a942fea03095e4567
d3db2676bb1631b9774bf60f116c98ebc688705050540b2f2517a660c4949dcc65c5d3b994a48f9be6583611b4
7dca1e2f5688d3773cd694f8397d129de7412729ba76a731e58e96b9277a164c726552429d5f58c79d345e30ec
a1bc900ccf57cb9ff6f19081bf29696cfbab2e6be7627a159e525c8a342f3ba5828722957917c719fda0d15d40
2884c75754588d0ec5ac392f6bcce6743d0bfd128a695bfe131206729325e8147618561c3f1f0afb23da878a5d
d05693b7c7a650b9afbefbc5ab707a11c1919346106fdd8643389ca2ba96ce80cdda96cec31836e3cd7a7cb920
6022230c33d1411be770d6600da802e65da4d335b949fd90e743bf756d18d11b2f64ced0168423ac402740c34a
4c004aca5e9fb8a2a7ebdfc08818d3052af188c0c3d901c48f885c97691f9af13ab0802dbfe410c9fa1c9539af
15dbdd5c7804773fff596820146aa24d35b3df7cfd3209e65f90bc3e689865f73a6d282bea8552f2a516df1e4c
5967c9d777875995be5a4cc716ad4bcbcce726f6e45e922e04fa9132d55b0bf0e8033f8604eee54cda8c9c8e48
fba4a82946f723057fe6c13cdc24cd7fa61b6a43fed9ec371412dfa535443fdb8c11ed96fd88e56733aa4f06c3
9fe6d216521d459ef0aa7d7850329baf07955f5bb2469de92ae2e9ed54eaf4f6198006f400cfe3cb030d830e60
768d309c8e077917d9c9593da572e8bbc4c47bb245f71929503ecc4e992470ea8b8e416ffc9da7d2f7900bc59c
430e3c9ba59e6f3e30a248bfc1d278b1fd343aa1abc0c4ce2799b9467d9b88723bb1903aa7f6561c4ab28f1e13
46d5718677f63b70d4ab8ee7dd9fd9d39a6af1da691014e2a65dc85653b2804df111aca46232f64b9d04889245
360d29c21248ff2cc1893d39a2ec6b29f1f6eb00b64c6a8e310bf3d7883b3e011a4497d4798b58725588d30778
cc8186f0b95e809d42c9295b3e139e7a24af50a71d40f020f6399f2ed7abf5738cec6e5bd3dd59ba8c1e3a73af
48caf8e858c10108b37963040f268dcaa448741a83101a94ef86cbc73071388f0980976cd1ac2fd3a4991d7fb6
195b083641895b6bd3e2421e0a278aee7d5d85835e9f42beaa3fb03a4eeaa2e1c081244183aa1498c7f8b6e49e
ad7bc6930f3355c8e719fe043c289bb35fc93226892aab1b6de0fa93bfb609ffcc88628d75a8d94937b3d62718
b90c1fda38c63365e9bcf2fba4f8e4b176239dab260eebf64e97e0b97f49218de7d8745d1389d4b474ad94c2ea
03076669ca8816ad514655d63e8bce4e2e070df3f26f785084742781ca15e81b4999bc801174e0ce876498b038
440519684820ce688a3300a2e7b5531f5cc60e2744a92b4bf9abb4d62c806d7466fe4ec49483bf980a5df10e13
86dcf3af54762f2ac953a2f980e210b696bdd790479347fe52e071ea52cd5dc5043203cb8f1a55cccc10858756
0b06a80f1d74595a9a2bfababb4e759acd442028806ff72f876669ca887a945098118bc48c3b8aaf49edaacc9a
458e01447ad64a761286581b8e01f25171e87e1e8043cf0bd05a0e6edad0b71a16ada3396d36333f45bf006562
277d4b7559cc72a70657046574ced24498db2bbb38d36051b417cfe41a4e0cdc857541fd45474c13a5cd47b109
93d46279ae96c22c4f31cbb1d733e2c0feead4c64384568f6d596846670e251ef9865dbfe06fb3148ac0fc6468
a998ed2da8cea059c6fe08119068a98f39cea54e37851db6b99340ace7f9451ba544cfdb2d98bcb9569ab364e7
587aac99157b95b2e4301dd8a9f1ca99a93ea1a1148cc6498048cff6955237adda0502871ef501a6d8475745d7
9e88498472cc672199f303c4456f7a8e6b7206dfe2191981063a9b70718c8e36c9f3294b82ab63155180432640
cf33bfc5cbe69bd63f9d07b55c0ecafdb766d5398593b7722898facc1aa57baa8c67d5a74b8fd4c58d85a3efca
4f1ec707d3b42067f66b5f43a44de1db2d87842340e8e0f6ae69b844f2324ab2ff19e16ac5f0d849e6cfb632af
22dfdb56495e67a19c9db39479a3a7648eece0a0e2f01c1f1fdf72a8f7d7132b39738d4672ba54f1f41da9e3a1
b089e49c7e1c19ccfbc7cdf47683ad056be703e60051c4b42d3a9a8616de175f1bb605ae6146c01d3b2bb26600
d1334b07d29c26a8480a1afab5fb0810977a9dfb525d632bbd42eafa0fa41db3ab3f45ff97b0539e6e1d27f67e
e1888a8cc63f3a22c899fdf511a505c4fee888187570faacd17374b1bfe3ba4774e5831dcb89bcd7e8c7af07dd
d77dddbbe2be6e74b8af1fb97e95467d5f373adcd7ef82865b7db8d1e1beeeeb8686efb99e7f57eeb6175f247c
5fa3841785e4fe2e587cc728aadd74eb0ebff3faf130c4fbfaff14bbe293e7f78cea1b01e26bc6f21d43fb4ebc
ce0775eb0ef7755ff795a3c37ffffdf735e3798de51ed13da27b44e74744f4efeb10ef1ed13da27b443346f43f
46e993dd427bcb2b0000000049454e44ae426082
)
Return


SetText:
Text =
(Join
Choose a card from the deck and concentrate on`n
it. Do not move the mouse over the card that you`n
select, or in any other way make any gesture that`n
could reveal your card to Mind Reader.`n`n
Focus on remembering the card and then press`n
the space bar when you are sure it is ingrained`n
in your mind.
)
Return

Space::
Hotkey, Space, Off
WinGetPos, wx, wy, ww, wh, Mind Reader
ControlGetPos, cx, cy,,, Static2, Mind Reader
x := wx+cx, y := wy+cy
GuiControl,, Txt
GuiControl, Hide, Pic
Progress, X%x% Y%y% W425 H100 B R0-100 CW000000 CBDe0913 CTffffff,, Probing your thoughts...,, Verdana
cx += 30
GuiControl, Move, Pic, x%cx% w351
VarSetCapacity(yinyang, 200*4, 0)
VarSetCapacity(yangyin, 200*4, 0)
Loop, 100
{
   ; Copy only the bits of the cards we have returns for
   If !(*(&yinyang))
      DllCall("CopyMemory", UInt, &yinyang, UInt, &yangyin, 200*4)
   Else
      NumPut(0, yinyang, 0, "UChar")

   If A_Index = 50 ; Make sure user is not dreaming
      Progress,,,Almost finished...

   Sleep, 75 ; Give process time to settle
   Progress, %A_Index%

   If A_Index = 100 ; Make sure user is not dreaming
      Progress,,,Done.
}
SetBatchLines, -1
gosub, defineyinyang
WriteFile("yinyang.png",yinyang)
GuiControl,,Pic, yinyang.png
FileDelete, yinyang.png
SetBatchLines, 10ms
VarSetCapacity(yinyang,0)
yinyang =
GuiControl,, Txt, Mind Reader has removed your card from the`ndeck.`n`nPress F1 to restart.
GuiControl, Show, Pic
Progress, Off
Return

F1::Reload

GuiEscape:
GuiClose:
ExitApp


[ Moderator!: hex data patched. ]
_________________
____________________


Last edited by Zippo on Sat Jun 07, 2008 9:34 am; edited 1 time in total
Back to top
View user's profile Send private message
SoggyDog



Joined: 02 May 2006
Posts: 214
Location: Greeley, CO

PostPosted: Thu Jun 05, 2008 11:41 pm    Post subject: Reply with quote

@Zippo

No way!
I wrote a script that performs the exact same trick!
Mine wasn't as ''pretty'' though.

Too cool!

Got any more?
_________________

SoggyDog
Download AutoHotKey Wallpaper
Does 'Fuzzy Logic' tickle?
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
Ian



Joined: 15 Jul 2007
Posts: 1151
Location: Enterprise, Alabama

PostPosted: Fri Jun 06, 2008 12:01 am    Post subject: Reply with quote

Zippo, I know how you did that, but I'll be quiet about it. Had me fooled for a while though.
_________________
ScriptPad/~dieom/dieom/izwian2k7/Trikster/God
Back to top
View user's profile Send private message
Slanter



Joined: 28 May 2008
Posts: 211
Location: Minnesota, USA

PostPosted: Fri Jun 06, 2008 2:45 am    Post subject: Reply with quote

@zippo - nice Very Happy
Back to top
View user's profile Send private message Visit poster's website
Sephiroth2906



Joined: 28 Apr 2007
Posts: 20

PostPosted: Fri Jun 06, 2008 7:37 pm    Post subject: Problem Reply with quote

I am getting an error RE: line 26 on the mind reader. Any idea how I fix that?
Back to top
View user's profile Send private message
Rhys



Joined: 17 Apr 2007
Posts: 710
Location: Florida

PostPosted: Fri Jun 06, 2008 9:17 pm    Post subject: Reply with quote

Have you got the latest version of AHK?
What is the complete error message? (You should be able to hit Ctrl+C when the error window is showing to copy the contents.)
_________________
[Join IRC!]
Back to top
View user's profile Send private message
Zippo



Joined: 21 Apr 2006
Posts: 56
Location: East Coast, USA

PostPosted: Sat Jun 07, 2008 10:07 am    Post subject: Reply with quote

@Ian: The trick works better on people that don't know the language. And thanks Very Happy

@Sephiroth2906: I'm with Rhys, I think you have an outdated AHK version. That line and a couple others used comma-separated expressions:
AHK Change Log dated November 29, 2006 wrote:
Added support for comma-separated expressions, which allow a single line to contain multiple assignments, function calls, and other expressions. [thanks PhiLho & Titan]

I've changed the script not to use them and fixed a few bugs.

@SoggyDog: I have more. I'll look through them later and see if anything is interesting enough to post. I'm pretty sure I have a copy of this trick with things like As and Kd etc for the cards Very Happy

I was kind of hoping more people would post some stuff as I'm in need of some new ideas.

Glad you all liked it. Just remember that the target audience for this stuff still have about 5 years before they need to start shaving Very Happy
_________________
____________________
Back to top
View user's profile Send private message
Red Hat Dude
Guest





PostPosted: Sat Jun 07, 2008 11:58 am    Post subject: Reply with quote

Pretty cool stuff. I actually came here to post something I created out of boredom, but it's not as good as yours.
Code:
; ----- "active" stuff
RedoMyMessage:
; Display a random message upon loading...
Random, 619, 1, 10
1 := "Man`, I need a f***in' cigarette."
2 := "Oh sh*t! Did you forget the kids at the strip club again!?"
3 := "Wake up Mother******!"
4 := "Life's a b****`, then you die`,`nSo f***k the world`, lets get high.`nWe are stoners`, we have class`,`nDont f*** with us`, we'll kick your a**.`nSo all you preps who think you're cool`,`nGo to h***`, cause stoners rule!"
5 := "I will KILL you!!!"
6 := "Somebody wake me from this nighmare`,`nI can't escape this h***..."
7 := "Ding`, Dong`, the B**** is dead."
8 := "I'm a h**ny li'l goat"
9 := "The only mystery here is when I'm going to kill you..."
10 := "Aww, Son of a B****! NOT YOU AGAIN!!!"

n00b := %619%
ifEqual, Redo, "Yes", Goto ReturnThere

Menu, Tray, Add, SpankIt
Menu, Tray, Default, SpankIt
Menu, Tray, Disable, SpankIt
Menu, Tray, Add, WTF!?
TrayTip, , %n00b%, 10
Menu, Tray, Click, 1


; ----- "inactive"


SpankIt:
Redo := "Yes"
Goto RedoMyMessage
TrayTip, , %n00b%, 10
ReturnThere:
return

WTF!?:
MsgBox, 4, Allow Spanking It?, Well?
IfMsgBox Yes
Menu, Tray, Enable, SpankIt
return

See?
Oh yeah, some would say I have a sick sense of humor. Anyway, I took the liberty of censoring some things out, 'cause I don't know this forum's policy on such things.
Back to top
Red Hat Dude
Guest





PostPosted: Sat Jun 07, 2008 12:05 pm    Post subject: Reply with quote

Well...it...erased it. Maybe I didn't censor enough, eheheh... Smile
Code:
; ----- "active" stuff
RedoMyMessage:
; Display a random message upon loading...
Random, 619, 1, 10
1 := "Message 1."
2 := "2."
3 := "3."
4 := "4"
5 := "5"
6 := "6"
7 := "7"
8 := "8"
9 := "9"
10 := "0"

n00b := %619%
ifEqual, Redo, "Yes", Goto ReturnThere

Menu, Tray, Add, Sp*nkIt
Menu, Tray, Default, Sp*nkIt
Menu, Tray, Disable, Sp*nkIt
Menu, Tray, Add, WTF!?
TrayTip, , %n00b%, 10
Menu, Tray, Click, 1


; ----- "inactive"


Sp*nkIt:
Redo := "Yes"
Goto RedoMyMessage
TrayTip, , %n00b%, 10
ReturnThere:
return

WTF!?:
MsgBox, 4, Allow Sp*nking It?, Well?
IfMsgBox Yes
Menu, Tray, Enable, Sp*nkIt
return

Well there. The code in "clean" form.
Back to top
Red Hat Boy



Joined: 10 Apr 2008
Posts: 110

PostPosted: Sat Jun 07, 2008 12:15 pm    Post subject: Reply with quote

Not my browser. This is just one more reason you should always log in before posting.
Last attempt.
Code:

; ----- "active" stuff
RedoMyMessage:
; Display a random message upon loading...
Random, 619, 1, 10
1 := "Message 1."
2 := "2."
3 := "3."
4 := "4"
5 := "5"
6 := "6"
7 := "7"
8 := "8"
9 := "9"
10 := "0"

n00b := %619%
ifEqual, Redo, "Yes", Goto ReturnThere

Menu, Tray, Add, ANiceWord
Menu, Tray, Default, ANiceWord
Menu, Tray, Disable, ANiceWord
Menu, Tray, Add, ummokay
TrayTip, , %n00b%, 10
Menu, Tray, Click, 1

; ----- "inactive" stuff

ANiceWord:
Redo := "Yes"
Goto RedoMyMessage
TrayTip, , %n00b%, 10
ReturnThere:
return

ummokay:
MsgBox, 4, Allow Doing This?, Well?
IfMsgBox Yes
Menu, Tray, Enable, ANiceWord
return

_________________
I slit the sheet, the sheet I slit,
and on the slitted sheet I sit. ;~}
Back to top
View user's profile Send private message Send e-mail
Zippo()
Guest





PostPosted: Sat Jun 07, 2008 12:46 pm    Post subject: Reply with quote

Erm is there supposed to be some code in there? All I see is:
Code:
; ----- "active" stuff

Question
Back to top
Moderator!!
Guest





PostPosted: Sat Jun 07, 2008 1:14 pm    Post subject: Reply with quote

Zippo(),
this effect occurs when your code contains long lines without spaces in it.
i have broken hex data into 90 character wide lines to avoid this.
Back to top
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Scripts & Functions All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group