Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
PyQt5-Qt5 / Qt5 / qml / QtQuick3D / Materials / libqtquick3dmaterialplugin.so
Size: Mime:
ELF>0!@ØG@8@,,   ! !ˆÀ °°!°!ððÈÈÈ$$Påtd”””ôôQåtdRåtd  ! !``GNUo«ärªõ¼•¼ã‹b†ý~ç­ÈBŠÀ04@	BEGlÐ⍺ã’|CEÕìØqX¹ñêÓï-•‚¨	ØÅ?u]EâÐ9?Â[¹‘0ëÊ«!ù”g„¿™h8 ÈQ;äŽ 9pR"!—ù .
¾a KF(	©·`	Ð>àu뎐b°"”
`!!
(!!ˆ
(!!	Ø,{À"__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClassesqt_version_tag_ZNK11QObjectData17dynamicMetaObjectEv_ZN19QQmlExtensionPluginD2Ev_ZdlPvm_ZN22QQuick3DCustomMaterialC2EP14QQuick3DObject_ZN11QQmlPrivate30qdeclarativeelement_destructorEP7QObject_ZN22QQuick3DCustomMaterialD2Ev_ZdlPvqt_plugin_query_metadataqt_plugin_instance_Znwm_ZN19QQmlExtensionPluginC2EP7QObject_ZN15QtSharedPointer20ExternalRefCountData9getAndRefEPK7QObject__cxa_guard_acquire__cxa_guard_release__cxa_atexit_ZN22QQuick3DCustomMaterial16staticMetaObjectE_ZN9QMetaType22registerNormalizedTypeERK10QByteArrayPFvPvEPFS3_S3_PKvEi6QFlagsINS_8TypeFlagEEPK11QMetaObject_ZN9QMetaType25registerNormalizedTypedefERK10QByteArrayi_ZNK11QMetaObject9classNameEv_ZN10QArrayData11shared_nullEstrlen_ZN10QByteArray11reallocDataEj6QFlagsIN10QArrayData16AllocationOptionEE_ZN10QByteArray6appendEPKc_ZN10QByteArray6appendEc_ZN10QArrayData10deallocateEPS_mmmemcpy_ZN10QByteArrayC1EPKci_ZN11QQmlPrivate11qmlregisterENS_16RegistrationTypeEPvfreemalloc_Z17qmlRegisterModulePKciistrcmp_ZN19QQmlExtensionPlugin11qt_metacastEPKc_ZN19QQmlExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv_ZTVN10__cxxabiv120__si_class_type_infoE_ZTI19QQmlExtensionPlugin_ZTI22QQuick3DCustomMaterial_ZN7QObject5eventEP6QEvent_ZN7QObject11eventFilterEPS_P6QEvent_ZN7QObject10timerEventEP11QTimerEvent_ZN7QObject10childEventEP11QChildEvent_ZN7QObject11customEventEP6QEvent_ZN7QObject13connectNotifyERK11QMetaMethod_ZN7QObject16disconnectNotifyERK11QMetaMethod_ZN19QQmlExtensionPlugin16initializeEngineEP10QQmlEnginePKc_ZThn16_N19QQmlExtensionPlugin16initializeEngineEP10QQmlEnginePKc_ZNK22QQuick3DCustomMaterial10metaObjectEv_ZN22QQuick3DCustomMaterial11qt_metacastEPKc_ZN22QQuick3DCustomMaterial11qt_metacallEN11QMetaObject4CallEiPPv_ZN22QQuick3DCustomMaterial17updateSpatialNodeEP21QSSGRenderGraphObject_ZN22QQuick3DCustomMaterial12markAllDirtyEv_ZN16QQuick3DMaterial10itemChangeEN14QQuick3DObject10ItemChangeERKNS0_14ItemChangeDataE_ZN14QQuick3DObject10classBeginEv_ZN14QQuick3DObject17componentCompleteEv_ZThn16_N14QQuick3DObject10classBeginEv_ZThn16_N14QQuick3DObject17componentCompleteEv_ZN19QQmlExtensionPlugin16staticMetaObjectEqt_resourceFeatureZlib_Z23qUnregisterResourceDataiPKhS0_S0__Z21qRegisterResourceDataiPKhS0_S0_libQt5Quick3D.so.5libQt5Quick3DRuntimeRender.so.5libQt5Quick3DAssetImport.so.5libQt5Quick3DRender.so.5libQt5Quick3DUtils.so.5libQt5Quick.so.5libQt5Gui.so.5libQt5QmlModels.so.5libQt5Qml.so.5libQt5Network.so.5libQt5Core.so.5libGL.so.1libpthread.so.0libstdc++.so.6libm.so.6libgcc_s.so.1libc.so.6_edata__bss_start_end$ORIGIN/../../../libCXXABI_1.3GLIBCXX_3.4GLIBC_2.14GLIBC_2.2.5Qt_5Qt_5.15Qt_5_PRIVATE_API	


P
0ӯk
®
t)’¹
w
0”‘–	Å
ui	Ð

 %ŠÜ
%
0%ŠÜ
¢á
L	%ŠÜ
ÉÒË
é
 !P"¨!0!°!"À!À!Ð!P,è!€,!È!!"!à#!0$ !€$(!°$h!@+€!È!ˆ! $!à$˜!p+°!à!Ð! %Ø!`%H!à!P!P%X!%ˆ!-!À,˜!€"È!;à!;Ø!ð!-0!à!8!4è!4@!(ð!(H!+ø!+P!2!2X!=!=`!!p! !>¸!8À!È!!! !(!0!"8!`!h!A€! !¨!°!&¸!)À!*È!.Ð!/Ø!3à!? !  !( !	0 !
8 !@ !
H !P !X !` !h !p !x !€ !ˆ ! !˜ !  ! ¨ !#° !$¸ !%À !'È !)Ð !,Ø !.à !0è !1ð !5ø !6!!7!!9!!:!!< !!@HƒìH‹å!H…Àtè£HƒÄÃÿ5!ÿ%!@ÿ%!héàÿÿÿÿ%ú!héÐÿÿÿÿ%ò!héÀÿÿÿÿ%ê!hé°ÿÿÿÿ%â!hé ÿÿÿÿ%Ú!héÿÿÿÿ%Ò!hé€ÿÿÿÿ%Ê!hépÿÿÿÿ%Â!hé`ÿÿÿÿ%º!h	éPÿÿÿÿ%²!h
é@ÿÿÿÿ%ª!hé0ÿÿÿÿ%¢!hé ÿÿÿÿ%š!h
éÿÿÿÿ%’!héÿÿÿÿ%Š!héðþÿÿÿ%‚!héàþÿÿÿ%z!héÐþÿÿÿ%r!héÀþÿÿÿ%j!hé°þÿÿÿ%b!hé þÿÿÿ%Z!héþÿÿÿ%R!hé€þÿÿÿ%J!hépþÿÿÿ%B!hé`þÿÿÿ%:!héPþÿÿÿ%2!hé@þÿÿÿ%*!hé0þÿÿÿ%"!hé þÿÿÿ%!héþÿÿÿ%!héþÿÿÿ%
!héðýÿÿÿ%!h éàýÿÿÿ%úÿ h!éÐýÿÿH	H5H
ûHƒì¿è}ÿÿÿHfù H5ûÿ H=
HƒÄéoþÿÿf.„DH=¡ÿ H¡ÿ UH)øH‰åHƒøvH‹þ H…Àt	]ÿàfD]Ãfffff.„H=aÿ H5Zÿ UH)þH‰åHÁþH‰ðHÁè?HÆHÑþtH‹¹ý H…Àt]ÿàf„]Ãfffff.„€=ÿ u'Hƒ=—ý UH‰åtH=’ø è=þÿÿèHÿÿÿ]Æðþ óÃfffff.„H=aø Hƒ?ué^ÿÿÿfDH‹iý H…ÀtéUH‰åÿÐ]é@ÿÿÿóÃ@f.„H‹Hƒ(tépýÿÿHÙù ÄHièÄ€=‰þ S„ªH‹kþ H…Àt6‹P…Òt/Hƒ=_þ t%H…À„Ü‹@…À„ÑH‹Bþ [Ä¿è6ýÿÿ1öH‰ÇH‰ÃèÉüÿÿHÚ÷ H‰ßH‰HMø H‰Cè<üÿÿH‹=õý H‰öý H‰çý H…ÿtðƒ/uèüÿÿH‹Ðý évÿÿÿH=Ñý èüüÿÿ…À„BÿÿÿH=½ý HÇ¢ý HÇŸý èýÿÿH÷ H5„ý H=}èüÿÿéÿÿÿ1À[Ãff.„H…ötCUSH‰óH5'	H‰ýH‰ßHƒìèðüÿÿ‰ÂH‰è…ÒuHƒÄ[]ÃHƒÄH‰ÞH‰ï[]éßûÿÿ€1ÀÐ@é[ûÿÿf.„óÃf.„@H…ÿH‰øtH…ötH‹H‰óÃf.„óÃf.„@Hö H‰H÷ö H‰Gé6ûÿÿfDHƒïëÚf.„HQö SH‰ûH‰HÃö H‰GèûÿÿH‰߾[éDûÿÿ@HƒïëÊf.„H…ÿt!S1öH‰ûè0úÿÿH±ö H‰H?÷ H‰C[óÄH‘ö SH‰ûH‰H÷ H‰GèbúÿÿH‰ß[ééúÿÿf„HƒïëÊf.„HQö SH‰ûH‰HÛö H‰Gè"úÿÿH‰ßèªúÿÿH‰ß[éáùÿÿHƒïëÊf.„H…öH‰øtHH…ÿ„ƒH‹H‰H‹VH‰WH‹VH‰WH‹VH‰WH‹V H‰W H‹V(H‰W(H‹V0H‰W0H‹V8H‰W8ÃH…ÿt?HÇHÇGHÇGHÇGHÇG HÇG(HÇG0HÇG8óÃf.„H‹H…Àtðƒ(uH‹?H…ÿt
éùÿÿDóÃfDóÃfDAUATUS‰ÕH‰ûHƒìH…öt<ƒýL‹
Bù H»ýÿÿÀH5¢ýÿÿH‰ß09D€è\øÿÿHƒÄ[]A\A]Ћ5’ú …ötƒþÿtµH‰ßèéøÿÿHƒÄ[]A\A]ÃfDH‹=áø èLøÿÿL‹-Åø H‰ÇI‰ÄL‰,$èFøÿÿA‹MPƒù†‡A9UH‰çACUI‰årºèŠùÿÿL‰æL‰ïèßùÿÿ¾*H‰Çè’ùÿÿºL‰ïHÇÆÿÿÿÿèÿÿÿ‰ðù H‹<$A‰ċ…Òtƒúÿtðƒ/tD‰æéBÿÿÿH‹<$@º¾èÁ÷ÿÿëßA‹MƒÀáÿÿÿ9ȇdÿÿÿA€M€I‰åésÿÿÿf.„AWAVI‰ÿAUATUSHìHH‹=å÷ ‰t$‰T$H‰L$èC÷ÿÿH‰ÇH‰ÃèH÷ÿÿhI‰Ńý0‰l$4ýHl$0ÇD$00H}H‰|$8McõH‰ÞEeL‰òèý÷ÿÿH‹D$8Aƒü@BÆ0*AEH‹T$8H˜ÆD‰d$tLd$pÇD$p@ID$H‰D$xH¹QQmlListH‰ÞL‰òH‰H¹PropertyÆ@<H‰HL‹D$xH\$ IxL‰D$è÷ÿÿL‹D$AEAƒÅMcí¹ºÿÿÿÿH˜AÆ>H‹D$xBÆ(L¬$À1ÀH‹t$8L‰ïóH«HêûÿÿH‰ßDŽ$̀H‰„$ÐH‹­ö H‰„$øè€öÿÿ1öH‰ߺè1ýÿÿH‹|$ ‰„$ċ…À„Kƒøÿt
ðƒ/„-H‹t$xºÿÿÿÿH‰ßè:öÿÿH#üÿÿH5ìúÿÿE1ÉH‰ßA¸¹@èvõÿÿH‹|$ ‰„$ȋ…À„0ƒøÿt
ðƒ/„H‹úõ 1ÿL‰îL‰¼$àHDŽ$HDŽ$DŽ$H‰„$؋D$DŽ$ÿÿÿÿDŽ$ÿÿÿÿ‰„$è‹D$‰„$ìH‹D$H‰„$ðèdöÿÿH‹¼$؉Ë…Àttƒøÿtðƒ/t]H‹|$xIƒÄL9çtèöõÿÿH‹|$8HƒÅH9ïtèãõÿÿHÄH‰Ø[]A\A]A^A_ÃH‹|$ f.„º¾è±ôÿÿé°þÿÿH‹¼$Ø@º¾è‘ôÿÿë†H‹|$ f.„º¾èqôÿÿéËþÿÿ@IcüèöÿÿD‰d$pH‰D$xLd$pénýÿÿ@Hcýèðõÿÿ‰l$0H‰D$8H‰ÇHl$0éûüÿÿf.„SH
øH‰óH‰ߺ¾èsüÿÿH‰ߺ¾[é°óÿÿHƒïëÊf.„H‹Yô H
²H«H5¤¶8ƒÇéYõÿÿf„H
‰H‚H5{Hƒì¿èýôÿÿ¸HƒÄÃHƒìH‹õó H
NHGH5@¶8ƒÇèõôÿÿ¸HƒÄÃHƒìHƒÄÃCustomMaterial23QtQuick3DMaterialPluginN11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialEEÿÿÿÿQtQuick3DMaterialPluginDÌui/ Ä€ui/ $g›ui/ ¨»ui/ ui/ J}dui/ f6>ui/ „†Xui/ î'Êui/ ÊÐui/ &.èui/ ¸Žwui/  @sui/ ö–Ñui/ xµui/ ¤ui/ ØG¸ui/ ô\
ui/ jui/ >žÊui/ 	ç¬sshaders½÷aluminumEmissive.frag²à7paperOffice.fragZ¿WsteelMilledConcentric.frag
¼Ywaluminum.fragó|·paperArtistic.frag•wplasticStructuredRed.fragb$÷aluminumAnodizedEmissive.frag>vfrostedThinGlassBlurY.frag	/
7frostedThinGlassNoop.frag€·copper.frag—wfrostedThinGlass.frag)œwsimpleGlass.fragvfrostedThinGlassBlurX.frag{Â7frostedThinGlassSp.frag	,	WfrostedThinGlassPreBlur.frag!	Ÿ‹·plasticStructuredRedEmissive.frag˜™—simpleGlassRefractive.frag
݋·aluminumAnodized.fragAWporcelain.fragWh·aluminumBrushed.fragÈÐxœÕےÚ6ô¯P“<˜-½½4;™Î²”)a7IúÆ[Mdˑä%´Óï9’ï˜4ɭìØGGç~“'_ðӱÿd$“½⛭!ިKÎOÏ.Éüíôfz
+*‘Š.ã~+æ/d¹e䵁•(¡ñžÌLaƆúæÙ“èƒÁn·ë0}.‚û,Ö<Þ2þË-×$䂸M¨2D†Hóâ†,LpÙÏŸ½^®†ãÉt¾šMGãùbübr?{æØES>§‚Ì,yFÞhºa¸–˜&[)àK©àñË=ÀÌIHݓö›RªÉPߗ* ±ÏȎ›-¬³*‰l?¡ÅXÄbC%y©,dhvT1"UPa˜Š|Lì{'•	àDXAyä2qÈNqcX\á¸ffDz—)¡qÐðMŸÜJE
ë;º–TŒƈŽ~ÖLÕâ5‹ý¼DsÔÂTˆ
©ð8”*²±’ُ9¡}Cp…PÓB6ÃxžêÜɓù2a1S`Ôût
òºôºn¸ÒUè¼5CþI〩Š!¨ðè[6í,™ҨÁ8ˆx 2ØR™ Z]‚.(Ëñ¬ùô40\ï-ƒßoÆä\‚¦¿• …Ëë"Ê0(D;r×[»iá~»·ˆ“’‚õ0cT¡û Z۪¥CÒáÂùÂi`cÅ"%ÔO7¸Ë!³VŸÜFAiÅ9Û9rR¹̦K$ yªXnÄcTìCʕ
H
A,RŸD¬Q
6qڗj3Èm2Ø$âùEÿ´¿5‘¨¦üx~“'ü3þrŸA§3 ]‘€…cºóÔ=HÆrEE²¥ä´„€h$gu°H#Ûü=¯/Dô#€ÃEÞ)š¬|A£¤BÛ'›
i¸RR± _.lhѼÐT˜
1ðHU…škµYWhhŸB5Q@<̯RÉWŒ¢±ŽxU®Ʀå¼Sà¼^,&àÂëál¼zó��ºòîîav³º¿[L—ӻù¤åøåõ±Åát~÷ðêz˝§Y'à%Ã>ނ«0 ‡íýÐBðõëyÍÑ[Š•B¦&IM~ »ýK¦‘R]1¢J}ƒIŠƒ@…ùˆà•/¡|C¶ÂäéüÕ!Hì‚$Rۺy•7 Ñ*=€<^uþ–9iA÷ÖÂ|›ӻ$kÐä*±(ø¹j逾«“É%T~âR0Ãcƒ[C!!¦0T³} ²a¶µu!PÝ  ;G”%&Jή>µz~Õqlàù"áå$°šÀó¼!wK(Ù EUù\͊w‹ë»QªŒ^aU†>\z·ÄҐb‚Ípn9¾|¯äš_¾VŒ¶­ù޶ˆÖmi³V¹°Ó(Y:‹µ¡؄Â"<*¬ن¦¤±¾Y"º°ŸŠv’Ž[Ip
ÞiCÜ1´fhöcòBvý!¥í+ šŸb}éfi¤۰ŒiCúž."^ÑäÖ8~äJƘáG°"î+RŸ™áâæ¶
#ÙîõDH­÷Ç04Ç@hÃ鬥%Yîäg>¯k3Ì%›GB* 3v!³:›u08B­a· µÉCwq­a¢iìE|œõO{ÅW—œd`÷íA§68ՙý‰G˜¥#cÈ@(^¨øÉc“U½ŒÆÒÍg=û€²	¨u9~¹|§ýSûéµ<•?ë¬X;|"]ÄÃ2”áŸW©žÕi]«´àÆK½ÏvûX;OZ­Qýþ‡2q]2†Ðø~T“"Oû‡_.g¤;¯9ck’mÎû®“Å8«Š^ñ.°|ÝpUBpʭ2”0„CºHÖ(‡œ5Ç,Q§w½Då-œ^਀9û”‡µ‰d4±uòÛr:Ÿ@>ÛîÕǾM~~Yot./­õz•/0! ßk¿Û6׫›—¡çs@¯b‰Â
kªawο›caû/ƒC`Øêl“¥[З–Ñ4ø˜›÷²Õè—u¾¯9뢜rpÅÿÐT½“J÷R÷*Ö.-úo´]égÇû ~$ªÚÎnuÿp7«P\X«íÙb™c±óëŠìÜ{ԵUIΫtò!œ°?§‘gM ­°!‰ÿ}]ûOžør{Ž ¾Wùª}‡ìÿ‚ZµeêW0šÓ8³Älë¬ý«Ý÷‚ç³b·®b¸pôpz¥Nÿ
zås0¾ϭSšüë§:o
Ïå(hßh$ÓØôjI¶˅Në,µÌøœéLøØaï%i='z¶ `Ÿ]X€R<çqU8Gßï°`¸ÀëÎbv-»j3»ÊϠÍy½\ˆnd.¨¯jԠ䋠ûzNmÎÍîâÆêh/TšJº–Ч¦–åJ«šõåIÏzIï*ÑZfïeü¶ؾ³—Ú+»¡»íí–Wm¾»$îÕ.F<gï^V¼"f¨p'owTï«ͺW-t½J…ìåܮŠ’³a]ªò˜hÎüO'ð[ÈVº°¸êÄˆ/ðŽ×RÖõ"œ•ÕêzP?3ŒY*³•®‚pž½|ôʢs Ö^޷2p·YŽþ!ßã2ÌxœÕXëo¹ÿ®¿bzɇUªè»-#(ü]¡¶ìXJrí!¨]J"Ž»Üãr-ëýß;Cî[«Ø’\+Ò.9œÇorðê+~:öç*Þi±Þðλðf8:†éÇÉÅägt¬43BEýVʿÂ|Ãá½Y0fÑ®MQF†ùæ-lŒ‰“·ƒÁv»íÿbúB
¤ðy”ˆh=ÈäÏ7"•ð?fڀZϣ˜™4ªŸ¾|?_œ¯&ÓÅõä|<ß^Ý]¿tâk_0	ז=‡	[sšËx%”LŠür
sZ!QÈvâzSjæûJ,ò9l…Ùà<¯²ÈÖ[kÎCˆµz
râ2S+³ešƒÒ=`Òp!¼\îz(§U҄	ŠB@E„ì2u`«…1<ªH\r³å8²S)°(hø¦—JC¾ãkYEFòsU‹×,õë’Ìq[¥UÔÄED+¥C+~Ü)í `¦…mFñ:Mr'_M?À¸FPïÒ%ê»ïÒÓ:p¥«ÈyKNòH£€ë
‚Tô‚ü­˜v\'dÁ:<T±Ԡb2«á’!»œÎ“§Qàrgüãb—è‚þR¡.¬7Š(£`í$=ÙØÅċÖ۵Eœ”¬ŸPgš܇ÑBÔÖì,ú˜GξL+–(fþÏlM«,Z}¸“œ¡њ?¾u씔j‹”M—¨yªyâ!5ÿ%Úd‚A,%qBŸ„¼Q
ÖQÚWz=È1¬cùú¨?ìoL(«)?ž^ä	ÿÒ
½ϠÓ€Z—†ðæXÒyá T‘Z0oƒ0ªË4‘Íß7õ‰=Š%Ã[Íâ…/YWxÛAÍÑɦÂڎ†Bk¥yO—Ö,Ù_X*M…™—øÈt…›NôzYáá+©ôB²׋¥äjÃÖ9‚jÔ:¢pËݦ‰¯©6µNbþh|‚ãv}잃~IàO­öþÜ)&ßÏfW7§g×ãŇÊÆՙO·÷׋»ÛÙd>¹ šœŸš<›LoïoN¯qºó"Ë:ø1üñヲàS¬¿–‰”bùƒ
·„H6ŒʓJMœšþaIña…‹Îɚ“"0£SßPæåÑéF°¬=Ò0Z{FáÊØÎo fG«Äë“|0h-ҽ‘‡“οQdÎz™+äÆ*ÂYËq%ݖ“+²åÇPԗW|SjSqÕI?X¨^ç”ۨ9þE%3#"Sr¡«¯sÂ4O0(óUǰDWº[zÃ
g@‡…¹xÄÞ𐚽CÜ1M]”t &ŒG'«Ü
Ÿ‡ÈيÁçúZmç¸!ëªf¹•ؙÍNoÏÓĨð†6l-ÊØ)©¬’_v‡§ï´ZòÃӧš³¶٢„µMÒçE¼U/ÚVÎÒ0ž;ÚHŒfQBûÊy`™VÆ>'rig>“í,´’áÒFÑv&ů<¸m[Ã3ö3œËnXÜFˆÕ
[«Z(jÎf—‡ù¶ÒÚ|¿¦HH¾ 힯$÷͞¬ÎR)	¤ø|«fÔpz]ñ.e<X1‰Ûr»ã“’65üRcï•ÙØÚñÀk‰ރaÏ~¡›sQ®}.¸Xå­µVŠúW¼K
Ö¡Ëj:j‰5·1:‹¹ŸbÚá,é3Õ'·÷½lˆ©Kl&q+ +^ˆU­VŸ_aqõ÷ùdz…ÚÌëSA€?¾«')¼‚Z xrøӛÏÍ!ÏTbaáŠZĉ¯spJP
0ê P	ñ\Aéh?ìö u)‘b×d.¶k«f+lIø„ít»Ðk(©‹jªX.ö��¬m(t^`ôŠUkHPu)#‚Š»å0	sÏ·úû¸îïÿOV5E¦e½hºS(Ó(ßQЉLRZw*éU`ø־}Jég*
Ïq·­ãèAà5=‡ë@èRöUO[7/îîoÏÆOzº5”k*åªûCûA³^
Xû°R>)ÇáxÃ}–_†ì>
Ÿ¨›:
¬½ý³öö¯Ö¹ŸÞ<¯éM‰Œæ„8æu*ÛÇž)Ÿ³{d›GÛÞA,þï·—ÅR½Êf3ٛÓÚߧˆÛC…0ú½jéw0íw¨_Ѫ¶rñ½@ûŽ•ã˜䜘لiØڳþͮ{ʼn$oHG=û…nђ:~ÔŸ§OÓ
~£¢âïµÁS‹ZS~ýã-ñy‘3z`ßX¨ÒwÙêmPϞíÎþÆ+¶™^Eü—ç*·?çÛÖ|žSO2+ðCzÖüýÖ‡ŽVE»_è¶ÿ”Yðlªü´l„Ñú§áç^shô¹Š­l=ÎYVvåd·è	QÆZnû)4½y´òª·(µöîýwԕS]½_,B¤qpê5·׸.üv‘S¿ìöéæ„<õ—ŒËþşuBÌâü¶¦ã‹Q¡Hë-`÷°ÕuN'EÄVړw°¯„@™ÇÇyX¿}²­oâ•[½»¼í–w@Å”»4|W­u¯²êU3ž:ó“¢6äëQºËB	#ì	Ãjð‘!މG³Nî`¾¤;X+*©×׬bî̽âúʢ}J›šæÇ/O;]v|•–¿¬.Xocæ³óòŽš_S¯—…¨Ò{ŸFÒl%‚ŠzŽ*	Éù\iR0)xœÕXë۸ÿ½䃝*~¬Í"(öáÝ3ºÙݬ¤@q0h‰¶‰£D…¤츇ûßo†ԃ’廤M›Öð®%Îp¿yp¤KoøéØ/¹’éAñÍ֐îUœ
Grÿav=»ŠJ¥¢†ˤßÊù²Ø2òÎ%Nir w&Ê9CCóšlIõëÁ`¿ß÷?™>—ÁC–hžl¹þŖk²æ‚øM©2D®QæøšÌMqÙÏŸ¿[,/§·³ûåÝìjz?Ÿ¾¾}¼{îÔÅ1S!§‚ÜYñŒ¼×tЖ/0M¶RD —ì¨à	«= ÌYL1=ö›ʪÅÐ0”*¢IÈȞ›-Й/"ßOèF1³ĐTɏXT²£”¹\›=UŒH*S	;c„V%ÀkP€òÄå搽âưÄӸbfÏ`å 3B“¨›>¹‘Š”è;¹VT‚`$Ç8kPµDÍr¿¬؜´u¦ÀD…Rx²–*¶¹’ãǜѡ!H!ԴˆÍ9^fºòíý{r˦ÔÇlö‡ô¢\*ފ¡þˆdIĔ‡ $ހ|«¦]Ŏ)Œ!@¤&–ŠÈÝêÌpAA\ÁgáK1Ҡpu°
þv=%7„þF‚®~l4Ê,àí¨]oíf”…ûíÞ2O*	6N ŒQ…áƒlAnëv^}(‡±‹E(²ÈæŠeJiø3Ýà.BŽVŸ<
FÁiÅvœí8)„Üg3¤F°<S¬ñ‚Š}ʸ²	©!‰…@I“˜5ºÁ&ÉúRm&ƒM*^ŽûÃþÖÄÂ/ùéýuQðÏÝò·û:@Ð(ﲘDl
5¦;Ï܉e"—T¤[J†EÈÈF2ª/‹,扭߳:!¦ŸyÆåò^Ñt
§žl»¨Ùx¢íj̕’ŠE¹R°¡qL—pC3a<an]À%Už4·¬ÕfåÉÐ!…n¢@øZ°ЗRPŒ¢‰Ž¹oWcSÅrÖ)yÞÍç·‹˻éòý‡¡·ۧ||xº»^>>Ìg‹ÙÃý	¦ÅôSÄËÙýÃÓۋ; wžå@~€(öùB…	y	ÙÞß-_ý`#¯™!zK±SÈ̤™éÀTw8!kØt%…TçeŽh£²Ð`‰âV ),Ðù¥Cœ„¨;/n,ÞAA‰¡	ùW_ˆ¡	×Ò(8eAèI¬¬µn%³ÍTêev޲¸ËYÑðÙ|ÙZ¾%œ0£†-±¾kÇ$•ڶö6A•]»hÏfÇÎSيeï8
‹q´P€ŠÀ
ºsÂJbât|ީ+ÂÅÉyç4\uÞqZ×p3ôoFçk^Ÿy×c鷺 Áõ²Cîp„€å~œ‹ˆzÙ6Ÿ_<\eÚÈø-ž0TÙVqi(yÁîpŽ:M~TrÅN“/£­ÔOœm”Š0ÃÃë©ș6.³Ñ%ý™EÎí·4=Å5Mv\ÉËêWÙۈ1•\Ӑ™ËùõMGº=è[!µ>œâСø}̺«-MÖ<.«Úȶ¡á!xUæc›’Ææïم½œÞí"¶Jà򻍱Êk¦óy£/âë5<O®Ó)(֐·Ã¦­×WR
‚]ìåÖnϖ°+¦.YSÇzJ·ã*¦^h”ì¢oŠ<ŸÆ\kÇ{‘¿K†ý’^!Eºñ»”bM²½¶‹#‹Ւàè!‚ò^`½\sU­àÐR[ÈY,ÕyÊ0ûsޏrÓgOA¾Då
£0ù¡ÏøºvÀ\ÝÂrûãbvÚâïc‡'~SïäiI·ô©òÅ7¹w^ʵÿÛ×˦›³§‰/¹D§áÝmìŽîgÍ=ln&þuk԰UAƒ^ïT͢Ïø“֐Lê&ýÛ`û:à¶jùÚ1J;ª>J%¢G©ƒÒhò%ø×-÷•¹6􅺼ðø!ø#Ämx÷tµTâÛûO>ØéåãÓÃåô_ËìšI…)ÃþÐ~ ì_”|UŠÏ-¸Q{¦·x*‡¡ƒý¡g.”'rækpÂNæDÍöFн{	Ïm_ÒaóÛÖ_QÄÿ}{ŦÑń
¼£þ°µd¹½¶£ïÕÌþ®}‡®ñ
½j+ÝÿhÎã5ÈÙÖ!è¯vßkRN¶ń¿8áä5èäáXu•x¦lÈ•Íñh®º·Aið»HµÔ÷"ŽâLç[Ï3šÒñôÚ%§fÕrXË-Z®H/ø*®âyÍpSÍ?†?ͥÑO‡îl­(»zò§Ѐ¬x‹¼ó|ž{c}7?±–¹à 9”͍W9ÅӲùžêþž¤yït7µ4ž¯¶ñ¿kýë£yÇÔü��iºý|tÿCžç•-9, ö$öŒ}Õo¼ÉɣcòÎ#Ÿ}YJx8´õ°)ޢ侌Wk¯grâÄ'þ¦úhò†?â{ÕUõ£IÑaìññ‘á)§»Õùîފöª·]¡{WFÜ"î=oVc¡C¶˜–\â=ö-(£*׵mðìr¯¯6«Àïí(¼ð6L܆ 0ñ¼죅à¡k¢<á¬àÿt^~€>JWZ)Roƒ	FÂjÓõ³(?]Ž—£ƒèK8Ëaó
‘Êl¥;	À8‹×Øy)ó±ÖÝP»Þú½ð×Îo>
+e±xœÕX[“Ú6~÷¯P“<@JÌÞ^º;™Î²”)a7IúÆ[Meˑäei§ÿ½çH¾‚Iә\Z†[çè\¾sѱû/¿àdz_2”éNñõƐΰKÎNN/Èìýäfr
•JE
—‰ßÊùYlyk€§4ّ©	sÎÄÐÀ\’1©¾ì÷·ۭÿÑø\öX¢y²îçú®IÄ#ðŸReˆŒPæù
™›,äÒÏ_¼],£ñd¶œN†£Ù|t9¾Ÿ¾pê☩€SA¦V<#ï4]3¤åL“!è%TðÕP欦˜îHûMeU‚bhHÒ$`dËÍè¬."ßOèZ1³ĐTÉG²°dG)s™-UŒHÕ#T¦€÷‘‰]ô´*žXƒ*”' .7‡l7†%5+f¶Vv2#4	÷bã“[©H‰¾“kE%FrŒ³&UKÔ,÷«ŠÍI‹2&*”“HªØæJŽsF† …PÓ"6çx•é"ÈãÙ;2f	Sê}¶{CzÝ®
oÅPH²$dª† $ހ|«¦]Å#S=8‡‘˜X*"St«K0ÃqŸ…/ÅHƒÂÕÎ*øõfDn!$ý­+\ýØh”Y†)@!ÛQ»ÞØÍ(÷۽ežTlœ@£
ÃقÜÖí¼|(‡s‹@d¡Í˔ÒàwºÆ]„-ŸÜFÁiÅ9Û:qR¹ÎýIÀòL±Äc*ö1ãÊ&¤†$%ALb¶×
ÖIæKµî˜ôשxuîŸø‹zɏf7EpË_îÓ÷¼~ŸÐ0ﲘ„,‚ÓÞswAb™È%醒“½EÈÈFrÚ\YÌ[¿gMBLŸxÎË孢é24Nk²í¢bdSmWc®”T,,ȕ‚5cº„š	SæÖ\RU“斵Z¯j2t@¡›(	ԥ£h¢c^·koSÅræ•<oçó1„ðz0-߽?©í®S>Ü=Lo–÷wóÉbr7;´ý¶¸>FLfwo®§@öžç@žA”{º…PaB ÛýµÐBðÕ3yÍÑŠBf&͌PÝÁ‰`ÓP
©®ÊÑFeÁ"(ŭ@‡yÂåe ¡}C¶Äâñþô
;'©Զo^†&k°h™¬<^yÊB´ ;‹°†Øò.È
<¹*n,ÞA­Z9ào̚b
ƒ¿¤2ÌðÄàÖHHÈ)LÕ|¸lXŒǿځ»¨nÐÞg‰‰ÓÓ+Ï	‚ë³â:‚›“+Ϛ
—s€[nГAMݻZøæóë»a¦Œß`ۅƒ¶
_ť¡†›â`rœ|¯äŠ'_+FۨeA·®á†&	kµ›ì ‹Ӆ¬ÅVvÙa	f›’Ƃ¿@va/çí"¶Jà‚ÓƸeˆ§û1û?a»þ˜Ñv
˜dxP>Èl½:Ñm\æ°ý….#ÞÐô×(yäJ&XÂG¸b(р™Áü涍#ÝìôXH­wÇ84ÇDhãñVR
‚–,¶rŽC]§kKÈUS‡DTÀÑׅÒñ<[V0B3a·`µ)Rws­adÙۋürҳ_Ò-¤H7¢–Rl”l?êà±nµ$x<‹^y/0 7\U+x°7r–(‚iouž2ŒšcÎûAnúä/QyLGèÅs5šðp'õø—Åd6m=ûتȏ¯›¥O^ÚÖ~ûèvùsêŸ Å^û۶¹ïNÎ^´¾^
‰=®a»*~÷OÂ.v$soÔlUX ›:E“ð©€÷¢ô‹¦AßΦ)/IÕ]9üHÕ©Dx/u¯æq‰v…è?h»VáÇӻ~$¨cg[Þ?Ü
Fß*çµ°=#[9–kÐK¾®É.¼GC[·t/xµÞ6€‡ŠÏimygkkl(âß×þU$>ÅÜ^#ˆÑ÷ê1ß5ïPý_Ы¶Jý
 9sÔ g[§Ÿí¾KRN¬Åhqڳ_-òtòpžfxöäûihf6(ûú›sng×Ë|í{Gc™%¦×xv¶
,ùgûéÕÔšV{V޻q©Ó:K-ògÎtî|Ðmòpïc£w9¸•¶^å|—á_ÏàUÛøÞÁe»ûòE@–×-<9Oj“{G3xgSEˆ;Eø0Üm§jt‰ͷ_/„Íw]ß=™Zíó侓î…àxYQZÝl’ÿK~6Oí×äðy©–U­^©n[ëû§;ÕÙç^gu«w	{ÉAÜ(j<v޽¼UÅÌP±´œÖŮ¯֫^½­õjý°Wh»*ÛE¡Œu…Énà(æ8ƒßCmҕ€òDª3³ß'XV²n¶ܼ‰öЃ~û9œÅÌR™t
Œëط+ªú`êӺSœRùrw¿ùü
ˆ
;ÕF›xœÕXëo¹ÿ®¿bzɇUº‘äG4FPø!»Bmٱ”äÚC P»”Dw¹ÇåZV‹ûßo†ܧ´²] É]AÚ%‡óø̓Cöß|ÅOÇ~á\%-–+ÞyÇ0þ4ºâŒN”fF¨¸×Jù7˜®8|08%,Þ5	sÊذ<ƒ•1Iú®ß_¯׽_LO¨¾S/û¹üéJ¤°’þ'LPâyt“…BõrÂצ³³áÕh<»Ǔừ»ë×N\q&áڲçð1eKNsùOa¥dˆráIBP­AaN+$ŠØ2\o*­bbÂ@éÅ‡µ0+œçuùz`KÍyÄc‰V"äaIN\&jaÖLsPÚ&
×1ÂûÀåÆG9­B&JQ*bd—«k-ŒáqM✛5ǑʀÅá–ozp©4”è;¾–UL`ġ ?§€PµxÍR¿­È·E¦QEM\D¼P:²±’ãǝҁšfZØæo³´pòÕø#\ñ˜kõ.›£¾».=mW¹Šœ7ç$?„,¹®!ˆAE/ÈߊiñÀuJ¡ƒÀC•K
*!³º@.²+è,|	yÎ7VÀ?/†p‰.!è/jáòÇz£Œ2
†ÑNÒӕ]L¼h½][ÆIÅÁú	…q¦É}-DmÍÎӡ‡épä|È,´±b‰ü̖´ʂ£Ճ;É­ùƒàkÇNI©ÖH¹íR£5Ï4/@܇ æ¿dBۀL1ˆ¥$N蓈oUƒeœõ”^öLúËD¾=ê
z+ÉzÊÇE¿vÃ_ïÓïtú}`aˆÖe„|9–v^¹Ì1–ÌɢÍAÍÑš£‘ÐZiӇåt¤b5c2Y±'7ˆ±„q]ce‡e‰ØV‚-&{êzT/Y±¾°Lš{7.ñ‘é{7œê弯:PRé™d®gsÉ1Ô­sÕAëL„ÂE"7{˜¦¦ÚtÔ:‰ù£ñ	ŽÛõ±{ú%…¿´Øgøk§œü0™\aܜž]g?
j×g>ßÞ__Ìîn'£éèv¼‡h:üqzºoòl4¾½¿9½ÆéΫ<ëà4ÆðÇKô*eÁ¦Xo)S)Åün)7®•'•™$3üÒÝ“5'e`¦Fg¡Ì+¢Ӎ`Y{¤a´÷ŒÃg”±ÿv€˜A¢R[¬OŠÃâ%j4ËvFN:¿¢Ȃõ<
È7JTŒ³–ãB*è5'Wäˏ¡$i.¯ù¦Ҧ檓~7°H…¼ɩ°Qsü‹+fFĦâByÑ\ç„ižbP«ŽaŽ®(u·$ô†Î‹
ñˆ½á5?zƒ¸c	pmPÚك:˜(98é8å¢ä0\àó…X‰ø<A·«õ7$”RW²P§F“Ééíy–ÝОƒ]FFUŠÅIòk‚qÿôVs¾úTsÖ6›GÇ÷>¦­@Nõ­ĚÅ)mç%2mdZ‹ä”ȥ}œL¶³tÒ*†#Dº0¶ʉÿððF<¶pìùÎØÏ<t¸aIU(ì¬j‘Hi‡?›\\¶‘–å¹m’âñ|Å☷ºŒ6ß'€´åׁkЉô	MïùBòÀìèٙ+%Œž®ՄºP¯kÓÀå‘&q¯îb´w\ R&g†_jlȊpZøÖZ¢÷`àÛ/t.ÊõÔ%«¼5ã>ÄJq~òËwIa{!t5BHc '±ænNd˜™v8¯¹ê£Û{?bê;LÜȊWbÑ(àçWØZ\ýc:_¡…6{T%àÏï›é
o dÞVüéðËögjq4s•·=1æÁÛœ
”Œ&TL<WZ|8è
º>d.2l¥Ì%Ãn±ÀÁ|…-Ÿ±?nü-%uBÛ*6ƒ˃]ýêj!k
W½bÑTgªˆ Šo9ŒÂdzǭþ>núûâɺ¦ȴ*¥Û.ÆÊ5*¶t"ӟ•–áJýßڷÏ)ýBEá%î¶`?|¡Nh(}OÊþ©îiëæÙÝýíÙðYO·†rC¥B•Ao`?h֛RkVÊgå8÷`¸ËòiÈîã虺©ãèÇÆۿoÿn͐ûñ͋ñßTÈ8aNˆc޴¡¶}œáAó%»G¾y´íÄâÿ~ëpYŒ!å×~0›ÉނÖþ>GÜ*„ÑïUK¿ƒi¿CÝøŠVµ•‹ïÚw¬ßÀ$çÄÜ&LÃ֞õïvÝ;(ð¢!=ðíºeKêøQ|ž<boñ;(+þNì;[ô{OCØ.dQ2ËO+¾{c‘ÊbÜp­Öåí&è•;Ž_Óäé¹ÚÍS㥵	ŸæçWÁÓÜü|2¿{Vó`ßɬìøKvŸrÍ_LUœ¢"^þ4øâo|©ÛN+[Oƒ–•B9¹‡ÐÂŽ¦°ü-¯½¼|³«·u²ñ·#ËߺšûVþôëwtÝ^qفÛ¢ÛgD¯~ç‚Ø5޽ÿºQ£ñýÃâ”_q:¤ª¥~˭¦‹$Œ¿yûúôÚòn³»ßÚ&§*êjýÕ{ؽ‡¨pUˆŽ‹$¶þúl{÷ԫzw‘ܭn¶Êk5wú¾^¬ßäå×YMgŠ“²ªQ¬+"Fس‘ý	ëCäRfÀ~Ix[isgÈkýn©ßÙ^BYvÐïAi³RãâàVVc;]õªµÃJUkxÞbñf㽐5¿†#&Ca%œôޣ‘,_‰h¢ž5‰„äü`Œ,)xœÕXms9þίèÛäx'€cç¶6®ԕ±1KN!É}£Čt«M$
,·µÿýZҼÂëìånë(ʀÔꗧŸnõ¸wö
_-û†‘í$[­5´o:ðº~	ÓOãÛñ5îÈLH¢™H»^Éa¾¦ðAãN’‘t’©&¡~k­3õ¶×Ûn·Ý/ºËD³¦Š¥«^a¾f
bÆ)àgF¤·0ÓyÄD·|ùa¾Gãéb2¾Ng÷£‡ÉKg.I¨á0±ê)|TdEÍ^±@¬Ð.lg„õ4æ¼B¡„ì Çóºö*5jH
‘4¤°ezû´©¢8d%)Mhª!“bÃ"UâFËLÄzK$! \S™"¼ÊwÚñA™D¡)”¥¨®p¶’iMӆÅ%Õ[Š+;‘I£ƒÜtáNH¨Ðwz­ªԀ‘FÌäYBåɚ•~U‹9mq.ÑEi´°42±\)ð£ÎéPƒÙ¢=j‰W¹*“<š~„M©DPò%ú{œÒë}àêT™ä-©±AžFT6DR™¨ߚñ›ØP©L˜ h£ˈ¥‘™°:`Î	ª+å,|™É4\¿ßáSb ¿腫›Še†Ùn¬«µ=lt™óölœZƒÍ£Dšô![Œ´
»(‡.–ÅËEÈóÈrÅ
e$ü™¬Ì)BV8%´¤F·Nà\lQò0¥ZzžKZ‚x
AI¿äLZB*$1çFæ$¡Ý`•æ]!W½“Þ*ã¯.ºýîZ'¼YòÃémYð/Ýò·{õZ­^Haty±ÆTë…û‚ÌùEc̋P`Y2d]ä›-ôŸØ
É#8JD,ÿI±,^W2*$XËr!iÌÍNÿhGK’ª„é†âƒCµÈëV%óa6!€׃ÉpññS¿qº¹óùþqr»x¸Ÿçãûé	¡ùðóëS›ƒñôþñýõ·[/
úÁwX%ý$+C‡r­»âŠs¶üÎ⮨µ&¦NE®³\·ðk+¼„Ý.äU•!¥e(«4¹†º­_[`”]@&”íZWå‚&é
=ZäG+›«Öoh²TÍÉÎ"¬r®K}—°ÄH®ÊVÄüÂJ±z0ބjÐuMs‰Êºrâ®SÕr‡u’ͱcÂM{¥æ ³ÙõýM®´Hޛ6„O
h-¥H’q:1õéí)–ôôöµ¤ķæþSȽH$¯߼ñmfTr–NS޳íAžds—NŸ¤¥¸iJ7Uª½ÎmQžqn¿ÎB½²5ifØêC?$_râwµ†¹¹E¾Z#'•OŠâÄ1 ?ÓÈåú=ÉNI
Ó
“"5årBŠç	z›úMX(ELBª³Û;/Öëq¡Ôb&ÿOËD,Žñ’}tá=%#•SÊ'†ɍÚ_
ÁÁÄ;ߊ™’Ú[]’bæÓ6ĄãUÒÁ"jµly⤅íÞ!6º¤þ0aJáppÖȷ¡Ø7tJ-|•ë’í0msMZ+©¹îxPý榄n™¬WÌE¹·PˆX8Vg5ÜpÂ18M$…ëãûǠX"â œ6L/X¼×VoFxó~š§#ŒÐöƒ®i>ðý»ýÖgàÍI»Š©Ž¥érçªÒkÿú]ˆ—®©¹Bç þ½°eY){_oé{§Í؛=Ӟêä±T;“ãè—2	—ÞÔ\î»öƒ޴?ëÞY¬£µ!ò³™„
*§á9yØ÷¼iÌë3m5ÒäKÅï!oë¦ѦNWOeæÑÿÒÝ"¾xx¼ÿÓ÷\*]éwûö…mà¬rà«(?³ G~æ?	ä)NcgûÝ]jOpèkƒqÊNrä(†4ÚïŸ#žÓ}‹æëë½FÅÿ}ë5¤mÈ4þœwûÞ2~JØ_g£?«ÁýBû:È7ŒÊW¾ÿÐ\ÄjÈYï€ô7{î-T3a9ýœöm¦Ÿ¢>3rÝ䟲ôWòhæšڤÈûGö6xô6œǫY­0x¾A'ø*©võ4ˆÝ]\7.ÉÑ¿}ò½˜ Xb‹ز/¨À
\ªگ¿ˆDNŸë:~ÿ¡\½(ök#®*¼“ì¼x¶dT	Â×~ÿÇO$›¡FÂ/K¥¶>?SÓFT»n „gkú)8tçྠ¡æ°_ßÁ‚²ý.˜©_èž«‡ÞÚø;]¹ZÍú	š…wV-Ɓ…uÃJo¯*Ζîb°B–2±¹€?!ŠdÉH³ëÂħ÷Sì¢֪گû¢’ù¨èŸ#Y]îï@H½®êÐ9BSüƒÙ+ñ"o—è˝CšüËÙÊmR(xœÕXms7þίØ&ù.¿}i<™Ž1eJ°cHÒoŒ¸ ‰ît‘tÚÉï®to¦3y™`w«ÕJû쳫=º'_ñÕpoè©d«Åre¡ÙkÁùéÙ%Œßo‡×8¢¥™*îÔjþÓ‡×G¢„Å[Ù0ӌ-ìXY›˜Ýîf³é|°¡ºR<6"^v³õ§+a`!$üN˜¶ dóâ&6
…êdŠÏ^Og7ýÁp<
{ýñ¤ÿbð0z旋"®Á$Œœyo[rËÜÀJÉׅ5“"„ œƒ‹ù]¡R͐â|[î*&3,”YpØ»Âq^5‘ͶԜG<¶hµ!u²2Q»ašƒÒm`Òr#¼k.·m\§vԉ.…€ŠÍeہÖò¸²âœÛ
GÉV¥Àâp/6¸S
ô½]g*&0âPPœ
 T5QsÚÏK5om‘jܢ&+"^(9®døq¿éÀ³5f3ç©Ƀ<¿¹FPÒ9î÷0¤׻¡¢àÍ9­B‡\WDRÑ
ÚwËÔ/±æڐ hâ–K
*!·Z@—Íåz¾„"ηn?oûp‡!!èïîÂ珋FÁ2¢C¶Óêfå&“-šïæ<)-¸8ábœi
²…´ÛY:t0.|,™†Ž+N)aÁ{¶¤Y„­<HÎÐiÍׂo¼9%¥ڠæ~H­Üyªyâ15ÿ
íiÄR’%ŒIÄ÷ªÁ2N;J/»9&Ýe"Ÿ_tN;+ÉjÊ÷ǷyÂ?óâ¯÷ê6Ý.°0DïÒB¾À3§þLÀ0ÇôLó…äHäӃ«Yl"aáìؤRå¼P‰T¬fL&+V1é…È,dyŜË4±«{F"öQD¸ó‹B¼Ñ,™’EIŶjŽä©îÔI#¡µÒ<̇Ë–,ŠØoX*«¾{¹ÄK¦+ּØèåmÒדÉCx}3êÏ޼=­èWGÞÝ?Žng÷“átx?>¢4íÿ5½>6x3ß?¾ºápãi–ðѴüãBJ„¼A¶w–ÒH)æO\ä
·`VŒ*…Jm’Ú~av—°ÀI=%•¾*8b¬NKIÅK°(l]À
Õø§Þ—»Êoœ
ÝaB]€e1n*ÂáOh>7ƒ[%ë³@á)€ñ¶|F9˜[¼€DW~¯rÚY¢c³ô@²®7­9~ťE+bKsRaì‰RÙ<tÙòˆŽ½Ew‘P¾0#»%hÊy‹×„Um¦X{Ñ\ ŠJ˜&“ëû^j¬Š^QyŵS©eӒ¨9>ü ՜¾֜Վ~H±Ü֍L)UýG•.WtS§ű©¸aïyèÝ~ŒcZýx-´Š‰G´Šd¯ŒD ՂÜÞLnïê4’ÕÖ¤2f{LÂâó:VÌåˆbU»¤JoÅbԩŽÌÔ¥nØÕD:]z‰êԴ²ŽtSR—îr‚ñ¨7éW+
‘”•lŸ+%0ݨ	5f͖KŸMX0‰ÇWéßh¸ÔÀî¿Ã`ٜ–ýHƒmÇÞ\ÒoÂYç´]|´à$ûÏ&§–Z/»=iwvTŒI„¼š<[d–¹ÔÎL azC+œµݛå‰Òv‰èTÎqNçԽܞÜ+›~t¬rTìÝìž­Վ“ڍG̼ÿv­ì>|ä•4("ïA_4cj‹d»¸—T’n….%ÔPí2•Å{Ó=é$áT`¼rV‡3º
ïۙˆ©;l”±+%æ=‹ï7ÀiðÇt8 +]}íÐ鿾Ü-Ş”—½vå!$ò¹î³nònõifêùi֮ Q °çãŽk:/©;—û]W‹Î
ŽO‹ÚQI/DQuKÏ9Зµð_îníÇ»»•(O+_¦¡^3ýNi>(Ӯx\à^‡íAéÈ^9 ŽS¾Xæ;©¢è œ=<Þßô¿='¿°ž¥ŸÅèÿðtø¶›÷!?îƒ=ïŲrdÝàóޗœXYI®«}dâ§/}ÿ+ŸS®OÂèGŸïàÚ(_ѫºtý y3Ԑ³µMåïnÞ(û¢cÌ[ ¢ÿðö¨Mí¥ŸE÷앭ÎAŸ:vAÙÓ÷‘ªÉïiöl'¸ɦà‹Z/ÀÂt؜7áX+ž»R¶c‡WeÏ÷eZg­]µÉ#½Úf¿Ib'Býì9¸
s‘ƒàÃìý¬TޗpøðV1UB}™ƒç2ã§6ͲtùtZåÿùü.T}¨jiä>?ogÿä`é¸ç!QØ?,ø§‹Ž^ÎÛUʶ+\oç[¹*¨ï=ñ<±°XfÅßޛ·H6—Èõ>t»HúÇY6»é”%Èa~äҗhæç*+mWʓ7×t¿—4ËpâoL3‡.#`Õ jüƒŠ
1/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1

vec3 texCoord0;
out vec4 fragColor;

uniform sampler2D BlurBuffer;
uniform sampler2D OriginBuffer;

void main()
{
    vec2 texSize = vec2( textureSize( BlurBuffer, 0 ) );
    texSize = vec2(1.0) / texSize;
    texCoord0.z = 0.0;
    texCoord0.xy = vec2(gl_FragCoord.xy * texSize);

    float sigma = clamp(blur_size * 0.5, 0.5, 100.0);
    int smpCount = int(ceil( sigma ));
    vec4 value = texture(BlurBuffer, texCoord0.xy);

    float wtsum = 1.0;
    for (int i = 1; i <= smpCount; ++i)
    {
        // Base 2 Gaussian blur
        float wt = float(i) / (sigma * 0.5);
        wt = exp2( -wt*wt );
        vec2 texOfs = vec2(0, i) * texSize;
        vec4 posValue = texture(BlurBuffer, texCoord0.xy+texOfs);
        vec4 negValue = texture(BlurBuffer, texCoord0.xy-texOfs);
        posValue = posValue.a * posValue + (1.0 - posValue.a) * texture(OriginBuffer, texCoord0.xy+texOfs);
        negValue = negValue.a * negValue + (1.0 - negValue.a) * texture(OriginBuffer, texCoord0.xy-texOfs);

        value += wt * posValue;
        value += wt * negValue;
        wtsum += wt * 2.0;
    }

    fragColor = (value / wtsum);
    fragColor.a = 1.0;

}
A/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

// add enum defines
#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1

vec3 texCoord0;

void main()
{

    // This is a bit silly, but the thing is that a buffer blit takes place on this
    // pass, and if you do a buffer blit on a pass that outputs to lower-resolution,
    // it only blits a smaller portion of the backbuffer that occupies that number of
    // pixels.  So we need a dummy no-op pass that is full-res in order to blit everything.
}
N/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

// add enum defines
#define scatter_reflect 0
#define scatter_transmit 1
#define scatter_reflect_transmit 2

#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1
#define QSSG_ENABLE_BINORMAL 0

#include "vertexFragmentBase.glsllib"

// set shader output
out vec4 fragColor;

// add structure defines
struct layer_result
{
  vec4 base;
  vec4 layer;
  mat3 tanFrame;
};


// temporary declarations
 vec4 tmpShadowTerm;

layer_result layer;

#include "SSAOCustomMaterial.glsllib"
#include "sampleLight.glsllib"
#include "sampleProbe.glsllib"
#include "sampleArea.glsllib"
#include "square.glsllib"
#include "calculateRoughness.glsllib"
#include "evalBakedShadowMap.glsllib"
#include "evalEnvironmentMap.glsllib"
#include "luminance.glsllib"
#include "microfacetBSDF.glsllib"
#include "physGlossyBSDF.glsllib"
#include "simpleGlossyBSDF.glsllib"
#include "fresnelLayer.glsllib"

bool evalTwoSided()
{
  return( false );
}

vec3 computeFrontMaterialEmissive()
{
  return( vec3( 0, 0, 0 ) );
}

void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f );
  layer.layer += tmpShadowTerm * microfacetBSDF( layer.tanFrame, lightDir, viewDir, lightSpecular, materialIOR, roughness, roughness, scatter_reflect );
#endif
}

void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f );
  layer.layer += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layer.tanFrame, varWorldPos, lightIdx, viewDir, roughness, roughness );
#endif
}

void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f );
  layer.layer += tmpShadowTerm * microfacetSampledBSDF( layer.tanFrame, viewDir, roughness, roughness, scatter_reflect );
#else
  layer.base += tmpShadowTerm * vec4( 0.0f, 0.0f, 0.0f, 1.0f );
  layer.layer += tmpShadowTerm * sampleGlossy( layer.tanFrame, viewDir, roughness);
#endif
}

vec3 computeBackMaterialEmissive()
{
  return( vec3(0, 0, 0) );
}

void computeBackLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#else
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

float computeIOR()
{
  return( false ? 1.0f : luminance( vec3( 1, 1, 1 ) ) );
}

float evalCutout()
{
  return( 1.000000 );
}

vec3 computeNormal()
{
  return( normal );
}

void computeTemporaries()
{
     tmpShadowTerm = evalBakedShadowMap( texCoord0 );
}

vec4 computeLayerWeights( in float alpha )
{
  vec4 color;
  color = fresnelLayer( normal, vec3( 25.65, 25.65, 25.65 ), 1.000000, vec4( metal_color, 1.0).rgb, layer.layer, layer.base, alpha );
  return color;
}


void initializeLayerVariables(void)
{
  // clear layers
  layer.base = vec4(0.0, 0.0, 0.0, 1.0);
  layer.layer = vec4(0.0, 0.0, 0.0, 1.0);
  layer.tanFrame = orthoNormalize( mat3( tangent, cross(normal, tangent), normal ) );
}
&­xœÕZés۸ÿî¿9>PެÃÇt6oÇ÷zê؎å8ý¦HPâ†$”¬îìÿÞ÷p DÙN»�Œ-ïü½dúÛàϖþGNy±Ét¦HpÚ!»ƒá>¹y¼:»:†QpAUÂó^+åOäaÆÈg;YAó%¹V‘¥Ì
ÕG2SªûýÅbÑû®z	ï§IÈr™äӾ•ÿ0K$‰“”ø[P¡‘çÞ©2JxϾÿü0>9¿¼º__žߌÎ?^Þ]¿7Ⲍ‰0¡)¹Öìù"é”áž]`’Ìx\2§i‘°>ŒV@”Ñ%)Ἢµʑ

C."š‡Œ,5ƒ}泰ç	
Æ2–+R>O"UäÈeÄcµ ‚.º„¦Š‰Ü;gé²rZ…M&A84ɁU‡,D¢Ë=‰¦V–¼$4VbÓ#\Êû†¯f•£3ò(Á8K®j‰š¦ީÉ·¸ ¢@.Is‘i¬Xÿ1£t¨îªZØZŠRº _Þ|!—,gœzWN@ßõ7W‡
ƒ7a(?"e1áy@…_€¿Ó.b΄Dö @$•W‚ðÍêDxJ£Óî+0Ò p²ÔþvvN. $èúZ˜üÑѨP† €v”.gú0òÂóúl…“šƒŽcT`ø-H­ͶéЃtØ3±Ó2ÒXÑD
¿Ñ)žÒN°Þꑻ”Q0Z°y†OS¾ÊՐ*N@óR0çÄMì{™
H	 NSä1ÉØJ5˜æe‹ißù¤?-ҝ½ޠ7SYê§üù͙Kø÷fùûéomõû„FXWf$b1ä˜Üzg>Œç|LÓbFÉ`eh$ÃærZfI®ów·¹‘ѧ$	{ÕòBÐb¦4+<ÞzQ0²òXëÕ,‚¹íZ€bO
"39¯ظœ/<®-.ÒÈÑBÂ'¿²З#C
G€qŠ;ƒµ%h.³Ä×}åPM²»UÑ|.!ÌÇ'×çã/﴿óõöþúl|w;ºz¸º½Ù@ôpþ÷‡ãM›'W7·��Aó­w6IÈ[ˆ$XáDО@Fô¦©LÓdòV£C2EäŒb5á¥*Jµ „û$†C§<åⰑT¢ѕ˜Ì
Ž¥vƒ,SµõÛ1& îÐ}Ñ$ø
’n(šƒRlÿþ
ö-Äüu’öHe.݇nøOÁàq¹¶27"W8òš¡Jr…Gã”啦Še88ˆ%h	7#„Üڠ#QY18|nwx¸¥EƆ²úì¯ïêÏûH>‚hñÅ”}PÇ÷»ó°ýÑèø��gŸ°²C/¯£_SIHӔ]ãì³yûNð	ۼ},mÝý^B¥oÛ	Ëv~BÏvÚ6&Ò$¿á‰l=ëmŸ”Yñ`œÞFYղ¶M÷錿9kõö—ØëB€
洊w«­\iô< yª?ŽBš¶û«â4‚¶ݮ8œ
Klâ÷¼œÎ dƒñ„~c‘Ò'Zl¢:Ïç‰à9–Ž
TY
Ӑ©“ÑÙEkLfKy™r)—›(d‚zž†N&ì¦Ì&L\Ý޷˜žõ*ž	YY¿Æ$jƒ‚êq§® ežèùÏ$Ø=#ŽlîdABN8O	úóaÁG86]iLÑ	HLS.:Pa¶LÊÃì
¥˜]€ï•ËÜó,‘خœEú€ºúé8.Ü\*.Ú,]Íœ´” ´[}O±œ%¢^Áѩ±`Iâ¦ЕÕQÁ{†ؖM«:„¬k—(¿ïÀü‰V¼KâF;½„Yè򗇫›K°P—³öòá¨YùÈ6i/°Ԯ­t=c*#VÔlh'\Â4>nìï,³îq«·±ÖΆVbd_EOÎiû­®Üoêøo;©Ém›ԵÚdۺÛæT|ÅééŽˮ§tåÃ6?½ä
=¯”lF`%fXÞøŽÐ^ßÝߞœÿZFÚQ;hž5óE8@¿¨ˆ‰ÀFï¯É_q­WNàÞóšÚ`KC[e@ÿ÷…Ó
`¬~
{´×Ñêß/·#}ôg¥ót?!7ÿ@«Ú2î?à4c±õ`¶µ}ÿÏÅä#©FKל³K0M©”㟑4ýƒm»jÝFN§¥‚Ë؊°aufm\¸Ñ³ô‘€Y“ØDêgñ"	ˆ¹X#²2ÏZ
'°Òmrè6tõզ‹Fî•-]OÃç÷¼Ç+_ôL%o¬I.a~êß͑½‘߁üQ;ªý.èW— uzԮuêš@Vj­‘ø®%²ڳSWE±þ	-ôjHÙ}g[K9~°˄IDBú}t2˜Ùr£ȦûCðJ_GeGZ-XâÂêU$Øô¦I)úV¶<šA%îÕÑþ`T†&Ñ|޶¸9Uÿ|Ÿ#äj‡[ÿÖj\å1pY/ÁYût&>¬1Ãÿ%cþ5ô8ìØHՋ(£†˒y¢–cšñ2Wž¼1숬_=o֥uߥ¦n“_vsÔsŒyzکŸx…æy1@כ¶m·‰
Ì|Z9S¯ÜIkjB’'
&¤äFö#”:I¡2஑Øï“0e0Wh!²Ù	mo[omkmð5”nDb.Ԍ›VÊyz;¨¦ïQ×:ìUS¦îM‚ytÃƮ~Røå±Û6|´LŒժ-g¬P3R—LrÏ fhµ£øΔóH_Tê;üMªeÙEa8r_²SM<Nú¾*8µ6j–„ߴœ£¦f'˜ûq¬píØTVs‡3B¿:ėpŒМ¼=>~[½ÃÑï:@&^$HT2|‡
€d/OSfޒ]Ýkv–e—ú%‡Ä`²8ÆGÝÀ_ké÷f°…O7œþ=ϼ…†?Ø&3ÎÕL*VVº0åȠ;8¬ØÌ>qÖ«A—Zo­"T,-Q¿}¸­í£Úé‡^DéÂÄ҅lût5a”È"EMŽš|w,gÎ_]©1p%*½§e×:ÈB¦µ>V—“¦æoP½s&ôóÖÍã6¸“‹ÉØÔíúRujë\F®íw²]};ʚéFWyÏ1tð!pD¸²þeÿ`o÷§݃aÎs>¼âÎãrn¯ç>àk¥wjÇï’~cOr%üNwB høŠ€“Q
—>صbڐÞCfbÍåS:3úhP:®@aÚÿ°n+æ	;ì ¡/<ptGc¤"v+Æý•˜ø@*ÿÕXØz'µ–½'€IՔÝâ9k»ꠡ~àYŠøÆQ[TŽ#¬#FãZT^a»橴|Ô²®îh¶½u‘'ŽÊå±Ô%;æ¢Ðiö(r|Tß!,æê_°*<9ð¶eЃ)h£}¾cá¼ÝiÞÅü”2×Zô%Þ‚l º××uY¯‹é„ꬱ]Ývœ“t^à³ksÝú’Z\²žހ­»¯Y|7vü۞.œ…`sD’:dçg|‘Mr}»$‰”%sw¿Ò/|9=·Ìæ
ȇϚ®š¾|h²vhRB¯öà""ÐõqÐ÷˜ ëbUb(weÅMÃ#=~¬=o÷¦ÆõÂ
wÛñ…~¯	U‹ֲƒé;!vîð>þoš’™Be®(-â´äeTv򚃎#ê¶Ãêjº“Z
»þøãÚøŽë>7ÌËææP`l"$çŽÈ̮mŒ]™y.¶Ö0¨øŸ]RÇa½?:w5RcMö‡£&+¯•5ª=bsZWÅ,y
|>Ý
›]“坵9	°öüúÀ[ÀÅ/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

// add enum defines
#define scatter_reflect 0
#define scatter_transmit 1
#define scatter_reflect_transmit 2

#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1
#define QSSG_ENABLE_BINORMAL 0

#include "vertexFragmentBase.glsllib"

// set shader output
out vec4 fragColor;

// add structure defines
struct layer_result
{
  vec4 base;
  vec4 layer;
  mat3 tanFrame;
};


// temporary declarations
vec3 ftmp0;
 vec4 tmpShadowTerm;

layer_result layer;

#include "SSAOCustomMaterial.glsllib"
#include "sampleLight.glsllib"
#include "sampleProbe.glsllib"
#include "sampleArea.glsllib"
#include "square.glsllib"
#include "calculateRoughness.glsllib"
#include "evalBakedShadowMap.glsllib"
#include "evalEnvironmentMap.glsllib"
#include "luminance.glsllib"
#include "microfacetBSDF.glsllib"
#include "physGlossyBSDF.glsllib"
#include "simpleGlossyBSDF.glsllib"
#include "abbeNumberIOR.glsllib"
#include "fresnelLayer.glsllib"
#include "refraction.glsllib"

bool evalTwoSided()
{
  return( true );
}

vec3 computeFrontMaterialEmissive()
{
  return( vec3( 0, 0, 0 ) );
}

void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * microfacetBSDF( layer.tanFrame, lightDir, viewDir, lightSpecular, materialIOR, 0.000000, 0.000000, scatter_reflect_transmit );
#endif
}

void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layer.tanFrame, varWorldPos, lightIdx, viewDir, 0.000000, 0.000000 );
#endif
}

void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += tmpShadowTerm * microfacetSampledBSDF( layer.tanFrame, viewDir, 0.000000, 0.000000, scatter_reflect_transmit );
#else
  layer.base += tmpShadowTerm * sampleGlossy( layer.tanFrame, viewDir, 0.000000);
#endif
}

vec3 computeBackMaterialEmissive()
{
  return( vec3(0, 0, 0) );
}

void computeBackLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#else
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

float computeIOR()
{
  return( true ? 1.0f : luminance( vec3( abbeNumberIOR(glass_ior, 0.000000 ) ) ) );
}

float evalCutout()
{
  return( 1.000000 );
}

vec3 computeNormal()
{
  return( normal );
}

void computeTemporaries()
{
     ftmp0 = vec3( reflectivity_amount );
     tmpShadowTerm = evalBakedShadowMap( texCoord0 );
}

vec4 computeLayerWeights( in float alpha )
{
  vec4 color;
  color = layer.base * vec4( ftmp0, 1.0);
  return color;
}


void initializeLayerVariables(void)
{
  // clear layers
  layer.base = vec4(0.0, 0.0, 0.0, 1.0);
  layer.layer = vec4(0.0, 0.0, 0.0, 1.0);
  layer.tanFrame = orthoNormalize( tangentFrame( normal, varWorldPos ) );
}

vec4 computeGlass(in vec3 normal, in float materialIOR, in float alpha, in vec4 color)
{
  vec4 rgba = color;
  float ratio = simpleFresnel( normal, materialIOR, uFresnelPower );
  vec3 absorb_color = ( log( glass_color )/-1.000000 );
  // prevent log(0) -> inf number issue
  if ( isinf(absorb_color.r) ) absorb_color.r = 1.0;
  if ( isinf(absorb_color.g) ) absorb_color.g = 1.0;
  if ( isinf(absorb_color.b) ) absorb_color.b = 1.0;
  rgba.rgb = mix(vec3(1.0) - absorb_color, rgba.rgb * (vec3(1.0) - absorb_color), ratio);
  rgba.a = mix(uMinOpacity, alpha, ratio);
  return rgba;
}
ð/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1

vec3 texCoord0;
out vec4 fragColor;

uniform sampler2D BlurBuffer;

void main()
{
    vec2 texSize = vec2( textureSize( BlurBuffer, 0 ) );
    texSize = vec2(1.0) / texSize;
    texCoord0.z = 0.0;
    texCoord0.xy = vec2(gl_FragCoord.xy * texSize);

    float sigma = clamp(blur_size * 0.5, 0.5, 100.0);
    int smpCount = int(ceil( sigma ));
    vec4 value = texture(BlurBuffer, texCoord0.xy);
    float wtsum = 1.0;
    for (int i = 1; i <= smpCount; ++i)
    {
        // Base 2 Gaussian blur
        float wt = float(i) / (sigma * 0.5);
        wt = exp2( -wt*wt );
        vec2 texOfs = vec2(i, 0) * texSize;
        value += wt * texture(BlurBuffer, texCoord0.xy+texOfs);
        value += wt * texture(BlurBuffer, texCoord0.xy-texOfs);
        wtsum += wt * 2.0;
    }

    fragColor = value / wtsum;
    fragColor.a = 1.0;
}
ÑxœÕX[sۺ~ׯ؞äreI¾ä¡ñ¤˖UMٱ”¤o„$ö€€RÔNÿ{wÞ$Q¶Ϝ´™z<¶ì
ßî~X²wòZöndºUÑre;iÃyÿì&_ƷãkÜQ©TÌD2é6Jþ	f+ŸîÄ)K¶poÂ\21,0ïaeLªß÷z›ͦûÍt#ÙQÀ%Ë^î¶Š4,"Áÿ§L²yqS“…‘ìæ‚o?Íæƒáh<™ߏo†“éðýèñþ­sÇ\poÍsø¬ْÓ^¾À5¬¤Ñ/¬™ˆB*tæ¢B¡˜m!C}SE•R…,	8l"³Â}^7‘ë[*ÎcžH•\G!Kq²2•³aŠƒT`Âp• ¼k.¶ôÓèeb®Ð(Asy8°Q‘1<©yô¹Ùp\ÙÊXîå¦wRA‰¾³kM%FF”g
UC֬ôi%æ¬-2…!*²%©b[+9~Ü `¦Ál.qšé"ɣÉgñ„+õ1ó1ÞÔ^ïW¥Š’çsòB–„\ÕĢ¢/hߺiv±æJÓ	.0AàaȈ¥™ұÚ@.š+ä,|)eú[ëào·C¸Ôôw£pýc³QV•Ãj'ïze•Éé[ݲN*6OèŒ3EéÃj!i{켺Ø.ÈB[+V(eolIZ„­.<
ÎðЊ¯#¾qæ¤rƒ’û)50òLñÄc*þ-‹”-HE,YœÄ|
–I֕jÙ+0é-SqzÑíwW&õ–Nn‹†ë–ÜO¯Õêõ€…!ž.‹!äì1Ýzã>`å|7xæy ±-#¬8>ÏÖè?'°‘J„pöœˆôÿq-ÎK0ìe5W|!h§°cKt™šá=¥Jä¼UÊ|šNGàõà~8ÿü¥_Ӯï|}xº¿?>LdzñÃäˆÐlø÷Ùõ±ÍÁxòðôñú#o½ÉË~Á.ÁÓß)¶¤r`­u—Bù¿XÜ57 WŒúTf&ÍLÿao—°@¥)¤º*3¤Ê‚²L“[VÜZt&Lë_-p|twU|±"ô
ËùK0¨·ÿý
ó
	¤Î(<]@*µ%ūbí/ñÀóì`eí\îYVÿ%•A%†TB"Å2‘NB5<¦;Ym1Ì@0w;ë֑ ÁÄiÿê¹ݳ«–õ¹p’-ü8ŴÈÍ™ýÖ. ¬¥y:½~¸ɴ‘ñG"G¼«4WRšũà÷4>ß~TÒçǷ¯gM»A֬…Êøüݻ¦͔+%éFÝÚö ‹әƒ°IÒ6QåM	oc0ÒØdÍH\؏Ӏ‰FÙ*QS¼€‚fH¾e¬9 ´dtQ=Él¹ÂRÖMRç û•‡.×YzLj˜¬#%jâ#R"‹1ڤ9Ð8
”\°€›Áôö®ëÕV„Ôz{LBG”ÿçe˜ïóIû\žp„x!ÛÏdz=pqO-Иb޼Øû¾"º,‰ìäJXßB!¶.|a;ùR
 °g9¥¹Ñk[BpÜàB	¼]ÛH-װ8|"cò;LŒ)únGZ£Ù=]’÷ ߱¿Ð.¬H7—Vì±,éz49X/	M¢S~Կ·‘ªVhvØYÈEÃöV§)§ÂtÂ9»å¡cÊ:ù“wˆ`tŠ7Ñb禹á00úël<á	-u‰êávyN`·ð¼\º`ÿNí0å!öÂ܉Nݴóñè5Ü&’ä80/Ñ&.«ÀFÆw¾Çá÷´ËF(/wcüÝ íZ;Ši]·¶fê+
9RwjA—6áô¶öj<s¼K7GŠåu ,
óǧ‡Áð7TËÔB6ͳÇ|±°‰_Äeà(úþ��Ãÿ×pCN
MÌ@&þÚ	°K‡,ÿœuûtÞBÖþ}I¸¹‚	£ŸÕÎÿƒ£ý„Þü§jê¸ÿhîÄ9jX³×÷_¬Þ{(ǥânÞ]¼¥`ZÏ#zG„ÎìÝÚåÍí|Ѱp“|dÚóuVêL›°\¾×+4\Ý鋵æù׳ÏðqÉN¯Ò]Dzü×/×Ix€£¸.÷򉤔8ümúü®‚;ß/Bm ªYþhqŸÐ>þ2ìá„îqyÜ{et¯“J@ëVÓ×ýÁÞ;ö¡œÔÜ)Î~î)(ƒ¿óà1áCî2¿ £ud¶sË,1¥äîøU<zx¶ÕÊü²¨ËX_9«öª+…‰tŠ]½#ÜpÐQ&NòƷQÛ
¬µG¡‰~]	FIdð²Šþé|Á*d¾ÀB¤ݢÝ )Þ:ѻ¤”ÓÌ!Ë0Òk$‹i…¥2+éÚƒóŠ7vÛ+	¼6ÒU­UtDŒä5Ð~Ã]½wuÏYÈj૥Ï0À2NɾÐÀe÷Àw縪@w<eùö£Ü 0íòmóµTþ¼H*ÎPrécU·ØîÖYÒ&'U|M¯ÑIG¡Ó?ÓPH,+ÎNÝ#x‰aAiÜñê^ºŠØyw=£«g”–J˗•ü%¿R"L»øNðضϨ0àtGæÅ©üIïl´ñã÷s"{5åŸýFª?s•üîê©jó¹ÂVæ^è7y’ó¯‘)ïð»n¬:s{¯ž|Tžk”A„OžÅŠ굽G߽z82WÏíþ ê²ÿbbônV/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1

vec3 texCoord0;
out vec4 fragColor;

uniform sampler2D OriginBuffer;

void main()
{
    vec2 texSize = vec2( textureSize( OriginBuffer, 0 ) );
    texSize = vec2(1.0) / texSize;
    texCoord0.z = 0.0;
    texCoord0.xy = vec2(gl_FragCoord.xy * 2.0 * texSize);

    float wtSum = 0.0;
    vec4 totSum = vec4(0.0);
    for (int ix = -1; ix <= 1; ++ix)
    {
       for (int iy = -1; iy <= 1; ++iy)
       {
        float wt = float(ix*ix + iy*iy) * 4.0;
        wt = exp2( -wt );
        vec2 texOfs = vec2(ix, iy) * texSize;
        totSum += wt * texture( OriginBuffer, texCoord0.xy + texOfs );
        wtSum += wt;
       }
    }

    totSum /= wtSum;
    fragColor = totSum;
}
õzxœÕX[s9~çWh'y/;vvkâJmŒjvIöÝjЎºՑÔfkÿûž#õE@·Ç3›ÝÔb4Òѹ~ç"úgßðղÿd(ӽâë!ía‡¼>¿¸"³O“ÛÉ
ì¨T*j¸Lzµ”?’ņ‘vâ”&{25aN™˜·dcLªßöû»ݮ÷Åô¸ì°DódÝÏå/6\“ˆFà3¥Ê!ÏË[27YÈe/'|ùa±ŒƓÙr:ŽfóÑÛñÃô¥ÇLœ
2µìù¨éšá^¾À4ÙH‚\²¥‚‡$¨΀0§ÅtO28o*­dCƒ@ª&#;n6°Ï|ùyB׊±˜%†¤JnyȒ¹ÌedvT1"U—Pa˜J=[&ö]S+hb
¢!<v¹:d§¸1,ñ$®˜Ù1XÙˌÐ$<ŠMÜIEJï;¾–U‚ÎHBŽqÖ\U5Kýª"sܢLŠ
¹ð$’*¶XÉýǜҁ!¸C¨©a›S¼Êtäñì#³„)pêC¶}OCzsè¸*T¼Cù!ɒ)σ*üü­˜z[¦4Zp	"mP|©ˆLѬA„
ì
:ë¾#
W{+àçÛ¹ƒ ëï$háòÇF£DB€ÚQºÞØÃÈÏ۳%N*6N ŒQ…á´ µ5;O‡¤å‹E ²ÐbÅ¥4ø…®ñ”uBî­yŒ‚ъm9Û9vR¹ÊãI@óL±‰MTìKƕ¤œ &1;ªë$ëIµî>é¯Sñê²wÞۘXø)?šÝ	ÿÒ-»W¿Õê÷	
C°.‹IÈ"È1Ýzá9_
ؼ$¤%ıe¶ݑó§vR‰\<E"Wÿ`¯KPÈeµT,¸s~²cMt̍ÇøèPERñe"—T¤ê±t‹€`È&]Y*bý9bӯ<]–Ë;EÓe hœz¼í¢bR_S»s¥¤ba±]	XÓ8¦KøB3áÛîÖ<RåqsËZ­W#\ý0Ÿ*7ƒéhùñӹGïï|¾œÞ.îç“Åä~Ö@´ý}qӴ9˜ÌîßßLa»õ"O4òxâ|.Eà «zk¡…à«,Â43Do(V$™™43-ø€*\‘
¥êºĢ6*4% ÝJ–0I[ÿldvIR©m}¾.M֠Ñ2;YÙ^·þ"ւî-–4ĠàwEV`ÉuñŒà7¨	–سC6…†ŠÁGR)fxbðh$$Ä!•Ÿ“
‹qÌP{0åÝrBMœÎÁqr·€*|=¼@Ìç7÷ÃL¿ÇB
­¹
DE¥µ‚Mq”iÞ~PrŚ·o£u»AV
²3”ñë7oê6S¦ç3ÉuíYo{ÅéÂ9¹ŽÒ,ÛÃ"µÊHc½¼@raçµ´ØæÐƒz—|Éh½BÀ5Ȱi>Êl½,ë:*3ـþÂBë÷4m¢%[®d‚iÖ@Uְº͘JF4`f0¿½«õõf¯ÇBj½o¢Ðãÿ4MȣƐGW›}M„@9abŠH®URe¸¡	ÐÔ‡FþÜV†	”¯4­¤ݺØÉ9N«íŽÍY—¾mQ=½¹ÚjÙ<†‘ª»ƒ˜"ÃF1×f±£³Hß&½ónùÖ!gù²{oÌap5û³6a–L ¼A9<óLk³\Ä27¨›3¶øO:ÅÂE×þãBÕü`D<M‹6iJ‚B»ó޹}ukž*‰ϣº(÷NŸHéjCÕÆe»ôyåî’Op0î xí«qq(¼qÏëÕG_r§‡ÅeÁ¾94Hw‡*Ñ`lFÕU}§f·ü.°âÞrU­àäy°“Øì9Z§K‰#ÎIÁÉýc7_¢òn0¾#_ðè {Ç0JŽZLfc@ªm=ìqäÏï;
µ6…ۥM•-¾ʝ뒯}¯c|XƒÚ9yÑO}ΥwŽì?0[…õàñx¤ì`›dp}‹j£‡ݬ
Æۊœ„_‹ \ՆæêPµÿØé¾øZµÚ|íÔ[[ª>ãÈý u·Tš<'‡šûÂ\m¦,/Lu¡ø-ÏۼñºZsö”b€þ'ßéÖãˇÇûÁè!ý@¥B•ª°qBßù¹urXü'لièP¿i¡m†~¯1ŽY#FNl8€×Fp1NÍÛ\]íEÿ÷¥‰mS]ï
zUm?E\Ÿgè£ïUàþ¦}‡
ò
­ªKßÿ‚ӜŹ×³µƒîß칷¤¼B”Sl1V–ó㇣ó03p™?âW
Z'³óÌ刾þ†×þþƒk»¼ÒCõ×g^°KŽoˆíÆ߼쬎GV`ä2²èóGb†ò£Òë/8Âg칪Ãó_‹Õ˓¹»žOªé"ÿ)‚3^‡õÿ9½¬zcz𫂩ÍÏÏˈnWÔý.ש~l	ܯ@Ä=€ ÿnXõ`炢ü.9æ¯5ô3ÏåÃÉu¯_=µ^uýüéú‰w–ÍÇw
s»…¶×%fuÁXçBžp
ñ__t%¸ëÌì÷I ð×<+Uæ}žɧ‰|’ôϡ,›û;"•ÙH—u œu¸¦¼MÁd¢u»ðn¾Ü9†ɿž@ÕO5/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

// add enum defines
#define scatter_reflect 0
#define scatter_transmit 1
#define scatter_reflect_transmit 2

#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1
#define QSSG_ENABLE_BINORMAL 0

#include "vertexFragmentBase.glsllib"

// set shader output
out vec4 fragColor;

// add structure defines
struct layer_result
{
  vec4 base;
  vec4 layer;
  mat3 tanFrame;
};


// temporary declarations
vec3 ftmp0;
 vec4 tmpShadowTerm;

layer_result layer;

#include "SSAOCustomMaterial.glsllib"
#include "sampleLight.glsllib"
#include "sampleProbe.glsllib"
#include "sampleArea.glsllib"
#include "square.glsllib"
#include "calculateRoughness.glsllib"
#include "evalBakedShadowMap.glsllib"
#include "evalEnvironmentMap.glsllib"
#include "luminance.glsllib"
#include "microfacetBSDF.glsllib"
#include "physGlossyBSDF.glsllib"
#include "simpleGlossyBSDF.glsllib"
#include "abbeNumberIOR.glsllib"
#include "fresnelLayer.glsllib"
#include "refraction.glsllib"

uniform sampler2D refractiveTexture;

bool evalTwoSided()
{
  return( false );
}

vec3 computeFrontMaterialEmissive()
{
  return( vec3( 0, 0, 0 ) );
}

void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * microfacetBSDF( layer.tanFrame, lightDir, viewDir, lightSpecular, materialIOR, roughness, roughness, scatter_reflect_transmit );

#endif
}

void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layer.tanFrame, varWorldPos, lightIdx, viewDir, roughness, roughness );

#endif
}

void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += tmpShadowTerm * microfacetSampledBSDF( layer.tanFrame, viewDir, roughness, roughness, scatter_reflect_transmit );

#else
  layer.base += tmpShadowTerm * sampleGlossy( layer.tanFrame, viewDir, roughness);

#endif
}

vec3 computeBackMaterialEmissive()
{
  return( vec3(0, 0, 0) );
}

void computeBackLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#else
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

float computeIOR()
{
  return( false ? 1.0 : luminance( vec3( abbeNumberIOR(glass_ior, 0.000000 ) ) ) );
}

float evalCutout()
{
  return( 1.000000 );
}

vec3 computeNormal()
{
  return( normal );
}

void computeTemporaries()
{
     ftmp0 = vec3( reflectivity_amount );
     tmpShadowTerm = evalBakedShadowMap( texCoord0 );
}

vec4 computeLayerWeights( in float alpha )
{
  vec4 color;
  color = layer.base * vec4( ftmp0, 1.0);
  return color;
}


void initializeLayerVariables(void)
{
  // clear layers
  layer.base = vec4(0.0, 0.0, 0.0, 1.0);
  layer.layer = vec4(0.0, 0.0, 0.0, 1.0);
  layer.tanFrame = orthoNormalize( tangentFrame( normal, varWorldPos ) );
}

vec4 computeGlass(in vec3 normal, in float materialIOR, in float alpha, in vec4 color)
{
  vec4 rgba = color;
  float ratio = simpleFresnel( normal, materialIOR, uFresnelPower );
  vec3 absorb_color = ( log( glass_color )/-1.000000 );
  // prevent log(0) -> inf number issue
  if ( isinf(absorb_color.r) ) absorb_color.r = 1.0;
  if ( isinf(absorb_color.g) ) absorb_color.g = 1.0;
  if ( isinf(absorb_color.b) ) absorb_color.b = 1.0;
  rgba.rgb *= (vec3(1.0) - absorb_color);
  vec3 refractColor = refraction( refractiveTexture, materialIOR ) * (vec3(1.0) - absorb_color);
  rgba = vec4(mix(refractColor, rgba.rgb, ratio), 1.0);
  return rgba;
}

7xœÕW[“Ú6~çWœ&y€ԁ½½t3™Î²”)a7Iú¶#l4‘-G’!´ÓÿÞs$Û֤éL.S†eA:×ï|çHî=ÿН–{Ã@e[-–+íAÎNN/`ún|=¾Â)ͬPi·Qò˜¯8¼±¸“d,ÝÂÄF…djYh/aemf.{½ÍfÓýh»Bõ¤yjDºìþç+a ’þϘ¶ b²y~
3›GBuÁgoæýáh<}˜ŒÃélx9º›<óëP0	gžÃ[֜öŠn`¥d„~aͤˆ Üé 3
%l9êÛ]T)™aa¨tÄҐÃFØîóº‰BØRsžðÔB¦ÕZD<ªÄÉÊLÅvÃ4¥`Òr"¼k.·úit‚2‰AW¨HÑ\l´°–§5n7W¶*–FµéÒP¡ïí:S)‘F‚êl¡j¨š“~±óÖâ\cˆš¬ˆ4V:q\)ðã>èÐí³
f‰¹)‹<š¾…O¹FPïòÆû¸¤WûÀíJEÅ[pòAžF\×DRÑ´ïÜ4»Xsm(ƒs,´1dÄRƒÊ(­Ã%Cs¥œƒ/£J£ÃÅÖ9øýz7X‚þFa¾\5*–²¼›•S&[¤ït+žì,¸:¡3Î4•ÙBÒ.í¢ºØç¾¡Ì#Ç'”±ð[’–¡@«w’3LZóµàoNI©6(yXR«#Ï5/A<† æs¡!
’XJ²„5IøÁ4X¦yWée¯Ĥ·Ìä‹óîIweYoùáôºløg~ùë½z­V¯,Š0»<ˆÇØc¦õÔ2ì1ý y,9ùäюÕ,5‰°pzLi'r֪dÞÌf#Lìª?>¼}wRӮ_½Ÿ\?ÜÝÎÆóñíôˆÐ|øÇüêØf<½½}5ÁÈ[OZÀd¯åŸn4[R™úȁîR)Åâ‰ÃÃpfŨTn³ܶðr>¼€•J*ý²BÎX‡–¨QÂçW°U¶“KÛú«ÞÂݽ,8ú…4;ËR*Áí¿Ñ<ٷ<¡HoÑv(™?‹LË+Û$›a”j3ÇG…º¿Òr-ëÙìêv«’×ÔÃ8µwYï¤K2É'tÊ߾ÓjOo_iÎw?æØÓM;!“aN£å^åËbhš¤8ž\}öG>í×,;&5L×B«”Ê{DJæ‰Hé¤iÚLD¨UÌBnû³ë›&‰lµ5#©ŒÙ“0‚ ø¼LŒÅJ¹œP­j\(%ҘoԌÎÐvÇñGs¤Yچ˜Iœ4¤I«…L8§ƒYÊo0e[w˜cð„8Ð%ù6œî
Ҋò7‚ʊɽMSÔyIiʠú-‰$×BïVhŽî-"qŒGÒÁê,ãTr/K…‡MR„>¾½Š%¦nð|ÄȲx*â½îŒp0Ž~›§#ÌÐ1¾Kí?¿Úoxî:óîRÚÕÇi÷„(uÝg“ò>څxٮA
‰
ƒ÷RÓ%É÷¾Ûu/ÇGÜX!j²]Dj½Ëqô©ú¢þ‹ýÐ~,°û¡<‡Ýüðóê5Óѝ2A-ã
÷&lÿ
JGöÚÈ8NùÊÍvþTGÑAøpwÛ~/zÎ~Q3K?‹Ñ1þá¤ù¶Áû’-÷£˜jY}¼æ}Éô+†_Óì#ÿûÑ÷ŸÊñ9áæ–!Œ~Ôðù©ý€að³jj×ošϸ@
9ÛxAùÕé]BuÕ*o§{Óí£èAo®<ƒÜâeûÀÚq¯†;ÏÔå@ÞWª¡¿çÅ}ZpS¨àk"½‚Ç×Ì6^Ä?
”ÒQ-„‹ҨcÌ{NÄ6í]K3™­tv7ÿÐ?7€ÿ‚Žê׿vE/ÑÙYPüA'¨ŠúPiœ·×éêå"¨—2¨q (CyYATƂ™x|D*,Žñ§ÏæBÄQ¢]Ÿ>Ž„ø,½e³O³‚8yóˆc_"YÎVڮ”/2×vJmzRZbo€Ÿ1íºb+àËõ¸0or/****************************************************************************
**
** Copyright (C) 2014 NVIDIA Corporation.
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt 3D Studio.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/

// add enum defines
#define scatter_reflect 0
#define scatter_transmit 1
#define scatter_reflect_transmit 2

#define QSSG_ENABLE_UV0 1
#define QSSG_ENABLE_WORLD_POSITION 1
#define QSSG_ENABLE_TEXTAN 1
#define QSSG_ENABLE_BINORMAL 0

#include "vertexFragmentBase.glsllib"

// set shader output
out vec4 fragColor;

// add structure defines
struct layer_result
{
  vec4 base;
  vec4 layer;
  mat3 tanFrame;
};


// temporary declarations
vec4 tmpShadowTerm;

layer_result layer;

#include "SSAOCustomMaterial.glsllib"
#include "sampleLight.glsllib"
#include "sampleProbe.glsllib"
#include "sampleArea.glsllib"
#include "square.glsllib"
#include "calculateRoughness.glsllib"
#include "evalBakedShadowMap.glsllib"
#include "evalEnvironmentMap.glsllib"
#include "luminance.glsllib"
#include "microfacetBSDF.glsllib"
#include "physGlossyBSDF.glsllib"
#include "simpleGlossyBSDF.glsllib"
#include "diffuseReflectionBSDF.glsllib"
#include "fresnelLayer.glsllib"

bool evalTwoSided()
{
  return( false );
}

vec3 computeFrontMaterialEmissive()
{
  return( vec3( 0, 0, 0 ) );
}

void computeFrontLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * diffuseReflectionBSDF( normal, lightDir, lightDiffuse);
  layer.layer += tmpShadowTerm * microfacetBSDF( layer.tanFrame, lightDir, viewDir, lightSpecular, materialIOR, roughness, roughness, scatter_reflect );
#endif
}

void computeFrontAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += tmpShadowTerm * lightDiffuse * sampleAreaDiffuse( layer.tanFrame, varWorldPos, lightIdx );
  layer.layer += tmpShadowTerm * lightSpecular * sampleAreaGlossy( layer.tanFrame, varWorldPos, lightIdx, viewDir, roughness, roughness );
#endif
}

void computeFrontLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += tmpShadowTerm * diffuseReflectionBSDFEnvironment( normal, 0.000000 ) * aoFactor;
  layer.layer += tmpShadowTerm * microfacetSampledBSDF( layer.tanFrame, viewDir, roughness, roughness, scatter_reflect );

#else
  layer.base += tmpShadowTerm * sampleDiffuse( layer.tanFrame ) * aoFactor;
  layer.layer += tmpShadowTerm * sampleGlossy( layer.tanFrame, viewDir, roughness);
#endif
}

vec3 computeBackMaterialEmissive()
{
  return( vec3(0, 0, 0) );
}

void computeBackLayerColor( in vec3 normal, in vec3 lightDir, in vec3 viewDir, in vec3 lightDiffuse, in vec3 lightSpecular, in float materialIOR, float aoFactor )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackAreaColor( in int lightIdx, in vec4 lightDiffuse, in vec4 lightSpecular )
{
#if QSSG_ENABLE_CG_LIGHTING
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

void computeBackLayerEnvironment( in vec3 normal, in vec3 viewDir, float aoFactor )
{
#if !QSSG_ENABLE_LIGHT_PROBE
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#else
  layer.base += vec4( 0.0, 0.0, 0.0, 1.0 );
  layer.layer += vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
}

float computeIOR()
{
  return( false ? 1.0f : luminance( vec3( 1, 1, 1 ) ) );
}

float evalCutout()
{
  return( 1.000000 );
}

vec3 computeNormal()
{
  return( normal );
}

void computeTemporaries()
{
     tmpShadowTerm = evalBakedShadowMap( texCoord0 );
}

vec4 computeLayerWeights( in float alpha )
{
  vec4 color;
  color = fresnelLayer( normal, vec3( material_ior ), glossy_weight, vec4( vec3( 1, 1, 1 ), 1.0).rgb, layer.layer, layer.base * vec4( porcelain_color, 1.0), alpha );
  return color;
}


void initializeLayerVariables(void)
{
  // clear layers
  layer.base = vec4(0.0, 0.0, 0.0, 1.0);
  layer.layer = vec4(0.0, 0.0, 0.0, 1.0);
  layer.tanFrame = orthoNormalize( mat3( tangent, cross(normal, tangent), normal ) );
}
¦ÕxœÕX[“Ú8~çWh'y€ÇЗ©ÚM×ÔVCÓµ„î4$Ù7JØ«F¶I†°Sóß÷ÉW0™lU2™uQؖŽÎå;¹ñ¯Žý‘‘LŠo#Cº£¹\ސùûéýôfT*5\&~+å?È2b䭁™8¥ɁÌL˜S&†æ5‰ŒIõë~¿ßûÏe_ð€%š'Û~.qM6\0÷”*Cäy^ߓ…ÉB.ýœðåÛåj8žLç«Ùt4ž/Ư'O³—N\3p*È̲g䝦[†sùÓ$’"¹dGIP­aN+ Šéd°ÞTZ%ȆT!MFöÜD0Ïê,òõ„nc1KI•Üñ…%9rYȍÙSňT¡Â0•¼;&Èi4±Q(O€]®Ù+nKj×ÌìŒdFhùÆ'R‘}ÇײJŒ$äègMª¯YêW™ã¶É¨¨O6RÅ6Vrü˜S:0g5-lsŠW™.œ<™¿#–0 >ekÐ÷ԥwMà*W¡óÖå‡$KB¦jBPáð·bÚEì˜ÒhÁ58ˆtAeÀR™¢Y=‚.(°+è,|)z®V?îÇä\‚Ð?HÐÂåõFe¢¥ëÈ.F^¸ޮ-ã¤â`ýÂUè>ˆ¤¶fçéàC:\;_"m¬X¢”¿Ò-®² ähùäI0
F+¶ãlïØI!ä(]j$Í3Å
Ï!¨Ønj+‚Xä>‰ÙQ5Ø&™/ն_`Òߦâյ?ð#‹zʏç÷E¿tÃ_ïêw:ý>¡aÖe1	ÙrLw^¸ËD®¨H#JGƒä²9,²˜'6¯š1ýÄcp]ïMW qZãm'›k;s¥¤ba1]	ØÒ8¦+x¡™05fn\À#U5nnX«íºÆCª‰æB:—bÆ(šè˜×õ:ZT‘\uJš·‹Å\x7œWïÞj«ë3Ÿg÷«§ÇÅt9}œŸ!ZŽÿ½¼;79œÎŸßÜÍ`ºó"OòxɰOà*È!D»¿Z¾þÁz^3CtD±RÈ̤™éÀ
²;¸!X4’BªÛ2F´QY`0	Š@q#Pa>áð*P¾![aòt~ëdvMR©mݼ-M¶ Ñ*;ÙÝv~‘kAa
¾-øݐ5Xr[¼X|ƒ\µ|Àޘ5Ù*·¤RÌðÄàҍSªù:0ٰ·us!P]# ;gŒ%&N/o;ŽÑ^õ—ÆÌH´šÃóЗû%”hZ7¶0«æÍÅâîq”i#ã7X…a߭¼YQiH)ÁfاœŸ~RrÍÎOß)FÛfËün›DôFM֪ÖÜa§K‡_‰M ,º£Û62%õÅɅ}\T´³tÒ*†SðUáž!b,œ!ìçôÿŒîúcFÛg@µ Ã}óYfÛÒF·Q1hˆôWºˆxCÓsTãdǕL0£ÏPÅ<PrCf†‹û‡6Š4:艐ZÎQhށÐFÓYK)j²ÜËöxݞÍ(—\]²¡vÂdR§c³E¨-ì´6EèŽc®5t0Gk‘¾Kžý‘^ÁEºŽµäb½dËSwy+%ÁÝZxå»@‡ÞsUà>ßÈI6h™ŽF)C¯9â¼<äªOŸ½|ˆÊèߠYB+^ðM£&&°qO~YNç°Ð泏•‹üøs3õɅ­`·f——þ(ÖÚÿ¶ÅMwsò¢z5$JŽllš†Ëݮ¼“­±‡5‰A#¼iõ–ŽÊ1P^¨iø©ø¦ö›¦JßЦ*¤ªŠ.!N!ÞQõA*>IíÕ,.ñ®cúGÚà®eùù¯طGãßêèYèVOϏÃñŸŽ‹[Ø•­؜‹7¨(ßViçâ³îmèzä¿Z‰ÂQãK*\^àÚê²ø¿/oÿ“+>Gܞ&ˆÑ÷*4‚iߡ|E«ÚRõ€æ,ÎQƒ˜mmBþi׽&eãZtPoð‡FžƒŽ¶5£ÌÀ1èˆð±WK_3·N9–ßlw»kx^åݨGìe–¯q¢öˆ+†ÀÿÊb`/¯&þósµôы֖j™Ÿt8ӹp¡êäiOÞ%ç:ð²+u;}Ê-ø*Ã~´g¶.¾‹ÃvÖåÇG@–×
µ–ØÓ˜Rëà»k•é¨òG¡ÐO^ùW×óh¸ù­ã۹¬ùe£ç»óiiÓå‘Mª8_v­²ʄË+¯ö_‡s·º\XLñšY²5bø—±öê­ÝÕmºü	%þˆ7μ¼¡€Xµš rÙßX5ÈW_üë܊¿.Í&ægrzˆ¬%IU¹nŠķÍ{òÕݪpŸüzÕ÷–À}"î5NË]—a^^¸cf¨XYJkbÏW۵W/ò^mwð
i·eñ,ā²®Lñ„hLøœÂï¡Rѵ€b…³NÍ~Ÿ?ôYκ¹å[ÊéŽr²û|	eѱT&’®üƒr]ûª[Õ"hƒµî{v>Ü;.Åÿ Hƒò ÿÿÿÿÿÿÿQTMETADATA !¿x,org.qt-project.Qt.QQmlExtensionInterface/1.0wQtQuick3DMaterialPlugincurisQtQuick3D.Materialsÿ;ðlÿÿœÿÿ|ìÿÿ4üÿÿ”ÿÿÔ,ÿÿìLÿÿäœÿÿ¬ÿÿL¼ÿÿdÜÿÿ|ìÿÿ¬ÿÿÄÿÿÜLÿÿü\ÿÿŒÿÿ4¼ÿÿTÌÿÿlüÿÿŒÿÿ¤¬ÿÿ¼Üÿÿ<ÿÿ\¬ÿÿ¬ÜÿÿÌìÿÿ4 ÿÿLL ÿÿdzRx$Xÿÿ0FJw€?;*3$"D°ÿÿ\XÿÿtPÿÿŒXÿÿ¤`ÿÿ¼8ÿÿÔ@ÿÿì8ÿÿ,Hƒ_Hÿÿ$@ÿÿ(Fƒ`ÃDPÿÿ'HƒZd`ÿÿ|Xÿÿ/Hƒbœhÿÿ´`ÿÿ–Ìèÿÿ*ä@ÿÿü8ÿÿHƒ
IÃLÈÿÿSBBŒA †A(ƒI@y
(A ABBB[
(A ABBGLlØÿÿfBBŽE B(ŒA0†A8ƒG€ 
8C0A(B BBBA¼øÿÿ0AƒjÜÿÿ4ô`ÿÿKF†AƒT R
AÃAÆADGÃAÆ,xÿÿD°ÿÿ'\Èÿÿ-YStàÿÿ5DpŒÿÿAYcP"0!"À!P,€,È!"à#0$€$°$@+ðÿÿÿÿÿÿÿÈ! $à$p+à! %`%ðÿÿÿÿÿÿÿà!P%%-À,€"L	_			¶	Î	ß	î	

%
5
@
P
_
i
w
™
Ø
, !°!õþÿoð	0
ú
 !0¨x0	ûÿÿo€þÿÿo˜ÿÿÿoðÿÿoùÿÿo°!&6FVfv†–¦¶ÆÖæö  & 6 F V f v † – ¦ ¶ Æ Ö æ ö !!&!GCC: (GNU) 5.3.1 20160406 (Red Hat 5.3.1-6)libqtquick3dmaterialplugin.so.debugvÏ]–.symtab.strtab.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.qtversion.qtmetadata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.data.rel.ro.dynamic.got.got.plt.bss.comment.gnu_debuglink¸!€!#À!6"L0!![°!‚P"Ž !­ sÄP!!é@!!
-0<
À,<f€+'‰
@3Éן
@/øµ
@-äÍ€+'ð0!A\!!2(@¸!LX!!¤€"÷"#È!Aà+5j%¬0$ïp+%à!`P%¢ !¸°!Áø!°ßp$M°$,n $• %'ÑÀ!Þ€$ÿ(!!Ð'fBð$(}P$ܨ!È@$r€$“p&SG
P,e`%/¡@+0Ñ@&*ì€!0	à$C	@&*^	 %–Ð	
€,7
à#K9
 %'u
°+-Èð0	˜x¨	Ø
0!,
@, ”ˆ !°!¸!À!°! ! !0!!›
4L,R°"kÞÿ>r´Ø
`!!
3
[
o
µ
ú
N°Í/Ii”Äñ#a ©·9k~‘ ­¿ì",(!!8e…´ ÃAa(!!h ¤À"·â0Zy¶	ؼÐü1Ev¾Ûü__JCR_LIST__deregister_tm_clonesregister_tm_clones__do_global_dtors_auxcompleted.6904__do_global_dtors_aux_fini_array_entryframe_dummy__frame_dummy_init_array_entry_ZL17qt_pluginMetaData_ZGVZ18qt_plugin_instanceE9_instance_ZZ18qt_plugin_instanceE9_instance_ZL42qt_meta_stringdata_QtQuick3DMaterialPlugin_ZL36qt_meta_data_QtQuick3DMaterialPlugin_ZN12_GLOBAL__N_111initializerD2Ev_ZL16qt_resource_data_ZL16qt_resource_name_ZL18qt_resource_struct_ZN12_GLOBAL__N_111initializerD1Ev_GLOBAL__sub_I_qrc_qtmateriallibrary.cpp_ZN12_GLOBAL__N_15dummyE__FRAME_END____JCR_END___ZZN18QMetaTypeIdQObjectIP22QQuick3DCustomMaterialLi8EE14qt_metatype_idEvE11metatype_id_ZN23QtQuick3DMaterialPlugin18qt_static_metacallEP7QObjectN11QMetaObject4CallEiPPv_ZNK23QtQuick3DMaterialPlugin10metaObjectEv_ZTI23QtQuick3DMaterialPlugin_Z35qCleanupResources_qtmateriallibraryv_ZThn16_N11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialED0Ev_ZN23QtQuick3DMaterialPlugin11qt_metacallEN11QMetaObject4CallEiPPv_ZThn16_N23QtQuick3DMaterialPlugin13registerTypesEPKc_ZTIN11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialEE_ZThn16_N11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialED1Ev_GLOBAL_OFFSET_TABLE__DYNAMIC_ZTV23QtQuick3DMaterialPlugin_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI16QQmlListPropertyI22QQuick3DCustomMaterialELb1EE8DestructEPv_ZN23QtQuick3DMaterialPluginD0Ev_ZThn16_N23QtQuick3DMaterialPluginD1Ev_ZN11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialED2Ev__dso_handle_ZN23QtQuick3DMaterialPluginD2Ev__TMC_END___Z15qmlRegisterTypeI22QQuick3DCustomMaterialEiPKciiS2__ZN11QQmlPrivate10createIntoI22QQuick3DCustomMaterialEEvPv_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP22QQuick3DCustomMaterialLb1EE9ConstructEPvPKv_ZTVN11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialEE_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperIP22QQuick3DCustomMaterialLb1EE8DestructEPv_ZN23QtQuick3DMaterialPluginD1Ev_Z27qRegisterNormalizedMetaTypeIP22QQuick3DCustomMaterialEiRK10QByteArrayPT_N9QtPrivate21MetaTypeDefinedHelperIS5_Xaasr12QMetaTypeId2IS5_E7DefinedntsrSA_9IsBuiltInEE11DefinedTypeE_ZTS23QtQuick3DMaterialPlugin_ZN11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialED0Ev_ZN23QtQuick3DMaterialPlugin13registerTypesEPKc_ZN8QPointerI7QObjectED1Ev_ZN23QtQuick3DMaterialPlugin16staticMetaObjectE_ZThn16_N23QtQuick3DMaterialPluginD0Ev_ZN8QPointerI7QObjectED2Ev_ZN17QtMetaTypePrivate23QMetaTypeFunctionHelperI16QQmlListPropertyI22QQuick3DCustomMaterialELb1EE9ConstructEPvPKv_ZTSN11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialEE_ZN23QtQuick3DMaterialPlugin11qt_metacastEPKc_ZN11QQmlPrivate11QQmlElementI22QQuick3DCustomMaterialED1Ev_Z32qInitResources_qtmateriallibraryv_ZN16QQuick3DMaterial10itemChangeEN14QQuick3DObject10ItemChangeERKNS0_14ItemChangeDataE@@Qt_5_PRIVATE_API_ZN14QQuick3DObject17componentCompleteEv@@Qt_5qt_version_tag@@Qt_5.15_finiqt_plugin_query_metadata_ZN9QMetaType22registerNormalizedTypeERK10QByteArrayPFvPvEPFS3_S3_PKvEi6QFlagsINS_8TypeFlagEEPK11QMetaObject@@Qt_5_Z17qmlRegisterModulePKcii@@Qt_5_ZN22QQuick3DCustomMaterial11qt_metacastEPKc@@Qt_5_PRIVATE_API_ZN7QObject16disconnectNotifyERK11QMetaMethod@@Qt_5_ZN22QQuick3DCustomMaterialC2EP14QQuick3DObject@@Qt_5_PRIVATE_API_ZNK11QMetaObject9classNameEv@@Qt_5_ZN19QQmlExtensionPlugin16initializeEngineEP10QQmlEnginePKc@@Qt_5_endstrlen@@GLIBC_2.2.5_ZN10QArrayData10deallocateEPS_mm@@Qt_5_ZdlPv@@GLIBCXX_3.4_ZN15QtSharedPointer20ExternalRefCountData9getAndRefEPK7QObject@@Qt_5_ZN19QQmlExtensionPlugin11qt_metacallEN11QMetaObject4CallEiPPv@@Qt_5_ZN22QQuick3DCustomMaterial11qt_metacallEN11QMetaObject4CallEiPPv@@Qt_5_PRIVATE_API_ZN11QQmlPrivate30qdeclarativeelement_destructorEP7QObject@@Qt_5_ZN7QObject5eventEP6QEvent@@Qt_5_ZN10QByteArrayC1EPKci@@Qt_5_ZN9QMetaType25registerNormalizedTypedefERK10QByteArrayi@@Qt_5_ZN19QQmlExtensionPluginD2Ev@@Qt_5__cxa_atexit@@GLIBC_2.2.5_ZTI19QQmlExtensionPlugin@@Qt_5_ZN19QQmlExtensionPluginC2EP7QObject@@Qt_5_ZN19QQmlExtensionPlugin11qt_metacastEPKc@@Qt_5_ZNK11QObjectData17dynamicMetaObjectEv@@Qt_5_ZN19QQmlExtensionPlugin16staticMetaObjectE@@Qt_5_ZN22QQuick3DCustomMaterial12markAllDirtyEv@@Qt_5_PRIVATE_API_ZThn16_N14QQuick3DObject10classBeginEv@@Qt_5_ITM_registerTMCloneTable_ZdlPvm@@Qt_5_ZN22QQuick3DCustomMaterial17updateSpatialNodeEP21QSSGRenderGraphObject@@Qt_5_PRIVATE_API_ZN14QQuick3DObject10classBeginEv@@Qt_5_ZN22QQuick3DCustomMaterialD2Ev@@Qt_5_PRIVATE_APImemcpy@@GLIBC_2.14_Znwm@@GLIBCXX_3.4_ITM_deregisterTMCloneTablefree@@GLIBC_2.2.5_ZN7QObject10timerEventEP11QTimerEvent@@Qt_5__cxa_finalize@@GLIBC_2.2.5_ZN10QArrayData11shared_nullE@@Qt_5__bss_start_ZN7QObject10childEventEP11QChildEvent@@Qt_5__cxa_guard_acquire@@CXXABI_1.3_ZTI22QQuick3DCustomMaterial@@Qt_5_PRIVATE_API__gmon_start___ZN22QQuick3DCustomMaterial16staticMetaObjectE@@Qt_5_PRIVATE_API_ZN11QQmlPrivate11qmlregisterENS_16RegistrationTypeEPv@@Qt_5__cxa_guard_release@@CXXABI_1.3_edata_ZN7QObject11customEventEP6QEvent@@Qt_5_Jv_RegisterClassesqt_plugin_instance_ZN7QObject11eventFilterEPS_P6QEvent@@Qt_5_ZN10QByteArray11reallocDataEj6QFlagsIN10QArrayData16AllocationOptionEE@@Qt_5_Z21qRegisterResourceDataiPKhS0_S0_@@Qt_5_ZN10QByteArray6appendEc@@Qt_5_ZNK22QQuick3DCustomMaterial10metaObjectEv@@Qt_5_PRIVATE_API_initstrcmp@@GLIBC_2.2.5_Z23qUnregisterResourceDataiPKhS0_S0_@@Qt_5_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3malloc@@GLIBC_2.2.5_ZN7QObject13connectNotifyERK11QMetaMethod@@Qt_5_ZThn16_N19QQmlExtensionPlugin16initializeEngineEP10QQmlEnginePKc@@Qt_5qt_resourceFeatureZlib@@Qt_5_ZN10QByteArray6appendEPKc@@Qt_5_ZThn16_N14QQuick3DObject17componentCompleteEv@@Qt_5ÈÈ$.öÿÿoðð@800Ø@		ú
Hÿÿÿo’Uþÿÿo˜˜àdxx0nB¨¨0
xØØs0~0!0!è
„,,	Š@,@,ÉÞ ’  s ©””ô·ˆˆ¤Á ! Í°!°Ù¸!¸ÞÀ!Àð ë°!°ðô ! Hù ! (0!!(!00(!,T!(|! "Y	 11