(    I .  
 ¥+ signature_flag
4294967296''crc
4193987172CallTask__PlcTaskFunction
RelativeStack+Output, IsCompiled, RelativeStack, Typified	ptaskinfo	_IMPLICIT_TASK_INFO
*Input, IsCompiled, RelativeStack, Typifiedpapplicationinfo_IMPLICIT_APPLICATION_INFO
Compiled, Typified, Located$89dabc1a-f794-4a99-ba91-1ea51be3ba39$00000000-0000-0000-0000-000000000000	131785522generate_implicit_init_function__Setup__Call__POUProgram$de1786e8-5c6e-5585-b03e-8ab179626a32
2728864722real32__to__any32indwType2External, Compiled, SuperGlobal, Typified, Located$adb07db6-6cb2-4889-b206-007b85f53578
4094399910any32__to__real32$bc57a7e2-ed11-422f-976f-8be4fc5666bf
2020165724
real32__eq in1!in2"$79084732-5d65-4953-878b-b9d1570ab3c3#	651050431$
real32__ne%$26c1b838-f805-4f80-b547-7a6b4efbbbb5&
1108587135'
real32__lt($8897f859-01db-4c48-85cd-8862ad90c271)76373463*
real32__le+$06045a98-b196-40fe-bbf3-cc6b9cd04fa6,
4168934275-
real32__gt.$57dc0ec0-25cf-4c02-9dde-c27a20a79806/
32024852910
real32__ge1$27ea9ccf-ca7d-4bbb-8a0b-76d96b1b096b2
10447566433real32__add4$4001e5c9-2959-421b-a1ea-3192b559210f5	2673141556real32__sub7$7af69ff9-2d09-4573-9668-4abfb8238c6b8
11036320749real32__mul:$07fdcf4d-2f32-4026-ba50-865a9a4cac44;
1466051322<real32__div=$7433aafb-0867-4fb3-b51c-62aedc81235f>	886904492?real32__abs@$a891677e-9887-4115-baf6-5bc18c14f21fA
3404262884Breal32__minC$7f040799-feda-40a7-b376-ee0db6e12abfD
4154332537Ereal32__maxF$c46be4ae-b278-40fc-8552-9cdb664b8607G	497866625H
real32__limitIin3J$6049606a-24c9-4d04-8810-fd7a837dc535K
1847162626L
real32__truncM$ef945a32-7190-4712-af4e-686069feba9eN	346942548Oreal32__tanP$84acc91c-76a8-41d8-8957-1617354730fcQ	843193954Rreal32__atanS$4e10f990-4cf5-4424-abd6-16195b2c1947T
2676881535Ureal32__sinV$b59097e9-0c6c-4edf-a18e-d34da5f674deW
4177298540Xreal32__asinY$12baf47b-573e-437a-b3eb-06f4c4745ccfZ	406941506[real32__cos\$21313f85-d945-4d56-bab3-9c0d70303453]
3446532930^real32__acos_$29048f1c-76ff-4555-a36d-61013b9112e7`	831403110a
real32__lnb$412735d8-6e6f-49d1-8d62-aad6e08f4198c
2281156508dreal32__loge$bac2aa4e-fb73-4beb-bee8-1cbe13a49551f
1964720339greal32__exph$f127665c-c7d1-4290-b6be-8db37fc1df1ai
2929814886jreal32__exptk$bbbdf0cf-b7ce-4f53-af3f-df8a531c4d5dl
2945838411mreal32__sqrtn$cf137188-d4b3-4d76-b1f6-87afe6ee2148o
2367094826p
int32__divq$16597b72-e6ca-4e3e-b487-0fab4f60f55dr
1538210473suint32__divt$1acf0b76-2778-4975-844a-6ec15f762b2eu	997952827v
int32__modw$32f74310-0500-40a8-bcdc-38e3a235c1a5x
1194593076yuint32__modz$cd4339d7-cb4c-4660-b471-ee4a5c114ad0{
3531525309|
int32__abs}$62876995-1a07-4244-a3f0-8c8f63eec49c~	147726259int32__limit$79dd4eba-d759-4918-8c09-9ba7cedb378c
1413729490
uint32__limit$46a8a0a1-a4c6-464a-a53c-87329443b190
2280991083
int32__mul$3330a6c6-0b50-4a3c-91f0-5ad24d44fbf5
1292175001uint32__mul$47a65ed1-25f8-43b6-85a3-dee72d9a73cd
4142655437
int32__shr$1128c6ef-4d56-40a2-a91f-4f5dc0185d98
4111070444uint32__shr$c1f5d873-aaf1-4f92-b314-c17c78644b9d
2164893551uint32__shl$1393b595-1c79-4a79-a17f-db4b5fda7a44
2239779883uint32__rol$af9cbc04-84b4-409b-8830-f18c8ed3a6ec
4051699624uint32__ror$181ef5ee-7190-4ce0-ada3-cca4fd45a289	695114823	get__time$79ad9f0e-3a56-4c79-af55-c1dafc05b5e6
2006625495__sys__rts__cycle	slotLower	slotUpper 
stTaskName¡AnyInt¢stApplicationName£$8f58c4c2-6bd5-47c7-a149-8588821180e6¤
2641387053¥__sys__register__slot__pou¦nSlotNumber§dwFunctionPointer¨$70da5b5d-fcb8-48d4-ac57-7c4cb04e2caa©
3903245801ª__sys__unregister__slot__pou«$9e4827e4-6b50-4e6a-bc7b-adeb6c4dd526¬
3363294660SysCpuDebugHandler®$d6a84056-f4d9-45ca-9a49-a66cec23e145¯hide° ±	242570791²_Implicit_Application_Info³Type´RelativeInstanceµ''NORMAL__COMMENT¶â			
				rest of runtime info DO NOT USE !	
				pcArea : ARRAY [0..APPL_NUM_OF_STATIC_AREAS-1] OF POINTER TO BYTE //Pointer to data areas of this application
				unsigned short ausAreaType[APPL_NUM_OF_STATIC_AREAS];	/* Area type */
				unsigned long aulAreaSize[APPL_NUM_OF_STATIC_AREAS];	/* Area size */
				unsigned char StaticSessionIdPool[MEM_GET_STATIC_LEN_(APPL_NUM_OF_STATIC_SESSIONIDS, sizeof(unsigned long))];
				unsigned char StaticForcePool[MEM_GET_STATIC_LEN(APPL_STATIC_FORCE_ENTRIES, ForceVarDesc)];
				unsigned char StaticBPPool[MEM_GET_STATIC_LEN(APP_STATIC_BP_ENTRIES, Breakpoint)];
	·pParentApplication¸8Local, Structure, IsCompiled, RelativeInstance, Typified¹	pbyRightsºguidCode»guidData¼udState½	udOpState¾dwDoNotUse_0¿dwDoNotUse_1ÀdwDoNotUse_2ÁdwDoNotUse_3ÂdwDoNotUse_4ÃdwDoNotUse_5ÄdwDoNotUse_6ÅbAppendBootprojectÆbPersistentForceÇdwPSVersionÈdwTargetSettingVersionÉFB_INITÊ
3526140261ËMethodÌbInitRetainsÍbInCopyCodeÎ__INSTANCEPOINTERÏ4Input, IsCompiled, RelativeStack, Implicit, TypifiedÐ
__Index__0Ñ2Local, IsCompiled, RelativeStack, NoInit, ImplicitÒ'NonVirtual, Compiled, Typified, LocatedÓ$ff589828-12c2-4e6a-9f0d-1d6dbb3264b6Ô__FB_PARTIALINITÕ
1565233622Ö2NonVirtual, Generated, Compiled, Typified, Located×?Structure, NonVirtual, Compiled, SuperGlobal, Typified, LocatedØ	pack_modeÙ8Ú
1691734129Ûint64__to__any32Ü$e8c04d52-7d17-4965-9598-cb38a570750eÝ
2445978047Þany32__to__int64ß$fbd44dd8-302c-4269-9682-4e63f10e32eeà	716714719áreal32__to__any64â$4996aebf-7b1a-4606-9275-58c6595fe093ã
3713006940äany64__to__real32å$fba8c26a-b719-4b40-ab2a-36a9440d345bæ
2394705132ç
int64__divè$5df34150-5072-488a-a457-a82fe4dddcafé
1872403673êuint64__divë$c72c0ae2-f6fb-4752-9d81-65e25c2adeddì	953205245í
int64__modî$285230dc-fbd4-44eb-96d1-c35d9d1d95a4ï	593286487ðuint64__modñ$7cf5a04d-a334-4d66-8458-aa41fd3d3cb4ò	113053312óuint64__addô$bd215293-9d5f-451b-8b34-fbf355380a1fõ
3531041404ö
int64__add÷$f853b3c3-030b-457f-9c6f-904c951d4c1bø
4246887690ù
int64__subú$b74d723c-4571-496b-9991-776c19eac243û	924210632üuint64__subý$91c29cfe-4ed7-4aaf-862d-2b211eba3727þ
2220778925ÿ
int64__mul$56cf99a8-dd26-40fc-bd98-c75e222d12a2
2033230057uint64__mul$9f1b41e0-0777-4b76-9af1-a82c5e0d5e37
3251236970
int64__min$938d42a9-f6db-4a23-944c-1eb5ddb2deee
4061158343uint64__min$f38314a9-aaa0-47b1-8175-b88faad4b296
3984229475
int64__max$0d9bcbbc-7c0b-403c-afcc-ba79b0a580ab
3479610202uint64__max$611c06e1-6846-4ba2-82b4-76c65f121ab0
2541544546uint64__xor$367ed89a-2489-42df-ab7c-864d2f1d2f78	721305799uint64__and$c5a4df4a-a8a2-4c18-a05f-5857c4899a0c
2965688650
uint64__or$32a1c099-4e89-49fc-b341-847a90f50e30
2371146893uint64__not$b178ef7a-1592-434b-b462-6c46fac2c8a4
1107659532
uint64__eq$cea9db66-1a76-4c47-b9a0-6577ad6e4e74	480444143 
uint64__ne¡$a5ae5f79-8207-4854-943b-288c0a7d2b9b¢
2021617967£
uint64__lt¤$2c377459-e121-40b9-9e5a-1118a48f743d¥
1054973575¦
uint64__le§$ae239119-6f5f-4534-a1ee-b390262a39a3¨
3255836883©
uint64__gtª$1450c7da-db41-485f-83a7-d6227fc55a01«
2223951739¬
uint64__ge$20395126-4d3f-43d9-9df8-5b21c66b6dcb®	863509285¯	int64__eq°$e8ff23a5-d7c7-48b8-805a-b0c01e09cce3±	881440595²	int64__ne³$18d11e8b-afdf-443e-82d2-046d71021018´	238341524µ	int64__lt¶$35ead342-0197-4bd8-ba6f-d3002ea536e8·
3414395280¸	int64__le¹$0a31942a-efba-4ddf-9c0d-7d4e887ec3caº	701077656»	int64__gt¼$b93d8de7-8cc7-458d-b76b-54805d224bf8½
3967736988¾	int64__ge¿$e3fa00fa-76dc-48d3-b18d-70546f8817d1À
1867067789Á
int64__absÂ$83f47c43-8882-441b-809f-1bf3202ee267Ã
3263826000Äuint64__rolÅ$d9ff9b48-8cb1-41b0-92d2-319173b767fcÆ
3062520787Çuint64__rorÈ$8292f004-04fa-4067-bf44-2dd2c43db842É
3322149652Êuint64__shlË$4f5894be-5a41-4c9b-8659-e81c12575fc4Ì
2986584215Íuint64__shrÎ$821a527f-8831-4a09-b5da-58ca3b768f66Ï
2726094904Ð
uint64__limitÑ$26311cc1-5920-4260-9336-be3754cf23cfÒ
2206011875Óint64__limitÔ$b3a15fa1-b9b4-4cad-91f6-3fd673edbae6Õ
1272716029Ö
int64__shr×$427ca261-109e-4d61-a08b-24f6068e58daØ	655075154Ù
get__ltimeÚ$aeaaf22a-a260-4bac-83d9-18ff949be644Û
3183966539Üreal32__to__real64Ý$9673b4f8-36d6-42ee-b5ca-e06e2602fab5Þ
3519950284ßreal64__to__real32à$68d11de2-a882-4f63-8e95-577fbe97dbefá
2972115768âreal64__to__any32ã$51322543-1fa0-4892-92ab-c1559ce724faä
2081721515åany32__to__real64æ$48ba7277-d0f9-4a61-8d0a-cfa10c9598a2ç
3454954494è
real64__truncé$78aea275-8aff-407b-981c-8abf25d34255ê
3137264130ëreal64__tanì$8ee3c317-6d75-4714-ab7c-ad187c5db2eeí
3753412847îreal64__atanï$79d8c72b-fe9c-4bd0-8d79-62e93b3d01b9ð	836685353ñreal64__sinò$df65bfb9-6613-453b-b2b8-4fcb3789d916ó	352719585ôreal64__asinõ$dad7794c-0bfd-4662-adbc-f2c4e528d37bö
3054655764÷real64__cosø$22fbcf03-320c-4e2b-83ce-a942e5631489ù	546799055úreal64__acosû$a11f5103-2691-4d71-bad3-db29bf365b4bü
3328776656ý
real64__lnþ$1c3bb0cc-2170-475c-b9b2-2c991a82ed64ÿ	698653130real64__log$9335cd5c-acb1-4e96-ad18-0076459fc955
3678959237real64__exp$4ffba013-6cc1-43e2-b6bb-6715ab108128
3062998530real64__expt$fdfe2381-2e31-4926-b6d4-4cf674ac1326	942060455real64__sqrt$4ffd7525-5270-4695-b699-ddbbc4b96fd3
3310343244
real64__eq$475d8087-1c89-48a4-8923-1690f76c80fd
2615714223
real64__ne$7229c098-2c5d-434a-9ab4-f35ad2b92202
4281675375
real64__lt$5de9e5f2-dd5e-4a6e-b860-18fd191e23ee
3115041223
real64__le$7301d2cc-2aa1-4de3-9bef-548d89987e86
1163558803
real64__gt$38f386c3-7170-454b-8528-c10a39021b2363213627
real64__ge$f9510bc1-1227-49ab-9870-64870fd1a5fb	175120083real64__add$9dc891f0-020c-40ef-b8a7-99b35c1d6808 
1004225947¡real64__sub¢$2fd9375a-655d-4573-bd00-1bcc1c494227£
1979560122¤real64__mul¥$e2479120-cb69-43ba-87fa-98e33b5112c2¦
1666681994§real64__div¨$a1c7ca2c-f191-46d4-a7f5-1504f1ba9eb8©
1943489239ªreal64__abs«$99947bf9-0e45-48b1-ad7f-8efb60cecd95¬
4275915668real64__min®$fb18f571-3f0d-4f1e-9a10-9bf219caed48¯
3282809609°real64__max±$7b55e231-072f-4e70-a3f9-b4b1a98c1c66²
3952341867³
real64__limit´$b701090f-8dde-42e6-b8fe-5f22597768eeµ	960100917¶real64__to__any64·$d8153915-f13d-4be5-963e-2e0db8de9f44¸
1431364689¹any64__to__real64º$97dc91e6-edb3-4c35-be5d-6e444884a6ee»
1535689152¼__sys__rts__cycle__2½	hTaskinfo¾$1230b333-5d6b-46b8-a973-900b5373db72¿
1746117600Àexchange__and__addÁ$a39e5468-86fa-4e6d-affe-3e2e51db2150Â
1630658070Ãtest__and__setÄ$78879ef1-a378-4991-b06f-4f6324e3955fÅ
1051002070Æcompare__and__swapÇpAddressÈxwExpectedValueÉ
xwNewValueÊ$84b9de1a-938d-454b-a526-1c5121467a99ËDoLinkÌ
2355386198Í	__memcopyÎpDestÏpSrcÐdwSizeÑ$9d234cab-298b-4f80-8b06-238a4ecbdbf1Ò
1888671637Ó__stringcompareÔpStr1ÕpStr2Ö$9f5705df-d2f0-46b3-8c4d-6a4d6217fac6×
2923953018Ø__wstringcompareÙ$0bea6546-230e-4059-a0c6-574c96c9dcc9Ú
1251102159Û__cycle__code__PlcTaskÜ	hTaskInfoÝ&Generated, Compiled, Typified, LocatedÞ$506d6a87-746a-4fbc-b122-a7589da7b99bß
2055098298àIBase__UnionáNoneâ__InterfaceãIBASEä5Local, Structure, IsCompiled, RelativeInstance, Unionå__vfTablePointeræ?Local, Structure, IsCompiled, RelativeInstance, Union, Typifiedç
1646999765è!Output, IsCompiled, RelativeStacké Input, IsCompiled, RelativeStackêIBASE__UNIONë*Input, IsCompiled, RelativeStack, ImplicitìNonVirtual, Compiled, Locatedí$d66845db-6264-4814-8201-14e00ce3a97dî\Structure, NonVirtual, Generated, Union, ImplicitInterfaceUnion, Compiled, Typified, Locatedï!base interfaces, 3.5.2.0 (system)ðm4export_32bit_nosignatureñ	124493086òIoMgrConfigGetConnectorByDriveróIOCONFIGCONNECTORôIoConfigConnectorõpIBaseöIBase÷
bIecDriverønIndexùpResultúRTS_IEC_RESULTû%External, Compiled, Typified, Locatedü$06985b41-279f-4177-be30-df6637cf2a9býiostandard, 3.5.15.0 (system)þ
1849640412ÿIoMgrConfigGetConnectorListppConnectorListpnCount$328a63c3-d551-4b32-9422-377bc6aac35e
2797965735IoMgrConfigGetDriver
pConnectorpbIecDriver$af3d345a-c11f-478f-b5df-a99d8ebf08b6m4export_nosignature	120351857IoMgrCopyInputBEpChannelIOCONFIGCHANNELMAPIoConfigChannelMap$55d03518-4ee8-4b82-a8b3-766e40682994
3573238966IoMgrCopyInputLE$2c81bc43-6ab4-4b52-9f19-2965d9566ee8
3451368126IoMgrCopyOutputBE$7717607d-0e2d-4e6e-9262-8273e4cd68de
1606949052IoMgrCopyOutputLE$5bc7d463-6913-4718-8a12-5e49d1a76983
2201279776IoMgrGetBusCycleType$b68569cb-9baa-4ce2-a823-c8a751a0fb64
4163672564IoMgrGetConfigApplicationpszConfigApplicationpnMaxLen$b8648e29-04fc-41e1-a469-45f6d098f662 
3960301101¡IoMgrGetDriverProperties¢hIoDrv£RTS_IEC_HANDLE¤ppProperties¥$bff24870-39d9-48f3-9d34-114cbabbe751¦
2015607926§IoMgrGetFirstDriverInstance¨$0e6f29bf-e5f9-4dc0-9040-46a430baf6fd©	189232175ªIoMgrGetNextDriverInstance«
pIBasePrev¬$2321c32b-bfa7-46fc-9f42-71436c2534daË | Reconfigure a single connector respectively the corresponding master.
 | In the reconfigure sequence we call the corresponding IO-driver at the connector the following way:
 |    1. disable the IO-configuration
 |    2. enable the IO-configuration
 |    3. update the mapping
 | This sequence is called asynchronously so the asynchronous state is transported in the parameter pudiState.
 :return: The runtime system error code (see CmpErrors.library)®
1931367312¯IoMgrReconfigure°7 Pointer to the corresponding connector to reconfigure ±ù Asynchronous state of the reconfigure operation. Can be one of the the following states (see CmpAsyncMgr.library for details:
 (ASYNCSTATE_INVALID | ASYNCSTATE_PENDING | ASYNCSTATE_ACTIVE | ASYNCSTATE_READY | ASYNCSTATE_ERROR | ASYNCSTATE_TIMEOUT)²	pudiState³$912d5cf9-41b7-4ddc-870c-b8cb86c2711e´
3203918504µIoMgrRegisterConfigApplication¶$b2f4c643-c7e5-48a2-9923-7da06f28f56f·
1108998563¸IoMgrRegisterInstance2¹	dwClassIdºpItf»$d0558e3e-16a7-4cff-b56f-4bf2bab8dca5¼
1618632085½IoMgrSetDriverProperties¾ulProperties¿$11359e5a-6c6f-4ab0-ad02-13f1415fc629À
2473575876ÁIoMgrSetDriverPropertyÂ
ulPropertyÃbValueÄ$0d12bb26-2b08-402c-9be4-7a3d1d749aacÅ
3971059502Æ IoMgrUnregisterConfigApplicationÇ$85fc8796-00e3-4500-8f02-96be88b1acabÈ
2198568135ÉIoMgrUnregisterInstanceÊ
hInterfaceË$5c4cac23-de3f-40ac-b8bc-1fcdb219c4c9Ì
3870152214ÍConfigGetConnectorÎpIoConnectorListÏdwModuleTypeÐ
dwInstanceÑiÒ*Local, IsCompiled, RelativeStack, TypifiedÓdwCurrentInstanceÔ$05448d5a-856f-498f-8d2c-f54d4a1d2b4bÕ
2183295846ÖConfigGetFirstChild×pFatherØnCountÙ$4ec186af-b262-48d5-b7fc-df5bbfcaba7dÚ
2505514326ÛConfigGetFirstConnectorÜwTypeÝ$f4b6faa7-ed59-4b86-ac5f-530a108dd065Þ
1184247126ßConfigGetNextChildà$24eb7af1-4fea-45c3-9f69-1d59d8d37254á	182680892âConfigGetNextConnectorã$0f720af6-4d60-4925-b3d9-aa0ac2cc321cä
2127479105åConfigGetParameteræIOCONFIGPARAMETERçIoConfigParameterèpIoConnectoré
dwParameterIdê$69449550-bc7e-40a6-a2d3-5b7f5d2fe50aë
1690247643ìConfigGetParameterLengthí
pParameterî$15163bae-b543-4ae9-85e3-287c9d15f161ï22967866ðConfigGetParameterValueByteñwValueòdwValueó$a482a558-eb9a-4b9b-92ef-440028b1a32eô
2864151311õConfigGetParameterValueDwordöbyValue÷$04e9467c-951f-4e5c-95cf-4a9100c257c9ø
1732278298ùConfigGetParameterValuePointerú$a0bb9009-1f2c-4f47-9efd-e6f6d57f364bû38318646üConfigGetParameterValueWordý$2520e670-523b-47bc-a617-0cf6550b9c99þ''DOCU__COMMENTÿÏ	Mapping information for a single channel. Every I/O-channel is described as a parameter, but with special meanings. The datatype of a channel can be simple (BOOL, BYTE, WORD, etc.) or array of simple types.
1485173771& Pointer to the parameter description.? Pointer to the parameter in the process image on the IEC side.
pbyIecAddress Bitoffset of the device.
wParameterBitOffset5 Bitoffset of pbyIecAddress in the IEC process image.wIecAddressBitOffset Size in bits of the channel.wSizeÁ This parameter is now used for the base type information. This information is needed for a correct swapping action. -- wBaseTypeInformation : WORD; -- compiler relies on the name 'wDummy' herewDummy= Driver specific entry. Reserved for the usage in the driver.dwDriverSpecificXWORD
3799954164$9993a70e-7153-4204-9a17-aa75207d5f4a2Structure, NonVirtual, Compiled, Typified, Locatedw		Connector information. Each device is described completely as a set of one input- and one or more output-conenctors. 
3076999907P Type of the connector. See category "Connector types" for detailed information.N Connector options. See category "Connector options" for detailed information.wOptionsJ Connector flags. See category "Connector flags" for detailed information.dwFlagsd Registered instance handle of the IO-driver, that operates this device respectively this connector., Number of parameters in the parameter list.dwNumOfParametersO Pointer to the parameter list, that contains all parameters of this connector.pParameterList= Pointer to the father connector to describe the device tree.
2550773687 $7e08b7ae-f8e8-47d2-8a16-44662e62b8ce¡;	Connector map to describe all IO-channels of one connector¢
2929473580£IoConfigConnectorMap¤( Pointer to the corresponding connector.¥ IO-manager specific entry.¦dwIoMgrSpecific§, Number of channels in the channel map list.¨dwNumOfChannels© Pointer to channel map list.ªpChannelMapList«
3660353869¬IOCONFIGCONNECTORMAP$614b5eaf-fe26-4660-8316-12a2d58a3653®T	Parameter description. This entry describes completely a parameter of an connector.¯	837778035°E ID of the parameter. This ID is specified in the device description.±J Value (if is valud < 4 bytes) or a pointer to the value of the parameter.²Q Type class of the parameter. See category "Type class" for detailed information.³! Length of the parameter in bits.´wLenµ¬ Parameter value flags.  See category "Parameter value flags" for detailed information. Bit 16 to 31 are used for extended parameters (size exceeding 65535 Bits,8192 Bytes)¶
3168140343·$0c1f5741-c666-4ac4-8049-47e0d549144b¸#	Mapping description for each task.¹
2318185417ºIoConfigTaskMap» Index of the IEC task.¼dwTaskId½N Input or output type. See category "Task map types" for detailed information.¾5 Number of connector maps int the connector map list.¿wNumOfConnectorMapÀ# Pointer to the connector map list.ÁpConnectorMapListÂ
3888132684ÃIOCONFIGTASKMAPÄ$1e2d8176-ccc8-45ec-9578-1060ca08f642Å
2962471661ÆIoMgrConfigGetConnectorÇpConnectorListÈ$12573be7-5a8e-4ae9-8d45-6c29427b520eÉ
3097191027ÊIoMgrConfigGetFirstChildË$044f0bef-f59d-43ad-8496-90bb6703c2b5Ì	451793610ÍIoMgrConfigGetFirstConnectorÎ$2858dd16-f4fc-4483-bcdf-311c983114f4Ï	797436920ÐIoMgrConfigGetNextChildÑ$e9fb4157-4aac-42be-ac94-2b7115a46f96Ò
2780622961ÓIoMgrConfigGetNextConnectorÔ$9eb80208-afcd-40cc-b7ef-e6ba0e5e4845Õ
3349297925ÖIoMgrConfigGetParameter×$6d324e8a-97b5-4b18-a273-d5a249575d94Ø
3729716360Ù IoMgrConfigGetParameterValueByteÚ$7f0fa515-c756-4bdf-b369-2bc20d75cf4bÛ
1871208306Ü!IoMgrConfigGetParameterValueDwordÝ$edf4b27c-1558-4b38-8740-7733f1cd6224Þ
1664861923ß#IoMgrConfigGetParameterValuePointerà$c7e307ad-2f7f-41c3-a984-0cf8acc87b55á
1378701427â IoMgrConfigGetParameterValueWordã$534433e7-0f3d-4b97-9452-dcee4c3f5982ä
1801502966åIoMgrConfigResetDiagnosisæ$883f4d8a-c225-480c-ab37-0adbd1349dfeç
3771515593èIoMgrConfigSetDiagnosisé$a48fea34-3f67-4013-a0ba-98007fb1f0ffê
m4export_hideë
3966152356ìEVTPARAM_CmpIoMgrí
2142005226îEVTPARAM_CMPIOMGRï$0c7ba0e4-3fb3-4e68-be6f-1f18acd66874ð
1571261114ñIoMgrGetModuleDiagnosisò$0e3b12d3-3da9-4300-b32d-a55b095483d1ó
3297191157ô
IoMgrIdentifyõ$8f29ce56-8080-4f31-921c-c80d1e131a4bö¿ This function acquires the mutual-exclusion locks for the given operations
 for critical sections inside the I/O driver's implementation of IoDrvReadInputs(), IoDrvWriteOutputs(), and IoDrvStartBusCycle().
 The locks can be released with the function ``IoMgrLockLeave()``.
 While a lock is held, any other thread is blocked from acquiring the lock and waits until the lock is released.
 
 IMPLEMENTATION NOTE: The behavior of the ``dwLockScope`` parameter can't be implemented on all platforms.
 Platforms without synchronization functionality may not be able to implement this behavior.
 IoMgrEmbedded of the CODESYSControlEmbedded runtime system for example can only disable and enable all interrupts.
 
 :return: error code
    + ERR_OK: Locks were successfully acquired.
    + ERR_PARAMETER: The ``pbyIoDrv`` parameter is ``NULL`` (only implementations that use this parameter),
      or the ``dwLockScope`` parameter has none of the GVL LockScopes set (only implementations that use this parameter).
    + ERR_FAILED: No driver entry for pbyIoDrv found in device pool.÷	890733340øIoMgrLockEnterùZ Handle to the driver instance which is returned by the function IoMgrRegisterInstance2().úX The operations for which to acquire locks. See GVL LockScopes for detailed information.ûdwLockScopeü$4fd687bb-454e-46c6-92d3-30d2728a3718ýÂ This function releases the mutual-exclusion locks (that were acquired with the function ``IoMgrLockEnter()``) for the given operations.
 
 IMPLEMENTATION NOTE: The behavior of the ``dwLockScope`` parameter can't be implemented on all platforms.
 Platforms without synchronization functionality may not be able to implement this behavior.
 IoMgrEmbedded of the CODESYSControlEmbedded runtime system for example can only disable and enable all interrupts.
 
 :return: error code
    + ERR_OK: Locks were successfully released.
    + ERR_PARAMETER: The ``pbyIoDrv`` parameter is ``NULL`` (only implementations that use this parameter),
      or the ``dwLockScope`` parameter has none of the GVL LockScopes set (only implementations that use this parameter).
    + ERR_FAILED: No driver entry for pbyIoDrv found in device pool.þ
1023158587ÿIoMgrLockLeave\ The operations for which to release the locks. See GVL LockScopes for detailed information.$50cd89f4-1210-43ef-b6c6-2969fa64e786
1003358786IoMgrReadInputspTaskMap
$d5fc4c8b-d7aa-4c58-861a-b02328639e3c
4078812334IoMgrScanModules$86e554e2-e3be-4617-a91e-b1c3df71e91f	166652967IoMgrStartBusCycle$4a65f552-4c1b-4aa4-92a4-4c8eb2dd5024× Start the bus cycle for a specific connector, and pass the type of this call as an additional option. This way, the driver knows in which conditions (see BusCycleType) was called, by calling IoMgrGetBusCycleType().
2327419416IoMgrStartBusCycle2$baa69047-4c1f-4c1a-b87c-8471ac7a7ad6
2973243251IoMgrUpdateConfiguration$8e8c1b49-af35-45e8-8dd6-4183dc7c1266
1154303272IoMgrUpdateConfiguration2$d75b572a-b27e-4240-94e8-0565f641933c	169153132IoMgrUpdateMappingpTaskMapList$f05cd498-57b1-4b93-bdc2-c8e263237f40
2002746541IoMgrUpdateMapping2$f51df010-35a8-4d39-b7ab-b84c2159ac76
2557345171IoMgrWatchdogTrigger$adc50bde-6417-4daf-91a3-310b13750941 
3660854195¡IoMgrWriteOutputs¢$f3cda08a-24ef-4920-8b1f-737f86549f8b£
3548116447¤IoMgrReadParameter¥pData¦	dwBitSize§dwBitOffset¨$0f6cb342-4622-47eb-8029-2ed7ce38f7e4©
2902783976ªIoMgrWriteParameter«$59947c7d-7697-4b40-a6f3-1458a495024c¬
2598087253$ConfigGetParameterValueByte_Internal®pbyValue¯Byte°$ad79290f-4fb0-4668-a246-1230e7f20a89±	743185784²%ConfigGetParameterValueDword_Internal³pdwValue´DWordµ$1682af8a-160c-45a7-8955-5be9ff8acfb2¶
1882665782·$ConfigGetParameterValueWord_Internal¸pwValue¹Wordº$d13aa643-3f97-483d-bb6d-577d824c73e4»
3023225215¼private_iomgr_memcpy½pDst¾iSize¿$c3db5c9e-2306-4784-86d3-ddc840e503d2À	450027817ÁLogToDeviceÂpMessageÃ$87fa260a-0206-486b-b1c7-ddcd71ec0182ÄJbreakpoint logging functions, 3.5.5.0 (3s - smart software solutions gmbh)Åä	Appending of a string to a target string.
	The string to append and the target have both 
 a maximum length of 255. If there is no more room in the target,
 the remaining characters will be missing. There won't be an error.
 
 .. cds:ranges::
     :HEAD: |StringRange255|
     :TAIL: |StringRange255|
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
Æ
3222489690ÇAppendToStringÈ& Head part of the concatenated result ÉHEADÊ% Tail part of the concatenated resultËTAILÌIntÍindex1ÎindexRetÏ$2534de7b-0ca5-4f62-a5ca-98671b8c49e2Ð
linkalwaysÑ
1647294876Ò__DataSegmentsÓnNumOfSegmentsÔ
pDataSegmentsÕ
__SEGMENTINFOÖ
__SegmentInfo×
4060142437Ø__DATASEGMENTSÙ$6d5ee79a-0165-410b-9a03-2dcb86d77084Ú
4207933064Û
1489859144ÜdisplaymodeÝhexÞdsKindOfß__DATASEGMENTFLAGSàuiAreaáudOffsetâudSizeãudHighestUsedAddressä	176517104å$86a3bd70-f6af-446c-a3ca-d70c9d74cefbæ	224398676ç
3195237607è__BasePropertyInfoépVarAdrê	930619704ë__BASEPROPERTYINFOì$31ba9dec-acd8-475d-b624-39b6068c7eafí	461629027î	236822733ï__PropertyInfoStructðpGetterñpSetterò	pInstanceó
4145388846ô__PROPERTYINFOSTRUCTõ$85b65d0b-a93f-4e02-80e4-fafd3f54abc3ö
1714484629÷
3751468166ø__POUInfoStructù	dwCRCCodeúdwCRCInterfaceûudiNameStringIndexüusiAreaCodeLocationýusiAreaFPPointerLocationþudiOffsetCodeLocationÿudiOffsetFPPointerLocation	519335429__POUINFOSTRUCT$8467172f-0c66-4acf-9d6b-245b2445da14
2202995516
2428029082
__FBInfoStructdwCRCVFTableudiAreaVFTableLocationudiOffsetVFTableLocation
1621815094__FBINFOSTRUCT$1964cd27-f960-4298-b539-cf555cb4552c
2130618155	901311032__MethodInfoStructudiParentPOUIndex
2699900021__METHODINFOSTRUCT$d277c0d4-0a58-4c92-97d1-0453f8828707
3731023454
2494911014__DUTInfoStruct
2398341060__DUTINFOSTRUCT$76a1e5d2-9eb5-4a1b-a8e7-baf1b7eb9716
1327871788
3489042165__GVLInfoStruct
1374809287__GVLINFOSTRUCT$a40cb7c8-28fe-4494-89ac-d9ba39db98a8
2456846774 	994902498¡AnyType¢pValue£diSize¤	TypeClass¥
TYPE_CLASS¦
3543456108§ANYTYPE¨$b60a5c90-aa6c-4c3f-8332-c02981c0bf59©	696726884ª
2125849342«__CodeLocationStruct¬udiCodeSize
2823972544®__CODELOCATIONSTRUCT¯$bb81851c-8557-43fd-ad66-2f0071e45f53°	802123132±	147588528²__ImplicitReferenceTypesInit³$270c4366-521b-4273-856a-24cad42924c9´
2353654990µ__TaskSpecificInfo¶	TaskIndex·	pTaskInfo¸
2567373613¹__TASKSPECIFICINFOº$5f3af15b-046d-4359-9fb1-4011c841ebb0»
1278195045¼qualified_only½	406642837¾__CheckedInterfaceAssign¿InterfaceInputÀ
correctionÁ$09818148-288b-4e68-aaac-88d3699e851bÂ
4255647081Ã
__memcmp__iecÄptr1Åptr2Æ$0ac70c4a-9600-4218-ba11-7d8ad957fb05Ç
4118428513Èany32__to__stringÉ
diExponentÊdwMantËdiExp10ÌpstrÍdiAfterKommaÎudPowÏdwTODÐdwDateÑpszHelpÒ(Compiled, SuperGlobal, Typified, LocatedÓ$52f276ac-71ea-475d-be1d-c34d7442869eÔF new and better way to convert single precision float values to stringÕ	812339439Önew__real32__to__string× Area: 65535, Offset: 0x0 (0)ØindexÙpdwÚdwÛbSignÜdecexponentÝbinexponentÞbinmantissaßdecmantissaàstrMantissaRawástrMantissaâpstrMantissaãnLenä
bFirstCharånNewExponentænPointPositionçnIndexMantissaNewèbNanébInfêExponentëbNegExponentìnTensínOnesî__CONVERSION_CONSTANTSïFðAdrñPFòBoolóbContainsPointôCHAR_0õFLocal, ReplacedConstant, Constant, IsCompiled, RelativeStack, Typifiedö
CHAR_POINT÷
CHAR_MINUSøCHAR_Eù$a891eece-ca29-4db8-b9cf-c1a855c9feacú
4263303623ûany64__to__stringüdintHighýudintLowþ	udintHighÿLWordulDivulDigbFirstnDigitsnWidth
count$3cce6ca9-0c61-42bf-9945-73fd93e91f59	748513653real64__to__stringsz	pszSource
pszHelpSourcepszDestDIntnSigniExp10nExpSignbSdiEliMxNanxInf$2a265c59-789e-4c94-a95e-f5f70529f084__GETINTERFACEPOINTER__GETINTERFACEREFERENCE__MAIN__VFINITCONFDYNLICCHALLENGEDEMOMODEEXPIREDDEMOMODESTARTEDFB_EXITGENERATEEXCEPTION GETCODEMETERLICENSEVALUE¡GETDEMOLICENSE¢GETLICENSEVALUE£GETLICENSEVALUEBIT¤GETPURELICENSEVALUE¥GETUSERLICENSEVALUE¦LICENSEMISSING§LOGERRORMESSAGE¨READLICENSEFILE©REQDYNLICCHALLENGEªSTORELICENSE«UDINTVALUEOFLINE¬VALUEOFLINEhide_all_locals®l This FB manages the access to license values.
 There is one global instance of it with the name ``g_olm``.¯
1762817067°OLM_OnlineLicenseManager±
FunctionBlock²_hFile³-Local, IsCompiled, RelativeInstance, Typified´
_udiTargetµ_udiType¶_udiCPU·_udiOS¸_abyFileContent¹gc_uiMaxFileSizeº_uiFileSize»
_xFileRead¼_uiStoredLicenses½_udiDynLicReqID¾_udiDynLicReqValue¿_udiDynLicChallengeÀ
_xDemoMessageÁ
_semaStoreÂ_adwLicensesStoredÃgc_uiMaxStoredLicÄ__VFTABLEPOINTERÅ=Local, IsCompiled, RelativeInstance, NoInit, Implicit, NoCopyÆ
3309119800ÇOLM_ONLINELICENSEMANAGERÈ
__Index__1É$85fe17fb-708c-43f1-921d-b15ce3e6d622Ê	726124912ËReadLicenseFileÌresÍuxiSizeÎ	udiTargetÏ
udiTargetMASKÐudiTypeÑudiCPUÒudiOSÓpsSerialÔpdiÕ
uiCheckSumÖabyGen×bØStringÙOnlineLicenseManagerÚstComponentÛstFileÜstrÝtiÞ$Compiled, Typified, Located, Privateß$245266f5-25c0-4347-ba16-cf8db3cb1448à83slicense, 3.5.14.0 (3s - smart software solutions gmbh)á÷ With this method a component that previously asked for a license and received a negative result can post an error log message in a unified way
 Hence this method should be called after GetUserLicenseValue has been called and returned no license.â
3647277004ãLicenseMissingä name of the componentåstrComponentæ$c917544e-997c-4a95-85b8-b296375d8bdbç
3970679331èUdintValueOfLineéstrIdê$482e9fa5-988d-470b-a26c-e7f543b44f5fë	699475816ìGetLicenseValueBitíudiLicenseIDîusiBitï
udiLicenseð$0dd60a5f-bcb6-4ca9-bbbe-47aee3a7178añ
2096955056òfb_initó$05fb8a48-e7b2-4a22-ad11-1fd89ee4b04eô
1640385473õGenerateExceptionö$3e4d0264-ac0c-4627-a2fa-6f413a9caafe÷
3646185970øLogErrorMessageù$35438eb1-a664-41a5-9c91-1c77ddde2b52úw With this method a component can propagade in a uniform way that its demo mode has expired and it has stopped to work.û
3922114547üDemoModeExpiredý$e0a0ee36-9b29-4376-92d8-210830590ceaþ
2895160340ÿ__GetInterfacePointer	pRef	
3063148035	fb_exit	$fce63f6e-52d8-4464-9446-53dd8cc9eff7		167456217
	GetPureLicenseValue	
xNotFromCache	
xFromCache	udi	udiCPUOS	ui	udiWibu	$23227458-e40f-430b-b25c-630ba433fec3	
4203605720	StoreLicense	udiValue	$3c47975d-1574-4342-8c3b-38c7e032490c	 This method allows to ask for the license value of a component (specified by udiLicenseID)
 :return: Possible values:
   +-------------+------------------------------------------------------+
   | 0           | no valid license installed                           |
   +-------------+------------------------------------------------------+
   | 16#FFFFFFFF | demo mode (lasts for 30 min)                         |
   +-------------+------------------------------------------------------+
   | else        | license value; interpretation depends on component   |
   +-------------+------------------------------------------------------+	
1784112674	GetUserLicenseValue	O ID of the component that asks for its license value (centrally assigned by 3S)	$faf62368-1791-496f-9aac-1dcccaddbebb	
1553897900	ConfDynLicChallenge	udiNewLicenseValue	udiChallenge	udiLicenseValue	$3c2f7c5c-8743-4910-b672-93d5c08a11db	
4275231191	GetCodemeterLicenseValue	udiProductCode	$2fd2d7ac-965c-4a78-9a9b-c721a84cea62 	
1869023576¡	GetDemoLicense¢	stHelp£	$3dea640c-ce74-46db-89a9-6a2e7e8a089c¤	 With this method a component can propagade in a uniform way that it is running in demo mode and will - after a certain time - stop.
 This method should be called after it is clear that the license will stay in demo mode, in particular the (possibly later / after initialization phase) confirmation of dynamic licenses should be taken into account.
 Therefore it is recommended for the OEM to confirm dynamic licenses *during the initialization* (after global init slot 40000) and *before the application* is started.¥	
3669514694¦	DemoModeStarted§	$c9961dd4-2fb3-4d0b-9b3f-67937056004c¨	
3864497688©	__GetInterfaceReferenceª	nInterfaceId«	4293952¬	GetLicenseValue	param®	CMPEVENTMGR¯	CmpEventMgr°	
EVENTPARAM±	
EventParam²	
eventparam³	EVENTIDS´	CmpMgr_LicenseRequestµ	$d5b19f2e-90e0-4b05-a5e8-3068951f9d50¶	
1280744906·	
3890662013¸	ValueOfLine¹	pbyº	uiEndOfLine»	j¼	
usiBitOffs½	byOrig¾	byPerm¿	byBuffÀ	byOldÁ	
xEndOfLineÂ	$969097ae-9ac4-46e5-a05b-018cd3f16004Ã		584426206Ä	ReqDynLicChallengeÅ	udiTimeÆ	$477a8134-64d2-4992-ac2b-50ed5f5a8858Ç	
1774802008È	Alias, IsCompiled, TypifiedÉ	Alias, Compiled, TypifiedÊ	$1f187897-1eca-4745-9dd7-6e656076701fË	&systypes2 interfaces, 3.5.4.0 (system)Ì	
3827756189Í	$5de0d991-1359-4458-ba16-a7e779ed9ddcÎ		565296024Ï	8 EventID of the event. Contains the class and the event Ð	EventIdÑ	 Component ID of the provider. Ò	
CmpIdProviderÓ	0 Id of the parameter structure (see pParameter) Ô		usParamIdÕ	5 Version of the parameter structure (see pParameter) Ö		usVersion×	R Pointer to the event specific parameter, that is specified by Id (see usParamId) Ø	
3380528868Ù	$708ad4f5-2a48-4fd2-8d88-fb3b143a33a4Ú	cmpeventmgr, 3.5.14.0 (system)Û		154268403Ü	ulLicenseIDÝ	ulLicenseValueÞ	
2430688636ß	CMPMGR_LICENSEREQUESTà	$ec71f5d5-b2a8-42f3-8e75-3a56c8942752á	__OffsetI_TESTRESULTFORMATTERâ	FORMATã	
1989740091ä	I_TestResultFormatterå		Interfaceæ	45520129ç	Formatè	  The total amount of test suitesé	NumberOfTestSuitesê	5 The total amount of test cases (for all test suites)ë	NumberOfTestCasesì	? The total amount of test cases that had all ASSERTS successfulí	NumberOfSuccessfulTestCasesî	C The total amount of test cases that had at least one ASSERT failedï	NumberOfFailedTestCasesð	Busyñ	I_TESTRESULTFORMATTERò	$033e8873-ad7a-489b-8ba9-f0de8a344939ó	$fa75ee61-43fb-4767-8061-125a3a9e3424ô	cfunit, 1.1.0.1 (open source)õ	Compiled, Typifiedö	
	This function block reports the results from the tests using CmpLog functionality. 
	It sends the results into the DeviceLog
÷	
2677203639ø	FB_LogTestResultFormatterù	__INTERFACEPOINTER__376ú	
 Although we can print a message no #1 prior to message no #2, the message #2 can still be displayed before
 message #1, most likely because of some delay. To workaround this, we add a small delay between each message.
 In CfUnit, this delay has been removed.û	USIntü	LastPrintStateý	
PrintStateþ	
3298891267ÿ	FB_LOGTESTRESULTFORMATTER
$d14d6247-3ce3-459f-be22-6ee3520279ed
1190260893
	278100758
! The total number of test suites 
? The total number of test cases (for all test function blocks) 
@ The total number of test cases that had all ASSERTS successful 
D The total number of test cases that had at least one ASSERT failed 
	ErrorCode
$dba8c729-8b99-4be3-97cd-3a4fea4cd051
2457848138
	486230573
2121478464
2899725525
I_TestResultFormatter__Union
1286751965
I_TESTRESULTFORMATTER__UNION
CLOSE
OPEN
READ
SAVE
1695361983
FB_FileControl
ACCESS_MODE
SYSFILE
SysFile
AM_WRITE_PLUS
FileAccessMode
FileHandle
SYSTYPES
SysTypes
2535989555
FB_FILECONTROL 
$c9bec8fc-2de3-45f4-b839-e6c4276a6b5a¡
1889971345¢
2355446001£
3308839526¤
Read¥
 Call with ADR();¦
pString§
 Call with SIZEOF(); ¨
Size©
FileSizeª
RTS_IEC_SIZE«
$3984ae50-1cdb-4045-af99-0bb56917afb2¬
 Closes the current file
4214760544®
Close¯
$519e9011-283c-40b1-afd4-31686c5b81fe°
2474451454±
\ Saves the contents of the buffer into a file
 Be sure to call Open() before calling Save()²
2206094130³
Save´
 Call with SIZEOF();µ
$c4146a99-50c6-4ce0-88ab-794dbfb1af62¶
 Opens a file·
2914156665¸
Open¹
p File name can contain an absolute or relative path to the file. Path entries must be separated with a Slash (/)º
filepath/output.xml»
FileName¼
T_MAXSTRING½
T_MaxString¾
AM_APPEND_PLUS¿
$1873bb2c-c6a3-4681-8948-02aa2bad0a9bÀ
	527503827Á
__GETBUFFERSIZEÂ
__GETLENGTHÃ
__SETAPPENDÄ
__SETLENGTHÅ
__SETPREPENDÆ
CLEARÇ
COPYÈ
CUTOFFÉ
FINDÊ
FINDBACKË
SETÌ
M
    This functionblock acts as a stream buffer for use with FB_XmlControl
Í
	460344340Î
FB_StreamBufferÏ
pStrBufÐ
udiBufSizeÑ
	udiLengthÒ
propertyÓ
setÔ
 Appends a string to the bufferÕ
message_guidÖ
$ddd7c0b6-46f9-4fa9-946e-0da608268245×
AppendØ
getÙ
 Read current BuffersizeÚ
$879a667c-416e-4879-91ff-6641233ded93Û
BufferSizeÜ
$80c3b0fb-2bdc-4829-89c6-017e171b31ebÝ
LengthÞ
  Prepends a string to the bufferß
$c4fdd2db-7736-4bc5-a06f-ba3a29618794à
Prependá
3894529336â
CutOffã
udiStartPosä
	udiCutLenå
XmlErroræ
E_XMLERRORç
iLoopè
pByteCuté
pByteBufferê
FB_STREAMBUFFERë
$8914e4f8-8b6c-48c3-ba1f-e0642038624aì
$fbccbed5-94ee-455b-a9d5-e8b750ed732eí
 
    Find a searchstring in the buffer and returns its position.
    It's possible to add a preffered startposition within buffer
î
2249836283ï
Findð
sSearchStringñ
udiLoopò
iSearchó
pBufferô
pSearchõ
$7e38490a-9555-451d-957e-fef284a567e3ö
3770588605÷
FindBackø
	udiSearchù
$7d08b204-2078-4fde-81eb-e04d71986196ú
 Sets the Buffer û
2765814553ü
Setý
 Set buffer adress (ADR ...)þ
pbyAdrÿ
 Set buffer size (SIZEOF ...)udiSize$59092938-ca22-4896-8f54-1c854a0bd883
3531527356	679612793__getLength
$063f44b5-d97e-4feb-bc58-4bdd7430c0c3	431188798+ Clears the buffer and sets the length to 0	245412907Clear$5f0bbce2-2600-4a2e-8c6f-4b957ad03395
3105935666
3726327849__setAppendpByteIn$2498d17a-6a8a-4bf1-a5ce-9c1a248a9710
3911693793__getBufferSize$c7ad50d6-c68e-4f97-8e99-a8d5c013ef7a
1526185124__setLength$c516394c-e0bf-40e3-8a00-92e5ec5cc151
2742528156
1412497707__setPrependTempBufGVL_PARAM_XMLCONTROLGVL_Param_XmlControlMaxFileSizepTempBuf$4ce6b49b-00bd-4bd1-9dcd-2e9ecfab167b
1070739256 1
    Copies a string from the character buffer
¡24631700¢Copy£udiStart¤udiEnd¥
udiCopyLen¦	pByteCopy§$b796dd60-63f5-4b75-acc5-8fa40e24be46¨CLEARBUFFER©CLOSETAGª
NEWCOMMENT«NEWPARAMETER¬NEWTAG
NEWTAGDATA®
NEXTPARAMETER¯NEXTTAG°	SETBUFFER±
TOSTARTBUFFER²WRITEDOCUMENTHEADER³å
Organizes parsing and composing of XML data. Data can be treated as STRING or char array.
Filebuffersize is default 4096 bytes and can be set via Gvl_Param_XmlControl
Usage example:
1. Initiate
    VAR
        XML : FB_XMLControl;
        Buffer: STRING(GVL_Param_XmlControl.udiMaxFileSize);
        //or
        Buffer: ARRAY [0..GVL_Param_XmlControl.udiMaxFileSize] OF BYTE;
    END_VAR
        XML.pBuffer: = ADR (buffer);
        XML.LenBuffer: = SIZEOF (buffer);
    Add your own preferred fileheader like so:
    XML: <?xml version="1.0" encoding="UTF-8"?>
   
        XML.WriteDocumentHeader( '<?xml version="1.0" encoding="UTF-8"?>');
2. Compose a tag with a parameters:
XML: <MyTag ParaName = "11" />
    XML.newTag(sTagName: = 'MyTag');
    XML.newPara(sName: = 'ParaName', sPara: = sValue);
    XML.CloseTag();
3. Add tag value:
XML: <MyTag> MyText </ MyTag>
    XML.newTag(sName := 'MyTag');
    XML.newTagData(sTagData :='MyText');
    XML.CloseTag();
4. Jump to the beginning of the XML data
XML.toStartBuffer();
5. Add a comment:
XML: <!-- MyComment -->
    XML.newComment(sTagName: = 'MyComment');
6. Returns the next tag from the current position in buffer
XML.NextTag();
7. Output the parameter of the tag
XML.NextPara(sPara: = LastValue);
Feedback: sPara returns the value found (string)
´
4271593562µ
FB_XmlControl¶Buffer·TagList¸sTags¹TagListSeekº	sTagsSeek»Tag¼sTag½xTagOpen¾iSelect¿iSelectStartÀ
iSelectEndÁiSelectStartParaÂiSelectEndParaÃiSelectTagCloseÄiSelectStartValueÅiSelectEndValueÆudiSearchPosÇ<ÈTAG_OPENÉ7Local, Constant, IsCompiled, RelativeInstance, TypifiedÊ>Ë	TAG_CLOSEÌ/>Í
END_TAG_CLOSEÎ ÏSPACEÐ=ÑEQUALSÒ"ÓQUOTEÔ\Õ
BACK_SLASHÖ/×
FORWARD_SLASHØ<!-- ÙOPEN_COMMENTÚ -->Û
CLOSE_COMMENTÜ	ÝTABÞ
ßCR_LFà$4fdf30b6-5fe7-4452-ad0a-85e866e236d0ám
    Must be called after opening a new tag
    XML.NewParameter(Name: = 'ParaName', Value: = 'Value');
â
2634837430ãNewParameteräNameåValueæ
FB_XMLCONTROLç$60c10606-ff09-4f9b-a3dd-0b54d0f565c7è$f48b7de2-5c07-4763-a8be-3d8ab3c1f58cé
2112014703êI
    Closes a Tag:
    XML: <MyTag />'
    Method: XML.CloseTag();
ë
1350786801ìCloseTagí$eedd2aac-2425-4325-8128-bfe1e984f3f7îP
    Creates a new Tag:
    XML: <MyTag>
    XML.NewTag(Name: = 'MyTag');
ï
3405068434ðNewTagñ$c44bdbda-725a-4943-a5cc-fa5ea9485541ò
2345788106ó
4091577810ôNextTagõ$d039b781-905d-4b69-b5aa-bb0323e598deö	311623939÷
NextParameterø	Parameterù$4394d0a2-f7bc-4847-9625-00022c462a79úª
    Add your own preffered fileheader like:
    XML: <?xml version="1.0" encoding="UTF-8"?>
    XML.WriteDocumentHeader('<?xml version="1.0" encoding="UTF-8"?>');
û
1129208895üWriteDocumentHeaderýHeaderþ$14bf2549-9e7d-451f-8ab5-fe662eb30712ÿc
    Adds a comment;
    XML: <!-- MyComment -->
    XML.NewComment(Comment: = 'MyComment');
1839979298
NewCommentComment$0f41fa45-b92e-4e7e-b2b3-ecb5d5918326
1660387904
$267105d4-b124-4c5c-a359-0434c4992afc
3578040079
3559116989	629852686
NewTagDataData$e4679d3f-10eb-47fd-936c-97e3aaaa3768
3231874346	SetBufferiSizeOf$cbfaa6d5-eab9-48d0-a339-a8bf334e344e1 
    Clears the contents of the entire buffer
1859166792ClearBuffer$651b4460-232e-47e8-95ba-ecea1541fbb9G
    Jump to the beginning of the XML data
    XML.ToStartBuffer();
	480465930
ToStartBuffer$cb065068-a6c8-48d5-8c1d-535a21365348	792755172OPENSAVEANDCLOSE[
	This function block reports the results from the tests into a xUnit compatible XmlFile
3642690813FB_XmlFileFormatter* Default path for storing the output file /XmlControl/output.xml
szFilename -Input, IsCompiled, RelativeInstance, Typified¡ Default file access mode ¢stFileAccessMode£xBufferInitialised¤File¥Xml¦Minus§
2827134263¨FB_XMLFILEFORMATTER©$6597c0b3-0890-4d5d-8d3a-2d0d0b2355dbª«FB_Init is always available implicitly and it is used primarily for initialization.
The return value is not evaluated. For a specific influence, you can also declare the
methods explicitly and provide additional code there with the standard initialization
code. You can evaluate the return value.«
1804193831¬FB_InitE TRUE: the retain variables are initialized (reset warm / reset cold)®P TRUE: the instance will be copied to the copy code afterward (online change)   ¯$0f23c47b-7245-415e-b489-0ae429217263°
3458144404±
2964840619²OpenSaveAndClose³	msgFmtStr´$84256533-6eb5-465b-b1e5-db6f61e2e6c3µ
3558626984¶ò Responsible for formatting the xml file skeleton
  <testsuites>        => the aggregated result OF all xunit testfiles
   <testsuite>       => the output from a single TestSuite
     <properties>    => the defined properties at test execution
       <property>    => name/value pair for a single property
       ...
     </properties>
     <error></error> => optional information, in place of a test case - normally if the tests in the suite could not be found etc.
     <testcase>      => the results from executing a test method
       <system-out>  => data written to System.out during the test run
       <system-err>  => data written to System.err during the test run
       <skipped/>    => test was skipped
       <failure>     => test failed
       <error>       => test encountered an error
     </testcase>
     ...
   </testsuite>
   ...
 </testsuites>·
3622480263¸SuiteCounter¹TestSuiteInstancePathº
TestSuiteName»!NumberOfFailedTestsInCurrentSuite¼NumberOfTestsInCurrentSuite½TestCounter¾TestCaseName¿AssertResultÀST_ASSERTRESULTÁST_AssertResultÂ$a5260c9c-7f2d-47c3-a7f2-dd0694d00aaaÃ
2740787250Ä*Compiled, OnlineChanged, Typified, LocatedÅABORTRUNNINGTESTSUITETESTSÆRUNTESTSUITETESTSÇ]
    This function block is responsible for holding track of the tests and executing them.
È
1759843967ÉFB_CfUnitRunnerÊL Indication of whether all test suites have reported that they are finished ËAllTestSuitesFinishedÌ3 Prints the results to Log to display the results. ÍLogTestResultFormatterÎTestResultPrinterÏG These variables (statistics) are occupied once all tests are complete ÐUIntÑNumberOfTestSuitesFinishedÒ= Indication of that the printing of test results is complete ÓDonePrintingTestResultsÔw If this flag is set, it means that some external event triggered the
       request to abort running the test suites ÕAbortRunningTestSuitesÖ@ Aliazzz 15-12-2019  run once after all testsuites are finished ×XmlFileFormatterØxUnitFileComposerÙBusyGeneratingXmlÚDoneBusyGeneratingXmlÛ
2153546512ÜFB_CFUNITRUNNERÝ$857e16d6-a26c-468a-935e-aa7317c263b9Þ
2720072996ß
3559952655à` This function sets a flag which makes the runner stop running the tests
   in the test suites á	832790642âAbortRunningTestSuiteTestsã$3fcbd569-749a-493c-a697-2c976fa6e96aä
1821724164å
3670450116æ
3103747381çRunTestSuiteTestsèCounteréBusyPrintingê¦ We need to hold a temporary state of the statistics (failed, successful, total amount of test cases etc)
       as we don't consider the tests to be completely finished until all test suites have executed completely.
       The reason we want to do it this way is because a test suite can run over several cycles. Only once all tests
       are finished (which might take many cycles), do we gather correct statistics ëNumberOfTestSuitesFinished_TempìNumberOfTestCases_TempíNumberOfFailedTestCases_Tempî NumberOfSuccessfulTestCases_Tempï$d333e6c4-a1da-4b5b-91b3-4b4808e6c299ð	161063444ñ$fc07005b-6ac8-404d-b2cd-f68d25f42f8eò
2671643726ó$a429e267-db3b-4872-871e-1ca509b971e2ô	227646264õU_ExpectedOrActualöboolExpectedOrActual÷bitExpectedOrActualøbyteExpectedOrActualùdwordExpectedOrActualúlwordExpectedOrActualûstringExpectedOrActualüudintExpectedOrActualýuintExpectedOrActualþusintExpectedOrActualÿsintExpectedOrActual
intExpectedOrActual
wordExpectedOrActual
dintExpectedOrActual
lintExpectedOrActual
ulintExpectedOrActual
realExpectedOrActual
lrealExpectedOrActual
wstringExpectedOrActual
timeExpectedOrActual
ltimeExpectedOrActual
dateExpectedOrActual
dateandtimeExpectedOrActual
timeofdayExpectedOrActual
25436326
U_EXPECTEDORACTUAL
$539c30a7-a560-469c-8422-aaf8c09f45d9
9Structure, NonVirtual, Union, Compiled, Typified, Located
2825047456
Expected
Actual
Message
TestInstancePath
1612349127
$63e20a3e-c451-4aff-a3c2-cc9b3a584290
external_name
	Task_Info
  Task information out of the task configuration
 Task configuration menbers which are used with |IecTaskCreate| are marked with [c], status members are marked with [s].
 Note for SIL2: This information is already inside of the data area, so we don't need to tag it as safe anywhere.
61652668
Task_Info2
! [c] Version of the structure (2)
	dwVersion
  [c] Name of the task, mandatory 
pszName¡
% [c] IEC priority of the task (0..31)¢
	nPriority£
9 [c] Kind of task. See corresponding category |TaskType|.¤
KindOfTask¥
$ [c] Is TRUE, if watchdog is enabled¦
	bWatchdog§
C [c] Is TRUE, if profiling is enabled (not used, FALSE recommended)¨
bProfiling©
E [c] Function pointer to the event check routine, see |IecTaskCreate|ª
dwEventFunctionPointer«
7 [c] Name of the event, if it is an external event task¬
pszExternalEvent
F [c] Function pointer to the task code, mandatory, see |IecTaskCreate|®
dwTaskEntryFunctionPointer¯
 [c] Watchdog sensitivity°
dwWatchdogSensitivity±
 [c] Interval in microseconds²
dwInterval³
" [c] Watchdog time in microseconds´
dwWatchdogTimeµ
5 [s] Cycle time in microseconds (last execution time)¶
dwCycleTime·
' [s] Average cycle time in microseconds¸
dwAverageCycleTime¹
' [s] Maximum cycle time in microsecondsº
dwMaxCycleTime»
' [s] Minumum cycle time in microseconds¼
dwMinCycleTime½
 [s] Jitter in microseconds¾
iJitter¿
 [s] Minimal jitterÀ
iJitterMinÁ
 [s] Maximal jitterÂ
iJitterMaxÃ
 [s] Cycle counterÄ
dwCycleCountÅ
( [s] Task state. See category TaskState.Æ
iStateÇ
3 [s] Number jitter statistical distribution entriesÈ
wNumOfJitterDistributionsÉ
, [s] Statistical jitter distribution entriesÊ
pJitterDistributionË
JITTER_DISTRIBUTIONÌ
Jitter_DistributionÍ
 [s] Timeslicing enabledÎ
bTimeSlicingÏ
byDummyÐ
- [s] Cycle counter for execution of user codeÑ
dwIECCycleCountÒ
2750948561Ó
TASK_INFO2Ô
$a1e9fbd6-93bf-46b3-bfe6-3b3118b8971aÕ
cmpiectask, 3.5.14.0 (system)Ö
) reads the taskinfo from the current task×
	380229896Ø
GetCurTaskInfoÙ
pCurTaskÚ
CMPIECTASKÛ
CmpIecTaskÜ
pCurTaskInfoÝ
CurTaskInfoÞ
.Output, IsCompiled, RelativeInstance, Typifiedß
4105761433à
GETCURTASKINFOá
$21adb24c-373e-4435-8059-bba210563e99â
2413748294ã
1915908239ä
4214002233å
2906446323æ
GETNAMEç
ISFAILEDè
ISFINISHEDé
	SETFAILEDê
SETFINISHEDë
SETNAMEì
?
    This function block holds all data that defines a test.
í
	929400243î
FB_Testï
TestNameð
C Indication of whether this test has had at least one failed assertñ
TestIsFailedò
TestIsFinishedó
1117055996ô
IsFinishedõ
FB_TESTö
$813a9067-b864-4739-9c14-830160e0eabc÷
$a51e9086-33ec-4162-acad-93a76961e893ø
2617315923ù
2860593324ú
4294720336û
2009680975ü
	686902952ý
SetNameþ
$4c12f6eb-bbe4-4872-ac89-4411e2e81414ÿ
1394032034	SetFailed$b840b41b-4045-4fd9-b97d-0bf226c46fb3	340246040IsFailed$e42409e3-251f-4133-8b14-3630785983d6
	486247262
2121735863GetName$94757f0e-9979-49d0-ad9f-e35c823175d4
2325423616SetFinished$e1245d1c-be22-4d60-bc91-fe0262827234Á Detects a rising edge of a boolean signal
 .. code-block:: codesys
    (* Example declaration *)
    RTRIGInst : R_TRIG ;
    (* Example in ST *)
    RTRIGInst(CLK := VarBOOL1);
    VarBOOL2 := RTRIGInst.Q;
 .. cds:ranges::
     :CLK: [TRUE,FALSE]
     :~CLK_OLD: [TRUE,FALSE]
     :Q: [TRUE,FALSE]
	754564685R_TRIG Boolean signal to be checkedCLK ``TRUE``: Rising edge detectedQM
3552750443$752f4be3-bcd1-4b9f-8c29-de66d869ade4
2057466445
2279655128	725723096
2849467804standard, 3.5.14.0 (system)
1583981908ST_AssertResultInstances* Amount of instances of the "AssertResult"DetectionCountD Amount of instance of the "AssertResult" in this specific PLC-cycle DetectionCountThisCycle¡93536004¢ST_ASSERTRESULTINSTANCES£$018c91ab-7038-42ef-b6e4-5007ea06204f¤ADDASSERTRESULT¥3COPYDETECTIONCOUNTANDRESETDETECTIONCOUNTINTHISCYCLE¦CREATEASSERTRESULTINSTANCE§GETDETECTIONCOUNT¨GETDETECTIONCOUNTTHISCYCLE©$INCREASEDETECTIONCOUNTTHISCYCLEBYONEªREPORTRESULT«
    This function block is responsible for keeping track of which asserts that have been made. The reason we need to
    keep track of these is because if the user does the same assert twice (because of running a test suite over several
    PLC-cycles) we want to know it so we don't print several times (if the assert fails).
    An instance of an assert is keyed/identified with the following parameters as key:
    - Value of expected
    - Value of actual
    - Message (string)
    - Test instance path (string)
¬
2083454144FB_AssertResultStatic®> The total number of instances of each of the "AssertResults" ¯
AssertResults°GVL_PARAM_CFUNIT±GVL_Param_CfUnit²MaxNumberOfAsserts³$ The total number of unique asserts ´TotalAssertsµ. Function block to get the current task cycle ¶GetCurrentTaskIndex·AssertResultInstances¸ The last PLC cycle count ¹
CycleCountº Only run first cycle »FirstCycleExecuted¼
1249903082½FB_ASSERTRESULTSTATIC¾$9683a633-879e-475e-a97f-0742f9ecfd04¿	692841312À
1389387818Á
2372914603Â3CopyDetectionCountAndResetDetectionCountInThisCycleÃIteratorCounterÄ$a8cc95e0-191e-40c8-a6bc-8d58d9231bfaÅ
hasanytypeÆ	324331413Ç$IncreaseDetectionCountThisCycleByOneÈuselocationÉExpected.pValueÊExpected__pValueË2Local, IsCompiled, RelativeStack, NoInit, TypifiedÌExpected.TypeClassÍExpected__typeClassÎExpected.diSizeÏExpected__sizeOfÐanytypeclassÑANYÒ
Actual.pValueÓActual__pValueÔActual.TypeClassÕActual__typeClassÖ
Actual.diSize×Actual__sizeOfØ$b4a5f59b-b092-46e9-a592-20ecca6c06c9Ù
1534235042Ú
1576367466Û	875312424ÜCreateAssertResultInstanceÝ$0e48fb23-038c-40ed-90ff-ee834be2653dÞ
4040583768ßGetDetectionCountThisCycleà$9f89a925-0785-44b9-83cb-36f87d5bc546á
1863076118âGetDetectionCountã$75f01348-487a-4441-a0e3-f41feb6c1781ä¸
    This method is called in every assert and returns whether this particular assert has already been called.
    The reason one would like to know whether this assert has already been reported or not is to not report it several
    times to any logging service. Because a test-suite can consist of several tests, and certain tests can require the
    test to run over several cycles it means that certain asserts could be called several times and thus we need to
    keep track of which asserts we've already reported. The user of the framework should not need to care for any of
    this and he/she should be able to call the asserts in any way they FIND suitable.
    To know what assert this is we need to check for the total combination of:
    - Test message
    - Test instance path
    - Expected value
    - Actual value
    Theoretically we can have a situation where a test has three different asserts, each and one with the same test
    message/test instance path/actual value/expected value but called within the same or different cycles. In order for
    us to handle all situations we need a simple algorithm that works according to:
    - Keep track of how many instances the combination of test message/test instance path/expected value/actual value
      we have. So for example, if we have called Assert(Exp := 5, Act := 5, 'Hello there', 'PRG.InstanceTestSuite.Test')
      two times in one cycle, we have two instances of that combination. This is done according to:
    - Iterate all existing reports.
      - If we have a new PLC-cycle, set the current detection-count to zero.
      - If new report does not match in any of the above fields, create it (together with current PLC-cycle).
        Also store the information that we have one instance of this combination and +1 on the detection-count.
      - If new report matches in all of the above, +1 in the detection-count. If this detection-count is larger than
        the stored detection-count for this combination, create a new report and add +1 to the storage of
        the detection-count.
å
2144796275æReportResultçAlreadyReportedè
LocationIndexéDataTypesNotEqualsêDataSizeNotEqualsëDataContentNotEqualsìCurrentCycleCountíDetectionCountTempîFoundOneïAdditionalIdenticalAssertð$675e4dfe-54f1-4dc0-a6fd-481bc63973c5ñ
3239381763òAddAssertResultó$22afb213-95b2-4bfd-ada6-e7cf020d9c1dô
3525697315õST_AssertArrayResultö% Size in bytes of the expecteds-array÷
ExpectedsSizeø% The data type of the expecteds-arrayùExpectedsTypeClassú	TYPECLASSû# Size in bytes of the actuals-arrayüActualsSizeý# The data type of the actuals-arrayþActualsTypeClassÿ
2307666740ST_ASSERTARRAYRESULT$a97be192-7eab-4934-bf94-f1c1e71902f6
1707683493ST_AssertArrayResultInstancesAssertArrayResult
/ Amount of instances of the "AssertArrayResult"I Amount of instance of the "AssertArrayResult" in this specific PLC-cycle
2861258322ST_ASSERTARRAYRESULTINSTANCES$32c33d09-e3c1-4756-8559-edad569b31f5ADDASSERTARRAYRESULT
    This function block is responsible for keeping track of which array-asserts that have been made.
    The reason we need to keep track of these is because if the user does the same assert twice
    (because of running a test suite over several PLC-cycles) we want to know it so we don't print several times
    (if the assert fails). An instance of an array-assert is keyed/identified with the following parameters as key:
    - Array-size (in bytes) of the expecteds
    - Datatype of the expecteds
    - Array-size (in bytes) of the actuals
    - Datatype of the actuals
    - Message (string)
    - Test instance path (string)
	285741936FB_AssertArrayResultStaticC The total amount of instances of each of the "AssertArrayResults" AssertArrayResults$ The total amount of unique asserts TotalArrayAssertsAssertArrayResultInstances
3879263428FB_ASSERTARRAYRESULTSTATIC$b20832df-51fb-47f1-8077-6f683834a939
4126057407
2905686437
4129591207$a7fb8083-d80a-4b1b-8816-a954d21029f6
4220474593
2080793920
2799846253$f9a4ac71-1920-4a28-b414-2ab956ba44ba
2199397778$a67f455d-9f04-4265-a3ae-ec73cfedab30 
1425005247¡$da11a180-ba29-4114-ba12-6fb4c00ea850¢¸
    This method is called in every assert and returns whether this particular assert has already been called.
    The reason one would like to know whether this assert has already been reported or not is to not report it several
    times to any logging service. Because a test-suite can consist of several tests, and certain tests can require the
    test to run over several cycles it means that certain asserts could be called several times and thus we need to
    keep track of which asserts we've already reported. The user of the framework should not need to care for any of
    this and he/she should be able to call the asserts in any way they FIND suitable.
    To know what assert this is we need to check for the total combination of:
    - Test message
    - Test instance path
    - Expecteds size (in bytes)
    - Actuals size (in bytes)
    - Expecteds datatype
    - Actuals datatype
    Theoretically we can have a situation where a test has three different asserts, each and one with the same test
    message/test instance path/actuals size&datatype/expecteds size&datatype but called within the same or different
    cycles. In order for us to handle all situations we need a simple algorithm that works according to:
    - Keep track of how many instances the combination of test message/test instance path/expecteds size&datatype/
      actuals size&datatype we have. So for example, if we have called
      Assert(Exp := [5,4,3], Act := [5,4,3], 'Hello there', 'PRG.InstanceTestSuite.Test')
      two times in one cycle, we have two instances of that combination. This is done according to:
    - Iterate all existing reports.
      - If we have a new PLC-cycle, set the current detection-count to zero.
      - If new report does not match in any of the above fields, create it (together with current PLC-cycle).
        Also store the information that we have one instance of this combination and +1 on the detection-count.
      - If new report matches in all of the above, +1 in the detection-count. If this detection-count is larger than
        the stored detection-count for this combination, create a new report and add +1 to the storage of
        the detection-count.
£	334711663¤$9acdaaa9-94c5-4747-8072-7b7279f5cd81¥
2602585500¦$909102be-4739-47e1-abb5-2b1a0d9602c4§
1114810495¨AddAssertArrayResult©$60d61a50-adb0-4323-b700-3d64bcdd7ef0ª __OffsetI_ASSERTMESSAGEFORMATTER«LOGASSERTFAILURE¬	355528328I_AssertMessageFormatter®
4291550583¯LogAssertFailure°I_ASSERTMESSAGEFORMATTER±$35efab01-6ac8-46a5-a5e1-adb4f1f5f9b2²$71246e7e-3534-44b1-a788-c1f37427a096³¾
	This function block is responsible for printing the results of the assertions using the built-in
	LOGSTR functionality provided in this library. This sends the result to the DeviceLog.
´	856032233µFB_LogAssertMessageFormatter¶__INTERFACEPOINTER__631·
3082900915¸FB_LOGASSERTMESSAGEFORMATTER¹$54911d7d-b4a4-43a8-a981-a2fc14a13f71º
1702637047»
3821178837¼	498102394½
2988799914¾,AdjustAssertFailureMessageToMax252CharLength¿/FB_ADJUSTASSERTFAILUREMESSAGETOMAX252CHARLENGTHÀ/FB_AdjustAssertFailureMessageToMax252CharLengthÁTestInstancePathCleanedÂTestInstancePathFinalÃReturnValueÄTestInstancePathProcessedÅMessageProcessedÆ$48cbc6b0-5380-44b8-a045-57b6ad9f189dÇ
4086985287È	694510288ÉI_AssertMessageFormatter__UnionÊ
1092183428ËI_ASSERTMESSAGEFORMATTER__UNIONÌADDTESTÍADDTESTNAMETOINSTANCEPATHÎALLTESTSFINISHEDÏASSERTARRAY2DEQUALS_LREALÐASSERTARRAY2DEQUALS_REALÑASSERTARRAY3DEQUALS_LREALÒASSERTARRAY3DEQUALS_REALÓASSERTARRAYEQUALS_BOOLÔASSERTARRAYEQUALS_BYTEÕASSERTARRAYEQUALS_DINTÖASSERTARRAYEQUALS_DWORD×ASSERTARRAYEQUALS_INTØASSERTARRAYEQUALS_LINTÙASSERTARRAYEQUALS_LREALÚASSERTARRAYEQUALS_LWORDÛASSERTARRAYEQUALS_REALÜASSERTARRAYEQUALS_SINTÝASSERTARRAYEQUALS_UDINTÞASSERTARRAYEQUALS_UINTßASSERTARRAYEQUALS_ULINTàASSERTARRAYEQUALS_USINTáASSERTARRAYEQUALS_WORDâASSERTEQUALSãASSERTEQUALS_BOOLäASSERTEQUALS_BYTEåASSERTEQUALS_DATEæASSERTEQUALS_DATE_AND_TIMEçASSERTEQUALS_DINTèASSERTEQUALS_DWORDéASSERTEQUALS_INTêASSERTEQUALS_LINTëASSERTEQUALS_LREALìASSERTEQUALS_LTIMEíASSERTEQUALS_LWORDîASSERTEQUALS_REALïASSERTEQUALS_SINTðASSERTEQUALS_STRINGñASSERTEQUALS_TIMEòASSERTEQUALS_TIME_OF_DAYóASSERTEQUALS_UDINTôASSERTEQUALS_UINTõASSERTEQUALS_ULINTöASSERTEQUALS_USINT÷ASSERTEQUALS_WORDøASSERTFALSEù
ASSERTTRUEúFINDTESTSUITEINSTANCEPATHûGETINSTANCEPATHüGETNUMBEROFFAILEDTESTSýGETNUMBEROFSUCCESSFULTESTSþGETNUMBEROFTESTSÿ
SETTESTFAILEDSETTESTFINISHEDcall_after_init
reflectionÁ 
 This function block is responsible for holding the internal state of the test suite. 
 Every test suite can have one or more tests, and every test can do one or more asserts. 
 Itâs also responsible for providing all the assert-methods for asserting different data types. 
 Only failed assertions are recorded.
1004086117
FB_TestSuite
instance-pathnoinitInstancePath5Local, IsCompiled, RelativeInstance, NoInit, TypifiedÊ We need to have access to specific information of the current task that this test suite
       is executed in. This is for instance necessary when we need to know whether a test is
       defined already. The definition of a test that is defined already is that we call on it
       with the same name twice in the same cycle 
NumberOfTestsTests MaxNumberOfTestsForEachTestSuite Rising trigger of whether we have already notified the user of that the test name pointed to by the current
       position is a duplicate TestDuplicateNameTrigger Last cycle count index for a specific test. Used to detect whether this test has already been defined in the
       current test suite TestCycleCountIndex Prints the failed asserts to DeviceLog to display the assert message. This assert formatter can be replaced with something else than the DeviceLog LogAssertMessageFormatterAssertMessageFormatteræ | Asserts that two REALs are equal TO within a positive delta. IF they are NOT, an assertion error is created.
 
 Parameters:
     | Expected â REAL expected value
     | Actual â REAL actual value
     | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
    
     VAR
         a : REAL := 1234.5;
         b : REAL := 1234.4;
     END_VAR
     
     TEST('Test_REAL_Equals');
     AssertEquals_REAL(Expected := a,
                        Actual := b,
                        Delta := 0.1,
                        Message := 'Values differ');
     TEST_FINISHED();
     Failing example:
     VAR
         a : REAL := 1234.5;
         b : REAL := 1234.4;
     END_VAR
     TEST('Test_REAL_Differ');
     AssertEquals_REAL(Expected := a,
                         Actual := b,
                          Delta := 0.05,
                        Message := 'Values differ');
     TEST_FINISHED();
3935931743AssertArrayEquals_REAL  REAL array with expected valuesvariable_length_array
Dimensions1	Expecteds REAL array with actual valuesActuals¤ The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell Delta¡0 The identifying message for the assertion error¢Equals£
SizeEquals¤Index¥ExpectedString¦ActualString§SizeOfExpecteds¨
SizeOfActuals©ExpectedsIndexªActualsIndex«implicit_input¬Expecteds__Array__Info__ARRAY__DIM__INFO®Actuals__Array__Info¯FB_TESTSUITE°$c42ec40e-0859-4258-a3b2-11b258dab324±$f80c23f2-119d-406b-ae11-06d1991bf64d²ð | Asserts that two BOOLs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â BOOL expected value
     | Actual â BOOL actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : BOOL := TRUE;
         b : BOOL := TRUE;
     END_VAR
     TEST('Test_BOOL_Equals');
     AssertEquals_BOOL(Expected := a,
                       Actual := b,
                       Message := 'Bools differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : BOOL := TRUE;
         b : BOOL := FALSE;
     END_VAR
     TEST('Test_BOOL_Differ');
     AssertEquals_BOOL(Expected := a,
                       Actual := b,
                       Message := 'Bools differ');
     TEST_FINISHED();³
1285440394´AssertEquals_BOOLµ BOOL expected value¶ BOOL actual value·$0c41b405-ea35-4450-93cc-7c3349bdf754¸È
 | Asserts that two WORD arrays are equal. If they are not, an assertion error is created.
 Parameters:
     | Expecteds â WORD array with expected values
     | Actuals â WORD array with actual values
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE];
         b : ARRAY[1..5] OF WORD := [16#AAAA, 16#BBBB, 16#CCCC, 16#DDDD, 16#EEEE];
     END_VAR
     TEST('Test_WORD_Array_Equals');
     AssertArrayEquals_WORD(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..5] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB];
         b : ARRAY[1..7] OF WORD := [16#0000, 16#3333, 16#5555, 16#7777, 16#BBBB, 16#FFFF, 16#1122];
     END_VAR
     TEST('Test_WORD_Array_DifferInSize');
     AssertArrayEquals_WORD(Expecteds := a,
                                   Actuals := b,
                                   Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1133];
         b : ARRAY[1..7] OF WORD := [16#2323, 16#876A, 16#4CD4, 16#F3DC, 16#BBBB, 16#FFFF, 16#1122];
     END_VAR
     TEST('Test_WORD_Array_DifferInContent');
     AssertArrayEquals_WORD(Expecteds := a,
                                   Actuals := b,
                                   Message := 'Arrays differ');
     TEST_FINISHED();¹
2226873030ºAssertArrayEquals_WORD»  WORD array with expected values¼ WORD array with actual values½ExpectedDWordString¾ActualDWordString¿$16eada18-ce2b-459d-a8d9-277e84766935ÀÄ | Asserts that two STRINGs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â STRING expected value
     | Actual â STRING actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : STRING := 'Hello there';
         b : STRING := 'Hello there';
     END_VAR
     TEST('Test_STRING_Equals');
     AssertEquals_STRING(Expected := a,
                         Actual := b,
                         Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : STRING := 'This is a string';
         b : STRING := 'This is another string';
     END_VAR
     TEST('Test_STRING_Differ');
     AssertEquals_STRING(Expected := a,
                         Actual := b,
                         Message := 'Values differ');
     TEST_FINISHED(); Á	696659643ÂAssertEquals_STRINGÃ STRING expected valueÄ STRING actual valueÅ$cad7fed3-5db3-4371-9240-856c3c740489Æ | Asserts that two ULINTs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â ULINT expected value
     | Actual â ULINT actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ULINT := 45683838383;
         b : ULINT := 45683838383;
     END_VAR
     TEST('Test_ULINT_Equals');
     AssertEquals_ULINT(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : ULINT := 10000;
         b : ULINT := 53685437234;
     END_VAR
     TEST('Test_ULINT_Differ');
     AssertEquals_ULINT(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();Ç
1081954271ÈAssertEquals_ULINTÉ ULINT expected valueÊ ULINT actual valueË$6f1e7566-33c3-4f9c-b92d-7828feb26211ÌÑ | Asserts that two USINT arrays are equal. If they are not, an assertion error is created.
 Parameters:
     | Expecteds â USINT array with expected values
     | Actuals â USINT array with actual values
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..100] OF USINT := [42, 100(33)];
         b : ARRAY[0..100] OF USINT := [42, 100(33)];
     END_VAR
     TEST('Test_USINT_Array_Equals');
     AssertArrayEquals_USINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..100] OF USINT := [101(42)];
         b : ARRAY[0..70] OF USINT := [71(42)];
     END_VAR
     TEST('Test_USINT_Array_DifferInSize');
     AssertArrayEquals_USINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..10] OF USINT := [0,1,2,3,6(4),5];
         b : ARRAY[0..10] OF USINT := [0,1,2,3,6(5),6];
     END_VAR
     TEST('Test_USINT_Array_DifferInContent');
     AssertArrayEquals_USINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();Í	887618224ÎAssertArrayEquals_USINTÏ! USINT array with expected valuesÐ USINT array with actual valuesÑ$b3215098-2f26-48bf-a7e4-ee1a0803a968Ò
3215331727ÓGetNumberOfSuccessfulTestsÔ$635213dc-96ca-4be6-9c0d-c0454c29d34dÕ | Asserts that two BYTE arrays are equal. If they are not, an assertion error is created.
 Parameters:
    | Expecteds â BYTE array with expected values
    | Actuals â BYTE array with actual values
    | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E];
         b : ARRAY[1..3] OF BYTE := [16#FD, 16#34, 16#9E];
     END_VAR
     TEST('Test_BYTE_Array_Equals');
     AssertArrayEquals_BYTE(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();								  
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..2] OF BYTE := [16#AB, 16#CD];
         b : ARRAY[1..5] OF BYTE := [16#AB, 16#CD, 16#EF, 16#01, 16#23];
     END_VAR
     TEST('Test_BYTE_Array_DiffersInSize');
     AssertArrayEquals_BYTE(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();								  
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..3] OF BYTE := [16#AB, 16#AA, 16#BB, 16#89];
         b : ARRAY[0..3] OF BYTE := [16#AB, 16#CD, 16#BB, 16#89];
     END_VAR
     TEST('Test_BYTE_Array_DiffersInContent');
     AssertArrayEquals_BYTE(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();Ö	843385749×AssertArrayEquals_BYTEØ  BYTE array with expected valuesÙ BYTE array with actual valuesÚExpectedByteStringÛActualByteStringÜ$375a5287-a3e9-4833-ac17-bab8f3f0fdc9Ý
2859496217Þ
SetTestFailedß$3adab5a4-e3e4-4dd7-8096-bf6ad3b874d9àý | Asserts that two WORDs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â WORD expected value
     | Actual â WORD actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : WORD := 16#ABCD;
         b : WORD := 16#ABCD;
     END_VAR
     TEST('Test_WORD_Equals');
     AssertEquals_WORD(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : WORD := 16#EF01;
         b : WORD := 16#2345;
     END_VAR
     TEST('Test_WORD_Differ');
     AssertEquals_WORD(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();á
1389270635âAssertEquals_WORDã WORD expected valueä WORD actual valueå$85132cdb-0553-4070-be9a-976fcddd873dæÞ | Asserts that two ULINT arrays are equal. If they are not, an assertion error is created.
 Parameters:
     | Expecteds â ULINT array with expected values
     | Actuals â ULINT array with actual values
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000];
         b : ARRAY[0..3] OF ULINT := [0, 18_446_744_073_709_551_615, 9_400_000_000_000, 3_213_000_444_000];
     END_VAR
     TEST('Test_ULINT_Array_Equals');
     AssertArrayEquals_ULINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..1] OF ULINT := [0, 9_400_000_000_000];
         b : ARRAY[0..0] OF ULINT := [0];
     END_VAR
     TEST('Test_ULINT_Array_DifferInSize');
     AssertArrayEquals_ULINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 9_400_000_000_000];
         b : ARRAY[0..1] OF ULINT := [3_213_000_444_000, 18_446_744_073_709_551_615];
     END_VAR
     TEST('Test_ULINT_Array_DifferInContent');
     AssertArrayEquals_ULINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();ç
3439473642èAssertArrayEquals_ULINTé! ULINT array with expected valuesê ULINT array with actual valuesë$916529a0-57b3-4947-a5b8-e7b9ff17f35fì	405680698í | Asserts that two LINTs are equal. If they are not, an assertion error is created.
 
 Parameters:
     | Expected â LINT expected value
     | Actual â LINT actual value
     | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : LINT := -123456789;
         b : LINT := -123456789;
     END_VAR
     TEST('Test_LINT_Equals');
     AssertEquals_LINT(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : LINT := -451416345;
         b : LINT := 589532453;
     END_VAR
     TEST('Test_LINT_Differ');
     AssertEquals_LINT(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();î9335976ïAssertEquals_LINTð LINT expected valueñ LINT actual valueò$9dc34017-cbc7-41a9-83a2-941f39cc7271ó | Asserts that two objects (of any type) are equal. If they are not, an assertion error is created.
 | For REAL and LREAL itâs recommended to use the AssertEquals_REAL or AssertEquals_LREAL respectively 
 | as these give the possibility to specify a delta between the expected and actual value.
 Parameters:
     | Expected â Expected value
     | Actual â Actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : INT := 5;
         b : INT := 5;
     END_VAR
     TEST('Test_ANY_Equals');
     AssertEquals(Expected := a,
                  Actual := b,
                  Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : INT := 5;
         b : UINT := 5;
     END_VAR
     TEST('Test_ANY_Differ_DataType');
     AssertEquals(Expected := a,
                  Actual := b,
                  Message := 'Values differ');
     TEST_FINISHED();ô
2024349150õAssertEqualsö Expected value÷$ The value to check against expectedøCountùExpectedDataStringúActualDataStringû
AnyComparatorüFB_ANYCOMPARATORýFB_AnyComparatorþboolExpectedÿ
boolActualbyteExpected
byteActualdateExpected
dateActualdateAndTimeExpected
dateAndTimeActualdintExpected
dintActual
dwordExpecteddwordActualintExpected	intActuallintExpected
lintActual
lrealExpectedlrealActual
ltimeExpectedltimeActual
lwordExpectedlwordActualrealExpected
realActualsintExpected
sintActualstringExpectedstringActualtimeExpected
timeActualtimeOfDayExpectedtimeOfDayActual
udintExpectedudintActual uintExpected¡
uintActual¢
ulintExpected£ulintActual¤
usintExpected¥usintActual¦wordExpected§
wordActual¨$092092ee-35b6-45cc-a1ac-e428e5d747ba©ª | Asserts that two TIME_OF_DAYs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â TIME_OF_DAY expected value
     | Actual â TIME_OF_DAY actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492;
         b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492;
     END_VAR
     TEST('Test_TIME_OF_DAY_Equals');
     AssertEquals_TIME_OF_DAY(Expected := a,
                              Actual := b,
                              Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : TIME_OF_DAY := TIME_OF_DAY#15:36:30.123;
         b : TIME_OF_DAY := TIME_OF_DAY#06:21:11.492;
     END_VAR
     TEST('Test_TIME_OF_DAY_Differ');
     AssertEquals_TIME_OF_DAY(Expected := a,
                              Actual := b,
                              Message := 'Values differ');
     TEST_FINISHED();ª	262122215«AssertEquals_TIME_OF_DAY¬ TIME_OF_DAY expected value TIME_OF_DAY actual value®$d892dd01-3d32-4eb1-9f95-980dff16616c¯ô | Asserts that two USINTs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â USINT expected value
     | Actual â USINT actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : USINT := 5;
         b : USINT := 5;
     END_VAR
     TEST('Test_USINT_Equals');
     AssertEquals_USINT(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : USINT := 3;
         b : USINT := 7;
     END_VAR
     TEST('Test_USINT_Differ');
     AssertEquals_USINT(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();°
2368473972±AssertEquals_USINT² USINT expected value³ USINT actual value´$7f12117a-f0ab-475b-ba47-c8a5c801a9acµ² | Asserts that two DINT arrays are equal. If they are not, an assertion error is created.
 Parameters:
    | Expecteds â DINT array with expected values
    | Actuals â DINT array with actual values
    | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538];
         b : ARRAY[2..7] OF DINT := [64, 98, 2147483647, -2147483648, 0, -63987538];
     END_VAR
 
     TEST('Test_DINT_Array_Equals');
     AssertArrayEquals_DINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();								  
 Failing example 1:
 .. code-block:: codesys
 
     VAR
         a : ARRAY[3..4] OF DINT := [-11, 2147483647];
         b : ARRAY[4..6] OF DINT := [-11, 2147483647, 0];
     END_VAR
 
     TEST('Test_DINT_Array_DifferInSize');
     AssertArrayEquals_DINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();								  
 Failing example 2:
 .. code-block:: codesys
 
     VAR
         a : ARRAY[3..5] OF DINT := [-4746, -2147483645, 0];
         b : ARRAY[3..5] OF DINT := [-4746, -2147483641, 0];
     END_VAR
 
     TEST('Test_DINT_Array_DifferInContent');
     AssertArrayEquals_DINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();¶	448306293·AssertArrayEquals_DINT¸  DINT array with expected values¹ DINT array with actual valuesº$4f0d9b20-0c78-467d-a52a-6badbd5d37cc»ï | Asserts that two SINTs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â SINT expected value
     | Actual â SINT actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : SINT := -128;
         b : SINT := -128;
     END_VAR
     TEST('Test_SINT_Equals');
     AssertEquals_SINT(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : SINT := 127;
         b : SINT := -30;
     END_VAR
     TEST('Test_SINT_Differ');
     AssertEquals_SINT(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();¼
2975568326½AssertEquals_SINT¾ SINT expected value¿ SINT actual valueÀ$10052dfe-cfcb-4a5a-aa97-151e272ce217Á
3094313462ÂGetNumberOfTestsÃ$6f67c6d5-c29e-4577-8651-51bd6db3ab63Ä	 | Asserts that two LREALs are equal to within a positive delta. If they are not, an assertion error is created.
 Parameters:
     | Expected â LREAL expected value
     | Actual â LREAL actual value
     | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : LREAL := 1234567.89;
         b : LREAL := 1234567.76;
     END_VAR
     TEST('Test_LREAL_Equals');
     AssertEquals_LREAL(Expected := a,
                        Actual := b,
                        Delta := 0.2,
                        Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : LREAL := 1234567.89;
         b : LREAL := 1234567.76;
     END_VAR
     TEST('Test_LREAL_Differ');
     AssertEquals_LREAL(Expected := a,
                        Actual := b,
                        Delta := 0.1,
                        Message := 'Values differ');
     TEST_FINISHED();  Å
3690545254ÆAssertEquals_LREALÇ LREAL expected valueÈ LREAL actual valueÉv The maximum delta between the absolute value of expected and actual for which both numbers are still considered equalÊ$205d107c-0a2d-44f7-b68a-eb06720b6a6bËÍ Parameters:
    | Expecteds â REAL 2d array with expected values
    | Actuals â REAL 2d array with actual values
	  | Delta - REAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell
    | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
	  <insert positive testexample here>
    TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
	  <insert failing testexample1 here>
    TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
	  <insert failing testexample2 here>
    TEST_FINISHED();Ì
4044968825ÍAssertArray2dEquals_REALÎ# REAL 2d array with expected valuesÏ2Ð! REAL 2d array with actual valuesÑ& Index when looping through DimensionsÒDimensionIndexÓ2 Lower bounds of Expecteds array in each dimensionÔLowerBoundExpectedsÕ2 Upper bounds of Expecteds array in each dimensionÖUpperBoundExpecteds×0 Lower bounds of Actuals array in each dimensionØLowerBoundActualsÙ0 Upper bounds of Actuals array in each dimensionÚUpperBoundActualsÛ* Size of Expecteds array in each dimensionÜ( Size of Actuals array in each dimensionÝ? Current Array index offsets from Lower Bound in each dimensionÞOffsetßD Array of current Expected array indexes when looping through arraysàExpectedArrayIndexáB Array of current Actual array indexes when looping through arraysâActualArrayIndexã Single expected valueä Single actual valueå$dc3b5666-7b5a-49ae-9837-cbb9bedd911aæ	598611264çAddTestNameToInstancePathèCompleteTestInstancePathé$abecfe2f-b0e2-4118-a1c6-bb248556b776ê= Searches for the instance path of the calling function blockë
1936542576ìFindTestSuiteInstancePathí$e69a4510-81a2-4d65-94e4-52c06ac49944îÐ Parameters:
    | Expecteds â LREAL 3d array with expected values
    | Actuals â LREAL 3d array with actual values
	  | Delta - LREAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell
    | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
	  <insert positive testexample here>
    TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
	  <insert failing testexample1 here>
    TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
	  <insert failing testexample2 here>
    TEST_FINISHED();ï
3893451479ðAssertArray3dEquals_LREALñ$ LREAL 3d array with expected valuesò3ó" LREAL 3d array with actual valuesô$251da4d5-4df8-4eed-b154-a479323eb0d5õé | Asserts that two INTs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â INT expected value
     | Actual â INT actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : INT := -12345;
         b : INT := -12345;
     END_VAR
     TEST('Test_INT_Equals');
     AssertEquals_INT(Expected := a,
                      Actual := b,
                      Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : INT := -32000;
         b : INT := 15423;
     END_VAR
     TEST('Test_INT_Differ');
     AssertEquals_INT(Expected := a,
                      Actual := b,
                      Message := 'Values differ');
     TEST_FINISHED();ö	292426684÷AssertEquals_INTø INT expected valueù INT actual valueú$7c61106e-9bcd-4577-a949-ab96d8862e41û¤ | Asserts that two DATEs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â DATE expected value
     | Actual â DATE actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : DATE := DATE#1996-05-06;
         b : DATE := DATE#1996-05-06;
     END_VAR
     TEST('Test_DATE_Equals');
     AssertEquals_DATE(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : DATE := DATE#1996-05-06;
         b : DATE := DATE#2019-01-20;
     END_VAR
     TEST('Test_DATE_Differ');
     AssertEquals_DATE(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();						 ü	246969074ýAssertEquals_DATEþ DATE expected valueÿ DATE actual value$1645ab79-f969-41aa-a170-f589a5757e7f | Asserts that two DWORDs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â DWORD expected value
     | Actual â DWORD actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : DWORD := 16#7890ABCD;
         b : DWORD := 16#7890ABCD;
     END_VAR
     TEST('Test_DWORD_Equals');
     AssertEquals_DWORD(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : DWORD := 16#12345678;
         b : DWORD := 16#90ABCDEF;
     END_VAR
     TEST('Test_DWORD_Differ');
     AssertEquals_DWORD(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
1252105877AssertEquals_DWORD DWORD expected value
 DWORD actual value$3ce6ba77-0ab2-46fc-a7c9-978b376b93beé | Asserts that two REALs are equal to within a positive delta. If they are not, an assertion error is created.
 Parameters:
     | Expected â REAL expected value
     | Actual â REAL actual value
     | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : REAL := 1234.5;
         b : REAL := 1234.4;
     END_VAR
     TEST('Test_REAL_Equals');
     AssertEquals_REAL(Expected := a,
                       Actual := b,
                       Delta := 0.1,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : REAL := 1234.5;
         b : REAL := 1234.4;
     END_VAR
     TEST('Test_REAL_Differ');
     AssertEquals_REAL(Expected := a,
                       Actual := b,
                       Delta := 0.05,
                       Message := 'Values differ');
     TEST_FINISHED();
4233966449AssertEquals_REAL REAL expected value REAL actual value$fba4feaf-27d0-4f8b-9014-3895f7bb9cc7 | Asserts that two UDINTs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â UDINT expected value
     | Actual â UDINT actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : UDINT := 21845123;
         b : UDINT := 21845123;
     END_VAR
     TEST('Test_UDINT_Equals');
     AssertEquals_UDINT(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : UDINT := 34124214;
         b : UDINT := 52343244;
     END_VAR
     TEST('Test_UDINT_Differ');
     AssertEquals_UDINT(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
3714610654AssertEquals_UDINT UDINT expected value UDINT actual value$9c21e8db-62d7-4e5c-8e00-cd508f4f5abcþ | Asserts that two LTIMEs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â LTIME expected value
     | Actual â LTIME actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : LTIME := LTIME#213503D23H34M33S709MS551US615NS;
         b : LTIME := LTIME#213503D23H34M33S709MS551US615NS;
     END_VAR
     TEST('Test_LTIME_Equals');
     AssertEquals_LTIME(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : LTIME := LTIME#213503D23H34M33S709MS551US615NS;
         b : LTIME := LTIME#1000D15H23M12S34MS2US44NS;
     END_VAR
     TEST('Test_LTIME_Differ');
     AssertEquals_LTIME(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
3081469954AssertEquals_LTIME LTIME expected value LTIME actual value$05ea6378-c553-40a9-9e6b-8f3736f63098· | Asserts that two SINT arrays are equal. If they are not, an assertion error is created.
 
 Parameters:
     | Expecteds â SINT array with expected values
     | Actuals â SINT array with actual values
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..3] OF SINT := [-128, 127, -34, 62];
         b : ARRAY[0..3] OF SINT := [-128, 127, -34, 62];
     END_VAR
     TEST('Test_SINT_Array_Equals');
     AssertArrayEquals_SINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..0] OF SINT := [-128];
         b : ARRAY[0..1] OF SINT := [-128, 127];
     END_VAR
     TEST('Test_SINT_Array_DifferInSize');
     AssertArrayEquals_SINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();								  
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..0] OF SINT := [-128];
         b : ARRAY[0..0] OF SINT := [127];
     END_VAR
     TEST('Test_SINT_Array_DifferInContent');
     AssertArrayEquals_SINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();	167706794AssertArrayEquals_SINT  SINT array with expected values SINT array with actual values$133c577e-0641-4157-b42b-46dbf29f788e  | Asserts that two TIMEs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â TIME expected value
     | Actual â TIME actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : TIME := T#11H34M13S244MS;
         b : TIME := T#11H34M13S244MS;
     END_VAR
     TEST('Test_TIME_Equals');
     AssertEquals_TIME(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : TIME := T#12H34M15S10MS;
         b : TIME := T#11H34M13S244MS;
     END_VAR
     TEST('Test_TIME_Differ');
     AssertEquals_TIME(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED(); 
3910873930¡AssertEquals_TIME¢ TIME expected value£ TIME actual value¤$717a0cdd-16a7-4f45-90f3-f5700dba9369¥ì | Asserts that two DATE_AND_TIMEs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â DATE_AND_TIME expected value
     | Actual â DATE_AND_TIME actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30;
         b : DATE_AND_TIME := DATE_AND_TIME#2019-01-20-13:54:30;
     END_VAR
     TEST('Test_DATE_AND_TIME_Equals');
     AssertEquals_DATE_AND_TIME(Expected := a,
                                Actual := b,
                                Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : DATE_AND_TIME := DATE_AND_TIME#1996-05-06-15:36:30;
         b : DATE_AND_TIME := DATE_AND_TIME#1972-03-29-00:00:00;
     END_VAR
     TEST('Test_DATE_AND_TIME_Differ');
     AssertEquals_DATE_AND_TIME(Expected := a,
                                Actual := b,
                                Message := 'Values differ');
     TEST_FINISHED();¦
1401989022§AssertEquals_DATE_AND_TIME¨ DATE_AND_TIME expected value© DATE_AND_TIME actual valueª$42befc01-2199-49e2-b7ef-cf909b8890f9«Í Parameters:
    | Expecteds â REAL 3d array with expected values
    | Actuals â REAL 3d array with actual values
	  | Delta - REAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell
    | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
	  <insert positive testexample here>
    TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
	  <insert failing testexample1 here>
    TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
	  <insert failing testexample2 here>
    TEST_FINISHED();¬
1606741492AssertArray3dEquals_REAL®# REAL 3d array with expected values¯! REAL 3d array with actual values°$0dc8fccf-4b9a-4206-8d9f-212f576edb04±
4262076380²FB_init³H if TRUE, the retain variables are initialized (warm start / cold start)´O if TRUE, the instance afterwards gets moved into the copy code (online change)µ$9273f5af-0583-448b-bab6-3359f03f9b91¶ | Asserts that two DINTs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â BYTE expected value
     | Actual â BYTE actual value
     | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : DINT := -80000;
         b : DINT := -80000;
     END_VAR
     TEST('Test_DINT_Equals');
     AssertEquals_DINT(Expected := a,
                              Actual := b,
                              Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : DINT := -55555;
         b : DINT := 70000;
     END_VAR
     TEST('Test_DINT_Differ');
     AssertEquals_DINT(Expected := a,
                              Actual := b,
                              Message := 'Values differ');
     TEST_FINISHED();   ·
1997820164¸AssertEquals_DINT¹ DINT expected valueº DINT actual value»$b7177b75-64df-4021-85c6-c366f61f5f89¼ä | Asserts that two UDINT arrays are equal. If they are not, an assertion error is created.
 Parameters:
     | Expecteds â UDINT array with expected values
     | Actuals â UDINT array with actual values
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000];
         b : ARRAY[1..3] OF UDINT := [0, 4294967295, 5000];
     END_VAR
     TEST('Test_UDINT_Array_Equals');
     AssertArrayEquals_UDINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
         a : ARRAY[-5..-4] OF UDINT := [4294967295, 0];
         b : ARRAY[0..2] OF UDINT := [4294967295, 0, 5000];
     END_VAR
     TEST('Test_UDINT_Array_DifferInSize');
     AssertArrayEquals_UDINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[-5..-4] OF UDINT := [4294967295, 5];
         b : ARRAY[0..1] OF UDINT := [4294967295, 4];
     END_VAR
 
     TEST('Test_UDINT_Array_DifferInContent');
     AssertArrayEquals_UDINT(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();½	523934130¾AssertArrayEquals_UDINT¿! UDINT array with expected valuesÀ UDINT array with actual valuesÁ$5f690331-57e2-4ea1-b1d7-ab65b52dc848Â | Asserts that two INT arrays are equal. If they are not, an assertion error is created.
 Parameters:
     | Expecteds â INT array with expected values
     | Actuals â INT array with actual values
     | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[-5..1] OF INT := [64, 98, -32768, 32767, 5478, -378, 42];
         b : ARRAY[1..7] OF INT := [64, 98, -32768, 32767, 5478, -378, 42];
     END_VAR
 
     TEST('Test_INT_Array_Equals');
     AssertArrayEquals_INT(Expecteds := a,
                           Actuals := b,
                           Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[-4..3] OF INT := [64, 98, -32768, 32767, 5478, -378, 42, 6234];
         b : ARRAY[1..5] OF INT := [64, 98, -32768, 32767, 5478];
     END_VAR
 
     TEST('Test_INT_Array_DifferInSize');
     AssertArrayEquals_INT(Expecteds := a,
                           Actuals := b,
                           Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[-8..-6] OF INT := [42, -23, -32768];
         b : ARRAY[1..3] OF INT := [42, 24, -32768];
     END_VAR
 
     TEST('Test_INT_Array_DifferInContent');
     AssertArrayEquals_INT(Expecteds := a,
                           Actuals := b,
                           Message := 'Arrays differ');
     TEST_FINISHED();Ã	528458294ÄAssertArrayEquals_INTÅ INT array with expected valuesÆ INT array with actual valuesÇ$d54cf111-a7e7-4f51-bdf4-9853e055f62dÈ | Asserts that a condition is false. If it is not, an assertion error is created.
 Parameters:
     | Condition â Condition to be checked
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : INT := -33;
         b : INT := -44;
     END_VAR
     TEST('AssertThatINTsAreNotEqual');
     AssertFalse(Condition := (a = b),
                 Message := 'INTs are equal');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : INT := -33;
         b : INT := -44;
     END_VAR
     TEST('AssertThatINTsAreEqual');
     AssertFalse(Condition := (a <> b),
                 Message := 'INTs are equal');
     TEST_FINISHED();  É
1993015657ÊAssertFalseË Condition to be checkedÌ	ConditionÍ$022665a8-9003-4aaa-8ef4-bd39fe196883Î	614213211ÏGetNumberOfFailedTestsÐFailedTestsCountÑ$12e4522b-e67f-439a-af1d-8713231888aaÒÈ
 | Asserts that two LINT arrays are equal. If they are not, an assertion error is created.
 
 Parameters:
     | Expecteds â LINT array with expected values
     | Actuals â LINT array with actual values
     | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[-1..0] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808];
         b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808];
     END_VAR
 
     TEST('Test_LINT_Array_Equals');
     AssertArrayEquals_LINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();
 
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55];
         b : ARRAY[4..5] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808];
     END_VAR
 
     TEST('Test_LINT_Array_DifferInSize');
     AssertArrayEquals_LINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();
 
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[-1..1] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_853_775_808, 55];
         b : ARRAY[4..6] OF LINT := [9_223_372_036_854_775_807, -9_223_372_036_854_775_808, 55];
     END_VAR
 
     TEST('Test_LINT_Array_DifferInContent');
     AssertArrayEquals_LINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();Ó
2145025305ÔAssertArrayEquals_LINTÕ  LINT array with expected valuesÖ LINT array with actual values×$d7e53e6b-caed-4867-9ef5-3ccb7ae16bf8Øí | Asserts that two LWORD arrays are equal. If they are not, an assertion error is created.
 
 Parameters:
     | Expecteds â LWORD array with expected values
     | Actuals â LWORD array with actual values
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210];
         b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210];
     END_VAR
 
     TEST('Test_LWORD_Array_Equals');
     AssertArrayEquals_LWORD(Expecteds := a,
                                    Actuals := b,
                                    Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210];
         b : ARRAY[1..2] OF LWORD := [16#01234567890ABCDE, 16#EDCBA09876543210];
     END_VAR
 
     TEST('Test_LWORD_Array_DifferInSize');
     AssertArrayEquals_LWORD(Expecteds := a,
                                    Actuals := b,
                                    Message := 'Arrays differ');
     TEST_FINISHED();
 
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[1..1] OF LWORD := [16#EDCBA09876543210];
         b : ARRAY[1..1] OF LWORD := [16#01234567890ABCDE];
     END_VAR
 
     TEST('Test_LWORD_Array_DifferInContent');
     AssertArrayEquals_LWORD(Expecteds := a,
                                    Actuals := b,
                                    Message := 'Arrays differ');
     TEST_FINISHED();
  Ù
2393999758ÚAssertArrayEquals_LWORDÛ! LWORD array with expected valuesÜ LWORD array with actual valuesÝ$7bc0c786-fccc-46e3-b38f-2013c44bfcb0Þ÷ | Asserts that two UINTs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â UINT expected value
     | Actual â UINT actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : UINT := 65535;
         b : UINT := 65535;
     END_VAR
     TEST('Test_UINT_Equals');
     AssertEquals_UINT(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : UINT := 64322;
         b : UINT := 32312;
     END_VAR
     TEST('Test_UINT_Differ');
     AssertEquals_UINT(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();  ß	455476556àAssertEquals_UINTá UINT expected valueâ UINT actual valueã$86b960b9-ebc0-46af-91ed-94a423f501dcä¼ | Asserts that two LWORDs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â LWORD expected value
     | Actual â LWORD actual value
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
     VAR
         a : LWORD := 16#0123456789ABCDEF;
         b : LWORD := 16#0123456789ABCDEF;
     END_VAR
     TEST('Test_LWORD_Equals');
     AssertEquals_LWORD(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : LWORD := 16#0123656789ABCBEC;
         b : LWORD := 16#0123256789ABCAEE;
     END_VAR
     TEST('Test_LWORD_Differ');
     AssertEquals_LWORD(Expected := a,
                        Actual := b,
                        Message := 'Values differ');
     TEST_FINISHED();å
2981194089æAssertEquals_LWORDç LWORD expected valueè LWORD actual valueé$08b090fb-911b-49fa-a51a-7f5edfd3dd2cêÐ Parameters:
    | Expecteds â LREAL 2d array with expected values
    | Actuals â LREAL 2d array with actual values
	  | Delta - LREAL The maximum delta between the value of expected and actual for which both numbers are still considered equal, proportional to the Expected value in that array cell
    | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
	  <insert positive testexample here>
    TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
	  <insert failing testexample1 here>
    TEST_FINISHED();
 Failing example 2:
 .. code-block:: codesys
	  <insert failing testexample2 here>
    TEST_FINISHED();ë
3118050793ìAssertArray2dEquals_LREALí$ LREAL 2d array with expected valuesî" LREAL 2d array with actual valuesï$964c2fec-9de7-47ae-bee4-23c559ae4a3fð	355422951ñß
Asserts that two BOOL arrays are equal. If they are not, an assertion error is created.
Parameters:
* Expecteds â BOOL array with expected values
* Actuals â BOOL array with actual values
* Message â The identifying message for the assertion error
Positive example:
.. code-block:: codesys
	VAR
		a : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE];
		b : ARRAY[1..5] OF BOOL := [TRUE, FALSE, TRUE, FALSE, TRUE];
	END_VAR
	TEST('Test_BOOL_Array_Equals');
	AssertArrayEquals_BOOL(Expecteds := a,
						  Actuals := b,
						  Message := 'Arrays differ');
	TEST_FINISHED();
Failing example 1:
.. code-block:: codesys
	VAR
		a : ARRAY[1..6] OF BOOL := [TRUE, TRUE, TRUE, TRUE, TRUE, TRUE];
		b : ARRAY[1..4] OF BOOL := [TRUE, TRUE, TRUE, TRUE];
	END_VAR
	TEST('Test_BYTE_Array_DiffersInSize');
	AssertArrayEquals_BOOL(Expecteds := a,
						Actuals := b,
						Message := 'Arrays differ');
	TEST_FINISHED();
Failing example 2:
.. code-block:: codesys
	VAR
		a : ARRAY[0..5] OF BOOL := [TRUE, TRUE, FALSE, TRUE, FALSE, TRUE];
		b : ARRAY[0..5] OF BOOL := [TRUE, TRUE, TRUE, TRUE, FALSE, FALSE];
	END_VAR
	TEST('Test_BYTE_Array_DiffersInContent');
	AssertArrayEquals_BOOL(Expecteds := a,
                          Actuals := b,
                          Message := 'Arrays differ');
	TEST_FINISHED();
ò
2327915240óAssertArrayEquals_BOOLô  BOOL array with expected valuesõ BOOL array with actual valuesö$3d4059ab-c241-4859-9a9f-090cab6db606÷ 
Asserts that a condition is true. If it is not, an assertion error is created.
Parameters:
	| Condition â Condition to be checked
	| Message â The identifying message for the assertion error
Positive example:
.. code-block:: codesys
     VAR
         a : WORD := 16#ABCD;
         b : WORD := 16#0123;
     END_VAR
     TEST('AssertThatWORDsAreNotEqual');
     AssertTrue(Condition := (a <> b),
                Message := 'WORDs are equal');
     TEST_FINISHED();
Failing example:
.. code-block:: codesys
     VAR
         a : WORD := 16#ABCD;
         b : WORD := 16#0123;
     END_VAR
     TEST('AssertThatWORDsAreEqual');
     AssertTrue(Condition := (a = b),
                Message := 'WORDs are not equal');
     TEST_FINISHED();
ø
1043909239ù
AssertTrueú$c415013c-c271-42ba-83ad-6c2c653d8f2eû
1475975773üAddTestýErrorMessageþFunctionCallResultÿTestWithThisNameAlreadyExistsLowerCasedTestNameTrimmedTestName$d383011f-6bea-4b05-9018-ea4782ad2837
2609692221
 | Asserts that two DWORD arrays are equal. If they are not, an assertion error is created.
 Parameters:
    | Expecteds â DWORD array with expected values
    | Actuals â DWORD array with actual values
    | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[2..3] OF DWORD := [16#6789ABCD, 16#EF012345];
         b : ARRAY[1..2] OF DWORD := [16#6789ABCD, 16#EF012345];
     END_VAR
 
     TEST('Test_DWORD_Array_Equals');
     AssertArrayEquals_DWORD(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();								   
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#67890ABC, 16#DDDDDDDD];
         b : ARRAY[-3..-2] OF DWORD := [16#6789ABCD, 16#EF012345];
     END_VAR
 
     TEST('Test_DWORD_Array_DifferInSize');
     AssertArrayEquals_DWORD(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
 	   TEST_FINISHED();								   
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EFAA2346, 16#ABABABAB, 16#EEEEEEEE];
         b : ARRAY[-2..1] OF DWORD := [16#6789ABCD, 16#EF012345, 16#ABABABAB, 16#EEEEEEEE];
     END_VAR
 
     TEST('Test_DWORD_Array_DifferInContent');
     AssertArrayEquals_DWORD(Expecteds := a,
                             Actuals := b,
                             Message := 'Arrays differ');
     TEST_FINISHED();
2193117219AssertArrayEquals_DWORD! DWORD array with expected values DWORD array with actual values$eec9d02d-95a1-4885-9906-ad4b2d0f4cab
4117816331ö | Asserts that two BYTEs are equal. If they are not, an assertion error is created.
 Parameters:
     | Expected â BYTE expected value
     | Actual â BYTE actual value
     | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : BYTE := 16#CD;
         b : BYTE := 16#CD;
     END_VAR
     TEST('Test_BYTE_Equals');
     AssertEquals_BYTE(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();
 Failing example:
 .. code-block:: codesys
     VAR
         a : BYTE := 16#AB;
         b : BYTE := 16#CD;
     END_VAR
     TEST('Test_BYTE_Differ');
     AssertEquals_BYTE(Expected := a,
                       Actual := b,
                       Message := 'Values differ');
     TEST_FINISHED();	268346097AssertEquals_BYTE BYTE expected value BYTE actual value$c039f3f1-9c41-4f5e-93a3-393ce160979a
1805835891AllTestsFinished$2b211901-49a8-4e51-90e1-4b1e298f9e0c
2084092420GetInstancePath$178fa338-5ed3-417b-8f4d-e9f120ace4b9 Marks the test as finished in this testsuite.
   Returns TRUE if test was found, and FALSE if a test with this name was not found in this testsuite
3967847859SetTestFinished$1ec94335-80d7-46d3-a0f0-345f8eda2ea4Ó | Asserts that two UINT arrays are equal. If they are not, an assertion error is created.
 Parameters:
     | Expecteds â UINT array with expected values
     | Actuals â UINT array with actual values
     | Message â The identifying message for the assertion error
 
 Positive example:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59];
         b : ARRAY[0..4] OF UINT := [0, 65535, 2000, 34123, 59];
     END_VAR
 
     TEST('Test_UINT_Array_Equals');
     AssertArrayEquals_UINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();
 Failing example 1:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..2] OF UINT := [0, 4, 8];
         b : ARRAY[0..3] OF UINT := [0, 4, 8, 12];
     END_VAR
     TEST('Test_UINT_Array_DifferInSize');
     AssertArrayEquals_UINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();
 
 Failing example 2:
 .. code-block:: codesys
     VAR
         a : ARRAY[0..3] OF UINT := [0, 4, 8, 99];
         b : ARRAY[0..3] OF UINT := [0, 4, 8, 12];
     END_VAR
     TEST('Test_UINT_Array_DifferInContent');
     AssertArrayEquals_UINT(Expecteds := a,
                            Actuals := b,
                            Message := 'Arrays differ');
     TEST_FINISHED();
1542196384AssertArrayEquals_UINT  UINT array with expected values UINT array with actual values $358571ac-0a0d-4e71-8097-c7943f718fce¡	 | Asserts that two LREALs are equal TO within a positive delta. IF they are NOT, an assertion error is created.
 
 Parameters:
     | Expected â LREAL expected value
     | Actual â LREAL actual value
     | Delta â The maximum delta between the absolute value of expected and actual for which both numbers are still considered equal
     | Message â The identifying message for the assertion error
 Positive example:
 .. code-block:: codesys
    
     VAR
         a : LREAL := 1234567.89;
         b : LREAL := 1234567.76;
     END_VAR
     
     TEST('Test_LREAL_Equals');
     AssertEquals_LREAL(Expected := a,
                        Actual := b,
                        Delta := 0.2,
                        Message := 'Values differ');
     TEST_FINISHED();
     Failing example:
     VAR
         a : LREAL := 1234567.89;
         b : LREAL := 1234567.76;
     END_VAR
     TEST('Test_LREAL_Differ');
     AssertEquals_LREAL(Expected := a,
                          Actual := b,
                           Delta := 0.1,
                         Message := 'Values differ');
     TEST_FINISHED();
¢
3785330774£AssertArrayEquals_LREAL¤! LREAL array with expected values¥ LREAL array with actual values¦$fbc23ff0-cdf6-43f2-82cd-e6f3a7903664§ Jitter distribution¨
3779252147© Maximal rangeª	wRangeMax« Jitters events negative¬wCountJitterNeg Jitter event positive®wCountJitterPos¯
1489059357°$f914311f-5c52-4cd5-b2c8-3263a1508247±Ë
    This function block is responsible for making sure that the asserted test instance path and test message are not
    loo long. The total printed message can not be more than 252 characters long.
²
3001289633³ Test instance path´MsgFmtStringµ
 Test message¶	StringArg·MsgFmtStringProcessed¸StringArgProcessed¹MsgFmtStringTempº...TestName too long»TestNameTooLong¼...TestMsg too long½TestMsgTooLong¾X This is actually 253, but if StrArg-argument is used (which it is in TcUnit) it is 252.¿'MSG_FMT_STRING_MAX_AMOUNT_OF_CHARACTERSÀILocal, ReplacedConstant, Constant, IsCompiled, RelativeInstance, TypifiedÁ	228984903Â$d7648cea-fb9f-427f-b157-93784e5b7cabÃ
3505840675Ä	197406720Å
2734844869Æ
3297551346Ç
2662650258ÈdiLowerÉdiUpperÊ
3465986364Ë$c2d24aa9-2fc9-4f89-80ac-14d9f558122aÌ	319472823ÍË
    This FB compares two instances of any object type and returns whether they
    are the same type, size and value or not. This is necessary for two reasons:
    1. So that we can know exactly what differs between the two input parameters
    2. It's not possible to do a comparison (= or <>) between two instances of ANY.
Î	797308994ÏAnyValueOne.pValueÐAnyValueOne__pValueÑAnyValueOne.TypeClassÒAnyValueOne__typeClassÓAnyValueOne.diSizeÔAnyValueOne__sizeOfÕAnyValueOneÖAnyValueTwo.pValue×AnyValueTwo__pValueØAnyValueTwo.TypeClassÙAnyValueTwo__typeClassÚAnyValueTwo.diSizeÛAnyValueTwo__sizeOfÜAnyValueTwoÝ< The data type of the two ANY input parameters are not equalÞ< The data size of the two ANY input parameters are not equalß? The data content of the two ANY input parameters are not equalà
3159686021á$e4f95c0d-0ece-47a8-977f-f9d45a4f920eâ
3901074272ã11252403ä	173265148å	958090425æ
2765784940ç_Implicit_Task_InfoèKindOfé_IMPLICIT_KINDOFTASKêbProfilingTaskëdwLastCycleTimeìdiJitterídiJitterMinîdiJitterMaxïwTaskStatusð_IMPLICIT_JITTER_DISTRIBUTIONñ_Implicit_Jitter_DistributionòbWithinSPSTimeSlicingóbShouldBlockôbActiveõnCoreConfiguredönCoreCurrent÷
pTaskGroupø_IMPLICIT_TASKGROUP_INFOù_Implicit_TaskGroup_InfoúpszParentTaskNameû
3064147540ü$c4b8e551-3215-5dbb-9355-8dcf3e162bd6ý
4288098520þ
1363320977ÿ	235137531$87c49645-6ce5-5bcf-bae6-132a41e0c4aa
2880228939
2164913627pszGroupNamedwTaskGroupOptions
diMaxCoresparrdwCoreBits	638065670$3f237607-46ae-5106-b06d-831888578227	187872831
2860490203$e6fb6cf6-9591-477a-a303-fdedaad04613
__OffsetIBASEADDREF	FB_REINITQUERYINTERFACERELEASEcompatibility_id$76B148E2-3A84-40c4-8BF2-2FBE56618A2F
2439911566$de784a2a-6a84-4c6b-a64b-74bfc4713c79
1835024534FB_Exit$d4f5d20f-e146-4306-9ffb-0b952fe8bdb2	805362587QueryInterface
 InterfaceID iid$eac54f77-5545-412a-8930-013043c93f65
3642965170Release$13829801-a5ee-4705-bf92-a3430e33fe75 	951162479¡AddRef¢$63704945-b29a-4e6d-b620-0cc4c326d5f8£	189822725¤	FB_Reinit¥$e129df86-3969-4c96-8e86-63bc2fcd6c83¦	331523042§VERSION¨uiMajor©uiMinorª
uiServicePack«uiPatch¬
3231598516$5181460b-9464-4c0f-82f2-1f9633a4c34e®
1518820524¯TWOPLUSTWOEQUALSFOUR°ZEROPLUSZEROEQUALSZERO±CfUnit²
4004392889³FB_Sum_Test´
2468246447µFB_SUM_TEST¶$69b661ca-5faa-43bb-8b8a-2cae13b2cfe4·
3804393560¸TwoPlusTwoEqualsFour¹SumºFB_SUM»FB_Sum¼Result½ExpectedSum¾$071ba4c3-fe0d-4b0b-be72-a320c9d403a4¿	470409468À
4018862981ÁZeroPlusZeroEqualsZeroÂ$ac47aa92-0e7a-4876-b0ac-7ef29219d372Ã	635803319Ä
1660718324Å
3010342448Æ	212020793Ç	476154767ÈPRG_TESTÉ
fbSum_TestÊ1Local, IsCompiled, Absolut, Initialized, TypifiedË$5e8cc903-e536-40be-a096-d6b305fbb618Ì
1368625671ÍoneÎtwoÏresultÐ	323964421Ñ$8328f7d8-1dbc-4e08-98b0-eb6438d2b355Ò	855406638Ó	228684100Ô
2173869412Õ
1334945094Ö	204906898×
2338394504Ø_Implicit_Task_Config_InfoÙTODO eventtasksÚwVersionÛnNumOfTasksÜpszApplicationNameÝptasksÞ
3669029852ß_IMPLICIT_TASK_CONFIG_INFOà$00bdef65-acea-502d-a09a-9b27b86d5df1á
1234088797â
1833442206ã__sys__setup__tasksä$a7f75517-fce3-59d9-a7f4-75773ea190a0å <SIL2/>æ	830427680çLogAdd2èhLoggeréudiCmpIDê
udiClassIDë
udiErrorIDì	udiInfoIDípszInfoî$f782c8f1-3e37-44f5-9ca0-ba40c1145169ïcmplog, 3.5.5.0 (system)ð
2222278874ñ__HelpConvertDateòppstrónYearônMonthõnDayöDayOfMonthTable÷$1c137676-f66f-428c-af12-54699e1772b8ø
2130786092ù__HelpConvertTimeúdwHourûdwMinuteüdwSecondý
dwMilliSecondþ$13c0f538-7207-41d3-8311-a322a7c20a0eÿ
3586288056__HelpConvertTimeWithUnitdwDay$50f01a4a-c350-4e6e-9dfa-0c242ec58ce8	371843759
__HelpConvert
UDInt$fdd0113a-d0f8-4f19-bc73-fa6acf9ecc59
1562513299
__ExtractRealL True iff f is infinity, diM = 1 for +Infinity and -1 for -Infinity, iE is 0fiEdiMxNaNuiEudiM$b4fbe026-742b-4541-9a4b-a710de7d376c
2223293048__HelpConvertLTimeWithUnitlwDaylwHourlwMinutelwSecond
lwMilliSecond
lwMicroSecondlwNanoSecond$9b7fa8d4-59a0-43f0-a610-be7bd5350ad9
1212736547__ExtractLRealdudiEuliM $0ffc8285-5cf0-4854-bfbf-cfca06799935¡
3132572671¢__HelpRealConvert£pnBegin¤nDig¥dBegin¦dDiv§bNeg¨
nHelpBegin©dDiffª$e6a8a736-c389-4a55-8363-2e30c26fed79«È Concatenates two strings
 ``CONCAT(STR1,STR2)`` means: Connect ``STR1`` and ``STR2`` to a single string ``STR1STR2``.
 .. code-block:: codesys
    (* Example declaration *)
    VarSTRING1 : STRING ;
    (* Example in ST , result is 'SUSIWILLI' *)
    VarSTRING1 := CONCAT ('SUSI','WILLI');
 :return: Concatenated string, max. 255 characters. If the result doesn't fit into these 255 bytes, it will be silently truncated. No error is produced.
 .. cds:ranges::
     :STR1: |StringRange255|
     :STR2: |StringRange255|
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
¬
2972623772CONCAT®1 String 1 to be concatenated, max. 255 characters¯STR1°1 String 2 to be concatenated, max. 255 characters±STR2²
4221632325³LicenseFunctions´dwStructSizeµpfGetUserLicenseValue¶pfConfDynLicChallenge·pfReqDynLicChallenge¸
1958349117¹LICENSEFUNCTIONSº$54113402-1f1a-4625-9cf5-98f840f808d4»$component manager, 3.5.13.0 (system)¼
3247230088½CMRegisterLicenseFunctions¾licenseFunctions¿$9d4b8b53-13e6-49d1-812f-48d05c3b6bdeÀ	674459537ÁUnregisterLicenseFunctionsÂlfÃ$fad78c76-def3-4349-88ac-a7d7b1026100Ä49087098ÅSysTargetGetIdÆpulTargetIdÇ/External, Compiled, Typified, Located, InternalÈ$2882c277-8c61-400a-b7f8-fedf8770b0b5É
1255376976ÊSysTargetGetTypeËpulTypeÌ$8626ba32-8246-4efc-a245-c6603743ef15Í
2879083722ÎRegisterLicenseFunctionsÏ$3a698490-0f8e-4b05-ba85-54b389411e5bÐCodeMGetContentByFirmcode2Ñ
3702754381ÒCodeMGetContentByFirmcodeÓduiFirmcodeÔduiProductcodeÕlicenseEntryÖRTS_CMBOXENTRY×*Inout, IsCompiled, RelativeStack, TypifiedØ$22f4fc39-59c8-43ad-9dcc-9e20e4b9a58bÙcmpcodemeter, 3.5.5.0 (system)Ú	669955528Û
musBoxMaskÜmulBoxSerialÝ	mflFiCtrlÞmulFirmCodeßmusFirmAccessCounteràmusFirmItemRefámulFirmUpdateCounterâmulFirmPreciseTimeãmausFirmItemTextämulProductCodeå
mulFeatureMapæmulUnitCounterçmulLicenseQuantityèmusProductItemRefé
3504795969ê$b624d05d-ae57-4b33-b835-ddb290871f29ë<Structure, NonVirtual, Compiled, Typified, Located, Internalìignore_link_allí
3026495541î"CodeMGetFeatureMapByFirmcode_localï%Compiled, Typified, Located, Internalð$8c1740e2-dc30-4803-9b05-2837c6a74377ñ
2158031774òmyUDINT_TO_STRINGói2ôbytõ$126f9170-8764-47f4-b18b-ad639b548e48ö
1069101478÷CMAddComponentøpszComponentùudiCmpIdú
udiVersionû$90843a1a-36bb-40cc-8a00-b137a07f82ddü
4264633759ýSysFileOpenþszFileÿam$4e9f3f6c-f1b2-41f5-8e6e-4c9d0f916cb0
2222749035SysFileGetSizeByHandlehFile$203db6ac-ecc2-4b85-b1e0-d533c0597079
3647132921SysFileRead	pbyBufferulSize$db542d11-09a1-412e-ba36-040235d1f6a6
3248367802SysFileClose$81419da6-4d52-4d99-806c-f8e599dcca66Ø <description>
  Test and set a bit in an ULONG variable in one processor step. This operation is to provide
	 a multitasking save operation.
 </description>
 <result><p>RESULT: Returns the runtime system error code (see CmpErrors.library).
	ERR_OK: If bit could be set and was set before,
	ERR_FAILED: If bit is still set
 </p></result>
3306130432SysCpuTestAndSet <param name="pulValue" type="IN">Pointer to the unsigned value to test and set a bit inside in one atomic
	processor step</param>	pulValuep <param name="ulBit" type="IN">Bit number inside the variable to test and set. 0=first bit, 31=last bit</param>	ulBit$1b91f178-37d6-463f-a613-9f24443e9396!syscpuhandling, 3.5.13.0 (system)
2702096027mySTRING_TO_UDINTuiBase$7c03f9aa-a908-4345-8fdc-2902079aa956Ê Returns the number of characters of a string
 .. code-block:: codesys
    (* Example declaration *)
    VarINT1 : INT ;
    (* Example in ST , result is '4 *)
    VarINT1 := LEN ('SUSI');
 :return: Length of string ``STR``
 .. cds:ranges::
     :STR: |StringRange255|
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
2091238964LEN String to be analyzed STRp $d60923f9-da06-44f9-ab52-de513236e3e2¡ Searches for the position of a partial string within a string. 
 ``FIND(STR1, STR2)`` means: Find the position of the first character where ``STR2`` appears 
 in ``STR1`` for the first time. If STR2 is not found in STR1, then OUT:=0.
 .. code-block:: codesys
    (* Example declaration *)
    arINT1 : INT ;
    (* Example in ST , result is '4' *)
    arINT1 := FIND ('abcdef','de');
 :return: Character position of the first occurance of ``STR2`` in ``STR1``. If no occurance is found, result is 0
 .. cds:ranges::
     :STR1: |StringRange255|
     :STR2: |StringRange255|
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
¢
3278768737£* String within which ``STR2`` is searched ¤/ String whose position is searched in ``STR1`` ¥pszComp1¦pszComp2§$182b0d71-64b9-4f59-8550-dfdea6ddbf15¨ç Returns a specific number of characters of a string, starting from left
 ``LEFT (STR, SIZE)`` means: Return the first ``SIZE`` characters from the left in string ``STR``
 .. code-block:: codesys
    (* Example declaration *)
    VarSTRING1 : STRING ;
    (* Example in ST , result is 'SUS' *)
    VarSTRING1 := LEFT ('SUSI',3);
 :return: Resulting string
 .. cds:ranges::
     :STR: |StringRange255|
     :SIZE: [0..255]
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
©
3595690875ªLEFT« String to be analyzed¬ Number of characters SIZE®$305543de-642d-43ec-a366-8f771da1539d¯º Returns a specific number of characters of a string, starting from a specific position
 ``MID (STR, LEN, POS)`` means: Retrieve ``LEN`` characters from the ``STR`` string beginning with the character at position ``POS``. 
 .. code-block:: codesys
    (* Example declaration *)
    VarSTRING1 : STRING ;
    (* Example in ST , result is 'US' *)
    VarSTRING1 := MID ('SUSI',2,2);
 :return: Partial string of ``STR``
 .. cds:ranges::
     :STR: |StringRange255|
     :LEN: [0..255]
     :POS: [0,1..255]
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
°	176614815±MID², Number of characters, counted from the left³& Start position for the partial string´POSµ$83426200-a15f-4a0f-939b-ec775900aa99¶ë Returns a specific number of characters of a string, starting from right
 ``RIGHT (STR, SIZE)`` means: Return the first ``SIZE`` characters from the right in string ``STR``
 .. code-block:: codesys
    (* Example declaration *)
    VarSTRING1 : STRING ;
    (* Example in ST , result is 'USI' *)
    VarSTRING1 := RIGHT ('SUSI',3);
 :return: Resulting string
 .. cds:ranges::
     :STR: |StringRange255|
     :SIZE: [0..255]
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
·
1359190538¸RIGHT¹ Number of characters     ºl»iResult¼$e1f7857b-7abd-48e8-91d6-d6b740f939c9½û 
	Ads a message to the log, if the message is longer then 127 characters it splits into two log messages (max 255 chars = 2 log entries)
   Usage example:
   LOGSTR( msgCtrlMask := UDINT_TO_DWORD( CmpLog.LogClass.LOG_INFO ), 
		    msgFmtStr := 'Ammount of tests : %s',
			strArg := uiTestAmmount );
	
    results into the following logstring
		Ammount of tests : 3 
¾
4018939086¿LOGSTRÀ/ use UDINT_TO_DWORD( CmpLog.LogClass.LOG_.... )ÁmsgCtrlMaskÂ( Usage example: ' Ammount of tests : %s'Ã Usage example: uiTestAmmountÄstrArgÅ	uiMaxSizeÆsTextÇiCharPosÈ$4faf44db-355b-4967-8254-5b291732f959É <category>Project information</category>
 * <description>
 *	Contains the project information as specified in the project information dialog in CoDeSys. To use this, the checkbox 
 *	"Automatically generate POUs for property access" in the project information dialog be enabled.
 * </description>
 * <element name="stProjectName" type="OUT">Project name without ending</element>
 * <element name="stTitle" type="OUT">Title</element>
 * <element name="stVersion" type="OUT">Version as string in the format "x.x.x.x"</element>
 * <element name="stAuthor" type="OUT">Author</element>
 * <element name="stDescription" type="OUT">Description</element>
Ê
3365268717ËPROJECT_INFOÌ	stProjectÍstTitleÎ	stVersionÏstAuthorÐ
stDescriptionÑ
1178342348Ò$c1e43dbd-7721-4bd4-a684-c21620fe030fÓcmpapp, 3.5.15.0 (system)Ô8 reads the application info from the current applicationÕ
3589885213ÖGetCurProjInfo×CMPAPPØCmpAppÙpCurAppÚAPPLICATIONÛpCurProjInfoÜ
1186304137ÝGETCURPROJINFOÞ$a1b4b1d0-961b-443c-bfbc-d2cb7b8d4e24ß
3673772398à
1934937439á
2447250513â
4156868057ã
3449547646ä6F_RemoveInstancePathAndProjectNameFromTestInstancePathåCharacterPositionOfProjectNameæProjectNameWithDotç$7816860e-5623-4ff0-b466-902e340371e3è
3203763967é POINTER TO parent application ê
pAppParentë* Id of the application. Is always unique. ìiIdí GUID for IEC code îCodeGuidï GUID for IEC data ðDataGuidñ> State of the application. See definitions Application states òudiStateóR Operating state of the application. See definitions Application operation states ô
udiOpStateõ Handle to bootproject öhBootproject÷ Handle to debug task ø
hDebugTaskù Global Init Function úpfGlobalInitû Global Exit Function üpfGlobalExitý Handle a pool of session-ids þhSessionIdPoolÿ  Handle a pool of force entries 
hForcePool Handle a pool of breakpoints hBPPool Is persistent force enabled  Application name 
szNameMAX_LEN_APPLNAME7Version number of Programming system (set in download) udiPSVersion?Version number of Target settings used by PS (set in download) udiTargetSettingVersion
1512497683$91664799-0da5-417a-9e5e-db9ec74ea6f2j Close a file specified by handle
 :return: Returns the runtime system error code (see CmpErrors.library) Handle of the filesysfile, 3.5.15.0 (system)À | Open or create file. A standard path will be added to the filename, if no path is specified in the file name.
 | If a file extension is specified in the settings, this path will be used (see category settings).
 .. note:: File name can contain an absolute or relative path to the file. Path entries
           must be separated with a Slash (/)  and not with a Backslash (\\)!
 :return: Handle to the file or RTS_INVALID_HANDLE if failed File name. File name can contain an absolute or relative path to the file.	
 Path entries must be separated with a Slash (/)  and not with a Backslash (\\)!Î | Requested access mode to the file. See |ACCESS_MODE| for details.
 | Here find some examples:
 :AM_READ: If file does not exist, an error is returned. If the file exists, the file 
           will be opened
 :AM_WRITE: If file does not exist, a new file will be created. If the file exists,
            it will be overwritten!
 :AM_APPEND: If the file does not exist, an error is returned. If the file exists, the file 
             will be opened			= Pointer to runtime system error code (see CmpErrors.library)\ Read number of bytes out of the file
 :return: Number of bytes read from file. 0=if failed Handle of the file	  Pointer to buffer for read dataL Number of bytes to read from file. Must be less or equal the buffer size!		 Write number of bytes to the file. File must be opened with |AM_WRITE| or |AM_APPEND|.
 :return: Number of bytes written to the file. 0=if failed
1793200295SysFileWrite/ Pointer to buffer with data to write to file		M Number of bytes to write in the file. Must be less or equal the buffer size!$a0372ebf-eb9b-4113-942f-e5da73df71dd[ Removes leading spaces from the character string and returns the reduced character string.
1900748652 F_LTrim¡$6ef917e6-7f9e-46f0-99fd-87a9a9b883ad¢O Truncates all trailing spaces from the specified value and returns the result.£
3142262884¤F_RTrim¥$29c1cd9e-70b7-43a9-8e3e-f8e8ed84bff7¦d The F_ToLCase function converts a specified string to lowercase.
 Contains portions of OSCAT BASIC§	886767803¨	F_ToLCase©PTªpos«$4177f901-1a7a-4eea-8fe8-63097fea53f3¬¯ This function converts a decimal number into a hexadecimal STRING (base 16).
 If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. 
 If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! 
 If the iPrecision parameter and the in parameter are zero, the resulting string is empty.
1972422664®BYTE_TO_HEXSTR¯) The decimal number requiring conversion.°IN±. Minimum number of displayed digits (digits). ²
iPrecision³[ This parameter determines whether lower or upper case letters are used in the conversion. ´bLoCaseµm_Format¶$83e397b4-6883-4c4e-9910-e0278934299a· This function converts a decimal number into a hexadecimal STRING (base 16).
 If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. 
 If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! 
 If the iPrecision parameter and the in parameter are zero, the resulting string is empty.
 This is modified version of the DWORD_TO_STRH made by OSCAT, version 1.3, programmer hugo. ¸
3725441371¹DWORD_TO_HEXSTRº4 Minimum number of displayed digits (digits). 			   »temp¼pt½m_NumberOfDigits¾m_precision¿$37af6bb4-598b-402b-99e0-bd140fa86122À
1557660451ÁLWORD_TO_HEXSTRÂ$6f6ad65d-94c9-44e7-b5f7-5394a261509cñ This function converts a decimal number into a hexadecimal STRING (base 16).
 If the actual number of significant digits is less than the iPrecision parameter, the resulting STRING is filled with zeros FROM the left. 
 If the number of significant digits is greater than the iPrecision parameter, the resulting string is not cut off! 
 If the iPrecision parameter and the in parameter are zero, the resulting string is empty.
Ä	952797014ÅWORD_TO_HEXSTRÆ$028c7654-6828-48cd-8703-659f86aef415Ç? Copies buffer with size of N bytes from source to destination È
1485283582ÉMEMCPYÊdestAddrËCAAÌPVOIDÍsrcAddrÎnÏ$7d591bcc-b453-4853-8327-1622b58624ccÐ; Realize a target specific data type for general pointers. Ñ
2901015905Ò Prefix: p Ó$607a79a2-c60b-4e09-b161-a4f6d8099b00Ô4caa types extern, 3.5.13.0 (caa technical workgroup)Õe  This function takes the type-class of a ANY-variable and returns the STRING representation of it.
Ö
3242817338×F_AnyTypeClassToStringØAnyTypeClassÙ$9e1352f3-5f86-40fd-88db-b6807b901391ÚO Funktion to get own task handle
 :return: Returns the current IEC task handleÛ
4249138636ÜIecTaskGetCurrentÝK Pointer that returns the runtime system error code (see CmpErrors.library)Þ$b1d506b4-a9e7-4ec3-8e73-e6697d723ffbßt Function returns the task information of the specified task 
 :return: Return a pointer to the task info structureà
4205902187áIecTaskGetInfo3â Handle to the specified taskãhIecTaskäptiå$941fd632-1e71-4fc0-a13a-6074eb0adf1cæ
2092783167çF_AnyToUnionValueèAnyValue.pValueéAnyValue__pValueêAnyValue.TypeClassëAnyValue__typeClassìAnyValue.diSizeíAnyValue__sizeOfîAnyValueï$04a97242-7600-4a30-a234-b9e3b1c2770cð
3394829069ñF_IsAnyEqualToUnionValueòuExpectedOrActualóExpectedOrActual.pValueôExpectedOrActual__pValueõExpectedOrActual.TypeClassöExpectedOrActual__typeClass÷ExpectedOrActual.diSizeøExpectedOrActual__sizeOfùExpectedOrActualúAnyExpectedOrActualû$1ab30776-5b8c-4eb4-8ece-b0c087a9b905üF
    This function runs all test suites that have been initialized.
ý	740068242þRUNÿ$bd49b256-e7ba-4b73-b669-380d1f428417c
    This function declares a new test (if it has not been already declared in an earlier cycle)
2860862278TESTCounterTestSuiteAddressCounterTestName
$8dd61791-c583-4b5e-b392-3e0ecf4878492 
	Sets the currently running test as finished 
	563735047
TEST_FINISHED$9922b45b-fca5-4323-be8f-93710371a816Ç Extracts the components of a REAL floating point number without
 interpreting them.
 Extracts the sign, (biased) exponent, and mantissa of a REAL value.
 We assume the IEEE 754 binary32 format.
 All values, including NaN and Infinity are supported.
 See http://en.wikipedia.org/wiki/Single_precision_floating-point_format
2007885473__ExtractRealRawC The mantissa as stored in the REAL, without the leading bit 24 setpudi$3d3aa07e-b7ec-4780-af79-d77e0e2cb50f
1475096513__HelpLConvert$26023af2-e263-44c0-b290-4197ca6caa6a	202956791__ExtractLRealRawpuliuli$e543e1fd-2bb8-4ac1-a749-ebad37d711fc
1673363469FctConfDynLicChallenge$f9972cfc-8a33-4e40-85fb-7109a5d893d5
2401095727FctGetUserLicenseValue$c20edd8e-8e57-4f8a-87df-58345eb4164f
2469315043FctReqDynLicChallenge $a38e7aa2-cfa8-41d5-adf5-85021e7b5eaa¡
1900323445¢CMUnregisterLicenseFunctions£$f1a79dd5-021a-4cf4-ad25-7ec56df08e56¤CodeMGetContentByFirmcode_local¥Ñ Replaces a specific number of characters of a string by another string
 ``REPLACE(STR1, STR2, L, P)`` means: Replace ``L`` characters from ``STR1`` by ``STR2``, beginning with the character in the ``P`` position. 
 .. code-block:: codesys
    (* Example declaration *)
    VarSTRING1 : STRING ;
    (* Example in ST , result is 'SKYSI' *)
    VarSTRING1 := REPLACE ('SUXYSI','K',2,2);
 :return: Resulting string
 .. cds:ranges::
     :STR1: |StringRange255|
     :STR2: |StringRange255|
     :L: [0..255]
     :P: [0,1..255]
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
¦	517832753§REPLACE¨# String of which a part is replaced©) String which replaces a part of ``STR1``ª) Number of characters, counting from left«L¬s Start position of the characters to be replaced. 
 ``P = 1`` or ``P = 0`` are both addressing the first characterP®	indexDest¯indexSource°$f57e2f3d-6edd-4042-ac47-a14833c273c8±	448115908²
LogOptions³ Name OF logger ´ Logger active/inactive µbEnable¶ See above log types ·uiType¸0 Log filter. It is a combination of log classes ¹uiFilterº MAX number OF LOG entries »iMaxEntries¼ Max file size ½iMaxFileSize¾ Max number of files ¿	iMaxFilesÀ
2267289889Á
LOGOPTIONSÂ$f29300f0-f83d-490d-9603-d3255fa3095bÃ
2950684213ÄST_LogÅCMPLOGÆCmpLogÇAssignÈLOGTYPESÉLogTypesÊLT_STDËhLogÌCreatedÍ
3954219779ÎST_LOGÏ$6fa083cf-0816-49b4-9f1f-643d3266b682ÐADDLOGENTRYÑPRVCREATENEWLOGGERÒ? registers a Log component in devicelog and accept log messagesÓ
2253974937ÔCmpCfLogÕhCmpÖ
hStdLogger×vendorIdØcmpIdÙ
3274057501ÚCMPCFLOGÛ$e54b0b42-bf68-4a14-aacc-2136ead10c0bÜ
3109562382Ý
1341592248ÞP if TRUE, the instance afterwards gets moved into the copy code (online change)	ß$4b49c03c-b562-4a6d-a8a9-76b527f97a0eà
1919457194áAddLogEntryâ
udiClassIdã
udiErrorIdä	udiInfoIdå$f39143e0-de49-4075-8bca-59cb6ff62612æ	281198645ç$3ba547bb-218f-4ecb-aa09-3033908bd527è
2650069375é
1638336279ê
3519561854ëprvCreateNewLoggerì$e2af6d5a-2680-44e7-b66a-3c3897d9cb0aí Deletes a number of characters from a string
 ``DELETE (STR, L, POS)`` means: Delete ``L`` characters from ``STR``, beginning with the character in the ``POS`` position.
 .. code-block:: codesys
    (* Example declaration *)
    VarSTRING1 : STRING ;
    (* Example in ST , result is 'SUSI' *)
    VarSTRING1 := DELETE ('SUXYSI',2,3);
 :return: String remaining after deletion 
 .. cds:ranges::
     :STR: |StringRange255|
     :LEN: [0..255]
     :POS: [0,1..255]
 .. |StringRange255| replace:: [NULL_STRING,TERMINATED_STRING_LEN0..TERMINATED_STRING_LEN127,TERMINATED_STRING_LEN128..TERMINATED_STRING_LEN255,UNTERMINATED_STRING]
î
1739723417ïDELETEð String to be modfiedñA Length of the partial string to be deleted, number of charactersòZ Position in ``STR`` after which the deletion starts. Counted from left,
 starting with 1óindexResultôbSkipõ$11510cc9-b7a0-4dd6-8600-402b1638691eö
2665969477÷
AppGetCurrentø$7b15c08a-0653-4e21-bae0-a0b9c0885693ù
1239233586úAppGetApplicationInfoûAPPLICATION_INFOüpAppý$a1d0114c-e318-46c3-9f61-93c7e287c132þÏ <category>Application information</category>
 * <description>
 *	Contains the application information as specified in the application property dialog in CoDeSys.
 * </description>
 * <element name="pstProjectName" type="OUT">Pointer project name</element>
 * <element name="pstAuthor" type="OUT">Pointer to author</element>
 * <element name="pstVersion" type="OUT">Pointer to version as string in the format "x.x.x.x"</element>
 * <element name="pstDescription" type="OUT">Pointer to description</element>
 * <element name="pstProfile" type="OUT">Pointer to used CoDeSys profile name</element>
 * <element name="dtLastChanges" type="OUT">Time and date of last modification of the application (UTC)</element>
ÿ
2334584805pstProjectName	pstAuthor
pstVersionpstDescription
pstProfile
dtLastChanges
3658178702$d8358556-d5ee-4109-b0bb-55d3f6ee3e15
1693369342TO_LOWER$1e55f1d2-e8f8-4c11-a343-0d7e1cf88411
2020938782Printf. The buffer, where the result will be returned	cbpResult" The capacity of the result bufferuiResultCapacity0 The format string used for formatting the value	cbpFormatV A pointer to the begin of the piece of memory, where the value to format is
 stored.G A __SYSTEM.TYPE_CLASS value describing the type of the value to format	typeClass$ba8d48f4-b190-46c7-be6b-9336508c391c iecstringutils, 3.5.8.0 (system)IecTaskGetInfo2	711891942IecTaskGetInfo2_Internal	TASK_INFO$c6d3a5e1-7385-4753-b73c-f3b0df563229
2900023005	tInterval
tWatchdogTime 
tCycleTime¡tAverageCycleTime¢
tMaxCycleTime£
tMinCycleTime¤
3657274649¥$b83e07ab-a3d0-41a5-8f83-2de38b279984¦
3040543732§CMRemoveComponent¨
hComponent©$11bbd436-1d57-4172-8904-e44dc772fedbª
3645932812«LogClose¬$c8aaeb24-0f38-477e-9044-1ecd207cbde3
1735259385®	LogDelete¯$52842e3b-7e02-4eaf-bb44-a5db3758476c°
2881342543±LogOpen²$8b85ed35-90d0-4d91-aef7-00ef0b080aad³
1116480908´	LogCreateµpOptions¶$b35829e6-d182-4ea6-91ec-f4e82032a361·Y Does a sprintf for the given format string and the given variable. Will not return NULL!¸k link even in simulation mode
 prevent introducing a signature check lately to prevent compatibility flaws¹	120951582º
StuSprintf» the formatstring¼	pstFormat½2 the address of the variable that shall be printed¾8 the type of the variable as a __SYSTEM.TYPE_CLASS value¿
udiVarTypeÀ+ the buffer where the text is to be printedÁ  the size of the buffer in bytesÂdwBufferSizeÃ$4933794d-6fe5-4285-9a7e-ea7baab7d3f3Ästringutils, 3.5.14.0 (system)Å
4251811505Æ"I_TestResultFormatter__Struct__376ÇGLocal, IsCompiled, RelativeInstance, NoInit, Implicit, NoCopy, TypifiedÈ	358323719É"I_TESTRESULTFORMATTER__STRUCT__376Ê=Structure, NonVirtual, Generated, Compiled, Typified, LocatedË
4032848963Ì%I_AssertMessageFormatter__Struct__631Í
1616106448Î%I_ASSERTMESSAGEFORMATTER__STRUCT__631Ï	220295566ÐIBase__Struct__679Ñ__INTERFACEPOINTER__679Ò
3321076284ÓIBASE__STRUCT__679Ô__download__codeÕ__online__change__codeÖglobal__init×__bInitRetainsØ__IndexÙ
__bInCopyCodeÚGLOBAL__EXITÛ"__DATASEGMENTFLAGS__305__GVL__InitÜ#__COMPILE_CONSTANTS__306__GVL__InitÝ__WATCHVARS__307__GVL__InitÞ1__ALLOCATEDIMPLICITREFERENCETYPES__308__GVL__Initß#CONSTANTS__309__SYSTEM____GVL__InitàTYPE_CLASS__593__GVL__Initá$_IMPLICIT_KINDOFTASK__667__GVL__Initâ/_IMPLICIT_TASK_CONFIG_VARIABLES__728__GVL__Initã/_IMPLICIT_TARGET_INFO_VARIABLES__137__GVL__Initä!__APPLICATIONNAME__138__GVL__Initå%__TASKSPECIFICINFOGVL__139__GVL__Initæ__TYPECLASS__733__GVL__Initç&__CONVERSION_CONSTANTS__738__GVL__Initè'__LCONVERSION_CONSTANTS__819__GVL__Inité __SETUP__CALL__POU__1__GVL__InitêPRG_TEST__693__GVL__InitëAPPLICATION_CONTENTì Offsets in stringtable!íSizeOfîudiInfoSizeïudiInfoVersionð	uiNumPOUsñ	uiNumDUTsò	uiNumGVLsóuiNumFBsôuiNumMethodsõ	uiNumLibsöarPOUs÷arDUTsøarGVLsùarFBsú	arMethodsûarLibsüstringtableýOutput, IsCompiledþInput, IsCompiledÿInput, IsCompiled, ImplicitCompiledNonVirtual, Generated, Compiled1Structure, Generated, Compiled, Typified, LocatedRemovedAfterDownload__RELOCATE__CODE
__PAreaOffsetsNew__dwVersion__PAreaOffsetsIn
__pAdrHelp__i__j__RELOCATE__RESULT
__dwOffset__wHigh__wLow__wCount__PRELOCATIONTABLE__PAreaOffsets8Generated, NoCompareWithNew, Compiled, Typified, Located	669599553__DataSegmentFlags	VarGlobal) special flag to indicate an area segmentDA_Data=Local, ReplacedConstant, Constant, Enum, IsCompiled, TypifiedDA_ConstantDA_Input	DA_Output	DA_Memory	DA_RetainDA_CodeDA_Area 
DA_Persistent¡Enum, Compiled, Typified¢$36b719e5-3a34-450b-b806-362248c6fc69£
2121841030¤__COMPILE_CONSTANTS¥system_variable¦__CONTAINS_COPY_CODE§AReplacedConstant, Constant, Global, IsCompiled, Absolut, Typified¨$db173c48-0431-4ee2-8080-d72c759a68e3©	629370838ª__WatchVars«Compiled, Typified, Internal¬$e4086481-b65b-4bfc-821c-c1f278b8711d72176917®!__AllocatedImplicitReferenceTypes¯'Generated, Compiled, Typified, Internal°$4e6b58d5-7a7d-4d43-b710-af56f2531e62±
3976988861²	Constants³ Like x86, ARM etc´
bLittleEndianµA the runtime version number as defined by the device description.¶RuntimeVersion·<Constant, Global, IsCompiled, Absolut, Initialized, Typified¸S the compiler version as defined in the build options (not OEM Customized Version!)¹CompilerVersionº. TRUE if project is running in simulation mode»bSimulationMode¼e Number of Bits per Register. Possible values: 16 (c16x, 186), 32 (x86, ARM, PPC ...), 64 (x86-64Bit)½
nRegisterSize¾a the pack mode as defined in the device description. Should match to the pack mode of the runtime¿	nPackModeÀ Does the target support an FPUÁbFPUSupportÂ4 the runtime version coded in the nibbles of a DWORDÃRuntimeVersionNumericÄ5	the compiler version coded in the nibbles of a DWORDÅCompilerVersionNumericÆ( Does the target support multiple cores?ÇbMulticoreSupportÈR The optimal vector size for a vector of lreals, or 1 if no vectors are available.ÉvcOptimalLREALÊQ The optimal vector size for a vector of reals, or 1 if no vectors are available.Ë
vcOptimalREALÌ)Compiled, Typified, SystemNamespaceForcedÍ$c912f995-f4b5-48bd-9416-f36b0846c0e1Î	997431391Ï	TYPE_BOOLÐTYPE_BITÑ	TYPE_BYTEÒ	TYPE_WORDÓ
TYPE_DWORDÔ
TYPE_LWORDÕ	TYPE_SINTÖTYPE_INT×	TYPE_DINTØ	TYPE_LINTÙ
TYPE_USINTÚ	TYPE_UINTÛ
TYPE_UDINTÜ
TYPE_ULINTÝ	TYPE_REALÞ
TYPE_LREALßTYPE_STRINGàTYPE_WSTRINGá	TYPE_TIMEâ	TYPE_DATEãTYPE_DATEANDTIMEäTYPE_TIMEOFDAYåTYPE_POINTERæTYPE_REFERENCEç
TYPE_SUBRANGEè	TYPE_ENUMé
TYPE_ARRAYêTYPE_PARAMSëTYPE_USERDEFì	TYPE_NONEíTYPE_ANYîTYPE_ANYBITïTYPE_ANYDATEðTYPE_ANYINTñTYPE_ANYNUMòTYPE_ANYREALó	TYPE_LAZYô
TYPE_LTIMEõ
TYPE_BITCONSTö$f4fafa0b-0199-4a4a-82c6-354c2db388c0÷
3708279434ø_Implicit_KindOfTaskù_implicit_cyclicú_implicit_eventû_implicit_externalü_implicit_freewheelingý_implicit_parentsyncþ$4de95593-5bf6-58ff-b441-4c5377cafb5cÿno_precompile_checks
2056577253_Implicit_Task_Config_Variables$edbaea9e-4c96-4841-8011-c765e4c4467f__APPLICATIONNAME__ApplicationName
	IEC-TasksPlcTask__task_string_table2Global, IsCompiled, Absolut, Initialized, Typified$__Implicit_Jitter_Distribution_Array__Implicit_TaskCoreBitsArray_0__Implicit_TaskGroupArray__CYCLE__CODE__PLCTASK	__PlcTaskig_task_config_info'Compiled, InhibitOnlineChange, Typified$64723cfa-b8f1-544a-bcdf-306d0665d5eb__ARRAYDATA__738__2__ApplicationInfoVariablesno_init
appContentNConstant, Global, IsCompiled, Absolut, NoInit, OnlChangeInit, NoCopy, Typified__BlobInit__943__0__DataSegmentInfoVariablesinit_on_onlchangearrdataSegmentsAGlobal, IsCompiled, Absolut, OnlChangeInit, Initialized, TypifieddataSegments__BlobInit__738__0__BlobInit__738__1IMPLICIT__DEFINITIONSPOU__0__START__ADDRESS -Global, IsCompiled, Absolut, NoInit, Implicit¡POU__1__START__ADDRESS¢POU__52__START__ADDRESS£POU__136__START__ADDRESS¤POU__681__START__ADDRESS¥POU__159__START__ADDRESS¦POU__160__START__ADDRESS§POU__161__START__ADDRESS¨POU__162__START__ADDRESS©POU__163__START__ADDRESSªPOU__164__START__ADDRESS«POU__165__START__ADDRESS¬POU__166__START__ADDRESSPOU__167__START__ADDRESS®POU__168__START__ADDRESS¯POU__169__START__ADDRESS°POU__172__START__ADDRESS±POU__175__START__ADDRESS²POU__178__START__ADDRESS³POU__181__START__ADDRESS´POU__184__START__ADDRESSµPOU__199__START__ADDRESS¶POU__216__START__ADDRESS·POU__217__START__ADDRESS¸POU__218__START__ADDRESS¹POU__219__START__ADDRESSºPOU__238__START__ADDRESS»POU__239__START__ADDRESS¼POU__245__START__ADDRESS½POU__250__START__ADDRESS¾POU__255__START__ADDRESS¿POU__260__START__ADDRESSÀPOU__265__START__ADDRESSÁPOU__270__START__ADDRESSÂPOU__275__START__ADDRESSÃPOU__280__START__ADDRESSÄPOU__285__START__ADDRESSÅPOU__290__START__ADDRESSÆPOU__295__START__ADDRESSÇPOU__297__START__ADDRESSÈPOU__301__START__ADDRESSÉPOU__303__START__ADDRESSÊPOU__304__START__ADDRESSËPOU__310__START__ADDRESSÌPOU__311__START__ADDRESSÍPOU__312__START__ADDRESSÎPOU__313__START__ADDRESSÏPOU__322__START__ADDRESSÐPOU__337__START__ADDRESSÑPOU__335__START__ADDRESSÒPOU__340__START__ADDRESSÓPOU__332__START__ADDRESSÔPOU__327__START__ADDRESSÕPOU__328__START__ADDRESSÖPOU__336__START__ADDRESS×POU__324__START__ADDRESSØPOU__319__START__ADDRESSÙPOU__326__START__ADDRESSÚPOU__333__START__ADDRESSÛPOU__339__START__ADDRESSÜPOU__334__START__ADDRESSÝPOU__323__START__ADDRESSÞPOU__329__START__ADDRESSßPOU__330__START__ADDRESSàPOU__325__START__ADDRESSáPOU__320__START__ADDRESSâPOU__331__START__ADDRESSãPOU__321__START__ADDRESSäPOU__341__START__ADDRESSåPOU__338__START__ADDRESSæPOU__346__START__ADDRESSçPOU__350__START__ADDRESSèPOU__370__START__ADDRESSéPOU__374__START__ADDRESSêPOU__375__START__ADDRESSëPOU__372__START__ADDRESSìPOU__371__START__ADDRESSíPOU__373__START__ADDRESSîPOU__378__START__ADDRESSïPOU__401__START__ADDRESSðPOU__399__START__ADDRESSñPOU__404__START__ADDRESSòPOU__406__START__ADDRESSóPOU__403__START__ADDRESSôPOU__400__START__ADDRESSõPOU__407__START__ADDRESSöPOU__405__START__ADDRESS÷POU__402__START__ADDRESSøPOU__450__START__ADDRESSùPOU__452__START__ADDRESSúPOU__453__START__ADDRESSûPOU__454__START__ADDRESSüPOU__441__START__ADDRESSýPOU__442__START__ADDRESSþPOU__440__START__ADDRESSÿPOU__448__START__ADDRESSPOU__447__START__ADDRESSPOU__444__START__ADDRESSPOU__439__START__ADDRESSPOU__445__START__ADDRESSPOU__443__START__ADDRESS
POU__446__START__ADDRESSPOU__451__START__ADDRESSPOU__449__START__ADDRESSPOU__425__START__ADDRESSPOU__417__START__ADDRESSPOU__422__START__ADDRESSPOU__426__START__ADDRESSPOU__423__START__ADDRESSPOU__429__START__ADDRESSPOU__428__START__ADDRESSPOU__432__START__ADDRESSPOU__424__START__ADDRESSPOU__418__START__ADDRESSPOU__416__START__ADDRESSPOU__420__START__ADDRESSPOU__427__START__ADDRESSPOU__430__START__ADDRESSPOU__421__START__ADDRESSPOU__431__START__ADDRESSPOU__419__START__ADDRESSPOU__385__START__ADDRESSPOU__389__START__ADDRESSPOU__386__START__ADDRESSPOU__391__START__ADDRESSPOU__387__START__ADDRESSPOU__390__START__ADDRESSPOU__388__START__ADDRESS POU__359__START__ADDRESS¡POU__357__START__ADDRESS¢POU__362__START__ADDRESS£POU__361__START__ADDRESS¤POU__360__START__ADDRESS¥POU__358__START__ADDRESS¦POU__363__START__ADDRESS§POU__462__START__ADDRESS¨POU__459__START__ADDRESS©POU__539__START__ADDRESSªPOU__536__START__ADDRESS«POU__533__START__ADDRESS¬POU__535__START__ADDRESSPOU__534__START__ADDRESS®POU__532__START__ADDRESS¯POU__557__START__ADDRESS°POU__550__START__ADDRESS±POU__554__START__ADDRESS²POU__552__START__ADDRESS³POU__551__START__ADDRESS´POU__560__START__ADDRESSµPOU__558__START__ADDRESS¶POU__556__START__ADDRESS·POU__553__START__ADDRESS¸POU__555__START__ADDRESS¹POU__559__START__ADDRESSºPOU__571__START__ADDRESS»POU__568__START__ADDRESS¼POU__570__START__ADDRESS½POU__569__START__ADDRESS¾POU__567__START__ADDRESS¿POU__592__START__ADDRESSÀPOU__580__START__ADDRESSÁPOU__578__START__ADDRESSÂPOU__585__START__ADDRESSÃPOU__583__START__ADDRESSÄPOU__588__START__ADDRESSÅPOU__579__START__ADDRESSÆPOU__581__START__ADDRESSÇPOU__584__START__ADDRESSÈPOU__587__START__ADDRESSÉPOU__586__START__ADDRESSÊPOU__589__START__ADDRESSËPOU__582__START__ADDRESSÌPOU__614__START__ADDRESSÍPOU__618__START__ADDRESSÎPOU__602__START__ADDRESSÏPOU__600__START__ADDRESSÐPOU__607__START__ADDRESSÑPOU__610__START__ADDRESSÒPOU__601__START__ADDRESSÓPOU__603__START__ADDRESSÔPOU__606__START__ADDRESSÕPOU__609__START__ADDRESSÖPOU__608__START__ADDRESS×POU__611__START__ADDRESSØPOU__605__START__ADDRESSÙPOU__604__START__ADDRESSÚPOU__625__START__ADDRESSÛPOU__629__START__ADDRESSÜPOU__627__START__ADDRESSÝPOU__626__START__ADDRESSÞPOU__630__START__ADDRESSßPOU__628__START__ADDRESSàPOU__633__START__ADDRESSáPOU__487__START__ADDRESSâPOU__495__START__ADDRESSãPOU__493__START__ADDRESSäPOU__508__START__ADDRESSåPOU__513__START__ADDRESSæPOU__492__START__ADDRESSçPOU__522__START__ADDRESSèPOU__480__START__ADDRESSéPOU__524__START__ADDRESSêPOU__515__START__ADDRESSëPOU__491__START__ADDRESSìPOU__468__START__ADDRESSíPOU__502__START__ADDRESSîPOU__494__START__ADDRESSïPOU__510__START__ADDRESSðPOU__514__START__ADDRESSñPOU__481__START__ADDRESSòPOU__507__START__ADDRESSóPOU__523__START__ADDRESSôPOU__503__START__ADDRESSõPOU__476__START__ADDRESSöPOU__473__START__ADDRESS÷POU__519__START__ADDRESSøPOU__477__START__ADDRESSùPOU__501__START__ADDRESSúPOU__497__START__ADDRESSûPOU__500__START__ADDRESSüPOU__506__START__ADDRESSýPOU__511__START__ADDRESSþPOU__504__START__ADDRESSÿPOU__488__START__ADDRESSPOU__509__START__ADDRESSPOU__498__START__ADDRESSPOU__478__START__ADDRESSPOU__518__START__ADDRESSPOU__499__START__ADDRESS
POU__489__START__ADDRESSPOU__483__START__ADDRESSPOU__516__START__ADDRESSPOU__521__START__ADDRESSPOU__484__START__ADDRESSPOU__486__START__ADDRESSPOU__512__START__ADDRESSPOU__505__START__ADDRESSPOU__475__START__ADDRESSPOU__471__START__ADDRESSPOU__479__START__ADDRESSPOU__517__START__ADDRESSPOU__472__START__ADDRESSPOU__469__START__ADDRESSPOU__482__START__ADDRESSPOU__470__START__ADDRESSPOU__496__START__ADDRESSPOU__474__START__ADDRESSPOU__520__START__ADDRESSPOU__525__START__ADDRESSPOU__490__START__ADDRESSPOU__485__START__ADDRESSPOU__542__START__ADDRESSPOU__645__START__ADDRESSPOU__642__START__ADDRESSPOU__644__START__ADDRESSPOU__643__START__ADDRESS POU__641__START__ADDRESS¡POU__650__START__ADDRESS¢POU__661__START__ADDRESS£POU__658__START__ADDRESS¤POU__660__START__ADDRESS¥POU__659__START__ADDRESS¦POU__657__START__ADDRESS§POU__666__START__ADDRESS¨POU__672__START__ADDRESS©POU__677__START__ADDRESSªPOU__692__START__ADDRESS«POU__704__START__ADDRESS¬POU__707__START__ADDRESSPOU__706__START__ADDRESS®POU__708__START__ADDRESS¯POU__705__START__ADDRESS°POU__703__START__ADDRESS±POU__702__START__ADDRESS²POU__701__START__ADDRESS³POU__693__START__ADDRESS´POU__717__START__ADDRESSµPOU__721__START__ADDRESS¶POU__719__START__ADDRESS·POU__718__START__ADDRESS¸POU__720__START__ADDRESS¹POU__716__START__ADDRESSºPOU__727__START__ADDRESS»POU__734__START__ADDRESS¼POU__735__START__ADDRESS½POU__736__START__ADDRESS¾POU__737__START__ADDRESS¿POU__739__START__ADDRESSÀPOU__740__START__ADDRESSÁPOU__741__START__ADDRESSÂPOU__742__START__ADDRESSÃPOU__743__START__ADDRESSÄPOU__747__START__ADDRESSÅPOU__748__START__ADDRESSÆPOU__751__START__ADDRESSÇPOU__755__START__ADDRESSÈPOU__759__START__ADDRESSÉPOU__756__START__ADDRESSÊPOU__760__START__ADDRESSËPOU__769__START__ADDRESSÌPOU__770__START__ADDRESSÍPOU__771__START__ADDRESSÎPOU__772__START__ADDRESSÏPOU__773__START__ADDRESSÐPOU__774__START__ADDRESSÑPOU__775__START__ADDRESSÒPOU__790__START__ADDRESSÓPOU__787__START__ADDRESSÔPOU__784__START__ADDRESSÕPOU__786__START__ADDRESSÖPOU__785__START__ADDRESS×POU__783__START__ADDRESSØPOU__776__START__ADDRESSÙPOU__793__START__ADDRESSÚPOU__799__START__ADDRESSÛPOU__800__START__ADDRESSÜPOU__801__START__ADDRESSÝPOU__802__START__ADDRESSÞPOU__803__START__ADDRESSßPOU__804__START__ADDRESSàPOU__805__START__ADDRESSáPOU__806__START__ADDRESSâPOU__808__START__ADDRESSãPOU__810__START__ADDRESSäPOU__811__START__ADDRESSåPOU__812__START__ADDRESSæPOU__813__START__ADDRESSçPOU__814__START__ADDRESSèPOU__815__START__ADDRESSéPOU__816__START__ADDRESSêPOU__817__START__ADDRESSëPOU__818__START__ADDRESSìPOU__820__START__ADDRESSíPOU__821__START__ADDRESSîPOU__822__START__ADDRESSïPOU__825__START__ADDRESSðPOU__832__START__ADDRESSñPOU__829__START__ADDRESSòPOU__840__START__ADDRESSóPOU__838__START__ADDRESSôPOU__844__START__ADDRESSõPOU__842__START__ADDRESSöPOU__843__START__ADDRESS÷POU__839__START__ADDRESSøPOU__841__START__ADDRESSùPOU__845__START__ADDRESSúPOU__846__START__ADDRESSûPOU__851__START__ADDRESSüPOU__852__START__ADDRESSýPOU__853__START__ADDRESSþPOU__857__START__ADDRESSÿPOU__873__START__ADDRESSPOU__874__START__ADDRESSPOU__875__START__ADDRESSPOU__876__START__ADDRESSPOU__877__START__ADDRESSPOU__878__START__ADDRESS
POU__879__START__ADDRESSPOU__880__START__ADDRESSPOU__881__START__ADDRESSPOU__882__START__ADDRESSPOU__883__START__ADDRESSPOU__884__START__ADDRESSPOU__885__START__ADDRESSPOU__886__START__ADDRESSPOU__887__START__ADDRESSPOU__888__START__ADDRESSPOU__889__START__ADDRESSPOU__890__START__ADDRESSPOU__891__START__ADDRESSPOU__892__START__ADDRESS%NoInit, Generated, Compiled, Internal__GLOBAL_RELOC_DEFINITIONS__RELOCATIONTABLE-Global, IsCompiled, Absolut, NoInit, Typified__RELOCATIONTABLENEW%Global, IsCompiled, Absolut, Typified
2061191735_Implicit_Target_Info_Variables__targetInfoCompiled, SuperGlobal, Typified$0de9e5f1-f2f0-4550-99b9-b0c9c5d532d1
3724943997__ParentApplicationName $7e624f9d-69d6-42d1-923c-54726d605ee6¡
2535173239¢__TaskSpecificInfoGVL£taskSpecificInfos¤taskEntryAddress¥taskInfoInvalid¦	NUM_TASKS§MAX_STACK_SIZE¨$90165385-435d-46ce-bd91-03a9cc5300c5©
3459977258ª__TypeClass«__TYPECLASS¬%Enum, Compiled, SuperGlobal, Typified$93b6cd3f-8269-4c38-ace2-cca38ff00963®contains_blobinitconst¯
3183657202°
blobinitconst±initial_value_crc²
4251903600³E´
4043848204µFDEZ¶
EXP_MASK_REAL·EXP_OFFSET_REAL¸MANT_MASK_REAL¹RES_EXP_REALº
EXP_BIAS_REAL»NAN_REAL¼	PINF_REAL½	NINF_REAL¾$8282e63e-5bdc-4a17-9c51-c6019a0fc9eb¿
3735606965À__LCONVERSION_CONSTANTSÁULIntÂEXP_MASK_LREALÃEXP_OFFSET_LREALÄMANT_MASK_LREALÅ
RES_EXP_LREALÆEXP_BIAS_LREALÇ	NAN_LREALÈ
PINF_LREALÉ
NINF_LREALÊ$7b8ad65d-ee2e-4a1e-8258-daddee07b488ËCODE__INIT__VFTABLESÌVFTABLE__314ÍVFTABLE__364ÎVFTABLE__393ÏVFTABLE__433ÐVFTABLE__410ÑVFTABLE__380ÒVFTABLE__351ÓVFTABLE__526ÔVFTABLE__544ÕVFTABLE__561ÖVFTABLE__572×VFTABLE__594ØVFTABLE__619ÙVFTABLE__463ÚVFTABLE__635ÛVFTABLE__651ÜVFTABLE__694ÝVFTABLE__709ÞVFTABLE__777ßVFTABLE__833à/NoInit, NoCopy, Compiled, SuperGlobal, TypifiedáIMPLICIT_FUNCTION_POINTERSâSIGNATURE__0__FP__ADDRESSã#Global, IsCompiled, Absolut, NoInitäSIGNATURE__1__FP__ADDRESSåSIGNATURE__2__FP__ADDRESSæSIGNATURE__3__FP__ADDRESSçSIGNATURE__4__FP__ADDRESSèSIGNATURE__5__FP__ADDRESSéSIGNATURE__6__FP__ADDRESSêSIGNATURE__7__FP__ADDRESSëSIGNATURE__8__FP__ADDRESSìSIGNATURE__9__FP__ADDRESSíSIGNATURE__10__FP__ADDRESSîSIGNATURE__11__FP__ADDRESSïSIGNATURE__12__FP__ADDRESSðSIGNATURE__13__FP__ADDRESSñSIGNATURE__14__FP__ADDRESSòSIGNATURE__15__FP__ADDRESSóSIGNATURE__16__FP__ADDRESSôSIGNATURE__17__FP__ADDRESSõSIGNATURE__18__FP__ADDRESSöSIGNATURE__19__FP__ADDRESS÷SIGNATURE__20__FP__ADDRESSøSIGNATURE__21__FP__ADDRESSùSIGNATURE__22__FP__ADDRESSúSIGNATURE__23__FP__ADDRESSûSIGNATURE__24__FP__ADDRESSüSIGNATURE__25__FP__ADDRESSýSIGNATURE__26__FP__ADDRESSþSIGNATURE__27__FP__ADDRESSÿSIGNATURE__28__FP__ADDRESSSIGNATURE__29__FP__ADDRESSSIGNATURE__30__FP__ADDRESSSIGNATURE__31__FP__ADDRESSSIGNATURE__32__FP__ADDRESSSIGNATURE__33__FP__ADDRESS
SIGNATURE__34__FP__ADDRESSSIGNATURE__35__FP__ADDRESSSIGNATURE__36__FP__ADDRESSSIGNATURE__37__FP__ADDRESSSIGNATURE__38__FP__ADDRESSSIGNATURE__39__FP__ADDRESSSIGNATURE__40__FP__ADDRESSSIGNATURE__41__FP__ADDRESSSIGNATURE__42__FP__ADDRESSSIGNATURE__43__FP__ADDRESSSIGNATURE__44__FP__ADDRESSSIGNATURE__45__FP__ADDRESSSIGNATURE__46__FP__ADDRESSSIGNATURE__47__FP__ADDRESSSIGNATURE__48__FP__ADDRESSSIGNATURE__52__FP__ADDRESSSIGNATURE__53__FP__ADDRESSSIGNATURE__54__FP__ADDRESSSIGNATURE__55__FP__ADDRESSSIGNATURE__56__FP__ADDRESSSIGNATURE__57__FP__ADDRESSSIGNATURE__58__FP__ADDRESSSIGNATURE__59__FP__ADDRESSSIGNATURE__60__FP__ADDRESSSIGNATURE__61__FP__ADDRESSSIGNATURE__62__FP__ADDRESSSIGNATURE__63__FP__ADDRESS SIGNATURE__64__FP__ADDRESS¡SIGNATURE__65__FP__ADDRESS¢SIGNATURE__66__FP__ADDRESS£SIGNATURE__67__FP__ADDRESS¤SIGNATURE__68__FP__ADDRESS¥SIGNATURE__69__FP__ADDRESS¦SIGNATURE__70__FP__ADDRESS§SIGNATURE__71__FP__ADDRESS¨SIGNATURE__72__FP__ADDRESS©SIGNATURE__73__FP__ADDRESSªSIGNATURE__74__FP__ADDRESS«SIGNATURE__75__FP__ADDRESS¬SIGNATURE__76__FP__ADDRESSSIGNATURE__77__FP__ADDRESS®SIGNATURE__78__FP__ADDRESS¯SIGNATURE__79__FP__ADDRESS°SIGNATURE__80__FP__ADDRESS±SIGNATURE__81__FP__ADDRESS²SIGNATURE__82__FP__ADDRESS³SIGNATURE__83__FP__ADDRESS´SIGNATURE__84__FP__ADDRESSµSIGNATURE__85__FP__ADDRESS¶SIGNATURE__86__FP__ADDRESS·SIGNATURE__87__FP__ADDRESS¸SIGNATURE__88__FP__ADDRESS¹SIGNATURE__89__FP__ADDRESSºSIGNATURE__90__FP__ADDRESS»SIGNATURE__91__FP__ADDRESS¼SIGNATURE__92__FP__ADDRESS½SIGNATURE__93__FP__ADDRESS¾SIGNATURE__94__FP__ADDRESS¿SIGNATURE__95__FP__ADDRESSÀSIGNATURE__96__FP__ADDRESSÁSIGNATURE__97__FP__ADDRESSÂSIGNATURE__98__FP__ADDRESSÃSIGNATURE__99__FP__ADDRESSÄSIGNATURE__100__FP__ADDRESSÅSIGNATURE__101__FP__ADDRESSÆSIGNATURE__102__FP__ADDRESSÇSIGNATURE__103__FP__ADDRESSÈSIGNATURE__104__FP__ADDRESSÉSIGNATURE__105__FP__ADDRESSÊSIGNATURE__106__FP__ADDRESSËSIGNATURE__107__FP__ADDRESSÌSIGNATURE__108__FP__ADDRESSÍSIGNATURE__109__FP__ADDRESSÎSIGNATURE__110__FP__ADDRESSÏSIGNATURE__111__FP__ADDRESSÐSIGNATURE__112__FP__ADDRESSÑSIGNATURE__113__FP__ADDRESSÒSIGNATURE__114__FP__ADDRESSÓSIGNATURE__115__FP__ADDRESSÔSIGNATURE__116__FP__ADDRESSÕSIGNATURE__117__FP__ADDRESSÖSIGNATURE__118__FP__ADDRESS×SIGNATURE__119__FP__ADDRESSØSIGNATURE__120__FP__ADDRESSÙSIGNATURE__121__FP__ADDRESSÚSIGNATURE__122__FP__ADDRESSÛSIGNATURE__123__FP__ADDRESSÜSIGNATURE__124__FP__ADDRESSÝSIGNATURE__125__FP__ADDRESSÞSIGNATURE__126__FP__ADDRESSßSIGNATURE__127__FP__ADDRESSàSIGNATURE__128__FP__ADDRESSáSIGNATURE__129__FP__ADDRESSâSIGNATURE__130__FP__ADDRESSãSIGNATURE__131__FP__ADDRESSäSIGNATURE__132__FP__ADDRESSåSIGNATURE__133__FP__ADDRESSæSIGNATURE__134__FP__ADDRESSçSIGNATURE__135__FP__ADDRESSèSIGNATURE__136__FP__ADDRESSéSIGNATURE__681__FP__ADDRESSêSIGNATURE__140__FP__ADDRESSëSIGNATURE__141__FP__ADDRESSìSIGNATURE__142__FP__ADDRESSíSIGNATURE__143__FP__ADDRESSîSIGNATURE__144__FP__ADDRESSïSIGNATURE__145__FP__ADDRESSðSIGNATURE__146__FP__ADDRESSñSIGNATURE__147__FP__ADDRESSòSIGNATURE__148__FP__ADDRESSóSIGNATURE__149__FP__ADDRESSôSIGNATURE__150__FP__ADDRESSõSIGNATURE__151__FP__ADDRESSöSIGNATURE__152__FP__ADDRESS÷SIGNATURE__153__FP__ADDRESSøSIGNATURE__154__FP__ADDRESSùSIGNATURE__155__FP__ADDRESSúSIGNATURE__156__FP__ADDRESSûSIGNATURE__157__FP__ADDRESSüSIGNATURE__158__FP__ADDRESSýSIGNATURE__159__FP__ADDRESSþSIGNATURE__160__FP__ADDRESSÿSIGNATURE__161__FP__ADDRESS SIGNATURE__162__FP__ADDRESS SIGNATURE__163__FP__ADDRESS SIGNATURE__164__FP__ADDRESS SIGNATURE__165__FP__ADDRESS SIGNATURE__166__FP__ADDRESS
 SIGNATURE__167__FP__ADDRESS SIGNATURE__168__FP__ADDRESS SIGNATURE__169__FP__ADDRESS SIGNATURE__172__FP__ADDRESS SIGNATURE__175__FP__ADDRESS SIGNATURE__178__FP__ADDRESS SIGNATURE__181__FP__ADDRESS SIGNATURE__184__FP__ADDRESS SIGNATURE__185__FP__ADDRESS SIGNATURE__186__FP__ADDRESS SIGNATURE__187__FP__ADDRESS SIGNATURE__188__FP__ADDRESS SIGNATURE__189__FP__ADDRESS SIGNATURE__190__FP__ADDRESS SIGNATURE__191__FP__ADDRESS SIGNATURE__192__FP__ADDRESS SIGNATURE__193__FP__ADDRESS SIGNATURE__194__FP__ADDRESS SIGNATURE__195__FP__ADDRESS SIGNATURE__196__FP__ADDRESS SIGNATURE__199__FP__ADDRESS SIGNATURE__200__FP__ADDRESS SIGNATURE__201__FP__ADDRESS SIGNATURE__202__FP__ADDRESS SIGNATURE__203__FP__ADDRESS SIGNATURE__204__FP__ADDRESS SIGNATURE__205__FP__ADDRESS  SIGNATURE__206__FP__ADDRESS¡ SIGNATURE__207__FP__ADDRESS¢ SIGNATURE__208__FP__ADDRESS£ SIGNATURE__209__FP__ADDRESS¤ SIGNATURE__210__FP__ADDRESS¥ SIGNATURE__211__FP__ADDRESS¦ SIGNATURE__212__FP__ADDRESS§ SIGNATURE__213__FP__ADDRESS¨ SIGNATURE__214__FP__ADDRESS© SIGNATURE__215__FP__ADDRESSª SIGNATURE__216__FP__ADDRESS« SIGNATURE__217__FP__ADDRESS¬ SIGNATURE__218__FP__ADDRESS SIGNATURE__219__FP__ADDRESS® SIGNATURE__238__FP__ADDRESS¯ SIGNATURE__239__FP__ADDRESS° SIGNATURE__245__FP__ADDRESS± SIGNATURE__246__FP__ADDRESS² SIGNATURE__250__FP__ADDRESS³ SIGNATURE__251__FP__ADDRESS´ SIGNATURE__255__FP__ADDRESSµ SIGNATURE__256__FP__ADDRESS¶ SIGNATURE__260__FP__ADDRESS· SIGNATURE__261__FP__ADDRESS¸ SIGNATURE__265__FP__ADDRESS¹ SIGNATURE__266__FP__ADDRESSº SIGNATURE__270__FP__ADDRESS» SIGNATURE__271__FP__ADDRESS¼ SIGNATURE__275__FP__ADDRESS½ SIGNATURE__276__FP__ADDRESS¾ SIGNATURE__280__FP__ADDRESS¿ SIGNATURE__281__FP__ADDRESSÀ SIGNATURE__285__FP__ADDRESSÁ SIGNATURE__286__FP__ADDRESSÂ SIGNATURE__290__FP__ADDRESSÃ SIGNATURE__291__FP__ADDRESSÄ SIGNATURE__295__FP__ADDRESSÅ SIGNATURE__296__FP__ADDRESSÆ SIGNATURE__297__FP__ADDRESSÇ SIGNATURE__301__FP__ADDRESSÈ SIGNATURE__302__FP__ADDRESSÉ SIGNATURE__303__FP__ADDRESSÊ SIGNATURE__304__FP__ADDRESSË SIGNATURE__310__FP__ADDRESSÌ SIGNATURE__311__FP__ADDRESSÍ SIGNATURE__312__FP__ADDRESSÎ SIGNATURE__313__FP__ADDRESSÏ SIGNATURE__322__FP__ADDRESSÐ SIGNATURE__337__FP__ADDRESSÑ SIGNATURE__335__FP__ADDRESSÒ SIGNATURE__340__FP__ADDRESSÓ SIGNATURE__332__FP__ADDRESSÔ SIGNATURE__327__FP__ADDRESSÕ SIGNATURE__328__FP__ADDRESSÖ SIGNATURE__336__FP__ADDRESS× SIGNATURE__324__FP__ADDRESSØ SIGNATURE__319__FP__ADDRESSÙ SIGNATURE__326__FP__ADDRESSÚ SIGNATURE__333__FP__ADDRESSÛ SIGNATURE__339__FP__ADDRESSÜ SIGNATURE__334__FP__ADDRESSÝ SIGNATURE__323__FP__ADDRESSÞ SIGNATURE__329__FP__ADDRESSß SIGNATURE__330__FP__ADDRESSà SIGNATURE__325__FP__ADDRESSá SIGNATURE__320__FP__ADDRESSâ SIGNATURE__331__FP__ADDRESSã SIGNATURE__321__FP__ADDRESSä SIGNATURE__341__FP__ADDRESSå SIGNATURE__338__FP__ADDRESSæ SIGNATURE__346__FP__ADDRESSç SIGNATURE__350__FP__ADDRESSè SIGNATURE__370__FP__ADDRESSé SIGNATURE__374__FP__ADDRESSê SIGNATURE__375__FP__ADDRESSë SIGNATURE__372__FP__ADDRESSì SIGNATURE__371__FP__ADDRESSí SIGNATURE__373__FP__ADDRESSî SIGNATURE__378__FP__ADDRESSï SIGNATURE__401__FP__ADDRESSð SIGNATURE__399__FP__ADDRESSñ SIGNATURE__404__FP__ADDRESSò SIGNATURE__406__FP__ADDRESSó SIGNATURE__403__FP__ADDRESSô SIGNATURE__400__FP__ADDRESSõ SIGNATURE__407__FP__ADDRESSö SIGNATURE__405__FP__ADDRESS÷ SIGNATURE__402__FP__ADDRESSø SIGNATURE__450__FP__ADDRESSù SIGNATURE__452__FP__ADDRESSú SIGNATURE__453__FP__ADDRESSû SIGNATURE__454__FP__ADDRESSü SIGNATURE__441__FP__ADDRESSý SIGNATURE__442__FP__ADDRESSþ SIGNATURE__440__FP__ADDRESSÿ SIGNATURE__448__FP__ADDRESS!SIGNATURE__447__FP__ADDRESS!SIGNATURE__444__FP__ADDRESS!SIGNATURE__439__FP__ADDRESS!SIGNATURE__445__FP__ADDRESS!SIGNATURE__443__FP__ADDRESS
!SIGNATURE__446__FP__ADDRESS!SIGNATURE__451__FP__ADDRESS!SIGNATURE__449__FP__ADDRESS!SIGNATURE__425__FP__ADDRESS!SIGNATURE__417__FP__ADDRESS!SIGNATURE__422__FP__ADDRESS!SIGNATURE__426__FP__ADDRESS!SIGNATURE__423__FP__ADDRESS!SIGNATURE__429__FP__ADDRESS!SIGNATURE__428__FP__ADDRESS!SIGNATURE__432__FP__ADDRESS!SIGNATURE__424__FP__ADDRESS!SIGNATURE__418__FP__ADDRESS!SIGNATURE__416__FP__ADDRESS!SIGNATURE__420__FP__ADDRESS!SIGNATURE__427__FP__ADDRESS!SIGNATURE__430__FP__ADDRESS!SIGNATURE__421__FP__ADDRESS!SIGNATURE__431__FP__ADDRESS!SIGNATURE__419__FP__ADDRESS!SIGNATURE__385__FP__ADDRESS!SIGNATURE__389__FP__ADDRESS!SIGNATURE__386__FP__ADDRESS!SIGNATURE__391__FP__ADDRESS!SIGNATURE__387__FP__ADDRESS!SIGNATURE__390__FP__ADDRESS!SIGNATURE__388__FP__ADDRESS !SIGNATURE__359__FP__ADDRESS¡!SIGNATURE__357__FP__ADDRESS¢!SIGNATURE__362__FP__ADDRESS£!SIGNATURE__361__FP__ADDRESS¤!SIGNATURE__360__FP__ADDRESS¥!SIGNATURE__358__FP__ADDRESS¦!SIGNATURE__363__FP__ADDRESS§!SIGNATURE__462__FP__ADDRESS¨!SIGNATURE__459__FP__ADDRESS©!SIGNATURE__539__FP__ADDRESSª!SIGNATURE__536__FP__ADDRESS«!SIGNATURE__533__FP__ADDRESS¬!SIGNATURE__535__FP__ADDRESS!SIGNATURE__534__FP__ADDRESS®!SIGNATURE__532__FP__ADDRESS¯!SIGNATURE__557__FP__ADDRESS°!SIGNATURE__550__FP__ADDRESS±!SIGNATURE__554__FP__ADDRESS²!SIGNATURE__552__FP__ADDRESS³!SIGNATURE__551__FP__ADDRESS´!SIGNATURE__560__FP__ADDRESSµ!SIGNATURE__558__FP__ADDRESS¶!SIGNATURE__556__FP__ADDRESS·!SIGNATURE__553__FP__ADDRESS¸!SIGNATURE__555__FP__ADDRESS¹!SIGNATURE__559__FP__ADDRESSº!SIGNATURE__571__FP__ADDRESS»!SIGNATURE__568__FP__ADDRESS¼!SIGNATURE__570__FP__ADDRESS½!SIGNATURE__569__FP__ADDRESS¾!SIGNATURE__567__FP__ADDRESS¿!SIGNATURE__592__FP__ADDRESSÀ!SIGNATURE__580__FP__ADDRESSÁ!SIGNATURE__578__FP__ADDRESSÂ!SIGNATURE__585__FP__ADDRESSÃ!SIGNATURE__583__FP__ADDRESSÄ!SIGNATURE__588__FP__ADDRESSÅ!SIGNATURE__579__FP__ADDRESSÆ!SIGNATURE__581__FP__ADDRESSÇ!SIGNATURE__584__FP__ADDRESSÈ!SIGNATURE__587__FP__ADDRESSÉ!SIGNATURE__586__FP__ADDRESSÊ!SIGNATURE__589__FP__ADDRESSË!SIGNATURE__582__FP__ADDRESSÌ!SIGNATURE__614__FP__ADDRESSÍ!SIGNATURE__618__FP__ADDRESSÎ!SIGNATURE__602__FP__ADDRESSÏ!SIGNATURE__600__FP__ADDRESSÐ!SIGNATURE__607__FP__ADDRESSÑ!SIGNATURE__610__FP__ADDRESSÒ!SIGNATURE__601__FP__ADDRESSÓ!SIGNATURE__603__FP__ADDRESSÔ!SIGNATURE__606__FP__ADDRESSÕ!SIGNATURE__609__FP__ADDRESSÖ!SIGNATURE__608__FP__ADDRESS×!SIGNATURE__611__FP__ADDRESSØ!SIGNATURE__605__FP__ADDRESSÙ!SIGNATURE__604__FP__ADDRESSÚ!SIGNATURE__625__FP__ADDRESSÛ!SIGNATURE__629__FP__ADDRESSÜ!SIGNATURE__627__FP__ADDRESSÝ!SIGNATURE__626__FP__ADDRESSÞ!SIGNATURE__630__FP__ADDRESSß!SIGNATURE__628__FP__ADDRESSà!SIGNATURE__633__FP__ADDRESSá!SIGNATURE__487__FP__ADDRESSâ!SIGNATURE__495__FP__ADDRESSã!SIGNATURE__493__FP__ADDRESSä!SIGNATURE__508__FP__ADDRESSå!SIGNATURE__513__FP__ADDRESSæ!SIGNATURE__492__FP__ADDRESSç!SIGNATURE__522__FP__ADDRESSè!SIGNATURE__480__FP__ADDRESSé!SIGNATURE__524__FP__ADDRESSê!SIGNATURE__515__FP__ADDRESSë!SIGNATURE__491__FP__ADDRESSì!SIGNATURE__468__FP__ADDRESSí!SIGNATURE__502__FP__ADDRESSî!SIGNATURE__494__FP__ADDRESSï!SIGNATURE__510__FP__ADDRESSð!SIGNATURE__514__FP__ADDRESSñ!SIGNATURE__481__FP__ADDRESSò!SIGNATURE__507__FP__ADDRESSó!SIGNATURE__523__FP__ADDRESSô!SIGNATURE__503__FP__ADDRESSõ!SIGNATURE__476__FP__ADDRESSö!SIGNATURE__473__FP__ADDRESS÷!SIGNATURE__519__FP__ADDRESSø!SIGNATURE__477__FP__ADDRESSù!SIGNATURE__501__FP__ADDRESSú!SIGNATURE__497__FP__ADDRESSû!SIGNATURE__500__FP__ADDRESSü!SIGNATURE__506__FP__ADDRESSý!SIGNATURE__511__FP__ADDRESSþ!SIGNATURE__504__FP__ADDRESSÿ!SIGNATURE__488__FP__ADDRESS"SIGNATURE__509__FP__ADDRESS"SIGNATURE__498__FP__ADDRESS"SIGNATURE__478__FP__ADDRESS"SIGNATURE__518__FP__ADDRESS"SIGNATURE__499__FP__ADDRESS
"SIGNATURE__489__FP__ADDRESS"SIGNATURE__483__FP__ADDRESS"SIGNATURE__516__FP__ADDRESS"SIGNATURE__521__FP__ADDRESS"SIGNATURE__484__FP__ADDRESS"SIGNATURE__486__FP__ADDRESS"SIGNATURE__512__FP__ADDRESS"SIGNATURE__505__FP__ADDRESS"SIGNATURE__475__FP__ADDRESS"SIGNATURE__471__FP__ADDRESS"SIGNATURE__479__FP__ADDRESS"SIGNATURE__517__FP__ADDRESS"SIGNATURE__472__FP__ADDRESS"SIGNATURE__469__FP__ADDRESS"SIGNATURE__482__FP__ADDRESS"SIGNATURE__470__FP__ADDRESS"SIGNATURE__496__FP__ADDRESS"SIGNATURE__474__FP__ADDRESS"SIGNATURE__520__FP__ADDRESS"SIGNATURE__525__FP__ADDRESS"SIGNATURE__490__FP__ADDRESS"SIGNATURE__485__FP__ADDRESS"SIGNATURE__542__FP__ADDRESS"SIGNATURE__645__FP__ADDRESS"SIGNATURE__642__FP__ADDRESS"SIGNATURE__644__FP__ADDRESS"SIGNATURE__643__FP__ADDRESS "SIGNATURE__641__FP__ADDRESS¡"SIGNATURE__650__FP__ADDRESS¢"SIGNATURE__649__FP__ADDRESS£"SIGNATURE__661__FP__ADDRESS¤"SIGNATURE__658__FP__ADDRESS¥"SIGNATURE__660__FP__ADDRESS¦"SIGNATURE__659__FP__ADDRESS§"SIGNATURE__657__FP__ADDRESS¨"SIGNATURE__666__FP__ADDRESS©"SIGNATURE__665__FP__ADDRESSª"SIGNATURE__672__FP__ADDRESS«"SIGNATURE__671__FP__ADDRESS¬"SIGNATURE__677__FP__ADDRESS"SIGNATURE__676__FP__ADDRESS®"SIGNATURE__692__FP__ADDRESS¯"SIGNATURE__691__FP__ADDRESS°"SIGNATURE__704__FP__ADDRESS±"SIGNATURE__707__FP__ADDRESS²"SIGNATURE__706__FP__ADDRESS³"SIGNATURE__708__FP__ADDRESS´"SIGNATURE__705__FP__ADDRESSµ"SIGNATURE__703__FP__ADDRESS¶"SIGNATURE__702__FP__ADDRESS·"SIGNATURE__701__FP__ADDRESS¸"SIGNATURE__693__FP__ADDRESS¹"SIGNATURE__717__FP__ADDRESSº"SIGNATURE__721__FP__ADDRESS»"SIGNATURE__719__FP__ADDRESS¼"SIGNATURE__718__FP__ADDRESS½"SIGNATURE__720__FP__ADDRESS¾"SIGNATURE__716__FP__ADDRESS¿"SIGNATURE__727__FP__ADDRESSÀ"SIGNATURE__726__FP__ADDRESSÁ"SIGNATURE__722__FP__ADDRESSÂ"SIGNATURE__730__FP__ADDRESSÃ"SIGNATURE__734__FP__ADDRESSÄ"SIGNATURE__735__FP__ADDRESSÅ"SIGNATURE__736__FP__ADDRESSÆ"SIGNATURE__737__FP__ADDRESSÇ"SIGNATURE__739__FP__ADDRESSÈ"SIGNATURE__740__FP__ADDRESSÉ"SIGNATURE__741__FP__ADDRESSÊ"SIGNATURE__742__FP__ADDRESSË"SIGNATURE__743__FP__ADDRESSÌ"SIGNATURE__747__FP__ADDRESSÍ"SIGNATURE__744__FP__ADDRESSÎ"SIGNATURE__748__FP__ADDRESSÏ"SIGNATURE__749__FP__ADDRESSÐ"SIGNATURE__750__FP__ADDRESSÑ"SIGNATURE__751__FP__ADDRESSÒ"SIGNATURE__752__FP__ADDRESSÓ"SIGNATURE__755__FP__ADDRESSÔ"SIGNATURE__759__FP__ADDRESSÕ"SIGNATURE__756__FP__ADDRESSÖ"SIGNATURE__760__FP__ADDRESS×"SIGNATURE__761__FP__ADDRESSØ"SIGNATURE__762__FP__ADDRESSÙ"SIGNATURE__765__FP__ADDRESSÚ"SIGNATURE__766__FP__ADDRESSÛ"SIGNATURE__767__FP__ADDRESSÜ"SIGNATURE__768__FP__ADDRESSÝ"SIGNATURE__769__FP__ADDRESSÞ"SIGNATURE__770__FP__ADDRESSß"SIGNATURE__771__FP__ADDRESSà"SIGNATURE__772__FP__ADDRESSá"SIGNATURE__773__FP__ADDRESSâ"SIGNATURE__774__FP__ADDRESSã"SIGNATURE__775__FP__ADDRESSä"SIGNATURE__790__FP__ADDRESSå"SIGNATURE__787__FP__ADDRESSæ"SIGNATURE__784__FP__ADDRESSç"SIGNATURE__786__FP__ADDRESSè"SIGNATURE__785__FP__ADDRESSé"SIGNATURE__783__FP__ADDRESSê"SIGNATURE__776__FP__ADDRESSë"SIGNATURE__793__FP__ADDRESSì"SIGNATURE__795__FP__ADDRESSí"SIGNATURE__796__FP__ADDRESSî"SIGNATURE__797__FP__ADDRESSï"SIGNATURE__798__FP__ADDRESSð"SIGNATURE__799__FP__ADDRESSñ"SIGNATURE__800__FP__ADDRESSò"SIGNATURE__801__FP__ADDRESSó"SIGNATURE__802__FP__ADDRESSô"SIGNATURE__803__FP__ADDRESSõ"SIGNATURE__804__FP__ADDRESSö"SIGNATURE__805__FP__ADDRESS÷"SIGNATURE__806__FP__ADDRESSø"SIGNATURE__808__FP__ADDRESSù"SIGNATURE__809__FP__ADDRESSú"SIGNATURE__810__FP__ADDRESSû"SIGNATURE__811__FP__ADDRESSü"SIGNATURE__812__FP__ADDRESSý"SIGNATURE__813__FP__ADDRESSþ"SIGNATURE__814__FP__ADDRESSÿ"SIGNATURE__815__FP__ADDRESS#SIGNATURE__816__FP__ADDRESS#SIGNATURE__817__FP__ADDRESS#SIGNATURE__818__FP__ADDRESS#SIGNATURE__820__FP__ADDRESS#SIGNATURE__821__FP__ADDRESS
#SIGNATURE__822__FP__ADDRESS#SIGNATURE__823__FP__ADDRESS#SIGNATURE__824__FP__ADDRESS#SIGNATURE__825__FP__ADDRESS#SIGNATURE__832__FP__ADDRESS#SIGNATURE__829__FP__ADDRESS#SIGNATURE__840__FP__ADDRESS#SIGNATURE__838__FP__ADDRESS#SIGNATURE__844__FP__ADDRESS#SIGNATURE__842__FP__ADDRESS#SIGNATURE__843__FP__ADDRESS#SIGNATURE__839__FP__ADDRESS#SIGNATURE__841__FP__ADDRESS#SIGNATURE__845__FP__ADDRESS#SIGNATURE__846__FP__ADDRESS#SIGNATURE__847__FP__ADDRESS#SIGNATURE__848__FP__ADDRESS#SIGNATURE__851__FP__ADDRESS#SIGNATURE__852__FP__ADDRESS#SIGNATURE__853__FP__ADDRESS#SIGNATURE__854__FP__ADDRESS#SIGNATURE__857__FP__ADDRESS#SIGNATURE__860__FP__ADDRESS#SIGNATURE__861__FP__ADDRESS#SIGNATURE__862__FP__ADDRESS#SIGNATURE__863__FP__ADDRESS#SIGNATURE__864__FP__ADDRESS #SIGNATURE__865__FP__ADDRESS¡#SIGNATURE__867__FP__ADDRESS¢#SIGNATURE__869__FP__ADDRESS£#SIGNATURE__871__FP__ADDRESS¤#SIGNATURE__873__FP__ADDRESS¥#SIGNATURE__874__FP__ADDRESS¦#SIGNATURE__875__FP__ADDRESS§#SIGNATURE__876__FP__ADDRESS¨#SIGNATURE__877__FP__ADDRESS©#SIGNATURE__878__FP__ADDRESSª#SIGNATURE__879__FP__ADDRESS«#SIGNATURE__880__FP__ADDRESS¬#SIGNATURE__881__FP__ADDRESS#SIGNATURE__882__FP__ADDRESS®#SIGNATURE__883__FP__ADDRESS¯#SIGNATURE__884__FP__ADDRESS°#SIGNATURE__885__FP__ADDRESS±#SIGNATURE__886__FP__ADDRESS²#SIGNATURE__887__FP__ADDRESS³#SIGNATURE__888__FP__ADDRESS´#SIGNATURE__889__FP__ADDRESSµ#SIGNATURE__890__FP__ADDRESS¶#SIGNATURE__891__FP__ADDRESS·#SIGNATURE__892__FP__ADDRESS¸#9NoInit, NoCompareWithNew, Compiled, SuperGlobal, Internal¹#3 Base type and swapping information for io channelsº#
2906528882»#BaseTypeInformation¼#7 The low byte contains the base clase of the io channel½#
CMLBT_Mask¾#7 If this bit is set, the base type information is valid¿#CMLBT_IS_SETÀ#E Enable flag, if this bit is set to 0, the swapping must be disabled.Á#CMLBT_ENABLEÂ#$ca9ad7fa-6105-44aa-b100-d441fed9fb53Ã#  Fieldbus independent parametersÄ#
3214716919Å#BusIndependentParameterIDsÆ#A Parameter to identify netX devices.TRUE indicates a netX device.Ç#FIP_NETX_DEVICEÈ#S Master Watchdog TIME. 0 deactivates the watchdog, 1-0xFFFF sets the watchdog TIME.É#FIP_WATCHDOGÊ#- Slot number of the NetX device e.g. PCI slotË#FIP_NETX_SLOT_NUMBERÌ#8 A NetX chip may have up to four communication channels.Í#FIP_NETX_CHANNEL_NUMBERÎ# Wait time for the BUS_ON signal of the master in the IO Driver. If it is set to 0, the IO driver does not wait for the BUS ON signal.Ï#FIP_BUS_ON_TIMEOUTÐ#e Name of the device, if target setting deviceconfiguration:enableAdditionalParameters is set to TRUE.Ñ#FIP_DEVICENAMEÒ#s Hashcode of DeviceIdentification, if target setting deficeconfiguration:enableAdditionalParameters is set to TRUE.Ó#FIP_DEVICEIDENTIFICATION_HASHÔ#, Value of UpdateIOInStop (see PLC settings).Õ#FIP_UPDATE_IO_IN_STOPÖ#0 Used for Safety. Describing the used protocols.×#FIP_SAFETY_PROTOCOLØ#Q Contains the version of the fieldbus config schema e.g. 16#03050100 for V3.5.1.0Ù#FIP_CONFIG_VERSIONÚ#i Number of parameters beginning at 0x7f000019 (max. 256 Parameters) describing the used safety protocols.Û#FIP_NUMBER_OF_SAFETY_PROTOCOLSÜ#  First Safety Protocol ParameterÝ#FIP_FIRST_SAFETY_PROTOCOL_PARAMÞ# Last Safety Protocol Parameterß#FIP_LAST_SAFETY_PROTOCOL_PARAMà#$4a181e1a-4536-4b69-9aaa-cb9b31f14916á#N Connector flags: Flags that specifies diagnostic informations of a connector â#
1256596728ã#ConnectorFlagsä# Connector enabledå#	CF_ENABLEæ#8 Connector provides diagnosis for the associated device.ç#CF_DIAG_PROVIDERè#g Only valid if CF_DIAG_PROVIDER is set. Specifies if device is currently enabled (used by Reconfigure).é#CF_DEVICE_ENABLEDê# Demo License is activeë#CF_DEMOLICENSE_ACTIVEì# A driver is availableí#CF_DRIVER_AVAILABLEî#" Connector found (device detected)ï#CF_CONNECTOR_FOUNDð# Connector configuredñ#CF_CONNECTOR_CONFIGUREDò# Connector activeó#CF_CONNECTOR_ACTIVEô#
 Bus errorõ#CF_CONNECTOR_BUS_ERRORö# General connector error÷#CF_CONNECTOR_ERRORø#! Diagnostic information availableù#!CF_CONNECTOR_DIAGNOSTIC_AVAILABLEú#8 Passive mode of the second master in redundancy systemsû#CF_CONNECTOR_PASSIVEü#0An Error was automatically cleared by the driverý#CF_ERROR_CLEAREDþ#$c718ceaa-635a-4cfd-ba2c-768a82c26857ÿ#A Connector options: Options to specify properties of a connector $
2882327493$ConnectorOptions$
 No option$CO_NONE$¸ Scan the IO-configuration with segmented transfer is supported. In this case, the call of IoDrvScanModules() can return ERR_PENDING to get further calls to transmit more scan results.
$CO_SCAN_PENDING_SUPPORTED$$62a7a276-ff5c-4692-9d2b-ead8aef2ed09$=	Types of connectors. "0x8000..0x8FFF" are Special Connectors$
4271018223$ConnectorTypes$6 Programmable connector (can be programmed by CoDeSys)$CT_PROGRAMMABLE$! Connector is only parametrizable$CT_PARAMETRIZABLE$ CANbus$
CT_CAN_BUS$ CANopen Master$
CT_CAN_MASTER$ CANopen Remote Slave$CT_CAN_SLAVE$ CANopen Local Device		$
CT_CAN_DEVICE$ CANopen Safety$CT_CANOPEN_SAFETY$ J1939 Manager$CT_J1939_MANAGER$
 J1939 ECU$CT_J1939_ECU$ CANopen Safety Slave$CT_CANOPEN_SAFETY_SLAVE$ Profibus Master$CT_PROFIBUS_MASTER $ Profibus Slave¡$CT_PROFIBUS_SLAVE¢$ Profibus Device£$CT_PROFIBUS_DEVICE¤$ Profibus modular Master¥$CT_PROFIBUS_MOD_MASTER¦$ Profibus modular Slave§$CT_PROFIBUS_MOD_SLAVE¨$ Profibus DeviceNet Master©$CT_DEVICENET_MASTERª$ Profibus DeviceNet Slave«$CT_DEVICENET_SLAVE¬$ DeviceNet Device$CT_DEVICENET_DEVICE®$ EtherCAT Master¯$CT_ETHERCAT_MASTER°$ EtherCAT Slave±$CT_ETHERCAT_SLAVE²$ EtherCAT Device³$CT_ETHERCAT_DEVICE´$ EtherNet/IP Scannerµ$CT_ENIP_SCANNER¶$ EtherNet/IP Remote Adapter·$CT_ENIP_REMOTE_ADAPTER¸$ PCI Master¹$
CT_PCI_MASTERº$
 PCI Slave»$CT_PCI_SLAVE¼$$c87be3b5-dafe-4495-952e-a6dffce8842d½$
3062691420¾$DriverPropertyFlags¿$ IO-driver realizes bit-consistency by its own (atomar bit access). If this flag is 0, the bit-consistency is provided by the IO-Manager.À$DRVPROP_CONSISTENCYÁ$¨ The io driver needs a cyclic call TO the IoDrvWatchdogTrigger INTERFACE FUNCTION. The io manager will call the io driver approximately every Watchdogtime/2. The Watchdogtime must be set in the IoConfig parameters (ID 0x70000001). ATTENTION: The io manager will pass a NULL pointer as parameter pConnector to the IIoDrv interface function IoDrvWatchdogTrigger. If this flag is 0, the driver must trigger the watchdog itself.Â$DRVPROP_WATCHDOGÃ$u IO-driver can support redundancy. If the flag DRVPROP_REDUNDANCY is 1, the redundancy is provided by the IO-Manager.Ä$DRVPROP_REDUNDANCYÅ$I If the flag DRVPROP_ACTIVE is 1, the master is active otherwise passive.Æ$DRVPROP_ACTIVEÇ$ The flag DRVPROP_ERROR_ACTIVE is used to tell the redundancy component that the active master has an error and it should switchover (only on active plc).È$DRVPROP_ERROR_ACTIVEÉ$j The flag DRVPROP_ERROR_PASSIVE can be set to inform redundancy component that the communication was lost.Ê$DRVPROP_ERROR_PASSIVEË$ If this property is set, the interface function IoDrvGetModuleDiagnosis() of the driver is called cyclically from a background task. NOTE: In this case, IoDrvGetModuleDiagnosis is called with: IoDrvGetModuleDiagnosis(hIoDrv, NULL); This must be handled correctly in the IO-driver! Ì$DRVPROP_BACKGROUND_GETDIAGÍ$Ã Disable synchronization for ReadInputs/WriteOutputs/StartBusCycle in the I/O Manager (CmpIoMgr). In this case the I/O driver has to implement the synchronization of these functions itself. CmpIoMgr provides the following functions that can be used by the I/O driver for synchronization:	IoMgrLockEnter(), IoMgrLockLeave() Î$DRVPROP_NO_SYNCÏ$$49ec242b-5a81-4d85-9c22-00f1a2026752Ð$ Scopes for mutual-exclusion locks to be used with the ``dwLockScope`` parameters of the functions ``IoMgrLockEnter()`` and ``IoMgrLockLeave()``.
 Note: Use both locks ``IOMGR_LOCK_WRITE_OUTPUTS OR IOMGR_LOCK_READ_INPUTS`` in the function ``IoDrvStartBusCycle()``.Ñ$
1750284199Ò$
LockScopesÓ$F Lock critical sections in IoDrvReadInputs() and IoDrvStartBusCycle().Ô$IOMGR_LOCK_READ_INPUTSÕ$H Lock critical sections in IoDrvWriteOutputs() and IoDrvStartBusCycle().Ö$IOMGR_LOCK_WRITE_OUTPUTS×$$8293b298-c8b3-457c-a427-e9ab569ef5b0Ø$ Parameter value flagsÙ$
2737844889Ú$ParameterValueFlagsÛ$A Functional access TO the parameter, Value is a FUNCTION POINTER.Ü$PVF_FUNCTIONÝ$  Value is a pointer to the valueÞ$PVF_POINTERß$F Value can be interpreted directly as a value (max. 32 Bit datatypes).à$	PVF_VALUEá$ Parameter can be read.â$PVF_READã$ Parameter can be writtenä$	PVF_WRITEå$a Output is bidirectional. There will be a call in IoDrvWriteOutputs as well as in IoDrvReadInputsæ$PVF_BIDIRECTIONALç$$f917dec1-6a21-4f14-b013-9452261c64dbè$# Types of IO-channels in a task mapé$
3184734194ê$TaskMapTypesë$ Input connector mapsì$
TMT_INPUTSí$ Output connector mapsî$TMT_OUTPUTSï$$5b8f49a3-c5d0-4510-93fe-4205d28c3905ð$
2201444556ñ$EventIDsò$CMPID_CmpIoMgró$
 Parameter IDô$EVTPARAMID_CmpIoMgrõ$ Parameter versionö$EVTVERSION_CmpIoMgr÷$3Event is sent before updating the IO-configuration.ø$EVT_PrepareUpdateConfigurationù$2Event is sent after updating the IO-configuration.ú$EVT_UpdateConfigurationDoneû$6Event is sent after the config application is started.ü$EVT_ConfigAppStartedDoneý$7Event is sent before the config application is stopped.þ$EVT_PrepareConfigAppStoppedÿ$6Event is sent after the config application is stopped.%EVT_ConfigAppStoppedDone%$a036c876-a9b4-48d2-ad0b-64d64266326b%0 Type of the bus cycle to differenciate between:%
1947881383%BusCycleType
%9 Bus Cycle is executed at the beginning of the task cycle%	BCT_START%3 Bus Cycle is executed at the end of the task cycle%BCT_END%$cd022f44-7898-4d97-b223-ba8a1334a3fe%analysis%-27, -31, -33, -43%
4038458023%SVN_Info_Summary%® Version-Summary-Tag ähnlich zu svnversion.exe.
	 * Beispiel, '12:34M' bedeutet MINREV=12, MAXREV=34, Geändert.
	 * (Siehe SVN-Dokumentation für weitere Informationen)	 %35125M%sVersionSummary%$1e48524d-73cb-46d1-b590-36eb2c1a7c3f%-27, -31, -33, -43, -113%
1943799135%SVN_Info_SummaryW%WString%wsVersionSummary%$9755c5b0-2092-4717-b940-0c916fcb381c%
3734062428%SVN_Info_URI% Die SVN-URL des Projekts:	 %^svn://server04/LibrariesV3Source/branches/V3.5.15.0/Intern/IoDriverBase/IoStandard/IoStandard/%wURL%$b1ef4121-f1a4-4c26-958e-7db6863465e5%
4210413777%SVN_Info_Revisions %* Die kleinste Revision der Arbeitskopie.	 ¡%LInt¢%
liMinRevision£%* Die höchste Revision der Arbeitskopie.	 ¤%
liMaxRevision¥%$58c55deb-e981-48ac-bd9d-96ba99db81ac¦%
4231687110§%SVN_Info_Flags¨% TRUE, wenn die Arbeitskopie unvollständig ist
	 * (z.B. die letzte Aktualisierung wegen Verbindungsproblemen abgebrochen, oder lückenhaftes Checkout)	 ©%xIncompleteª%( TRUE, wenn es lokale Ãnderungen gibt	 «%	xModified¬%/ TRUE, wenn es umgeschaltete Unterbäume gibt	 %	xSwitched®% TRUE, wenn die Version sauber ist.
	 * (MINREVISION == MAXREVISION, nicht unvollständig, nicht geändert, nicht umgeschaltet.)	 ¯%xClean°%$8e8e011c-3eb6-4b86-9c71-d98f353a1692±%â Warnung: Die Werte der "letzen Ãnderung"  hier ist nur genau, wenn der Status ihres Arbeitsverzeichnisses sauber ist. Beispielsweise sind die Werte ungenau, wenn gemischte Revisionen oder lokale Ãnderungen vorhanden sind.	 ²%
1257847159³%SVN_Info_LastChange´%È Datum und Uhrzeit der letzten Ãnderung als IEC DateTime(UTC). Sie können die IEC Time Bibliotheken verwenden,  um auf die lokale Zeit der SPS umzurechnen und nach Ihren Wünschen zu formattieren.	 µ%DateAndTime¶%dtLastChangeUtc·%È Letzte Ãnderung vorformatiert im Format "2006-07-22 21:42:37 -0700 (Sat, 22 Jul 2006)" (analog zum
	 * SVN-Schlüsselwort $Date$ Keyword), mit Verwendung der lokalen Zeitdes Entwicklungsrechners.	 ¸%,2019-06-05 08:48:56 +0200 (Wed, 05 Jun 2019)¹%wsLastChangeLocalº%  Der Autor des letzen Commits.	 »%b.brueckmann¼%wsLastChangeAuthor½%$a141e132-98bc-4040-98d9-5ab52651951a¾%global_init_slot¿%40000À%
2434124423Á%
GVL_hiddenÂ%gc_CLASSID_LicenseÃ%TimeÄ%gc_tDemoÅ%g_tDemoTimeÆ%g_olmÇ%AGlobal, IsCompiled, Absolut, Initialized, OnlChangeExit, TypifiedÈ%
g_udiStartÉ%$60802aa3-0da6-43f2-b1c6-612c13d38103Ê%
3998489052Ë%$6c565d0a-715a-4bda-9c41-364072c0854fÌ%RTS_ACCESS_MODEÍ%
3616192811Î%AM_READÏ%AM_WRITEÐ%	AM_APPENDÑ%AM_READ_PLUSÒ%"Enum, Compiled, Typified, InternalÓ%$f6709db2-0787-4cc0-984b-80f9dc50344cÔ%F{attribute 'conditionalshow' := '3SLib_Developer'}
{attribute 'hide'}Õ%
4261187534Ö%	Variables×%stLogStringØ%
pLogStringÙ%$cd51317e-3db2-44da-bb88-6b22ca144fe3Ú%	no_assignÛ%
3824552580Ü%
GVL_CfUnitÝ%CfUnitRunnerÞ%aGlobal, IsCompiled, Absolut, LocationChanged, OnlChangeCopy, OnlChangeInit, Initialized, Typifiedß%W Indication of whether the last instantiated test suite has an assert instance created à%TestSuiteAssertRegisteredá%! Current test suite being called â%CurrentTestSuiteBeingCalledã%# Current name of test being called ä%CurrentTestNameBeingCalledå%C Whether or not the current test being called has finished running æ%CurrentTestIsFinishedç%û This is a flag that indicates that the current test should be ignored, and
	   thus that all assertions under it should be ignored as well. A test can be ignored either
	   because the user has requested so, or because the test is a duplicate name è%IgnoreCurrentTesté%b The assert function block instance should be 1:1 mapped to
       the test suite instance path. ê%NumberOfInitializedTestSuitesë%TestSuiteAddressesì%MaxNumberOfTestSuitesí%!Compiled, OnlineChanged, Typifiedî%$78472b76-c9a4-4b27-a580-8e7898edc3d7ï%strictð%
2220631024ñ%
E_XmlErrorò%Okó%ErrorMaxBufferLenô%ErrorStringLenõ%Errorö%$05a4fdda-1086-47b5-ad10-7c2bac568355÷%
parameterlistø%
2927770536ù%" Filesize in bytes (32 kb default)ú%$69588962-bd3e-4958-957e-7bfb94609af1û%
4284228194ü%$cadec786-f15c-46d7-8a5f-f8454136b189ý%	356200577þ%
GVL_Systemÿ%
_ST_Logger&	_CmpCfLog&$7e465938-43b3-4ac5-bae5-c19fce2bd2bf&¥ | Access mode
 | File modes to open a file.
 .. note::
    For all ``*_PLUS`` modes be aware, that after reading from a file, writing can only be done after a call
    to |SysFileGetPos| or |SysFileSetPos|! If you call |SysFileWrite| right after |SysFileRead|,
    the file pointer could be on an invalid position!
    Correct example::
 	     SysFileRead();
 	     SysFileGetPos();
 	     SysFileWrite();&K Open an existing file with Read access. If file does not exist, Open fails&L Create new file with Write access. If file does exist, content is discarded
&Z Open an existing file with Append (only write) access. If file does not exist, Open fails&Q Open an existing file with Read/Write access. If file does not exist, Open fails&Q Create new file with Read/Write access. If file does exist, content is discarded&g Open an existing file with Append (read/write) access. If file does not exist, Open creates a new file&$52A6FD6D-031C-41c0-A818-0F45FE19AF8F&
3969002541&TYPE_INTERFACE&$18308f84-bb54-40d0-ae45-a2e8c891c222&
1265334668&Errors& Ok&ERR_OK&5 General error - to be used only for internal errors &
ERR_FAILED&% Invalid parameter for this operation&
ERR_PARAMETER&e Function cannot be executed, since component has not been initialized yet. It may work later, though&ERR_NOTINITIALIZED& Version conflict&ERR_VERSION& Operation timed out&ERR_TIMEOUT&- Insufficient memory to carry out the request&ERR_NOBUFFER&( For async-calls: call not complete, yet&ERR_PENDING&! To many pending calls. Try later &ERR_NUMPENDING¡&  The function is not implemented¢&ERR_NOTIMPLEMENTED£&% No object with the provided id found¤&
ERR_INVALIDID¥& Integer overflow¦&ERR_OVERFLOW§&, The size of a buffer is to small or invalid¨&ERR_BUFFERSIZE©&- No object with this specified name availableª&
ERR_NO_OBJECT«& No heap memory available¬&ERR_NOMEMORY&0 An object with the same name is still available®&
ERR_DUPLICATE¯&> Heap memory was written out of bounds! Memory overwrite error°&ERR_MEMORY_OVERWRITE±& Invalid handle TO an object²&ERR_INVALID_HANDLE³& End OF object reached´&ERR_END_OF_OBJECTµ& No changes done¶&
ERR_NO_CHANGE·& Invalid OR unknown INTERFACE¸&ERR_INVALID_INTERFACE¹& Functionality NOT supportedº&ERR_NOT_SUPPORTED»&$ No access rights FOR THIS operation¼&ERR_NO_ACCESS_RIGHTS½&( Specified limits OF a resource exceeded¾&ERR_OUT_OF_LIMITS¿&M Remaining entries that could NOT be transmitted because OF buffer limitationÀ&ERR_ENTRIES_REMAININGÁ& Invalid online sessionidÂ&ERR_INVALID_SESSION_IDÃ& Exception occurredÄ&
ERR_EXCEPTIONÅ&& Signature mismatch OF an api FUNCTIONÆ&ERR_SIGNATURE_MISMATCHÇ& Version mismatchÈ&ERR_VERSION_MISMATCHÉ& TYPE mismatchÊ&ERR_TYPE_MISMATCHË& ID mismatchÌ&ERR_ID_MISMATCHÍ& Consistency errorÎ&ERR_NO_CONSISTENCYÏ& No COMM_CYCLE neededÐ&ERR_NO_COMM_CYCLEÑ&' DO NOT suspend task after an exceptionÒ&ERR_DONT_SUSPEND_TASKÓ&* Memory cannot be locked in THIS operationÔ&ERR_MEMORY_LOCK_FAILEDÕ&  License missing FOR the runtimeÖ&ERR_LICENSE_MISSING×& Operation deniedØ&ERR_OPERATION_DENIEDÙ&
 Device errorÚ&
ERR_DEVICEÛ&
 Disk fullÜ&
ERR_DISK_FULLÝ& Internal use in runtimeÞ&ERR_CRC_FAILEDß&ERR_MEDIA_ERASEà&T File error. e.g. cannot open a file FOR writing because it could be write PROTECTEDá&ERR_FILE_ERRORâ& No RETAIN memory availableã&ERR_NO_RETAIN_MEMORYä&/ Specified minimum-limit of a resource exceededå&ERR_OUT_OF_LIMITS_MINæ&/ Specified maximum-limit of a resource exceededç&ERR_OUT_OF_LIMITS_MAXè& Size mismatch é&ERR_SIZE_MISMATCHê&> Operation is not yet finished, call function again to proceedë&ERR_CALL_AGAINì&+ Operation has nothing TO DO. No execution.í&ERR_NOTHING_TO_DOî&¹	Some security checks have failed. THIS is a generic error code TO report THIS error over PUBLIC channels. In THIS CASE the error code doesn't provide a detailed cause for the error. */ï&ERR_SECURITY_CHECKS_FAILEDð&ERR_INVALID_SEQUENCEñ&f Dereferencing an IEC reference in IecVarAccess failed due to invalid destination address, e. G. NULL.ò&ERR_INVALID_REFERENCEó&1 Conversion of string encodings was not lossless.ô&ERR_CONVERSION_INCOMPLETEõ& Socket not initialized ö&ERR_SOCK_NOTINITIALIZED÷&& The provided socket handle is invalidø&ERR_SOCK_NOTSOCKETù&$ The address family is NOT supportedú&ERR_SOCK_AFUNSUPPORTEDû& Protocol is NOT supportedü&ERR_SOCK_PROTOUNSUPPORTEDý&( NOT enough buffer TO handle the requestþ&ERR_SOCK_NOBUFFERÿ&8 Socket is in nonblocking mode but THIS call would block'ERR_SOCK_WOULDBLOCK'' The provided address is already in use'ERR_SOCK_ADDRINUSE'7 The provided address is NOT available on THIS computer'ERR_SOCK_ADDRNOTAVAILABLE
'/ Connection has been refused BY the remote host'ERR_SOCK_CONNREFUSED'ERR_SOCK_TIMEDOUT' The host has NOT been found'ERR_SOCK_HOSTNOTFOUND' Host is unreachable'ERR_SOCK_HOSTUNREACHABLE' Socket is already connected'ERR_SOCK_ISCONNECTED' The socket is NOT connected'ERR_SOCK_NOTCONNECTED'' Shutdown has been called on the socket'ERR_SOCK_SHUTDOWN'P FOR sockets OF TYPE DGRAM. The package TO send exceeds the maximum package size'ERR_SOCK_MSGSIZE'B Socket has been gracefully closed. No more send/receives allowed	'ERR_SOCK_CLOSED', Tag missing in online communication buffer 'ERR_L7_TAG_MISSING' Unknown command group'ERR_L7_UNKNOWNCMDGROUP'/ Unknown command (within a valid command group)'ERR_L7_UNKNOWNCMD' Level 7 service incomplete'ERR_L7_INCOMPLETE'# Certificate validation error codes'ERR_CERT_OK 'B illegal error (FOR uninitialized values, TO avoid ERR_CERT_OK) */¡'"ERR_CERT_UNABLE_TO_GET_ISSUER_CERT¢'ERR_CERT_UNABLE_TO_GET_CRL£')ERR_CERT_UNABLE_TO_DECRYPT_CERT_SIGNATURE¤'(ERR_CERT_UNABLE_TO_DECRYPT_CRL_SIGNATURE¥'+ERR_CERT_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY¦'ERR_CERT_SIGNATURE_FAILURE§'ERR_CERT_CRL_SIGNATURE_FAILURE¨'ERR_CERT_NOT_YET_VALID©'ERR_CERT_HAS_EXPIREDª'ERR_CERT_CRL_NOT_YET_VALID«'ERR_CERT_CRL_HAS_EXPIRED¬''ERR_CERT_ERROR_IN_CERT_NOT_BEFORE_FIELD'&ERR_CERT_ERROR_IN_CERT_NOT_AFTER_FIELD®''ERR_CERT_ERROR_IN_CRL_LAST_UPDATE_FIELD¯''ERR_CERT_ERROR_IN_CRL_NEXT_UPDATE_FIELD°'ERR_CERT_OUT_OF_MEM±'$ERR_CERT_DEPTH_ZERO_SELF_SIGNED_CERT²'"ERR_CERT_SELF_SIGNED_CERT_IN_CHAIN³'*ERR_CERT_UNABLE_TO_GET_ISSUER_CERT_LOCALLY´'(ERR_CERT_UNABLE_TO_VERIFY_LEAF_SIGNATUREµ'ERR_CERT_CHAIN_TOO_LONG¶'ERR_CERT_REVOKED·'ERR_CERT_INVALID_CA¸'ERR_CERT_PATH_LENGTH_EXCEEDED¹'ERR_CERT_INVALID_PURPOSEº'ERR_CERT_UNTRUSTED»'ERR_CERT_REJECTED¼'7 These are 'informational' when looking for issuer cert½' ERR_CERT_SUBJECT_ISSUER_MISMATCH¾'ERR_CERT_AKID_SKID_MISMATCH¿'$ERR_CERT_AKID_ISSUER_SERIAL_MISMATCHÀ'ERR_CERT_KEYUSAGE_NO_CERTSIGNÁ'!ERR_CERT_UNABLE_TO_GET_CRL_ISSUERÂ'%ERR_CERT_UNHANDLED_CRITICAL_EXTENSIONÃ'ERR_CERT_KEYUSAGE_NO_CRL_SIGNÄ')ERR_CERT_UNHANDLED_CRITICAL_CRL_EXTENSIONÅ'ERR_CERT_INVALID_NON_CAÆ'#ERR_CERT_PROXY_PATH_LENGTH_EXCEEDEDÇ'&ERR_CERT_KEYUSAGE_NO_DIGITAL_SIGNATUREÈ''ERR_CERT_PROXY_CERTIFICATES_NOT_ALLOWEDÉ'ERR_CERT_INVALID_EXTENSIONÊ'!ERR_CERT_INVALID_POLICY_EXTENSIONË'ERR_CERT_NO_EXPLICIT_POLICYÌ'ERR_CERT_DIFFERENT_CRL_SCOPEÍ'&ERR_CERT_UNSUPPORTED_EXTENSION_FEATUREÎ'ERR_CERT_UNNESTED_RESOURCEÏ'ERR_CERT_PERMITTED_VIOLATIONÐ'ERR_CERT_EXCLUDED_VIOLATIONÑ'ERR_CERT_SUBTREE_MINMAXÒ'$ERR_CERT_UNSUPPORTED_CONSTRAINT_TYPEÓ'&ERR_CERT_UNSUPPORTED_CONSTRAINT_SYNTAXÔ' ERR_CERT_UNSUPPORTED_NAME_SYNTAXÕ'"ERR_CERT_CRL_PATH_VALIDATION_ERRORÖ' The application is not happy×'!ERR_CERT_APPLICATION_VERIFICATIONØ'ERR_CERT_MISSINGÙ'ERR_CERT_UNKNOWN_ERRORÚ'$adcc37d5-f407-4f11-9834-0c31bac94657Û'(cmperrors2 interfaces, 3.5.15.0 (system)Ü'
1784674971Ý'LogConstantsÞ'
STD_LOGGERß'LOG_STD_LOGGERà'Pointerá'RTS_INVALID_HANDLEâ'LOG_INVALID_HANDLEã'$4084b11d-b9ee-47b9-ad20-f9bc4eeb6bb6ä'
1666259597å'LogClassæ'LOG_NONEç'LOG_INFOè'LOG_WARNINGé'	LOG_ERRORê'
LOG_EXCEPTIONë'	LOG_DEBUGì'LOG_USER_NOTIFYí'LOG_ALLî'$4daa954b-f889-4b97-a05f-93d44b64f374ï'
3164948391ð'LT_HIGHSPEEDñ'LT_SAFEò'	LT_NORMALó'LT_TIMESTAMP_RTCô'LT_TIMESTAMP_MSõ'LT_TIMESTAMP_USö'LT_TIMESTAMP_NS÷'
LT_NO_DISABLEø'
LT_DUMP_ASYNCù'LT_DUMP_ALWAYSú'LT_DUMP_ON_CLOSEû'LT_DUMP_ON_REQUESTü'Orý'$0f010cee-3948-41fd-82ad-af5b1e2e8803þ'49000ÿ'	251212993(HandleConstants(suppress_warning_0(C0195($471467d5-89a4-4482-b970-b13eff79244e(
1192820603
(GlobalConstants(Common Defines($0c76e09e-5f6c-41d5-841a-2071be1c6304(	330479632(ComponentID(E ComponentID of the component manager, e.g. to specify for EventOpen (CMPID_CmpMgr(B ComponentID as a placeholder for all IEC components/applications (
CMPID_IecCode(CMPID_CmpFileTransfer($228db6b8-947d-4adb-8c50-8280abf93255('Typified, Compiled, ContainsNoParseTree(System.Byte(	Relocated(ToCheck(ATopLevel, Typified, NotForUpToDate, Compiled, ContainsNoParseTree(7Typified, Compiled, ContainsNoParseTree, ContainsNoCode(StaticFunctionCall(1TopLevel, Typified, Compiled, ContainsNoParseTree(^TopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, Generated, ToGenerate, NoCompile(OTopLevel, Typified, Compiled, ContainsNoParseTree, ContainsVirtualFunctionCalls(ETypified, Compiled, ContainsNoParseTree, ContainsVirtualFunctionCalls(VirtualFunctionCall(
InterfaceCall(2Typified, ToCompile, Compiled, ContainsNoParseTree(0(ITypified, ToCompile, Compiled, ContainsNoParseTree, Generated, ToGenerate (__DOWNLOAD__CODE¡(__ONLINE__CHANGE__CODE¢("__DATASEGMENTFLAGS__305__GVL__INIT£(GTopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, NoCompile¤(#__COMPILE_CONSTANTS__306__GVL__INIT¥(__WATCHVARS__307__GVL__INIT¦(1__ALLOCATEDIMPLICITREFERENCETYPES__308__GVL__INIT§(#CONSTANTS__309__SYSTEM____GVL__INIT¨(TYPE_CLASS__593__GVL__INIT©($_IMPLICIT_KINDOFTASK__667__GVL__INITª(/_IMPLICIT_TASK_CONFIG_VARIABLES__728__GVL__INIT«(/_IMPLICIT_TARGET_INFO_VARIABLES__137__GVL__INIT¬(!__APPLICATIONNAME__138__GVL__INIT(%__TASKSPECIFICINFOGVL__139__GVL__INIT®(__TYPECLASS__733__GVL__INIT¯(&__CONVERSION_CONSTANTS__738__GVL__INIT°(HTypified, ToCompile, Compiled, ContainsNoParseTree, Generated, Blob, New±('__LCONVERSION_CONSTANTS__819__GVL__INIT²( __SETUP__CALL__POU__1__GVL__INIT³(PRG_TEST__693__GVL__INIT´(DToCompile, Compiled, DataRelocations, ContainsNoParseTree, ConstBlobµ(GLOBAL__INIT¶(<TopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree·(
CODE__INIT¸(OTopLevel, Typified, ToCompile, Compiled, ContainsNoParseTree, IgnoreForChecksum¹(RemovedFromMemoryº(__RELOCATE__OFFSET_TABLE»(;ToCompile, Compiled, ContainsNoParseTree, IgnoreForChecksum¼($976ae257-c47e-4874-b5e9-5090fb4b8d5b½(65183¾(Retain, Area¿(Retain, Area, PersistentÀ(
Code, AreaÁ(MemoryÂ(InputÃ(OutputÄ(	AutomaticÅ(RetainÆ(Automatic, DynamicSizeÇ(Retain, PersistentÈ(CodeÉ(TargetÊ($edf4cce3-b173-4b30-82a5-6d52f08f30c0Ë($c7c42bb2-0000-0000-0000-000000000000Ì($fd066ce0-0000-0000-0000-000000000000Í(AddrSizeÎ(IsFPUSupportedÏ(generate_exceptioninfoÐ(PackModeÑ(IsLittleEndianÒ(RegisterSizeÓ(64Ô(PlatformÕ(CompilerVersionProxyÖ(	ByteOrder×(IntelØ( CAA_NETBASESERVICES_USE_ASYNCMGRÙ(IsMulticoreSupportedÚ(
IoStandardÛ(_3S_LICENSEÜ(BPLogÝ(IBaseLibraryÞ(	CmpErrorsß(Standardà(Component_Managerá(CmpCodeMeterâ(SysCpuHandlingã(sysmem, 3.5.12.0 (system)ä(SysMemå(SysTypes_Interfacesæ(util, 3.5.14.0 (system)ç(Utilè(IECStringUtilsé(.caa memory, 3.5.12.0 (caa technical workgroup)ê(MEMë(Ecommon behaviour model, 3.5.15.0 (3s - smart software solutions gmbh)ì(CBMLí(systimertc, 3.5.5.0 (system)î(
SysTimeRtcï(systimecore, 3.5.5.0 (system)ð(SysTimeCoreñ(systime, 3.5.9.0 (system)ò(SysTimeó(Stuô(System.Guidõ(System.Collections.Hashtableö(System.Collections.ArrayList÷(	0000 0004ø(3.5.15.0ù($6708bd14-cddc-4e28-b69d-d3183b7c423eú(
VariableIdû(SignatureIdü(ScopeIdý(PositionToSaveþ(MessagesToSaveÿ(&{bc2be951-49f6-4f0f-b731-e31e36606f1e})$c529d0d0-8cec-4d28-bb44-5e2d4ebecdcf)Flags)&{79aa0cce-71e9-4699-9f63-03cf09dcc367})$fd373d9e-533d-4d69-ad04-82ccf513ff10)$1cf06df3-a230-4b74-89c8-47fcfa9aa3a2
)Id)CrossReferencesNew)System.Collections.SortedList)Location)
Attributes)
Expression)DirectVariable)Inputs)Flag)&{1bfe400e-6f3f-4faa-a8db-db81cd2849ba})$8499b87a-2b75-4c62-8657-e4aa9316c18b)TypeDef)$e833a88e-e01b-4cc9-b0cb-fe17b4370a01)BaseType)$48397926-5c6f-41f7-b878-4ffb8fbbd3f0)Area)$1bef2131-34c3-45be-922f-9a02d282ff7b)Current)$2dacf8ba-27b3-43f2-b9f0-d578dd179b1d)
TaskIndexList)VFTable)QNEBaseSignature)QNEInterfacesArray)InterfaceIds)
CalleeSize)NameExp)Operator )&{bffb3c53-f105-4e85-aba2-e30df579d75f}¡)
VariableArray¢)&{1cf06df3-a230-4b74-89c8-47fcfa9aa3a2}£)
SubSignatures¤)&{9b5d4c11-b2d9-46c2-bf90-350eefa47fc5}¥)
Flags_long¦)ParentSignatureId§)
ObjectGuid¨)MessageGuid©)ParentObjectGuidª)LibraryPath«)DPOffset¬)DataLocation)	IdManager®)	TimeStamp¯)Checksum°)ChecksumNoInit±)	Declarers²)
Referencer³)CallersArray´)System.Int32µ)
CalleesArray2¶)HighestUsedOffset·)$af63b19d-1ce0-4d63-a098-6d4c02ca35da¸)$b5bdc032-52f5-48d3-9c8c-8c79ab5a416d¹)Baseº)	LongValue»)&{16f7aa24-038f-444e-9d81-b001bc091d35}¼)Negative½)OriginalTypeClass¾)$5677bd2d-c2f2-4498-a6d6-5e2aecdbd55d¿)DefaultValueÀ)$88513019-926a-4125-ab4f-260cf5e4c63eÁ)$4ed22196-62b5-483e-acc9-441fa02badbdÂ)RelocationAreaListÃ)$3504087f-d7cb-485e-a95e-35e81d5fc2b0Ä)
CodeBytesXÅ)flagsÆ)&{0148e1b6-6651-4ac0-91ad-da620acad399}Ç)RelocationListÈ)$b19c1570-9d63-448c-b1a8-77c564f4bf41É)	ParseTreeÊ)ParseTreeEmptyË)CompiledPOUFlagsÌ)&{ffb74c62-0dab-4b81-a769-562edfcba448}Í)CompiledCodeÎ)ScratchSizeÏ)MaxParamSizeÐ)BreakpointlistÑ)messagesÒ)CodeGeneratorStackSizeÓ)BitWriteAccessesÔ)
trycatchfpadrÕ)trycatchcodeadrÖ)InternalCompiledPOUFlags×)&{d84e773e-c159-42c6-8f67-07b0df2b44ab}Ø)	pmessagesÙ)$a166e73d-aefc-42a1-8868-6d7ea1412c73Ú)$08539ba4-dbb3-469d-9743-b026f95bb155Û)RelocationsÜ)$467ac7f9-d9fc-4e1d-9fb4-9e5dde0a44c2Ý)ReplaceConstantsÞ)Unicodeß)LoggingInBreakpointsà)$1cdc5830-00b6-4d16-ac84-61a1c00364e9á)$17b1421c-2984-4921-865a-ab1609aa9f92â)
MemManGapsã)BaseAddressä)$e0d57300-b431-4917-bfe4-fc6030a266eeå)Addressæ)
DPTableOffsetç)&{68cddacd-2830-4780-ae45-869af5892c4f}è)Memmané)SegmentSizeê)HTMemMansToFlagsë)	LogByFlagì)$e22c2694-f644-4661-a028-99897a56f19aí)StartAddressî)DataSegmentFlagsï)	AreaFlagsð)&{be5c129c-a197-417b-85f0-00907e2c063f}ñ)MinimalSizeò)AllocationPlusó)	Availableô)MaximalSizeõ)$a20044ae-acaa-44c9-83f9-750bbfb34c6aö)DataSegments÷)Areasø)	FirstAreaù)$a2ede959-e5fe-4f81-9037-a646588f9067ú)
GuidObjectû)GuidTaskü)TaskNameý)ParentTaskNameþ)$b60bf7c1-48fb-428f-888b-da4337fb7f3cÿ)
TaskListArray*&{a2ede959-e5fe-4f81-9037-a646588f9067}*$df911092-020b-4e0a-bf63-b9df8a0ee0a7*libid*name*referencinglib
*	outofpool*id*QO*$d22ac189-3d1c-422d-b11c-0ca8bf22a579*libinfosave*&{df911092-020b-4e0a-bf63-b9df8a0ee0a7}*$e6a670d4-8bad-4716-a29b-770da7f0eef7*TaskList*TaskGuidsOfObject*
DownloadSlots*OnlineChangeSlots*$99fa1ec1-fc21-4c93-9f1e-0accb45e8a84*table_1*$3966d598-3646-49d7-a64c-1b0623a3daed*List*$d774556f-de05-4539-a455-16fd4345bbf5*type*version*$32583999-e3b5-4fb3-8394-6c5409f3c8a7*SignaturesArray*&{2dacf8ba-27b3-43f2-b9f0-d578dd179b1d}*GlobalSignaturesArray*CompiledPOUsArray*&{b19c1570-9d63-448c-b1a8-77c564f4bf41}*CompileOptionsToSave*CodegeneratorClass*ImplicitReferenceVariableList *ProjectChecksum¡*staticmemorysegments¢*Memchecksum£*DataManager¤*
KindOfContext¥*&{1d8fe3d0-8423-48cf-8a9b-eaa134990850}¦*SignatureIDMan§*LibraryIDMan¨*ReadyForDownload©*ReadyForCompileª*SystemApplication«*
DynamicMemory¬*GenerateContent*DeviceApplication®*ApplicationGuid¯*TimeStampContext°*
TimeStampPool±*ContainsOnlineChangeCode²*
GuidCodeId³*
GuidDataId´*GuidCodeIdLastµ*GuidDataIdLast¶*CRCCode·*CRCData¸*CRCCodeLast¹*CRCDataLastº*Defines»*PrecompileDefines¼*bFastOnlineChange½*libtable¾*LPTChecksum¿*LibChecksumÀ*PoolLibChecksumÁ*SlotPOUListÂ*DirVarTableÃ*WithoutTargetsettingsÄ*	auxiliaryÅ*simulationmodeÆ*
bcontainscodeÇ*deviceidÈ*$34951a1b-8cb0-4c0a-8fa0-271c0a67fbd7É*$4c33f62d-2ba9-4951-b27c-3cedc666c650Ê*$d383106b-f62a-4320-9b73-1ad1cdb4256bË*$223d196a-c1d7-4283-aea6-270599207584Ì*$2de3951e-05c3-42d9-a8c2-0f9e6cd2c60eÍ*$2c47afd5-45a7-4318-a91c-e6ccae571e57Î*$3b41731c-8281-447e-8300-967d85065431Ï*$ab09737e-b891-4fc6-9c8c-246eb8cdb046Ð*SizeExpressionÑ*$bad068f5-d75d-4104-a3db-b92ab7fd8e73Ò*$4843ac80-bf56-4163-a5d4-aef6b1846075Ó*$d4b6feaa-e9d6-4356-aaf6-400ae9d83e05Ô*LowerÕ*UpperÖ*$1cdc270d-d608-42d9-b269-87457e40fd7d×*&{73ce5f25-d76d-4bc9-a6d5-0f1336fc56e3}Ø*$1a5bd4e4-ab1d-4514-adeb-22e2eeddcce6Ù*$306eb234-9ade-475b-8492-004f59e739d9Ú*$ef19db71-9ad6-4d2a-9535-1a0f103c369dÛ*$8db06532-d746-4cb4-83d6-15216b159eedÜ*$ac2d6c97-8b55-498b-83df-2059efb47336Ý*$d3df9a8e-760e-4747-9783-699d53cec752Þ*$859036ba-e550-4f5c-9b70-16ca9202d0ceß*$4b4ec020-a837-40a5-a308-89707ef17af6à*OrgTypeá*$861aad71-b796-49c8-8e44-0d476c5ed1abâ*$8805e1b7-ec8d-4bf0-9194-dcb2b29ff03fã*$0ba7ff45-cf9b-419a-84c8-ae1727e3961fä*compiledtypeå*Leftæ*Rightç*$c8e3c9b1-32ff-4f6a-ac31-84a9afd1157fè*Operandsé*
ScratchOffsetê*$8ec925c2-9c5b-4d91-b581-8ec7c2f47ca9ë*$2725bf0b-b380-4604-92d5-60505864ba35ì*
dicInterfacesí*
dicOffsetsî*pointersizeï*$b297bf25-acd4-4b2f-bc57-473cb93f7d4cð*$1315f3d2-84a9-4bcd-a718-efa3d0501534ñ*InitListNewò*DefInitDoneó*$187803f1-6b2c-486c-bcf0-b6f913f59ce3ô*StringValueõ*$5b2d1cb9-99ea-435b-a739-5533bb136a6aö*cpp÷*offsetø*ipoffsetù*&{182b8553-40b6-4da1-b365-72d137f05911}ú*$71c4e10e-3e38-473f-b4b9-db1c89cbe452û*$00014fd3-8bc4-4e77-981b-095b9c869fc2ü*$80dc2303-8251-4747-b7f7-a402ed859801ý*$6c1d7ed1-429a-4b0d-84d7-fc2a63a0c431þ*$cf26b7be-0f44-4dda-af18-2657035f6b45ÿ*$944d7731-22cd-4544-8e6a-e23be2ec4010+$aef7a177-3956-4c97-8460-6228ab3f3401+$62f14e25-8c68-4d8c-98ca-3067a13656f7+$458880e1-4ccc-4f34-af1a-7cd7fe7c8193+LValue+RValue
+$30cfa52e-e32a-43c4-a033-2a152796aeaf+$79a8baad-3f7f-40d2-8250-3037bf5e6631+Variable+Accesses+$528c9030-405d-451c-b45a-9aa6b0520783+From+To+$9acb4711-ae23-42e3-a6bc-58b75ab4215e+ExceptionHandlingSuccessor+Len+
CodeOffset+
Successors+StepIns+AssSucc+AreaGPRegister+OffsetGPRegister+$9e894478-12b9-4f7b-ae88-4807ccb19a10+First+$762f79d8-237e-4aec-8576-b032ad1bb941+SignId+&{fcb43bca-9283-4080-8c7a-085c4f21024c}+	StepOutBp+StepInBp+&{762f79d8-237e-4aec-8576-b032ad1bb941}+$2f0e740d-b75f-401a-a7f2-ecd76eb6ee2d+	CocoFlags+	reloclist +
related_id¡+$40c3211d-4a89-419c-88a4-b26d33c2707e¢+arealist£+$35e108dd-922c-4765-9f66-6c7ed83f4af7¤+MotorolaByteOrder»ù(³ Ý
ú(û(ü(ý(
þ(ÿ(ä)Þ))))ý(
))
))) ) ) ) ä³))))û(ü(ù(³Ý
ú(û(ü(ý(
þ(ÿ(ä))))
Þ	))
) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)) ) ) û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)·)
¸)³ý(
þ(ÿ(¹)º)
¤»)¼)½)»)¾)û(ä)¿) )ý(
))
)))B)) ) ä³)))ý(
))
))) )) ) ä³))) ) ) û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²) ³) µ) ¶)À)³ý(
þ(ÿ(º)
¤»)¼)½)»)) ) ) û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)Á)Â)@Ã)Ä)@Å)Æ)¬)Ç)È)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í)Î)®)
¯)	ª) Ï)Ð) Ñ)ÿ(Ò)Ó) Ô) Õ) Ö)×)Ø) Ù)ÞÚ))Û)@È)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í) Î)®)
¯)	ª)Ï)Ð) Ñ)ÿ(Ò)Ó) Ô) Õ) Ö)×)Ø) Ü)Ý)¹´)Þ)ß)à)Þ¨
á)â)@¨
ã)ä)	)
å)æ)¨
)ç)è)é)ê) ë)ì)
í)¨
¤î)ç)ï)ð)ñ)ò)¯)	ó)ô)õ)ö)@÷)@ø) ù)ú)ô(û)ô(ü)ý) !þ)ÿ)*"****
***#***$**
õ(*
õ(*
õ(*
õ(%**B&**ö('****(*.********ô(*@ *	¡*@¢*	£*¤*¥**¦*§*¨*©*ª*«*¬**®*ô(¯*
°*
±*²*ô(³*ô(´*ô(µ*ô(¶*	·*	¸*	¹*	º*õ(»*
õ(¼*½*¾*	¿*	À*	Á*Â*Ã*Ä*Å*Æ*Ç*)È**É*+) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ) ¶),) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ) ¶)-Ê*.Ë*/Ì*0Í*1) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ) ¶)2Î*3Ï*Ð*4Ñ*5)ý(
))
)))B) ) ) ä³))6Ò*7Ó*Ô*Õ*8Ö*@)9) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ)@¶):) ) ) û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²)B³) µ) ¶);Ø*<Ù*=Ú*>Û*?Ü*@Ý*AÞ*B) ) ) û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)Cß*à*¿) )û(ü(D) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³) µ) ¶)EÏ*Ð* Fá*)G) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³) µ) ¶)H) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³) µ)@¶)I) ) ) û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²)B³) µ) ¶)J) ) ) û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³)´)µ) ¶)K) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)L) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ) ¶)Mâ*N) ) ) û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)O) ) ) û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)P) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)Q) ) ) û()) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²)B³) µ) ¶)R) ) ) û()) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²)B³) µ)@¶)S) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ) ¶)T) )() û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)U) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)Vã*³ý(
þ(ÿ(ä*å*æ*Wç*³ý(
þ(ÿ(ä*è*@é*) )Xê*ä
)Yë**@)ì*
õ(í*
õ(î*Zï*[ð*³ý(
þ(ÿ(ä*ñ*@ò*\) ) )û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ)@¶)]À)³ ý(
þ(ÿ(º)
¤»)¼)½)»)^ó*³ý(
þ(ÿ(¤»)ô*½)»)_) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³) µ)@¶)`) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)aã*³ ý(
þ(ÿ(ä* å*æ*b)ý(
))
)) ) ) ) ) ä³))c) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)d) ) ) û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)eõ*
)äö*÷*ø*fë**A) ì*
õ(í*
õ(î*g) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³)´)µ) ¶)h) ) )û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)ië**A)ì*
õ(í*
õ(î*j) ) )û() )ù*)´))B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)k) ) )û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)l) ) )û() )ù*)´))B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ)@¶)mç*³ý(
þ(ÿ(ä*è*Aé*) )n) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)o) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²) ³) µ) ¶)pú*qû*Ð* rü*sý*tþ*u) )() û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)v) )() û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)w) )()û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³)´)µ) ¶)x) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ)@¶)y) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)z) )()û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶){) )()û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ)@¶)|ÿ*³ý(
þ(ÿ(¹)}) )() û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³) µ)@¶)~) )() û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³) µ)@¶)) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³)´)µ) ¶)) )()û() )ù*)´))B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)) )() û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³) µ) ¶))ý(
))
)))C) ) ) ä³))) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³) µ)@¶)
) )()û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³)´)µ)@¶)) )()û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³)´)µ) ¶)) )()û() ) ) )C¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³)´)µ) ¶)) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)) ) )û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)) )()û()) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ)@¶)) )() û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ)@¶)) )()û() ) ) )B¨
))) )¡)¢)£)×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²)B³)´)µ) ¶)) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ) ¶)+³ý(
þ(ÿ(ä*)) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³)´)µ) ¶)) )() û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ) ¶)+)û*Ð*) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬))®)
¯)	°)	±) ²) ³)´)µ) ¶)) ) ) û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²)B³) µ)@¶))ý(
))
)) )B) ) ) ä³))+³ý(
þ(ÿ(++) )
+³ý(
þ(ÿ(ä*ñ*@ò*) ) ) û() ) ) )B¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±)
õ(²)B³) µ) ¶)) ) ) û() ) ) ) ¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ)@¶)) ) ) û() ) ) ) ¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ) ¶)) ) ) û() ) ) ) ¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ) ¶)) ) ) û() ) ) ) ¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)) ) ) û() ) ) ) ¨
))) )¡)¢)£)
×*)¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²) ³) µ) ¶) ) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬))®)
¯)	°)	±) ²) ³) µ)@¶)¡) ) ) û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±)
õ(²) ³) µ) ¶)¢ð*³ý(
þ(ÿ(ä*ñ*Aò*£) ) ) û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²) ³) µ)@¶)¤+³ý(
þ(ÿ(ä*++@¥) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²) ³) µ)@¶)¦) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)§) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)¨) ) ) û() ) ) )C¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª) «)¬) )®)
¯)	°)	±) ²) ³) µ) ¶)©) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³) µ)@¶)ª+³ý(
þ(ÿ(+»)+»))«) ) ) û() ) ) )B¨
))) )¡)¢)£) )¤)¥)
)¦)§)ô(¨)ô(©)ô(ª)«)¬) )®)
¯)	°)	±) ²) ³) µ)@¶)¬+	ý(
++++ + +´)+++	ý(
++++´)+ +´)++®+*A+¯È)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í)Î)®)
¯)	ª)Ï)Ð)Ñ)ÿ(Ò)Ó) Ô) Õ) Ö)×)Ø) °++)+++±+	ý(
++++´)+++´)++²È)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í)Î)®)
¯)	ª)Ï)Ð) Ñ)ÿ(Ò)Ó) Ô) Õ) Ö)×)Ø) ³+*@+´È)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í)Î)®)
¯)	ª) Ï)Ð)Ñ)ÿ(Ò)Ó) Ô) Õ) Ö)×)Ø) µÈ)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í)Î)®)
¯)	ª) Ï)Ð)Ñ) Ò)Ó) Ô) Õ) Ö)×)Ø) ¶È)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í)Î)®)
¯)	ª)Ï)Ð)Ñ) Ò)Ó) Ô) Õ) Ö)×)Ø) ·È)äÈ( É) Ê)§)ô(¨)ô(©)ô(û(Ë)Ì)Í)Î)®)
¯)	ª) Ï)Ð) Ñ) Ò)Ó) Ô) Õ) Ö)×)Ø) ¸+Ä)@+Æ)¬)+  +¹¡+¢+@º+Ä)@+Æ)¬)+ +»£+Ä)@¤++Æ)¬)(ú
  ÿÿÿÿ              ÿÿÿÿÿÿÿÿÿÿÿÿ      T         T                           y                            ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  	  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ         	  ÿÿÿÿ  
      ¦                           ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ  1   ÿÿÿÿ  ÿÿÿÿ1   ÿÿÿÿ      Ã   1   ÿÿÿÿ  
 
  T       ÿÿÿÿ ÿÿÿ  07 	    þXÞKרª¨ª     	   µ 1  µ µ         ÿÿÿÿ               ÿÿÿÿÿÿÿÿÿÿÿÿ            
  T       ÿÿÿÿ ÿÿÿ  87 	    àYÞK×ðOfîðOfî  i  	Ò Ò  Ø Ø     +  ÿÿÿÿ            ÿÿÿÿÿÿÿÿÿÿÿÿ                              )       I               * 
      W              ) 
  V      ÿÿÿÿ ÿÿÿ  @7 	   Ñ~KR×Î
~ÍNÉÐ  7       ,  ÿÿÿÿ            ÿÿÿÿÿÿÿÿÿÿÿÿ                              *       H               ) 
      W              ) 
  V      ÿÿÿÿ ÿÿÿ  H7 	   Ñ~KR×dÂÌ;½{&