Ë xø9± +ãóÜ—ddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZddlZddlmZddlZ ddlmZddlmZddlmZdddddd d d d d dddddœZgagagada ejBjE«Z#d„Z$d„Z%d„Z&d„Z'Gd„de(«Z)Gd„de(«Z*d„Z+d„Z,d„Z-d'd„Z.d„Z/d „Z0d!„Z1d"„Z2d#„Z3d$„Z4d%„Z5d&„Z6y#e$r ddlmZYŒ”wxYw)(é)Úprint_functionN)Ú OrderedSet)ÚStringIO)ÚGetEnvironFallbackÚÚlibz.aú$!INTERMEDIATE_DIRz$!PRODUCT_DIR/genú $!PRODUCT_DIRú$|CONFIGURATION_NAMEú${root}ú ${dirname}ú ${source}ú${ext}ú${name})ÚEXECUTABLE_PREFIXÚEXECUTABLE_SUFFIXÚSTATIC_LIB_PREFIXÚSTATIC_LIB_SUFFIXÚSHARED_LIB_PREFIXÚINTERMEDIATE_DIRÚSHARED_INTERMEDIATE_DIRÚ PRODUCT_DIRÚCONFIGURATION_NAMEÚRULE_INPUT_ROOTÚRULE_INPUT_DIRNAMEÚRULE_INPUT_PATHÚRULE_INPUT_EXTÚRULE_INPUT_NAMEcóD—|j|«r|t|«dS|S©N)Ú startswithÚlen)ÚargÚprefixs ú8/usr/lib/python3.12/site-packages/gyp/generator/ninja.pyÚ StripPrefixr&Is$€Ø‡^�^�FÔØ Œs�6‹{ˆ|Ð ÐØ €*ócóª—tjd|«r|S|dk(rtjj |«Sd|j dd«zdzS)zTQuote a string such that it will be interpreted as a single argument by the shell.z^[a-zA-Z0-9_=.\\/-]+$ÚwinÚ'z'"'"')ÚreÚmatchÚgypÚmsvs_emulationÚQuoteForRspFileÚreplace)r#Úflavors r%ÚQuoteShellArgumentr2OsR€ô ‡X�XÐ&¨Ô,Ø €JØ ˆu‚_Ü × Ñ × -Ñ -¨cÓ 2Ð2Ø ˆs�{‰{˜3Ð 2Ó3Ñ 3°sÑ :Ð:r'cóŒ—|dk(r|jddtd«z«}ttjd|z«|«S)zYTakes a preprocessor define and returns a -D parameter that's ninja- and shell-escaped.r)Ú#z\%03oz-D)r0Úordr2Ú ninja_syntaxÚescape)Údr1s r%ÚDefiner9[sB€ð ˆu‚_ð � ‰ �#�x¤# c£(Ñ*Ó+€AÜ œL×/Ñ/°°q±Ó9¸6Ó BÐBr'cóX—tjj|«\}}|›d|›|›�S)z&Adds an arch string to an output path.Ú.)ÚosÚpathÚsplitext)ÚoutputÚarchÚ extensions r%ÚAddArchrBes(€ä—g‘g×&Ñ& vÓ.Ñ€&ˆ)Ú™d¡IÐ .Ð.r'có4—eZdZdZd„Zd„Zd„Zd„Zd„Zd„Z y) ÚTargetazTarget represents the paths used within a single gyp target. Conceptually, building a single target A is a series of steps: 1) actions/rules/copies generates source/resources/etc. 2) compiles generates .o files 3) link generates a binary (library/executable) 4) bundle merges the above in a mac bundle (Any of these steps can be optional.) From a build ordering perspective, a dependent target B could just depend on the last output of this series of steps. But some dependent commands sometimes need to reach inside the box. For example, when linking B it needs to get the path to the static library generated by A. This object stores those paths. To keep things simple, member variables only store concrete paths to single files, while methods compute derived values like "the last output of the target". có�—||_d|_d|_d|_d|_d|_d|_d|_d|_d|_ y)NF) ÚtypeÚpreaction_stampÚprecompile_stampÚ actions_stampÚbinaryÚbundleÚcomponent_objsÚ compile_depsÚ import_libÚuses_cpp)ÚselfrFs r%Ú__init__zTarget.__init__‚sY€à€D„Ið €DÔð!€DÔà€DÔà€D„Kð€D„Kð €DÔØ€DÔð€D„Oð€D…Mr'có—|jdvS)z;Return true if this is a target that can be linked against.)Ústatic_libraryÚshared_library)rF©rPs r%ÚLinkablezTarget.Linkable¡s€à �9‰9Ð<Ð <Ѐð ‡|�|�FÔØ × Ñ Ó  &Ñ (Ð(Ø × Ñ Ó Ò 5 ×!5Ñ!5Ð5r'có6—|jxs |jS)z_Return the path, if any, that should be used as a dependency of any dependent compile step.)rIrHrUs r%ÚPreCompileInputzTarget.PreCompileInput¶s€ð × Ñ Ò 6 ×!6Ñ!6Ð6r'cóR—|jxs|jxs |jS)zKReturn the last output of the target, which depends on all prior steps.)rKrJrIrUs r%r^zTarget.FinalOutput»s"€ð �;‰;Ò ;˜$Ÿ+™+Ò ;¨×);Ñ);Ð;r'N) Ú__name__Ú __module__Ú __qualname__Ú__doc__rQrVr[r_rar^©r'r%rDrDks%„ñò,ò>=ò>ò6ò7ó rt)rPr@Úoutput_file_bases r%Ú_SubninjaNameForArchz NinjaWriter._SubninjaNameForArchqs-€Ü—w‘w×'Ñ'¨×(=Ñ(=Ó>¸qÑAÐÚ,ªdÐ 3Ð3r'c ó´‡—|‰_|d‰_|d‰_|d|}t|d«‰_t |j dd««‰_|j dd«‰_tjj‰j|«‰_ d x‰_‰_‰jd k(rItjj!|«‰_|j d d «}|r|‰j_‰jd k(�rtj$j'||«‰_‰jj)|«}‰j*j-d ‰j.|«‰j*j-dd|z«‰j*j-dd|z«‰j*j-dd|z«‰j*j-dd|z«‰j*j-dd|z«‰jd k(r[‰jj1|«‰_t5‰j2«dkDr#t7ˆfd„‰j2D««‰_g}g}d|vrù|dD]‡} | ‰j:vsŒ‰j:| } |j=| j?‰j««|j=| jA««| jBsŒwd‰j_!Œ‰|D� cgc]} | sŒ| ‘Œ }} |D� cgc]} | sŒ| ‘Œ }} ‰jEd|«}‰jEd|«}|‰j_#|‰j_$g} g} ‰jK|| || «‰j_&‰jjLxs|}g} | |j dg«z}|�r׉jd k(rSt5‰j2«dkDr;‰j2D],}‰j*jU‰jW|««Œ.d }‰jd k(r‚tj$jY|‰jZ|‰j\«tj$j_‰j|‰j\‰j`‰jb«}n8tjje‰j‰j\ˆfd„«}‰jg‰j*||||||«}|D�cgc] }|ji‰jb«sŒ|‘Œ"}}|rœ‰jd k7st5‰j2«dk(r#||D�cgc]}‰j]|«‘Œc}z }nRtQd|dz«n@‰jd k(r1t5‰j2«dkDrtkjltn«}‰jjLxs|}‰jd k(r;‰jjpd k(r"|‰j_9|‰j_:d }| xr| }|s‰jjLs|r2‰jw|||||«}‰jr| j=|«‰jr‰jy|| |«}|sy ‰jj{«sJ|«‚‰jScc} wcc} w#tN$r;tQdtS| ««tQdtS|j d«««‚wxYwcc}wcc}w)!zîThe main entry point for NinjaWriter: write the build rules for a spec. Returns a Target object, which represents the output paths for this spec. Returns None if there are no outputs (e.g. a settings-only 'none' type target).Ú target_namer¤ÚconfigurationsrFÚstandalone_static_libraryrÚ target_rpathz\$$ORIGIN/lib/Nr˜Úmac_toolchain_dirr)r@Úccz$cl_ÚcxxÚcc_hostÚcxx_hostÚasmz$ml_r«c 3óΕK—|]\}|tjttjj ‰j ‰j|««d««f–—Œ^y­w)ÚwN)r6rqÚ OpenOutputr<r=rwrsr¸)Ú.0r@rPs €r%Ú z(NinjaWriter.WriteSpec..œs`øèø€ð#$ñ #�ð ”<×&Ñ&Üœ2Ÿ7™7Ÿ<™<¨×(;Ñ(;Ø(,×(AÑ(AÀ$Ó(GóIàó ó!ô "ñ#ùsƒA"A%Ú dependenciesTÚactions_dependsÚcompile_dependsÚsourceszextra_sources: zspec.get("sources"): có2•—‰j|dz|z«S)NÚ-)r†)r=ÚlangrPs €r%Úz'NinjaWriter.WriteSpec..äsø€˜t×9Ñ9¸$À¹*ÀtÑ:KÔLr'zdWarning: Actions/rules writing object files don't work with multiarch targets, dropping. (target %s)rS)>r‡r•r¤rDr£ÚboolÚgetÚis_standalone_static_libraryr½r-ršÚ IsMacBundler1Ú is_mac_bundleÚxcode_settingsrŽÚ XcodeSettingsr¾r.Ú MsvsSettingsÚGetArchrrÚvariableryÚGetActiveArchsÚarchsr"ÚdictÚarch_subninjasrnÚappendr_rarOr´rGrHÚWriteActionsRulesCopiesrIÚ TypeErrorÚprintÚstrÚsubninjar¸ÚVerifyMissingSourcesrur ÚPrecompiledHeaderr†rxÚMacPrefixHeaderÚ WriteSourcesÚendswithÚ collectionsÚ defaultdictÚlistrFrLrMÚ WriteTargetÚWriteMacBundler^)rPÚspecr‡Úgenerator_flagsr�r¾r@rÊrËÚdepr£r8Ú extra_sourcesÚmac_bundle_dependsÚcompile_depends_stampÚ link_depsrÌÚpchÚfÚ obj_outputsÚorMr?Úis_empty_bundles` r%Ú WriteSpeczNinjaWriter.WriteSpecus„ø€ð#€DÔØ�]Ñ#€D„Iؘ ‘?€D„LØ Ð"Ñ # KÑ 0€Fܘ˜f™Ó&€D„KÜ(,Ø �‰Ð,¨aÓ0ó)2€DÔ%ð(×+Ñ+¨NÐðð €cØ �‰˜Ò Ü ×Ñ×/Ñ/Ø �T×'Ñ'¨¸$×:MÑ:Mô Oä× Ñ ×2Ñ2Ø × Ñ   ¨T×-@Ñ-@Ø × &Ñ &¨¯ © ó6‰ô×!Ñ!×1Ñ1Ø × Ñ  ×!4Ñ!4Û LóNˆð×#Ñ#Ø �*‰*�k 6¨7Ð4IÈ3Ø ó€iñ!(ÓD¡˜1¨1¯:©:°d·l±lÕ+C’Q €kÐDÙ Ø �;‰;˜%Ò ¤3 t§z¡z£?°aÒ#7Ø ¹ ÓD¹ °1˜×+Ñ+¨AÕ.¸ ÑDÑ D‰)ä ð;à�]Ñ#ñ$õ %ð �‰˜Ò ¤# d§j¡j£/°AÒ"5Ü×)Ñ)¬$Ó/€ià—;‘;×,Ñ,Ò?°€LØ ‡{�{�eÒ § ¡ × 0Ñ 0Ð4DÒ DØ#,€d‡k�kÔ Ø!-€d‡k�kÔð€FØ#�mÒ>Ð,>Ð(>€OÙ�D—K‘K×-Ò-±Ø×Ñ  k°6¸9Ø ,ó.€fà × Ò Ø×!Ñ! &Ô)ð ×ÒØ×"Ñ" 4Ð);¸_ÓM€fá Ø à �;‰;× "Ñ "Ô $Ð, fÓ,Ð $Ø �;‰;Ðùòm:ùÚ9øô4 ò Ü Ð œs =Ó1Ô2Ü Ð #¤S¨¯©°)Ó)<Ó%=Ô>Ø ð üò4EùòEs7Ì[?Ì%[?Ì/\Ì7\Ï\ Ô1 ]Õ]Ö]Ü A] c ó܇‡‡ —‰jj‰‰j«\Š }}}‰j‰ «Š dˆ ˆˆfd„ }|D�� cgc]\}} ||| ‰ «f‘Œ}}} |D� cgc] } || «‘Œ }} |j d‰ f«|j d|f«‰j‰«} ‰j j |d| ||¬«|j|«ycc} }wcc} w)zhHandle the implicit VS .idl rule for one source file. Fills |outputs| with files that are generated.Ncó@•—tjj‰|«}tjj‰«\}}tjj |«\}}‰j |||‰||«}|r tjj ||«}|Sr )r<r=rwr¥r>r–Úrelpath) r=Úrelr’Úbasenamer‘r”ÚoutdirrPr“s €€€r%Úfix_pathz)NinjaWriter._WinIdlRule..fix_pathsø€Ü �W‰W�\‰\˜& $Ó '€dÜŸ'™'Ÿ-™-¨Ó/Ñ€gˆxÜ—'‘'×"Ñ" 8Ó,�i€dˆCØ × %Ñ %Ø ��g˜v s¨Hó6€dá Ü�w‰w�‰˜t SÓ)ˆØ €kr'rÚidlflagsÚidl©Ú variablesr¯r )rŽÚGetIdlBuildDatar‡r rßrrr°Úextend) rPr“ÚprebuildÚoutputsr?ÚvarsÚflagsrr•ÚvalueÚpÚinputrs `` @r%Ú _WinIdlRulezNinjaWriter._WinIdlRule síú€ð#'×"4Ñ"4×"DÑ"DØ�× Ñ ó#"Ñ€FˆF�D˜%à × Ñ  Ó (€F÷ñ@DÔ D¹t± °°eˆT‘8˜E 6Ó*Ò +¸t€DÑ DÙ#)Ó *¡6˜a‰h�q�k 6€FÐ *؇K�K�˜6Ð"Ô#؇K�K�˜UÐ#Ô$Ø × Ñ  Ó '€E؇J�J×Ñ�V˜U EØ 8ðô-à ‡N�N�6Õùó EùÚ *s Á C#Á)C)có¶—|jdk(sJ‚|jj|«rgSg}td„|d«D]}|j |||«Œ|S)z3Writes rules to match MSVS's implicit idl handling.r)có$—|jd«S)Nz.idl©ré©Úxs r%rÐz.NinjaWriter.WriteWinIdlFiles..*s € 1§:¡:¨fÔ#5r'rÌ)r1rŽÚHasExplicitIdlRulesOrActionsÚfilterr)rPrïr r r“s r%ÚWriteWinIdlFileszNinjaWriter.WriteWinIdlFiles$s`€à �;‰;˜%Ò ÐÐ Ø ×Ñ×6Ñ6°tÔ<Ø €iØ€GÜÑ5°t¸I±ÖGˆØ ×Ñ�v˜x¨Õ1ðHà €Nr'cóz—g}|jr|jdg«dd}ng}g}d|vr||j|d|||«z }d|vr||j|d||||«z }d|vr||j |d||«z }d|vr$|j dk(r||j ||«z }|jr-|jj«r|j|||«|jd|«}|jr9|j||z|«} |j| |«} |j| |«|S) zkWrite out the Actions, Rules, and Copies steps. Return a path representing the outputs of these steps.Úmac_bundle_resourcesNÚactionsÚrulesÚcopiesrÌr)Úactions_rules_copies)rÕrÒÚ WriteActionsÚ WriteRulesÚ WriteCopiesr1rrÖÚIsIosFrameworkÚWriteiOSFrameworkHeadersr´ÚWriteMacBundleResourcesÚWriteMacXCassetsÚWriteMacInfoPlist) rPrïròr rór rÚextra_mac_bundle_resourcesr­ÚxcassetsÚpartial_info_plists r%ràz#NinjaWriter.WriteActionsRulesCopies.so€ð€GØ ×ÒØ!ŸX™XÐ&<¸bÓAÁ!ÐDÑàÐØ!#Ðà�DÑØ �×"Ñ" 4¨ ¡?°MÀ8Ø#=ó?ñ?€gà�$�Ø �—‘  g¡° ¸xØ!5Ø!;ó=ñ=€gð�4ÑØ �×!Ñ! $ x¡.°(Ð ÐùòGùò Is Ã'F-ÅF2c óŒ‡"—|j«}g}|D�]}d|vr|jdg«sŒ|d›d|j›�} |d} |jd|jdd«dtdz| z«} |j d k(r|j j|«nd Š"t|jd d ««rd nd} |j| | | ‰"|| «\} } d}tdg«}| D]"}|D]}d|z|vsŒ |j|«ŒŒ$t|«}ˆ"fd„}|jdg«D�cgc]}|j||«‘Œ}}|jdg«}t|«}|r|dz }|dkDr(t|«dkDr|j|d||¬«g}g}|D�]‰}t j"j%|«}t j"j'|«\}}t j"j)|«\}}|dD�cgc]}|j+||||||«‘Œ}}t|jdd ««r||z }||v}|st|jdd ««r||z }|r|j-|«g}|D]ä}|dk(r|j/d||«f«Œ"|dk(r6|j1||j2«} |j/d|| «f«Œ]|dk(r6|j1||j2«}!|j/d||!«f«Œ˜|dk(r|j/d|f«Œ±|dk(r|j/d||«f«ŒÐ|dk(rŒÖJt5|««‚|D�cgc]}|j||«‘Œ}}|j d k(rJ|j/dt7j8t;j<|d ««j?«f«|j@jC|| |j|«|||¬«|jE|«�ŒŒ�Œ|Scc}wcc}wcc}w)Nr4Ú rule_sourcesrDr2ÚRULEr-z%s rr)Fr6rr7)r“r‘r’r”r•r“z${%s}có0•—‰r|jdd«S|S)Nr„rƒ)r0)r=rAs €r%Ú cygwin_mungez,NinjaWriter.WriteRules..cygwin_munge¬sø€á Ø—‘˜d CÓ(Ð (؈ r'r8r«ér®r r9r:r‘r’r”r•Ú unique_name©Úimplicitr¯r)#r;rÒrmr/r�r1rŽr<r=r>ÚsetÚaddÚsortedr r"r´r<r=r�r¥r>r–ÚremoverßrŠr}ÚreprÚhashlibÚmd5ÚsixÚ ensure_binaryÚ hexdigestrrr°r)#rPrròr rr'ržr?Úruler•rBr@rCrDÚspecial_localsÚneeded_variablesÚargumentÚvarrJrEr8rÌÚ num_inputsr“r’rr‘r”rùr Úwas_mac_bundle_resourceÚextra_bindingsÚdirname_expandedÚsource_expandedrAs# @r%r zNinjaWriter.WriteRules‡s‰ø€à × Ñ Ó €CØ€KÜˆà ˜Ñ  d§h¡h¨~¸rÔ&BØð˜[Ó)¨4×+>Ò+>Ð ?€dà �(‰^€dØ×,Ñ,Ø Ø �(‰(�9˜dÓ #Ø Ô.Ð/@ÑAÑ AÀTÑ IóK€kð —k‘k UÒ*ð×%Ñ%×:Ñ:¸4Ô@Ø05ðä˜dŸh™hÐ':¸AÓ>Ô?‰YÀT€dØ×.Ñ.Ø ��k 9¨c°4ó9�o€i�ðD€nܘh˜Z›ÐÛˆ(Û!ˆCØ �s‰]˜hÒ &Ø × Ñ  Õ %ñ"ðô Ð 0Ó1Ðôð 6:·X±X¸hÈÔ5KÓLÑ5K°�×#Ñ# A sÕ+Ð5K€fÐLð —‘˜¨Ó,€gÜ�v“;€jÙ Ø�a‰ˆ Ø �aŠœC ›L¨1Ò,Ø×1Ñ1Ø ˆ{Ñ ˜V°ð2ó:ð;ˆàˆôˆ&Ü—‘×!Ñ! &Ó)ˆÜŸG™GŸM™M¨&Ó1ш�Ü—G‘G×$Ñ$ XÓ.‰ ˆˆcð ! šOó-á+�qð×+Ñ+¨A¨t°WØ,2°C¸õCà+ð ð-ô ˆt�x‰xÐ4°eÓ<Ô =Ø ˜7Ñ "ˆ-à"(Ð,@Ð"@ÐÙ "Ü �—‘ÐBÀEÓJÔ KØ $¨Ñ /Ð $ñ%Ø × 'Ñ '¨Ô /àˆÛ#ˆCØ �FŠ]Ø × !Ñ ! 6©<¸Ó+=Ð">Õ ?Ø�iÒð $×1Ñ1°'¸4×;MÑ;MÓNÐ Ø × !Ñ ! 9©lÐ;KÓ.LÐ"MÕ NØ�hŠð#×0Ñ0°¸×9KÑ9KÓLˆOØ × !Ñ ! 8©\¸/Ó-JÐ"KÕ LØ�eŠ|Ø × !Ñ ! 5¨# ,Õ /Ø�fŠ}Ø × !Ñ ! 6©<¸Ó+AÐ"BÕ Cà˜$“;Ð )¤ S£ Ó )�;ð)$ñ,9@Ó@¹°1�4×&Ñ& q¨#Õ.¸ˆÐ@Ø �;‰;˜%Ò à × Ñ  Ü�k‰kœ#×+Ñ+¨G°A©JÓ7Ó8×BÑBÓDð!Fô Gð � ‰ ×ј )¨T×-@Ñ-@ÀÓ-HØ"(Ø$,Ø#1ð ô 3ð ×ј7Ö#òsðmðb ÐùòUMùò*-ùòPAsÄ7P7ÈP<Í:Qc óž—g}|jr-|jj«}|j|¬«}n|j«}|D]ü}|dD]ò}tjj |«}tjj |«d} |j||«} |jtjj|d| «|«} ||jj| d| |¬«z }|jsŒ¸| j|jj««sŒâ|j| «ŒôŒþ|S)N©Úadditional_settingsÚfilesr«Ú destinationÚcopyr®)rÖÚGetPerTargetSettingsr;r<r=r�r¥r rwrrr°rÕr!ÚGetBundleContentsFolderPathrß) rPrr rór Ú extra_envržrhr=rÚsrcÚdsts r%r!zNinjaWriter.WriteCopiesþs €Ø€GØ ×ÒØ×%Ñ%×:Ñ:Ó<€iØ × Ñ °YÐ Ó ?�cà × Ñ Ó "€cÛˆØ�w”-ˆ$ä�w‰w×Ñ Ó%ˆÜ—7‘7—=‘= Ó& qÑ)ˆØ×!Ñ! $¨Ó,ˆØ×!Ñ!¤"§'¡'§,¡,¨t°MÑ/BÀHÓ"MØ"%ó'ˆà�4—:‘:×#Ñ# C¨°ÀÐ#ÓJÑJˆØ × Ó ð�^‰^˜D×/Ñ/×KÑKÓMÕ NØ × %Ñ % cÕ *ñ! ðð& €Nr'c óT—|j«}|d}|d}|jd«}||j_t |j t d„|««}d|fdt |j |«fg} |j|jj|d|| |¬««y ) zFPrebuild steps to generate hmap files and copy headers to destination.rÌÚmac_framework_headersz headers.hmapcó$—|jd«S)Nz.hrrs r%rÐz6NinjaWriter.WriteiOSFrameworkHeaders.."s € a§j¡j°$Ô&8r'Ú frameworkÚ copy_headersÚcompile_ios_framework_headersrN) ÚComputeMacBundleOutputr†rÖÚheader_map_pathÚmapr rrrrr°) rPrïr r rqÚ all_sourcesrrr?Ú all_headersrs r%r#z$NinjaWriter.WriteiOSFrameworkHeaderss´€à×+Ñ+Ó-€IØ�y‘/€KØÐ/Ñ0€LØ × 'Ñ '¨Ó 7€FØ*0€D×ÑÔ'Ü�d×)Ñ)ÜÑ8¸+ÓFóH€Kà˜yÐ)Ø ¤# d×&9Ñ&9¸<Ó"HÐIðK€Ià ‡N�N�4—:‘:×#Ñ#ØÐ/°Ø¨ð$ó2õ3r'c óh—g}|jj«}|j|¬«}|j|«}|jj |j «}t jjtd|jt|j|««D]„\}}|j|«}tjj|«ddk7r8|j j#|d|dd|fd|fg¬ «|j%|«Œt|j%|«Œ†|S) z.Writes ninja edges for 'mac_bundle_resources'.rdréÿÿÿÿz .xcassetsÚmac_tool)Ú mactool_cmdzcopy-bundle-resourceržrJ©r)rÖriÚGetSortedXcodeEnvÚComputeExportEnvStringÚIsBinaryOutputFormatr‡r-ršÚGetMacBundleResourcesr�rvr rŠr<r=r>rrr°rß) rPÚ resourcesÚbundle_dependsr(rkržÚisBinaryr?Úress r%r$z#NinjaWriter.WriteMacBundleResources)s!€à€Hà×#Ñ#×8Ñ8Ó:€IØ × Ñ °YÐ Ó ?€CØ × %Ñ % cÓ *€CØ×"Ñ"×7Ñ7¸×8HÑ8HÓI€Hä×*Ñ*×@Ñ@Ü# MÑ2Ø ×ÑœS ×!4Ñ!4°iÓ@öB‰ ˆ�ð×!Ñ! &Ó)€fÜ �‰× Ñ ˜&Ó ! "Ñ %¨Ò 4Ø � ‰ ×ј ¨SØ$KØ%*¨C L°8¸XÐ2Fð$Hð ô Ið ×јfÕ%à�‰˜ÕðBð €Or'c óâ—|syi}dddœ}|jj|j}|j«D]\}}|j|«}|sŒ|||<Œ d} |r|j d«} | |d<g} | j t jj|jj«d««| r| j | «ttj|«|j«} |jj«} |j| ¬«} |j!| «} |j#|j$j'| d |d | fd | fg¬ ««| S) a�Writes ninja edges for 'mac_bundle_resources' .xcassets files. This add an invocation of 'actool' via the 'mac_tool.py' helper script. It assumes that the assets catalogs define at least one imageset and thus an Assets.car file will be generated in the application resources directory. If this is not the case, then the build will probably be done at each invocation of ninja.Nzapp-iconz launch-image)ÚXCASSETS_APP_ICONÚXCASSETS_LAUNCH_IMAGEz!assetcatalog_generated_info.plistzoutput-partial-info-plistz Assets.carrdÚcompile_xcassetsržÚkeysr})rÖr‡ÚitemsrÒr†rßr<r=rwÚGetBundleResourceFolderr2ÚjsonÚdumpsr1rir~rrrrr°)rPr(rƒÚextra_argumentsÚsettings_to_argÚsettingsÚ settings_keyÚarg_namer r)r rŠrkržs r%r%zNinjaWriter.WriteMacXCassets?ss€ñ Ø à€Oà'Ø!/ñ€Oð×"Ñ"×1Ñ1°$×2BÑ2BÑC€HØ"1×"7Ñ"7Ö"9ш �hØ�l‰l˜<Ó(€eÚ Ø$)ˆ˜Ò!ð#:ð ÐÙØ×5Ñ5Ø -ó/Ðà5G€oÐ1Ñ2à€GØ ‡N�NÜ �‰� ‰ Ø × Ñ × 7Ñ 7Ó 9Ø ó ôñØ ‡n�nÐ'Ô(ä œdŸj™j¨Ó9¸4¿;¹;Ó G€DØ×#Ñ#×8Ñ8Ó:€IØ × Ñ °YÐ Ó ?€CØ × %Ñ % cÓ *€Cà×ј$Ÿ*™*×*Ñ*ØÐ# Xؘ3�< &¨$ Ð0ð+ó2ô3ð Ðr'c óÄ—tjjtd|j|j «\}}}}|sy|j |«}|rƒ|jtjj|««}dj|D�cgc]}t||j«‘Œc}«}|jj|d|d|fg¬«}|j!|¬«} |j#| «} |r0|jd«}|jj|d ||g«}|jj%|j&«} t)t+j,| «|j«} |jj/|j&«} |jj|d |d | fd | fd | fg¬«|j1|«ycc}w)z.Write build rules for bundle Info.plist files.rNr+Úpreprocess_infoplistÚdefinesr}rdzmerged_info.plistÚmerge_infoplistÚcopy_infoplistržrŠrJ)r-ršÚGetMacInfoPlistr�rÖr rŠr†r<r=rrwr9r1rrr°r~rÚGetExtraPlistItemsr‡r2r�rŽr€rß) rPr)rƒÚ info_plistÚoutr–rkÚintermediate_plistr8ržrŠr„s r%r&zNinjaWriter.WriteMacInfoPlistmsÉ€ä*-×*=Ñ*=×*MÑ*MÜ# MÑ2Ø ×јT×0Ñ0ó+2Ñ'€J��W˜iñ Ø Ø × Ñ ˜SÓ !€CÙà×5Ñ5Ü �'‰'× Ñ ˜:Ó &ó(Ðà—‘¹'ÓB¹'°Qœ&  D§K¡KÕ0¸'ÑBÓC€gØ—:‘:×#Ñ#Ø Ð4°jØ Ð(Ð)ð$ó+€jð × Ñ °YÐ Ó ?€CØ × %Ñ % cÓ *€CáØ×5Ñ5Ð6IÓJÐØ—:‘:×#Ñ#Ø Ð/Ø ˜zÐ *ó,€jð × Ñ × 1Ñ 1°$×2BÑ2BÓ C€DÜ œdŸj™j¨Ó.°· ± Ó <€DØ×"Ñ"×7Ñ7¸×8HÑ8HÓI€H؇J�J×Ñ�SÐ*¨JØ!&¨  ¨v°t¨nØ!)¨8Ð 4ð 6ðô7ð×ј#Õùò)CsÂGc 󎇇‡‡‡‡‡—‰jdk(rĉjjdd«‰jjdd«‰jjdd«‰jjdd «‰jjd d «‰jjd d «‰jjdd«‰jdk7st ‰j «dk(r!‰j ‰j‰‰‰‰‰‰«Stˆˆˆˆˆˆˆfd„‰j D««S)ú.Write build rules to compile all of |sources|.ÚhostÚarz$ar_hostr¿ú$cc_hostrÀú $cxx_hostÚldz$ld_hostÚldxxz $ldxx_hostÚnmz$nm_hostÚreadelfz $readelf_hostr˜r«c 3ón•K—|],}|‰j‰j|‰‰‰‰‰‰|¬«f–—Œ.y­w)©r@N)ÚWriteSourcesForArchrÞ) rÇr@r�r‡Úprecompiled_headerÚ predependsrPrÌrïs €€€€€€€r%rÈz+NinjaWriter.WriteSources.. sQøèø€ð"ñ!ˆdð˜×1Ñ1Ø × Ñ  Ñ % {°F¸GÀZØ  ¨4ð2ó1ô2ñ!ùsƒ25)r¤rrrÚr1r"rÜrªrÝ)rPÚ ninja_filer‡r�rÌr¬r«rïs` ``````r%rèzNinjaWriter.WriteSources�sþ€ð ‡|�|�vÒØ ‡j�j×ј$  Ô+Ø ‡j�j×ј$  Ô+Ø ‡j�j×ј% Ô-Ø ‡j�j×ј$  Ô+Ø ‡j�j×ј& ,Ô/Ø ‡j�j×ј$  Ô+Ø ‡j�j×ј) _Ô5à ‡{�{�eÒœs 4§:¡:›°!Ò3Ø × %Ñ %Ø �*‰*�k 6¨7°JØ ˜dó$ð$ô÷"ñ"ð—j’jó"ó"ð"r'c óÆ—g} |jdk(r“|jj||¬«} |jj|«} |jj |«} dg|jj |«z} dg|jj |«z}�n½|jdk(�rw|jj|«}|jj|«} |jj|«} |jj |«} |jj|«} |jj||j«x}}|sd}|jdk7r|d|jzz }tjjtjj!||j"|j$««}|d z}|d z}|j'|d |g«|j'|d |g«|j'|d |j$g«n6|j)dg«} |j)dg«} |j)dg«} |jdk(rÁtj*j)dd«j-«tj*j)dd«j-«z| z} tj*j)dd«j-«tj*j)dd«j-«z| z} nÏ|jdk(rÀtj*j)dd«j-«tj*j)dd«j-«z| z} tj*j)dd«j-«tj*j)dd«j-«z| z} |j)dg«| z}|j'|d|D�cgc]}t/||j«‘Œc}«|jdk(r�|j'|dt1|j««|j'|d|jj3||j4«D�cgc]'}t7|j|«|j«‘Œ)c}«|j)dg«}|j9«}|jdk(r|jj;||«}|j'|d|D�cgc]+}t7d|j5||«z|j«‘Œ-c}«|jdk(rv|j)dg«}|jj=||«}|j'|d |D�cgc]+}t7d|j5||«z|j«‘Œ-c}«|j?|«}|jdk(r1d!D],\}}|jA||«}|sŒ|jC||«Œ.|j)d"g«}|j'|dt1|j| ««|j'|dt1|j| ««|j'|dt1|j| ««|jdk(rN|j'|d#t1|j ««|j'|d$t1|j««|j'|d"t1|j|««|jE«g} d%}!|D�]Ë}"tjjG|"«\}#}|d&d'}|jH}$|d(vrd)}%d*|jJ_&nÃ|d+k(s|d,k(r|jdk7rd-}%n§|d.k(r|jdk7rd/}%n�|jdk(r%|d0k(r |jjO|«sd0}%d1}$n\|jdk(r|d2k(rd3}%nE|jdk(r|d4k(rd5}%d*|jJ_&n|jdk(r |d6k(rd6}%d7}$d*}!n�Œ|j5|"«}&|jQ|#|$z«}'|� tS|'|«}'|jU|&g|'g|«}(g})|jdk(r%|jW|&|'|(|%| | |j«\})}'}(|jY|'|%|&|(D�*�+cgc]\}*}*}+|+‘Œ c}+}*||)¬8«| j[|'«�ŒÎ|!rZ|j)d9|«},|j'|d:|,D�cgc]+}t7d|j5||«z|j«‘Œ-c}«|j]||«|jE«| Scc}wcc}wcc}wcc}wcc}+}*wcc}w);rŸr˜r©z $cflags_cz $cflags_ccr)r¢r£r;z.c.pdbz.cc.pdbÚ pdbname_cÚ pdbname_ccÚ pchprefixÚcflagsÚcflags_cÚ cflags_ccÚCPPFLAGSrÚCFLAGSÚCXXFLAGSr Ú CPPFLAGS_hostÚ CFLAGS_hostÚ CXXFLAGS_hostr–ÚasmflagsÚrcflagsÚ include_dirsÚincludesz-IÚmidl_include_dirsÚ midl_includes))ÚcÚ cflags_pch_c)r¿Ú cflags_pch_cc)ÚmÚcflags_pch_objc)ÚmmÚcflags_pch_objccÚarflagsÚ cflags_objcÚ cflags_objccFr«N)r¿ÚcpprÀrÀTrÁÚSr¿ÚsÚcc_srÃz_asm.objrÄÚobjcrÆÚobjcxxÚrcz.resrMÚresource_include_dirsÚresource_includes)/r1rÖÚ GetCflagsÚ GetCflagsCÚ GetCflagsCCÚ GetCflagsObjCÚGetCflagsObjCCrŽÚ GetAsmflagsÚGetComputedDefinesÚGetCompilerPdbNamerŠr¤r<r=r�rwror•ÚWriteVariableListrÒÚenvironr¥r9rvÚ GetRcflagsr r2r;ÚAdjustIncludeDirsÚAdjustMidlIncludeDirsÚGetPchBuildCommandsÚ GetIncluderÚr±r>rxr£rOÚHasExplicitAsmRulesr†rBÚGetObjDependenciesÚGetFlagsModificationsr°rßÚWritePchTargets)-rPr­r‡r�rÌr¬r«rïr@Ú extra_definesr²r³r´rÉrÊr»Ú pdbpath_cÚ pdbpath_ccr¢Úpdbpathr–r8r÷r½ržrEr¿Ú pch_commandsr”r]ÚincluderÈr Ú has_rc_sourcer“ÚfilenamerxÚcommandrr?rNrr2ÚgchrÒs- r%rªzNinjaWriter.WriteSourcesForArch¥s+ €ð€MØ ‡{�{�eÒØ×"Ñ"×,Ñ,¨[¸tÐ,ÓD€fØ×$Ñ$×/Ñ/° Ó<€hØ×%Ñ%×1Ñ1°+Ó>€iØ �MØ×'Ñ'×5Ñ5°kÓBñC€kà"�^Ø×(Ñ(×7Ñ7¸ ÓDñE‚là �‰˜Ó Ø×#Ñ#×/Ñ/° Ó<€hØ×!Ñ!×+Ñ+¨KÓ8€fØ×#Ñ#×.Ñ.¨{Ó;€hØ×$Ñ$×0Ñ0°Ó=€iØ×(Ñ(×;Ñ;¸KÓH€mà#×1Ñ1×DÑDØ �t×)Ñ)ó +ð+€i�*á ØˆØ �<‰<˜8Ò #Ø ��t—|‘|Ñ#Ñ #ˆ#Ü—'‘'×"Ñ"¤2§7¡7§<¡<°°T·]±]ÀDÇIÁIÓ#NÓOˆØ˜hÑ&ˆ ؘyÑ(ˆ Ø ×јZ¨°y°kÔBØ ×јZ¨¸ °|ÔDØ ×јZ¨°t·y±y°kÕBà�z‰z˜( BÓ'€fØ—‘˜J¨Ó+€hØ—*‘*˜[¨"Ó-€ið ‡|�|�xÒÜ—*‘*—.‘. ¨RÓ0×6Ñ6Ó8Ü—*‘*—.‘. ¨2Ó.×4Ñ4Ó6ñ7Ø9AñB€hä—:‘:—>‘> *¨bÓ1×7Ñ7Ó9Ü—:‘:—>‘> *¨bÓ1×7Ñ7Ó9ñ:ØFñG€hä—:‘:—>‘> /°2Ó6×<Ñ<Ó>Ü—:‘:—>‘> /°2Ó6×<Ñ<Ó>ñ?ØAJñK€ið�j‰j˜ BÓ'¨-Ñ7€GØ×ј: yÙô@à ×јZ¨à×&Ñ&×1Ñ1°+Ø26×2EÑ2EôGó HñGˆqô ˜d×0Ñ0°Ó3°T·[±[Õ AðGñ HôIð —:‘:˜n¨bÓ1€Là × Ñ Ó €CØ ‡{�{�eÒØ×'Ñ'×9Ñ9¸,Ø:EóG€là×ј: záó ÙˆQô ˜D 4×#6Ñ#6°q¸#Ó#>Ñ>ÀÇ Á Õ LØñ ô!ð ‡{�{�eÒØ Ÿ*™*Ð%8¸"Ó=ÐØ×,Ñ,×BÑBØ ˜[ó*Ðà ×јZ¨á%ó 'Ù%ˆqô ˜d T×%8Ñ%8¸¸CÓ%@Ñ@À$Ç+Á+Õ NØ%ñ 'ô(ð&×9Ñ9¸$Ó?€LØ ‡{�{�eÒóM‰(ˆ#ˆsà$×/Ñ/°°TÓ:ˆÚ �J×'Ñ'¨¨WÕ5ðMð �j‰j˜ BÓ'€Gà×ј: xܘt×1Ñ1°6Ó:ô<à×ј: zܘt×1Ñ1°8Ó<ô>à×ј: {ܘt×1Ñ1°9Ó=ô?à ‡{�{�eÒØ ×јZ¨Ü  ×!3Ñ!3°[ÓAôCà ×јZ¨Ü  ×!3Ñ!3°\ÓBôDà×ј: yܘt×1Ñ1°7Ó;ô=à×ÑÔØ€GØ€M܈ܗg‘g×&Ñ& vÓ.�m€h�Ø ��ˆG€cØ— ‘ €gØ Ð$Ñ $؈Ø#ˆ� ‰ ÕØ �#Š:˜# š*¨¯©¸Ò)=Ø‰Ø �#Š:˜$Ÿ+™+¨Ò.Ø‰Ø �K‰K˜5Ò  S¨E¢\Ø×"Ñ"×6Ñ6°tÔ<Øˆð‰Ø �;‰;˜%Ò  C¨3¢JØ‰Ø �;‰;˜%Ò  C¨4¢K؈Ø#ˆ� ‰ ÕØ �;‰;˜%Ò  C¨4¢K؈؈؉ ñ Ø×!Ñ! &Ó)€eØ×)Ñ)¨(°WÑ*<Ó=€fØ Ð Ü˜ Ó&ˆØ#×6Ñ6¸°wÀÀÈ$ÓO€hØ€iØ �‰˜Ò Ø&8×&NÑ&NØ �6˜8 W¨h¸ Ø × Ñ ó' Ñ#ˆ �6˜8ð×Ñ�v˜w¨Ù6>Ô ?±h©¨¨A¨s¢°hÒ ?Ø",¸ ðôCð‡n�n�VÖðUñXØ$Ÿj™jÐ)@À,ÓOÐØ ×јZÐ)<á)ó +Ù)ˆqô ˜d T×%8Ñ%8¸¸CÓ%@Ñ@À$Ç+Á+Õ NØ)ñ +ô,ð ×ј \Ô2à×ÑÔØ €NùòUEùò  Hùò ùò 'ùóJ!@ùò +s$Ð'g Ò6,g Õ0g × 0g ä gå)0g có–—|sy|D]A\}}}}dddddœ|}ddd d dœ}|j|«} |j|| |||fg¬ «ŒCy) z-Writes ninja rules to compile prefix headers.NrÂrÃrÅrÇ)rÁr¿rÄrÆr¿rÀrÏrÐr})rÒr°) rPr­rërðÚ lang_flagrÏrÚvar_namervÚcmds r%ræzNinjaWriter.WritePchTargetsEst€á Ø ã'3Ñ#ˆˆY˜˜eà ØØ Ø ñ ð ñ €hð˜u¨6¸Ñ D€cØ �G‰G�D‹M€cØ×Ñ�s˜C °H¸iÐ3HÐ2IÐÕJñ(4r'c ó\—|jdk7st|j«dk(r |j|j|||||«S|j |«}|jD�cgc]*}|j|j ||||||||¬«‘Œ,}}g} |} |js|j| |||«|ddvrE|js9| jd|f«|jj||dzgd|| ¬ «|S|jj| d || ¬ «|Scc}w) ú0Write out a link step. Fills out target.binary. r˜r«r©rFrXrr]Úsolipor}Úlipo) r1r"rÜÚWriteLinkForArchrrÚ ComputeOutputrÞrÕÚAppendPostbuildVariablerßr°) rPrïr‡r�rõrMr?r@r8r`Ú build_outputs r%Ú WriteLinkzNinjaWriter.WriteLinkVsX€à ‡{�{�eÒœs 4§:¡:›°!Ò3Ø × "Ñ "Ø �*‰*�d˜K¨°¸LóJðJð×!Ñ! $Ó'€fð!ŸJšJó(ñ'�Dð×%Ñ% d×&9Ñ&9¸$Ñ&?ÀØ&1°6¸9ÀT¹?Ø&2¸ð&õ?ð'ð ð(ð€nØ€lØ × Ò Ø ×$Ñ$ ^°T¸6À6ÔJð ˆv‰,Ð?Ñ ?Ø× Ò Ø×јu f˜oÔ.Ø � ‰ ×ј& &¨6¡/Ð2°H¸fØ$ð ô &ð€mð � ‰ ×ј v¨vÀÐÔPØ €mùò%(sÁ'/D)c ó—ddddœ|d}d} t«} t«} t«} |r| j|«d|v�r t«} |dD�]�}|jj|«}|sŒ"|j «}|�r%g}|j dk(r[|j rO|jj|«r4|j }|jr§| j|j«n‹|j dk(r|jr|jg}nb|j|j «r:| j|j«| j|jd z«n |jg}|D])}|| vsŒ| j|«|j|«Œ+|j«}|r||jk7s�Œ}| j|«�Œ�g}|jj r |j dk7r|jd «|j#||«}|€ |j$s|j'||||«|dd k(}|j(d k(r/t*j,jd d«j/«}n=|j(dk(r.t*j,jdd«j/«}|j dk(rE|j0j3||j5t6d«|j8|«}|z}�n—|j dk(rÿ|j;|j=|««}|jj3||j8|j4||||j>«\}}}|z}|jA|d|«| jC|«} |r|jA|d|g«tE|jjG|««} |jjI|j8«}|r›| j|«n‰|jdg«z}|rrtK| «rgd}|j(d k7r$||j(z }|jd|z«n|jd|jLz«|jd|z«|jA|dtO|j4|««|jdg«}|j dk(r_|D�cgc]}|jjQ||«‘Œ }}|D�cgc]*}dtS|j9|«|j «z‘Œ,}}n5|D�cgc]*}tSd|j9|«z|j «‘Œ,}}tTjVjYtO|j4|jdg«««} |j dk(r|j0j[| |«} n*|j dk(r|jj[| «} |jA|d|| z«|}!|dv�rÜ|jdt*j\j/|«d f«|jd!tTjVj_|«f«|j dk7ry|}"|j$r|j0ja«}"|r|"d"|zz }"|"d#z }"|"jcd$d%«}"|jd&tTjVj_|"«f«|j dk(rÈ|jd'|f«d(|v�r|jje|«�s|d)z|j_ |jd*d+|jjzf«|jjg||j4|d,z«}#||jjg}|#r~|j|#«nl|j$s||d zg}nX|d-z}nR|j dk(rC|jd'|f«|jjg||j4|d,z«}#|#r||#g}tK| «r9|jd.tTjVjitk| ««f«|jm||| z|tk| «to| «|¬/«|!Scc}wcc}wcc}w)0röÚlinkÚ solink_moduleÚsolink)Ú executablerYrTrFrrÉr)r])r¤z$ldxxrr£ÚLDFLAGSr Ú LDFLAGS_hostr˜rÚ manifestsÚintermediatemanifestÚldflagszlib/z-Wl,-rpath=\$$ORIGIN/%sz -Wl,-rpath=%sz-Wl,-rpath-link=%sÚ library_dirsz /LIBPATH:z-LÚ librariesÚlibs)rrÚsonamer«rr;z.rspr+r2Úlink_file_listrJz/NOENTRYz.libÚ implibflagz /IMPLIB:%sz.pdbÚ_notocÚsolibsrM)8rOrPrnrÒrVr1rLrŽÚIsUseLibraryDependencyInputsrMrNr[rJrßr^r£rOrúrÕrûr¤r<rÝr¥rÖÚ GetLdflagsrŠr�r r†ÚComputeOutputFileNamersrÜÚunionÚ_GetWinLinkRuleNameSuffixÚIsEmbedManifestÚ GetDefFiler"r½rvr�r2r-rzÚuniquerÚAdjustLibrariesr=ÚEncodePOSIXShellArgumentÚGetWrapperNamer0ÚGetNoImportLibraryÚ GetPDBNameÚEncodePOSIXShellListrQr°rì)$rPr­rïr‡r�rõrMr@rïÚcommand_suffixÚ implicit_depsrÚ order_depsÚextra_link_depsrñr£ÚlinkableÚnew_depsÚnew_depÚ final_outputr`r?Ú is_executableÚ env_ldflagsrÚmanifest_base_nameÚintermediate_manifestÚmanifest_filesÚdef_fileÚrpathrÚlr Ú linked_binaryr Úpdbnames$ r%rùzNinjaWriter.WriteLinkForArchqsb€ð Ø(Ø!ñð ˆ6�lñ €Gð €Nä“E€MÜ ‹U€FÜ“€Jáð ‡n�n�\Ô"à˜Òô ›€oØ�nÕ%ˆ#Ø×$Ñ$×(Ñ(¨Ó-ˆÙØ Ø—?‘?Ó$ˆÚ ؈(Ø�k‰k˜UÒ"Ø×#Ò#Ø× Ñ ×=Ñ=¸kÔJØ×,Ñ,ˆHØ×"Ò"Ø�n‰n˜V×0Ñ0Õ1Ø�{‰{˜eÒ#¨×(9Ò(9Ø×)Ñ)Ð*‰HØ�~‰~˜dŸk™kÔ*Ø �J‰J�v—}‘}Ô %Ø × Ñ ˜fŸm™m¨fÑ4Õ 5àŸ ™ �ˆHÛ!ˆgؘoÒ-Ø×!Ñ! 'Ô*Ø×јwÕ'ð"ð ×)Ñ)Ó+ˆ Ù˜<¨6¯=©=Ô8Ø × Ñ ˜LÖ )ð7&ð:€NØ ‡{�{×Ò § ¡ ¨uÒ 4Ø×јOÔ,à × Ñ   dÓ +€FØ €|˜D×.Ò.Ø ×"Ñ" >°4¸ÀÔHà˜‘L LÑ0€Mð ‡|�|�xÒÜ—J‘J—N‘N 9¨bÓ1×7Ñ7Ó9�kØ �‰˜Ò Ü—J‘J—N‘N >°2Ó6×<Ñ<Ó>€kØ ‡{�{�eÒØ×#Ñ#×.Ñ.¨{Ø × Ñ Ô8¸ÑGÓ HØ × Ñ ˜tó%€gð˜gÑ%‚gØ �‰˜Ò Ø×5Ñ5Ø × $Ñ $ TÓ *ó,Ðð × Ñ × 'Ñ '¨ °T×5HÑ5HØ(,×(:Ñ(:Ð./sAøèø€ð9Ù%A˜cØ  D×$7Ñ$7Ñ7ð×-Ñ-×1Ñ1°#Ó6×?Ñ?×AÙ%AùsƒAArÉrFÚnonerS)r˜ÚopenbsdÚnetbsdr)Ú alink_thinr®Ú libtool_flagsÚlibflagsr˜r«Úalink)r¯rr})ÚanyrÒr£rJrFrúr1rÓrrr°rÖÚGetLibtoolflagsrßrŽÚ GetLibFlagsr r"rÜrûrÞrý) rPrïr‡r�rõrMr!rr6r7r8r@r?s ` r%rízNinjaWriter.WriteTarget.sáø€Üó9Ø%)§X¡X¨n¸bÔ%Aó9ó9€Oð ˆF�|�vÒ¡i¹ð(€d‡k�kÔØ€d‡k�kÔðT �;‰;× Ñ ÐðS ˆf‰Ð)Ó )Ø×-Ñ-¨dÓ3€d‡k�kÔØ �+‰+Ð@Ñ @Ø × +Ò +Ø � ‰ ×јŸ™×+Ñ+¨\¸9Ø$0ð ô 2ðJ �;‰;× Ñ ÐðEˆ Ø × Ò Ø×-Ñ-×=Ñ=¸kÓJˆ-Ù Ø × Ñ ˜o¨}Ð=Ô >Ø × Ò Ø×'Ñ'×3Ñ3°KØ48×4GÑ4GóIˆ(à × Ñ ˜J¨Ð1Ô 2à �;‰;˜%Ò ¤3 t§z¡z£?°aÒ#7Ø × &Ñ & y°$Ø'+§{¡{×'9Ñ'9¸4¿;¹;×;MÑ;Mô Oà �*‰*× Ñ ˜4Ÿ;™;×-Ñ-¨w¸ Ø&2¸ið ô Ið* �;‰;× Ñ Ðð%ˆ&Ø—j”jˆdØ×'Ñ'¨¨dÓ3ˆFØ × Ñ  Ñ %× +Ñ +¨F°G¸YÀt¹_Ø7CØ6?ð ,ô Að �M‰M˜&Õ !ð !ð × &Ñ & y°$Ø'+§{¡{×'9Ñ'9¸4¿;¹;×;MÑ;Mô Oà �*‰*× Ñ ˜4Ÿ;™;×-Ñ-¨w¸ð&/ð ô 0ð �;‰;× Ñ Ðð Ÿ>™>¨$° ¸VÀYØ*6ó8€d‡k�kÔà �;‰;× Ñ Ðr'có2—|jsJ‚|ddv}|j«}|r|dz }g}|j||||jj| ¬«|r‹|s‰|ddk(r6|j j r |jj|d||¬«nj|jd|j j«f«|jj|d ||¬«n|jj|d ||¬«||j_ |S) NrFrXr¬)Úis_command_startrTÚpackage_ios_frameworkr}ÚversionÚpackage_frameworkr­) rÕrtrûr£rJrÖÚisIOSrrr°rßÚGetFrameworkVersionrK)rPrïróÚis_emptyr@r?rs r%rîzNinjaWriter.WriteMacBundlebs)€Ø × Ò ÐРؘV™ Ð(MÐMÐØ × (Ñ (Ó *€FÙØ �Ñ€fØ€IØ× Ñ  ¨D°&¸$¿+¹+×:LÑ:LØ6GÐ2Gð!ôIá¡Ø ˆf‰Ð)Ò )¨d×.AÑ.A×.GÒ.GØ � ‰ ×јÐ!8Ð:LØ#,ð õ .ð ×ј) T×%8Ñ%8×%LÑ%LÓ%NÐOÔPØ � ‰ ×јÐ!4Ð6HØ#,ð õ .ð ‡j�j×Ñ�v˜wÐ(:Ø!*ðô,à€D‡K�KÔØ €Mr'cól—|j|¬«}|jdk(r|j|¬«}|S)z:Returns the variables toolchain would set for build steps.rdr))r~r1ÚGetMsvsToolchainEnv)rPreržs r%r;zNinjaWriter.GetToolchainEnvys?€à × Ñ Ð5HÐ Ó I€CØ ‡{�{�eÒØ × $Ñ $Ø1ð %ó 3€cà €Jr'cóP—|jjd|j¬«S)z>Returns the variables Visual Studio would set for build steps.r rŒ)rŽÚ GetVSMacroEnvr‡)rPres r%rEzNinjaWriter.GetMsvsToolchainEnv�s-€à × Ñ × +Ñ +¨OØ48×4DÑ4Dð ,ó FðFr'cóô—|jsJ‚|j}tjj|j|t j j||j«|j|«S)z6Returns the variables Xcode would set for build steps.) rur-ršr~rÖr<r=rwr|r‡)rPrerus r%r~zNinjaWriter.GetSortedXcodeEnv†sc€à × Ò ÐÐ Ø×&Ñ&€MÜ × Ñ × 0Ñ 0Ø ×ј]Ü �‰� ‰ �] D×$6Ñ$6Ó7¸×9IÑ9IØó ðr'cón—i}|jjd«}|r||d<|j|¬«S)z:Returns the variables Xcode would set for postbuild steps.ÚCHROMIUM_STRIP_SAVE_FILErd)rÖÚGetPerTargetSettingr~)rPÚpostbuild_settingsÚstrip_save_files r%ÚGetSortedXcodePostbuildEnvz&NinjaWriter.GetSortedXcodePostbuildEnv�sG€àÐð×)Ñ)×=Ñ=Ø"ó$€OáØ7FÐÐ3Ñ4Ø × !Ñ !Ð6HÐ !Ó IÐIr'cóX—|j||||«}|r|jd|f«yy)zAAdds a 'postbuild' variable if there is a postbuild for |output|.Ú postbuildsN)ÚGetPostbuildCommandrß)rPrrïr?rJr=Ú postbuilds r%rûz#NinjaWriter.AppendPostbuildVariablešs6€ð×(Ñ(¨¨v°vÐ?OÓP€IÙØ×ј  iÐ0Õ1ðr'c óš—|jr |ddk(s|syt||j«}tjj |d¬«}|�È|jj |jtjjtjj|j|««ttjjtjj|j|««|j«|d¬«}|sy|jdtjjd|j g««|j#|j%««}|dzd j|D�cgc]}t'j(|«‘Œc}«z}|d |zzd z} |rd | zd zSd | zScc}w)z¹Returns a shell command that runs all the postbuilds, and removes |output| if any of them fails. If |is_command_start| is False, then the returned string will start with ' && '.rFr2rT)ÚquietrÚcdz (z && z$); G=$$?; ((exit $$G) || rm -rf %s) z && exit $$G)Ú(z$ && ()rÖr2r1r-ršÚGetSpecPostbuildCommandsÚAddImplicitPostbuildsr‡r<r=r�rwr}Úinsertrzrr|rrNr6r7) rPrïr?Ú output_binaryr=rPržrïÚcommandsÚcommand_strings r%rQzNinjaWriter.GetPostbuildCommand¡s¥€ð × Ò  $ v¡,°&Ò"8ÁØ Ü  ¨¯ © Ó 4€FÜ×$Ñ$×=Ñ=¸dÈ$Ð=ÓO€JØÐ Ø×&Ñ&×<Ñ<Ø × Ñ Ü �'‰'× Ñ œ2Ÿ7™7Ÿ<™<¨×(:Ñ(:¸FÓCÓ DÜ Ü�g‰g×ÑœrŸw™wŸ|™|¨D×,>Ñ,>À ÓNÓOØ�k‰kó ð ˜Dð =ó"€jñ Ø ð×Ñ�aœŸ™×8Ñ8Ø ˆt×!Ñ!Ð"ó$ô%à × %Ñ % d×&EÑ&EÓ&GÓ H€Cð�T‰zØ� ‰ ÁÓLÁ°g”\×(Ñ(¨Õ1ÀÑLÓMñN€Hàð"3à5;ñ"<ñ<à>LñM€NñØ �>Ñ ! FÑ *Ð*à ˜Ñ &Ð&ùòMsÆ G c óÌ—g}|D]M\}}|jd|›dtjtjj |««›d�«ŒOdj |«S)zŠGiven an environment, returns a string looking like 'export FOO=foo; export BAR="${FOO} bar;' that exports |env| to the shell.zexport Ú=Ú;r+)rßr6r7r-rzrrw)rPržÚ export_strÚkÚvs r%rz"NinjaWriter.ComputeExportEnvStringÅs\€ð€JÛ‰ˆˆ1Ø×ÒÚ Œl×!Ñ!¤#§*¡*×"EÑ"EÀaÓ"HÕIðKõLðð �8‰8�JÓ Ðr'có¾—|jsJ‚td}|jtjj ||j j«««S)zDReturn the 'output' (full output path) to a bundle output directory.r)rÕr�rŠr<r=rwrÖr)rPr=s r%rtz"NinjaWriter.ComputeMacBundleOutputÏsQ€à × Ò ÐÐ Ü & }Ñ 5€DØ × Ñ Ü �‰� ‰ �T˜4×.Ñ.×=Ñ=Ó?Ó@ó BðBr'cóà—|s|d}tjt«}t|d|ji«|d|d|d|ddœ}|j d|j |d««}|d |d |d |d dœ}|j d «}|rd |z}n|j |d«}d|vr|d}n|d}|dk(r t |d«}|dvr|›|›|›�S|dk(rd|zSt d|z«‚)z@Compute the filename of the final output for the current target.rFr1rrr)rYrTrSrÚproduct_prefixrÚSHARED_LIB_SUFFIXrrÚproduct_extensionr;Ú product_namerºr)rSrYrTrr2z%s.stampzUnhandled output type %s)rhr�ÚCalculateVariablesr1rÒr&Ú Exception) rPrïrFÚdefault_variablesÚDEFAULT_PREFIXr$ÚDEFAULT_EXTENSIONrAr£s r%rz!NinjaWriter.ComputeOutputFileNameÖsJ€á Ø �&‰\€däŸ ™ Ô"=Ó>ÐÜÐ(¨8°T·[±[Ð*AÔBð +Ð+>Ñ?Ø)Ð*=Ñ>Ø)Ð*=Ñ>Ø%Ð&9Ñ:ñ €Nð �X‰XÐ&¨×(:Ñ(:¸4ÀÓ(DÓ E€Fð -Ð-@ÑAØ+Ð,?Ñ@Ø+Ð,?Ñ@Ø'Ð(;Ñ<ñ Ðð —‘Ð,Ó-€IÙØ˜ ‘/�ià#×'Ñ'¨¨bÓ1€ià˜Ñà�NÑ#�fð�MÑ"€fØ �5Šä˜V UÓ+ˆà ð&ñ&á¡©Ð 3Ð3Ø �ŠØ ˜&Ñ Ð ä Ð0°4Ñ7Ó 8Ð8r'có —|d}|jdk(r4|jj|j|j«}|r|S|€.|jdk(r|dvr|j j «}n|j||«}|€8d|vr4tjj|d|«}|j |«Sddg}|jdk(r|jdk(r|d d gz }n$|jdk(r|jdk(r|d gz }|�hd }|jdk7r-tjjd d |jz«}tjj|t||««S||vs |jr|S|d k(r^d } |jdk7r-tjjd d |jz«} tjj| |«S|j|d¬«S)z2Compute the path for the final output of the spec.rFr)r˜)rSrrTrYrˆrrYr£rTrSr@z%srF)r§)r1rŽÚ GetOutputNamer‡rŠrÖÚGetExecutablePathrr<r=rwr¤rBrÓr†) rPrïr@rFÚoverriderîr=Útype_in_output_rootÚarchdirÚlibdirs r%rúzNinjaWriter.ComputeOutputsè€à �‰<€Dà ‡{�{�eÒØ×#Ñ#×1Ñ1°$×2BÑ2BØ26×2DÑ2DóF€há Øˆà €|˜Ÿ ™  uÒ,°ð:Mñ2Mà×$Ñ$×6Ñ6Ó8�hà×+Ñ+¨D°$Ó7€hà €|˜ ¨Ñ-Ü �W‰W�\‰\˜$˜}Ñ-¨xÓ 8€dØ × Ñ  Ó %Ð%ð(Ð):Ð;ÐØ ‡{�{�eÒ § ¡ °Ò 8ØÐ.Ð0@ÐAÑAÑØ �‰˜Ò  $§,¡,°(Ò":ØÐ.Ð/Ñ/Ðà Ðð€gØ �‰˜Ò !Ü—'‘'—,‘,˜v t¨d¯l©lÑ':Ó;ˆÜ �W‰W�\‰\˜'¤7¨8°TÓ#:Ó ;Ð;Ø Ð$Ñ $¨×(IÒ(IØ €oØ Ð!Ò !Ø€fØ �‰˜Ò !Ü—‘—‘˜e T¨D¯L©LÑ%8Ó9ˆÜ �W‰W�\‰\˜& (Ó +Ð+à × 'Ñ '¨¸EÐ 'Ó BÐBr'cór—t|t«rJ‚|€g}|j|dj|««y)Nr+)Ú isinstancerãrÚrw)rPr­r]Úvaluess r%rÜzNinjaWriter.WriteVariableList5s5€Ü˜&¤#Ô&Ð&Ð &Ø €~Ø€fØ×ј˜SŸX™X fÓ-Õ.r'c ón—|jdk(rg|D�cgc]4}|jj||j|j¬«‘Œ6}}|jj||j¬«}n\|jdk(rM|D�cgc]"}t j j||«‘Œ$}}t j j||«}|j} |jdk(r| d|jzz } | d|zz } tjdd| «} gd¢} d d jttj| ««zd z} tj| d zd|«}d } d } |D�cgc]}|j||j«‘Œ }}|jdk(rz| dz} |rdnd|j z} |r'|jj#||j «} nt j$j'|«} dt(j*z| z| z}nE|j-|«}t j.j1|«}d|j z|z|z}|j2j5| |||d|| | ¬«|j2j7«| |fScc}wcc}wcc}w)z”Write out a new ninja "rule" statement for a given command. Returns the name of the new rule, and a copy of |args| with variables expanded.r)rŒr˜r£r;z [^a-zA-Z0-9_]r2)r r rrrz(?!Ú|Ú)z\$Nz.$unique_name.rsprr+z%%s gyp-win-tool action-wrapper $arch zcd %s; T)r5ÚrestatrCÚrspfileÚrspfile_content)r1rŽr�r}r‡r-ršr›r•r¤r+Úsubrwrvr7rŠr|ÚBuildCygwinBashCommandLiner.ÚEncodeRspFileListÚsysrrrzrrrrYr±)rPr•rBr@rAržrCr5r#rDÚprotectr|r}Úrun_inrïs r%r>zNinjaWriter.WriteNewNinjaRule;sª€ð ‡{�{�eÒñóá�#ð× Ñ ×0Ñ0Ø�t×)Ñ)°$×2BÑ2Bð1õDàð ðð×&Ñ&×6Ñ6Ø ˜d×.Ñ.ð7ó0�kà �‰˜Ò áEIÓ JÁT¸cŒc×!Ñ!×/Ñ/°°SÕ9ÀT€dÐ JÜ×'Ñ'×5Ñ5°kÀ3ÓG€kð — ‘ €IØ ‡|�|�xÒØ�3˜Ÿ™Ñ%Ñ%€iØ ��t‘Ñ€IÜ—‘�¨¨YÓ7€Iò L€GØ�c—h‘hœs¤2§9¡9¨gÓ6Ó7Ñ7¸#Ñ=€GÜ—&‘&˜ 5™¨#¨{Ó;€Kð €GØ€OÙCGÓ HÁ4¸CˆD× Ñ ˜s D×$6Ñ$6Õ 7À4€DÐ HØ ‡{�{�eÒØÐ/Ñ/€gá‰r C¨$×*<Ñ*<Ñ$<€fÙ Ø×,Ñ,×GÑGØ �$×$Ñ$ó&‰ô×,Ñ,×>Ñ>¸tÓDˆØ8¼3¿>¹>ÑIØñØ!ñ"�gð × 'Ñ '¨Ó ,€cÜ— ‘ ×/Ñ/°Ó5€gؘD×.Ñ.Ñ.°Ñ4°wÑ>€gð  ‡J�J‡O�O�I˜w¨ ¸WØ dØ#°_ðôFð ‡J�J×ÑÔà �dˆ?ÐùòqùòKùò0 Is”9J( 'J-Å4#J2r )T)F))rcrdrerQrŠr–r r†r´r¸rûrrràr/rr r!r#r$r%r&rèrªrærýrùrírîr;rEr~rNrûrQrrtrrúrÜr>rgr'r%ririÙsô„ð!ó#>óJò< óDó("9óHò 4òUònò0ò#òJ 7ò$òLuònò8 3òò,,ò\ òD"ð.FJó^ò@Kò"ð86:ó{òz2òhó.óFó ò Jð05ó2ò"'òH òBó09ód+CòZ/ð!%ô@r'ricó´—tjj|«}|dk(r‡|jdd«|jdd«|jdtd«|jdtd«dd lmcm}t|d g«a t|d g«a t|d g«a y |d k(r›tjj}|jdd «d|dz|d<d|d<d|dz|d<d|d<d|dz|d<dd lmcm}t|d g«a t|d g«a tj j#||«y |}|dk(rd}|jd|«|jdd«|jdt$j&j)dd««|jdt$j&j)dd««y )zDCalculate additional variables for use in the build (called by gyp).r˜ÚOSrfz.dylibÚSHARED_LIB_DIRrÚLIB_DIRrNÚ+generator_additional_non_configuration_keysÚ"generator_additional_path_sectionsÚ!generator_extra_sources_for_rulesr)r;rrrrrSrrrTÚandroidÚlinuxz.sor rr¢)r-rzÚ GetFlavorÚ setdefaultr�Úgyp.generator.xcodeÚ generatorÚxcodeÚgetattrrˆr‰rŠÚMSVSUtilÚTARGET_TYPE_EXTÚgyp.generator.msvsÚmsvsr.ÚCalculateCommonVariablesr<r=rw)rkÚparamsr1Úxcode_generatorÚextsÚmsvs_generatorÚoperating_systems r%riri~s÷€ô �:‰:× Ñ  Ó '€&Ø ˆu‚_Ø× Ñ   uÔ-Ø× Ñ Ð!4°hÔ?Ø× Ñ Ð!1Ü!<¸]Ñ!KôMà× Ñ  Ü!<¸]Ñ!KôM÷ 2Ð1Ü29¸/Ø5°ró3;Ð/ä)0°Ø,¨bó*2Ð&ô)0°Ø+¨Ró)1Ñ%à �‚Ü �<‰<× 'Ñ '€DØ× Ñ   uÔ-Ø-0°4¸ Ñ3EÑ-EÐÐ)Ñ*Ø-/ÐÐ)Ñ*Ø-0°4Ð8HÑ3IÑ-IÐÐ)Ñ*Ø-/ÐÐ)Ñ*Ø-0°4Ð8HÑ3IÑ-IÐÐ)Ñ*÷0Ð/Ü29¸.Ø5°ró3;Ð/ä)0°Ø,¨bó*2Ð&ô×Ñ×/Ñ/Ð0AÀ6ÕJàÐØ �ÒØ ÐØ× Ñ  Ð'7Ô8Ø× Ñ Ð!4°eÔ<Ø× Ñ Ð!1Ü!#§¡§¡¨o¸uÓ!EôGà× Ñ  Ü!#§¡§¡¨o¸uÓ!EõGr'có —tjj|djxsd«}|j di«j dd«}tjj tjj ||««S)zEReturns the path from the toplevel_dir to the build output directory.Úoptionsr;rðÚ output_dirrœ)r<r=rþÚgenerator_outputrÒr�rw)r˜Ú generator_dirrŸs r%ÚComputeOutputDirr¢²sl€ô—'‘'—/‘/ &¨Ñ"3×"DÑ"DÒ"KÈÓL€-ð�z‰zÐ+¨RÓ0×4Ñ4°\À5ÓI€*ô �‰× Ñ œ"Ÿ'™'Ÿ,™, }°jÓAÓ BÐBr'cóº—|dj}tjjtjj |t |«d««}||dœay)zBCalled by __init__ to initialize generator values based on params.ržÚgypfiles)ÚtoplevelÚqualified_out_dirN)rr<r=r�rwr¢Úgenerator_filelist_paths)r˜r¥r¦s r%ÚCalculateGeneratorInputInfor¨¿sU€ð�IÑ × +Ñ +€(Ü—g‘g×&Ñ&¤r§w¡w§|¡|ØÔ  Ó(¨*ó(6ó7Ðð Ø,ñÑr'cóX—tjj|«t||«S)z;Open |path| for writing, creating directories if necessary.)r-rzÚEnsureDirExistsÚopen)r=Úmodes r%rÆrÆÍs!€ä‡*�*×јTÔ"Ü ˆd�DÓ Ðr'có>—|j|d«}|r|dz|zS|S)Nrr+)rÒ)rôÚwrappersÚprogÚwrappers r%ÚCommandWithWrapperr±Ós)€Ø �L‰L˜˜bÓ !€'Ù Ø �S‰=˜4Ñ ÐØ €+r'c ó$‡ —ttjjdd««}|r|Stj dvrÄddlŠ Gˆ fd„d‰ j«}|«}‰ j|«|_ ‰ jjj‰ j|««td|jdz«}tdttjjd d «««}t!||«Stj j#d «r—tj$j'd «rwt)d «5}t+j,d «}|D]G}|j/|«}|sŒtdt|j1d««dz«ccddd«S ddd«yytj dk(r0 tt3j4gd¢««} td| d z«Sy#1swYyxYw#YyxYw)z6Returns a best-guess for a number of concurrent links.ÚGYP_LINK_CONCURRENCYr)Úwin32ÚcygwinNc ó•—eZdZdW°jfdW°jfdW°jfdW°jfdW°jfdW°jfdW°jfdW°jfd W°jfg Zy ) ú1GetDefaultConcurrentLinks..MEMORYSTATUSEXÚdwLengthÚ dwMemoryLoadÚ ullTotalPhysÚ ullAvailPhysÚullTotalPageFileÚullAvailPageFileÚullTotalVirtualÚullAvailVirtualÚsullAvailExtendedVirtualN)rcrdreÚc_ulongÚ c_ulonglongÚ_fields_)Úctypess€r%ÚMEMORYSTATUSEXr·ãs„ø„à ‘V—^‘^Ð$Ø ™Ÿ™Ð(Ø ™×+Ñ+Ð,Ø ™×+Ñ+Ð,Ø ™V×/Ñ/Ð0Ø ™V×/Ñ/Ð0Ø ™F×.Ñ.Ð/Ø ™F×.Ñ.Ð/Ø #¡V×%7Ñ%7Ð8ð �hr'rÅr«lÚGYP_LINK_CONCURRENCY_MAXlrŒz /proc/meminfoz^MemTotal:\s*(\d*)\s*kBi€Údarwin)Úsysctlz-nz hw.memsize)r=r<rÝrÒr�ÚplatformrÄÚ StructureÚsizeofr¸ÚwindllÚkernel32ÚGlobalMemoryStatusExÚbyrefÚmaxrºÚminr!r=Úexistsr«r+Úcompiler,ÚgroupÚ subprocessÚ check_output) Ú pool_sizerÅÚstatÚ mem_limitÚhard_capÚmeminfoÚ memtotal_reÚliner,Ú avail_bytesrÄs @r%ÚGetDefaultConcurrentLinksrßÚs¨ø€ä”"—*‘*—.‘.Ð!7¸Ó;Ó<€)ÙØ Ðä‡\�\Ð(Ñ(Ûö ˜×)Ñ)ô ñ Ó €DØ—M‘M $Ó'€D„MØ ‡M�M×Ñ×/Ñ/°· ± ¸TÓ0BÔCô�A�t×(Ñ(¨]Ñ;Ó<€IÜ�1”cœ"Ÿ*™*Ÿ.™.Ð)CÀUÓKÓLÓM€HÜ ˆy˜(Ó #Ð#Ü ‡|�|×јwÔ'Ü ‡w�w‡~�~�oÔ&Ü �Ô  GÜ—j‘jÐ!;Ó<ˆ ÛˆDØ×#Ñ# DÓ)ˆ%ÙØ ä�Qœ˜EŸK™K¨›NÓ+° Ñ>Ó?Ñ ?÷ !Ñ á÷ !ñ Ü ‡|�|�xÒðÜœ ×/Ñ/Ò0NÓOÓP€kô��K MÑ2Ó 3Ð3ð ÷' !ð ûðÙ úsÅAG?Æ/G?Ç.H Ç?HÈ Hcó—|rdSdS)zwReturns the suffix used to select an appropriate linking rule depending on whether the manifest embedding is enabled.Ú_embedrrg©Úembed_manifests r%rrs€ñ$ˆÐ+¨Ð+r'c 󿇗ˆfd„}t‰«}ttjj dd««dk7}d|j «z}t j›d|›d�}||dd «}|jd |z||d d d d¬«|jd|z||d d d d¬«t j›d|›d�}||dd«}|jd|zd|j «z|d dd¬«y)z7Adds link rules for Windows platform to |master_ninja|.cóF•—dddœ|}dtj|||‰dœzS)NÚ1Ú2)ÚexeÚdllz†%(python)s gyp-win-tool link-with-manifests $arch %(embed)s %(out)s "%(ldcmd)s" %(resname)s $mt $rc "$intermediatemanifest" $manifests)ÚpythonrœÚldcmdÚresnameÚembed)r�r)rërœÚ binary_typeÚ resource_namerãs €r%ÚFullLinkCommandz)_AddWinLinkRules..FullLinkCommandsCø€à Ø ñðñ€Mð ôŸ™ØØØ'Ø&ñ )ñ )ð)r'ÚGYP_USE_SEPARATE_MSPDBSRVÚ0rzLINK%s(DLL) $binaryz! gyp-win-tool link-wrapper $arch z7 $ld /nologo $implibflag /DLL /OUT:$binary @$binary.rspz$binaryrérz $binary.rspz$libs $in_newline $ldflagsTÚ link_pool)r@rïr|r}r{rCrz& $ld /nologo /OUT:$binary @$binary.rsprèrÿzLINK%s $binaryz$in_newline $libs $ldflags)r@rïr|r}rCN) rr=r<rÝrÒÚupperr�rrY)Ú master_ninjarãrðÚrule_name_suffixÚuse_separate_mspdbsrvÚdlldescÚdllcmdÚexe_cmds ` r%Ú_AddWinLinkRulesrûs%ø€ô )ô/¨~Ó>Ðä Œ"�*‰*�.‰.Ð4°cÓ :Ó;¸qÑ@ðà !Ð$4×$:Ñ$:Ó$<Ñ <€'ô"Ÿn›nÒ.Cð E€&ñ ˜6 9¨eÓ 4€&Ø×Ñ�HÐ/Ñ/Ø '°Ø)Ø$@ØØ$ð ô&ð ×Ñ�OÐ&6Ñ6Ø '°Ø)Ø$@ØØ$ð ô&ô�~‹~Ò4ð6€'ñ ˜G Y°Ó 6€'Ø×Ñ�FÐ-Ñ-Ø 0Ð3C×3IÑ3IÓ3KÑ KØ#Ø)Ø$@Ø$ð õ&r'c ó!—|d}tjj|«}|jdi«}tj j tj jt|«|««}tj j|j|«} ttj j| d««} tj| d¬«} tjj|| |«|dk(r d} d} d}d }d }nd } d } d }d}d}d}d}| }d}d}d}d}d}d}d}d}d}tjj|d«\}}}||jdg«}tjj||j«} i}!|D�]\}"}#|"dk(r tj j| |#«} |"dk(r tj j| |#«}|"dk(r3tj j| |#«} | j!d«r| }|"dk(r tj j| |#«}|"dk(r"tj j| |#«}|#}|"dk(r"tj j| |#«}|#}|"dk(r tj j| |#«}|"dk(r tj j| |#«}|"dk(r tj j| |#«}|"d k(r tj j| |#«}|"d!k(r tj j| |#«}|"d"k(r tj j| |#«}|"j!d#«s�Œítj j| |#«|!|"dt#d#« <�Œtj$j'«D]n\}"}#|"j)«j!d#«sŒ&|"dt#d#« }$t+j,d$d%|$«}$tj j| |#«|!|$<Œp|jd&d«}%|%rd'|%z|!d(<|dk(rÑ|D�&cgc] }&||&d)|‘Œ}'}&d}(|jd*d«s tj.j1|'|«}(tj.j3| ||(t«})t5|)j'««D]C\}*}+|r|}+t7d|!t9|+d««},|r |,|*d+k(rd,nd-z },| j;d.|*z|,«ŒEt=d/dg| «} | j;d t7d|!| ««t=d0dg|«}| j;d1t7d|!|««|dk(r| j;d2|«| j;d3d4«| j;d | «| j;d5d6«| j;d7d8«| j;d9d:«| j;d;d<«n™| j;d2t7d(|!|««| j;d=t7d(|!««| j;d t=d>dg| ««|d?k7r<| j;dt=d@dg|««| j;dt=dAd!g|««t>�r5|s| }|s|}| j;dBt=dCg|««| j;dDt=dEg|««| j;dFt=dGg|««t=dHg|«}t=dIg|«}dJ|vr|r|jAdJ| «}dK|vr|r|jAdK|«}| j;dLt7d|!|««| j;dMt7d|!|««|dk(r| j;dN|«n:| j;dNt7d(|!|««| j;dOt7d(|!««| jC«| jEdPtG«¬Q«| jC«|dk(rdRndS}-|dk7rA| jId dTdUdV|-¬W«| jIdXdTdY¬Z«| jId1d[d\dV|-¬W«n¡d]}.d^}/| jId dT|.d_d`|-¬a«| jId1d[|/d_db|-¬a«| jId3dcddtJjLz¬Z«| jId5dedftJjLz¬Z«| jIdgdhditJjLz¬Z«|d?k7r†|dk7r�| jIdjdkdl¬Z«| jIdmdkdn¬Z«dodpdqdrœz}0| jIdsdtdu|0dvdwizdxdydP¬z«| jId{d|du|0dvdwizdxd}dP¬z«| jId~dd€dP¬�«�nî|dk(rC| jIdjd‚dƒtJjLzd_d„¬…«tO| du¬†«tO| d‡¬†«�n¦| jIdˆd‰dŠdV|-¬W«| jId‹dŒd�dV|-¬W«| jIdjdŽd�¬Z«| jId�d‘d’¬Z«| jId“d”d•d–d—iz¬Z«d˜}1d™|1d—drœz}0dš}2| jIdsd›du|0|2dœd�œzdxdždP¬z«| jIdŸd›du|1|2dœd�œzdxdždP¬z«| jId{d du|0|2d¡d�œzdxdždP¬z«| jId¢d du|1|2d¡d�œzdxdždP¬z«| jId~d£d¤dP¬�«| jId¥d¦d§¬Z«| jId¨d©dª¬Z«| jId«d¬d­¬Z«| jId®d¯d°¬Z«| jId±d²d³¬Z«| jId´dµd¶¬Z«| jId·d¸d¹¬Z«| jIdºd»d¼¬Z«|dk(r&| jId½d¾d¿tJjLz¬Z«n| jId½d¾dÀ¬Z«|dk(r&| jIdÁdÂdÃtJjLz¬Z«n.|dÄk(r| jIdÁdÂdŬZ«n| jIdÁdÂdƬZ«| jC«tQ«}3|dÇD]V}tjjS||tj j |««D]}4|3jU|4«ŒŒXtQ«}5i}6i}7tQ«}8tQ«}9|D�]–}&tjj|&«\}}:};||jdg«}<|||>j_dÊ«}>tajb|>«je«}?tj jg|«}@dË}A|;dÌk7rAdÍ|;zz }Atj jA@|:dÎz«}Bti«}Ctk|?|6|@||C| |B||j¬Ï« }D|Djm|=||«}4|Cjo«dkDrrttj j| B««5}E|EjqCjs««ddd«Cju«| jwB«|4rw|:|4jy«k7r)|=dÐdÌk(r!|7j{|:g«j}|4«|4|6|&<|&|3vr|5jU|4jy««|9jU|:«�Œ†|8jU|:«�Œ™|7rc| jC«| jdÑ«t5|7«D]4}F| j�|FdÒ|7|FD�Gcgc]}G|Gjy«‘Œc}G«Œ6|8|9z }8|8rC| jC«| jdÓ«t5|8«D]}:| j�|:dÒ«Œ|5rM| jC«| j�dÔdÒt5|5««| jƒ|jdÕdÔ««| ju«ycc}&w#1swY�ŒÌxYwcc}Gw)ÖNržrðz build.ninjaéx)Úwidthr)zlib.exeÚUNSETzlink.exez$ldr¡r¿zc++z$ccz$cxxr¢r£r¦r§rÚmake_global_settingsÚARzAR.hostÚCCzclang-clÚCXXzCC.hostzCXX.hostÚLDzLD.hostÚNMzNM.hostÚREADELFz READELF.hostÚ_wrapperz\.HOST$z.hostr¾zexport DEVELOPER_DIR='%s' &&ÚLINKr»Ú"ninja_use_custom_environment_filesrkz -m32z -m64Úcl_Ú CC_targetÚ CXX_targetrÀr¤rzmidl.exerÑzrc.exeÚml_x86zml.exeÚml_x64zml64.exeÚmtzmt.exer¥Ú AR_targetr˜Ú NM_targetÚREADELF_targetÚar_hostÚAR_hostÚnm_hostÚNM_hostÚ readelf_hostÚ READELF_hostÚCC_hostÚCXX_hostz$(CC)z$(CXX)rÁrÂÚld_hostÚ ldxx_hostró)ÚdepthÚmsvcÚgcczCC $outzU$cc -MMD -MF $out.d $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $outz$out.d)r@rïr5ÚdepsrÎzE$cc $defines $includes $cflags $cflags_c $cflags_pch_c -c $in -o $out)r@rïzCXX $outzX$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_cc $cflags_pch_cc -c $in -o $outz_ninja -t msvc -e $arch -- $cc /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_c zaninja -t msvc -e $arch -- $cxx /nologo /showIncludes /FC @$out.rsp /c $in /Fo$out /Fd$pdbname_cc z$out.rspz$$defines $includes $cflags $cflags_c)r@rïr|r}r z%$defines $includes $cflags $cflags_cczIDL $inzd%s gyp-win-tool midl-wrapper $arch $outdir $tlb $h $dlldata $iid $proxy $in $midl_includes $idlflagszRC $inzU%s gyp-win-tool rc-wrapper $arch $rc $defines $resource_includes $rcflags /fo$out $inrÃzASM $outzS%s gyp-win-tool asm-wrapper $arch $asm $defines $includes $asmflags /c /Fo $out $inr8zAR $outz'rm -f $out && $ar rcs $arflags $out $inr5z(rm -f $out && $ar rcsT $arflags $out $inzÄif [ ! -e $lib -o ! -e $lib.TOC ]; then %(solink)s && %(extract_toc)s > $lib.TOC; else %(solink)s && %(extract_toc)s > $lib.tmp && if ! cmp -s $lib.tmp $lib.TOC; then mv $lib.tmp $lib.TOC ; fi; fiz;$ld -shared $ldflags -o $lib -Wl,-soname=$soname %(suffix)szI{ $readelf -d $lib | grep SONAME ; $nm -gD -f p $lib | cut -f1-2 -d' '; })rÚ extract_tocrz SOLINK $libTÚsuffixz@$link_file_listz$link_file_listz<-Wl,--whole-archive $in $solibs -Wl,--no-whole-archive $libs)r@r{rïr|r}rCrzSOLINK(module) $libz3-Wl,--start-group $in -Wl,--end-group $solibs $libsrÿz LINK $outzH$ld $ldflags -o $out -Wl,--start-group $in -Wl,--end-group $solibs $libs)r@rïrCzLIB $outzU%s gyp-win-tool link-wrapper $arch False $ar /nologo /ignore:4221 /OUT:$out @$out.rspz$in_newline $libflags)r@rïr|r}râFrÏz OBJC $outz[$cc -MMD -MF $out.d $defines $includes $cflags $cflags_objc $cflags_pch_objc -c $in -o $outrÐz OBJCXX $outz^$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_objcc $cflags_pch_objcc -c $in -o $outzLIBTOOL-STATIC $out, POSTBUILDSzarm -f $out && ./gyp-mac-tool filter-libtool libtool $libtool_flags -static -o $out $in$postbuildsrøzLIPO $out, POSTBUILDSz6rm -f $out && lipo -create $in -output $out$postbuildsr÷zSOLIPO $out, POSTBUILDSz\rm -f $lib $lib.TOC && lipo -create $in -output $lib$postbuilds &&%(extract_toc)s > $lib.TOCr!z]{ otool -l $lib | grep LC_ID_DYLIB -A 5; nm -gP $lib | cut -f1-2 -d' ' | grep -v U$$; true; }z($ld %(type)s $ldflags -o $lib %(suffix)szòif [ ! -e $lib -o ! -e $lib.TOC ] || otool -l $lib | grep -q LC_REEXPORT_DYLIB ; then %(solink)s && %(extract_toc)s > $lib.TOC; else %(solink)s && %(extract_toc)s > $lib.tmp && if ! cmp -s $lib.tmp $lib.TOC; then mv $lib.tmp $lib.TOC ; fi; fiz@$link_file_list$postbuildszSOLINK $lib, POSTBUILDSz-shared)r"rFz$in $solibs $libsÚ solink_notoczSOLINK(module) $lib, POSTBUILDSz-bundleÚsolink_module_notoczLINK $out, POSTBUILDSz1$ld $ldflags -o $out $in $solibs $libs$postbuildsr•zPREPROCESS INFOPLIST $outzT$cc -E -P -Wno-trigraphs -x c $defines $in -o $out && plutil -convert xml1 $out $outr˜zCOPY INFOPLIST $inz:$env ./gyp-mac-tool copy-info-plist $in $out $binary $keysr—zMERGE INFOPLISTS $inz-$env ./gyp-mac-tool merge-info-plist $out $inr‰zCOMPILE XCASSETS $inz.$env ./gyp-mac-tool compile-xcassets $keys $inrsz2COMPILE HEADER MAPS AND COPY FRAMEWORK HEADERS $inz“$env ./gyp-mac-tool compile-ios-framework-header-map $out $framework $in && $env ./gyp-mac-tool copy-ios-framework-headers $framework $copy_headersr{zMACTOOL $mactool_cmd $inz1$env ./gyp-mac-tool $mactool_cmd $in $out $binaryr@z"PACKAGE FRAMEWORK $out, POSTBUILDSzG./gyp-mac-tool package-framework $out $version$postbuilds && touch $outr>z&PACKAGE IOS FRAMEWORK $out, POSTBUILDSzC./gyp-mac-tool package-ios-framework $out $postbuilds && touch $outr­z STAMP $outz%s gyp-win-tool stamp $outz${postbuilds}touch $outrhz COPY $in $outz)%s gyp-win-tool recursive-mirror $in $outÚzoszrm -rf $out && cp -fRP $in $outz>ln -f $in $out 2>/dev/null || (rm -rf $out && cp -af $in $out)Ú build_filesz;make_global_settings needs to be the same for all targets. z vs. zutf-8r¢r£r;r¶)rr¤zShort names for targets.Úphonyz(Empty targets (output for completeness).ÚallÚdefault_target)Br-rzr�rÒr<r=r�rwr¢rrÆr6rqÚCopyToolÚParseQualifiedTargetr{rér"rÝr‹Úlowerr+r~r.ÚExtractSharedMSVSSystemIncludesÚGenerateEnvironmentFilesrQr±r2rÚrÚ$generator_supports_multiple_toolsetsr0r±rCrßrYr�rrûrOÚ AllTargetsrPršÚMergeGlobalXcodeSettingsToSpecÚ RelativePathÚQualifiedTargetÚencoderTrUrXr’rrirûÚtellÚwriteÚgetvalueÚcloserär^rŽrßÚcommentr°Údefault)HÚ target_listÚ target_dictsÚdatar˜r‡ržr1rðrprsÚmaster_ninja_filerõr¡r¿rÀr¤rr¥rrrÁrÂÚcc_host_global_settingÚcxx_host_global_settingÚclang_clr¦rr§rÚ build_filer2rÚ build_to_rootr®Úkeyr Ú key_prefixr¾Úqualified_targetÚconfigsÚshared_system_includesÚcl_pathsr@r=rïr Ú cc_commandÚ cxx_commandÚmtime_preserving_solink_baseÚ solink_baseÚ solink_suffixÚ all_targetsr£r?rnÚtarget_short_namesÚempty_target_namesÚnon_empty_target_namesr•r¤Úthis_make_global_settingsrïÚqualified_target_for_hashrmÚ base_pathr¢r~Ú ninja_outputÚwriterr­Ú short_namersH r%ÚGenerateOutputForConfigrYHs(€à �9Ñ €'Ü �:‰:× Ñ  Ó '€&Ø—J‘JÐ0°"Ó5€/ô�g‰g×Ñ܇g�g‡l�lÔ# FÓ+¨[Ó9ó;€)ô—7‘7—<‘< × 4Ñ 4°iÓ@€.ä ¤§¡§¡¨n¸mÓ!LÓMÐÜ×$Ñ$Ð%6¸cÔB€,ô‡*�*×Ñ�f˜n¨oÔ>ð ˆu‚_Ø €Bð €BØ €CØ €BØ�Gà €BØ €BØ €CØ €BØ €DØ€GØ€Ià €'Ø €'Ø €(ØÐØ ÐØ €(Ø €"Ø €'Ø €'Ø€,ä—Z‘Z×4Ñ4°[À±^ÓDÑ€*ˆa�ؘjÑ)×-Ñ-Ð.DÀbÓIÐÜ—*‘*×/Ñ/° Ø07×0DÑ0DóF€-à €(Ü(�j€cˆ5Ø ˆd‚{Ü �7‰7�<‰<˜  uÓ -€bØ ˆiÒÜ—‘— ‘ ˜]¨EÓ2€gØ ˆd‚{Ü �7‰7�<‰<˜  uÓ -€bØ �‰�ZÔ ØˆØ ˆe‚|Ü �G‰G�L‰L˜¨Ó .€cØ ˆiÒÜ—‘— ‘ ˜]¨EÓ2€gØ$ÐØ ˆjÒÜ—‘—‘˜m¨UÓ3€hØ %ÐØ ˆd‚{Ü �7‰7�<‰<˜  uÓ -€bØ ˆiÒÜ—‘— ‘ ˜]¨EÓ2€gØ ˆd‚{Ü �7‰7�<‰<˜  uÓ -€bØ ˆiÒÜ—‘— ‘ ˜]¨EÓ2€gØ ˆiÒÜ—‘— ‘ ˜]¨EÓ2€gØ ˆnÒÜ—W‘W—\‘\ -°Ó7€lØ ‡|�|�JÖÜ)+¯©¯©°mÀUÓ)K€hˆsÐ$”S˜“_Ð$Ð%Ó&ð=)ôB—J‘J×$Ñ$Ö&�j€cˆ5Ø ‡y�yƒ{×јJÕ'ØÐ(œ˜Z›Ð(Ð)€jÜ—6‘6˜* g¨zÓ:€jÜŸW™WŸ\™\¨-¸Ó?€hˆzÒð 'ð &×)Ñ)Ð*=¸tÓDÐÙØ5Ð8IÑI€HˆVÑà ˆu‚_á'2ó4Ù'2Ð#ðÐ,Ñ-Ð.>Ñ?À ÓLØ'2ð ð4à!ÐØ × Ñ ÐCÀQÔ Gä × Ñ × <Ñ <Ø�ó (ðô×!Ñ!×:Ñ:ؘÐ)?ÄóM€Hä˜XŸ^™^Ó-Ö.‰ ˆˆdÙ àˆÜ" 4¨Ü ˜T 5Ó )ó+€gá à˜t uš}‘G°'Ñ:ˆØ×јE D™L¨'Õ2ð/ô˜;¨Ð-¨rÓ2€"Ø×јÔ0°°xÀÓDÔEܘL¨%Ð0°#Ó6€#Ø×јÔ1°%¸À3ÓGÔHà ˆu‚_Ø×ј$ Ô#Ø×ј% Ô,Ø×ј$ Ô#Ø×ј$ Ô)Ø×ј( HÔ-Ø×ј( JÔ/Ø×ј$ Õ)à×ј$Ô 2°6¸8ÀRÓ HÔIØ×ј&Ô"4°V¸XÀtÓ"LÔMØ×ј$Ô 2°KÀÐ3FÈÓ KÔLØ �‚ð×ÑØ Ô" K°Ð#6¸Ó;ô=à×ÑØ Ô'Ð)9¸9Ð(EÀwÓOôQö*٠؀g٠؀hà×ј)Ô%7¸¸ ÀWÓ%MÔNØ×ј)Ô%7¸¸ ÀWÓ%MÔNØ×ј.Ü,¨nÐ-=¸|ÓLôNä  ) ¨gÓ6€GÜ! : ,°Ó9€Hð�'ÑÑ4Ø&×.Ñ.¨w¸Ó;€gØ�8ÑÑ 7Ø(×0Ñ0°¸3Ó?€hØ×ј)Ü,¨Y¸À'ÓJôLà×ј*Ü,¨Z¸À8ÓLôNà �‚Ø×јI wÕ/à×јIÔ'9Ø �(˜Gó(%ô&à×јKÔ);Ø �(˜Ió*'ô(ð×ÑÔà×Ñ�KÔ'@Ó'BÐÔCØ×ÑÔà˜U’?‰¨€$à ˆu‚_Ø×ÑØ Øð-àØ ð ôð×ÑØ Øð-ðô/ð ×ÑØ Øð.àØ ð õð<€Jð>€Kð×ÑØ ØØØØ<Ø ð ôð×ÑØ ØØØØ=Ø ð ôð×ÑØ Øð*ä,/¯N©Nñ;ðô=ð ×ÑØ ØðLä�~‰~ñð ô ð×ÑØ ØðIä�~‰~ñðô ð ˆu‚_˜ 5šØ×ÑØ ØØ7ðô9ð×ÑØØØ8ðô:ð ð Lð:ñ <ñ <ð!ð×ÑØØØ Ø*¨hÐ8JÐ-KÑKØà HØ ðôð×ÑØØ'Ø Ø*¨hÐ8JÐ-KÑKØØKØ ðôð×ÑØ ØðEà ð öð �‚Ø×ÑØØð@ä—‘ñ ðØ/ðô1ô�\°$Õ7Ü�\°%×8à×ÑØ Øð1àØ ð ôð×ÑØØð2àØ ð ôð×ÑØ Ø3ððôð×ÑØ Ø)ØFðôHð×ÑØØ+ð 'àðIð Jñ Jð ôLð=€Kð ð"ðGñ Hñ Hð!ð&2€MØ×ÑØØ+Ø Ø*¸ Ø6?ñ.AñAàØ)Ø ðôð×ÑØØ+Ø Ø m¸YÑGÑGØØ)Ø ðôð×ÑØØ3Ø Ø*¸ Ø6?ñ.AñAàØ)Ø ðôð×ÑØØ3Ø Ø }¸iÑHÑHØØ)Ø ðôð×ÑØ Ø)ð.à ð ôð ×ÑØØ-ð0ðô2ð ×ÑØØ&ØJðôLð×ÑØØ(Ø=ðô?ð×ÑØØ(Ø>ðô@ð×ÑØ%ØFðDðôEð ×ÑØØ,ØAðôCð×ÑØØ6ððôð ×ÑØØ:ððôð  ˆu‚_Ø×ÑØ ØØ*¬S¯^©^Ñ;ðõ=ð ×ÑØ ØØ'ðô)ð ˆu‚_Ø×ÑØ Ø!Ø9¼C¿N¹NÑJðõLð�‚Ø×ÑØ Ø!Ø/ðõ1ð ×ÑØ Ø!ØNðôPð×ÑÔä“€+ؘ=Ô)€jÜ—*‘*×'Ñ'¨ Ø(4Ü(*¯©×(8Ñ(8¸Ó(DöFˆð‡o�o�fÕñFð*ô “€+ð€.ðÐô “uÐô›5Ðä%Ðô � ‰ ×'Ñ'Ð(8Ó9ñ€J��gð!% ZÑ 0× 4Ñ 4Ð5KÈRÓ PÐØ Ð#<Ò <ñ;â "Ñ$8ð :ó;Ð <ð Ð(Ñ )€DØ �‚Ü ×Ñ×8Ñ8¸¸jÑ9IÈ4ÔPô —‘×(Ñ(¨°W×5IÑ5IØ).ó0€Jô!$§ ¡ × :Ñ :¸:ÀtØ;Bó!DÐà 9× @Ñ @ÀÓ IÐÜ—[‘[Ð!:Ó;×EÑEÓG€Nä—‘—‘  Ó+€IØ €CØ�(ÒØ ˆS�7‰]Ñ€cÜ—'‘'—,‘,˜s I¨t°h©Ó?€Kä“:€LÜ ˜¨¸ÀIØ%Ø'¨Ø¨g×.BÑ.BôD€Fð × Ñ ˜d K°Ó A€Fà×ÑÓ˜QÒä ”b—g‘g—l‘l >°;Ó?Ô @ÀJØ×ј×.Ñ.Ó0Ô1÷ Aà×ÑÔØ×јKÔ(á Ø �×#Ñ#Ó%Ò %¨$¨y©/¸XÒ*EØ×%Ñ% d¨BÓ/×6Ñ6°vÔ>Ø)/€nÐ%Ñ&Ø ˜[Ñ (Ø�‰˜×*Ñ*Ó,Ô-Ø× Ñ  Ö&à×јTÖ"ðm&ñpð×ÑÔØ×ÑÐ3Ô4ÜÐ/Ö0ˆ Ø×ј WØ/AÀ*Ò/Mó/OÙ/MðDE¨q¯}©}­Ø/Mñ/OõPð1ð*Ð,BÑBÐÙØ×ÑÔØ×ÑÐCÔDÜÐ)Ö*ˆØ×ј˜wÕ'ð+ñØ×ÑÔØ×Ñ�u˜g¤v¨kÓ':Ô;Ø×ј×,Ñ,Ð-=¸uÓEÔFà×ÑÕùòG4÷v AÑ @üò,/OsÑ7AA4ú AA9þ*ABÁA9AB cóÈ—|d}|D]X}tjj|jd|«}dd|g}t d|›d|›�«t j |«ŒZy)Nržrœrrz-Cz Building [z]: )r<r=rwrrârÕÚ check_call)r=r»r˜ržr�ÚbuilddirÚ argumentss r%Ú PerformBuildr^• sY€Ø �9Ñ €'Û€fÜ�w‰w�|‰|˜G×0Ñ0°%¸Ó@€Hؘ$ Ð)€IÝ ¢©Ð 3Ô4Ü×ј)Õ$ñ r'có–—tjtjtj«|\}}}}}t|||||«yr )ÚsignalÚSIGINTÚSIG_IGNrY)Úarglistr;r<r=r˜r‡s r%ÚCallGenerateOutputForConfigrdž s:€ô ‡-�-”— ‘ œvŸ~™~Ô.à;BÑ8€;� ˜d F¨Kܘ+ |°T¸6À;ÕOr'có˜—tjj|«}|jdi«jdd«}tjj |«dk(r7t j||«\}}t j||t«\}}|rt|||||«y||dd}|drU tjt|««}g}|D]}|j|||||f«Œ|jt |«y|D]}t|||||«Œy#t"$r} j%«| ‚d} ~ wwxYw)Nrðr�r)rr»Úparallel)r-ršÚ&CloneConfigurationForDeviceAndEmulatorrÒrzr�r“Ú ShardTargetsÚInsertLargePdbShimsr�rYÚmultiprocessingÚPoolr"rßrvrdÚKeyboardInterruptÚ terminate) r;r<r=r˜Ú user_configÚ config_namesrCÚarglistsr‡Úes r%ÚGenerateOutputrr§ sR€ä×$Ñ$×KÑKØó€,ð— ‘ Ð,¨bÓ1×5Ñ5°hÀÓE€+܇Z�Z×ј&Ó! UÒ*Ü (× 5Ñ 5°kÀ<Ó PÑ€K�Ü (× <Ñ <Ø�\Ô#>ó!@Ñ€K�ñܘK¨°t¸VØ'õ)ð   ¨A¡Ñ/Ð0@ÑA€LØ ˆjÒð Ü×#Ñ#¤C¨ Ó$5Ó6ˆØˆÛ'ˆKØ �/‰/ؘL¨$°¸ ÐDõ Fð(ð �‰Ô,¨hÕ7ó &ˆ+Ü  ¨\¸4ÀØ +õ -ñ&øô òØ �‰Ô؈ûðúsÂ>AD)Ä) E Ä2EÅE )rÅ)7Ú __future__rrêrhrTr�rjÚos.pathr<r+r`rÕr�rVr-Ú gyp.commonrÚgyp.msvs_emulationÚ gyp.MSVSUtilr“Úgyp.xcode_emulationÚ cStringIOrÚ ImportErrorÚiorÚgyp.ninja_syntaxr6r�rˆr‰rŠr§rzÚCrossCompileRequestedr/r&r2r9rBÚobjectrDririr¢r¨rÆr±rßrrûrYr^rdrrrgr'r%Úrs@ðõ &ãÛ ÛÛ ÛÛÛ Û ÛÛ Û Û ÛÝ!ÛÝÛðÝ õ*Ý'ðØØØØð+Ø0Ø Ø.ð Ø$Ø ØØñ=ÐðD/1Ð+Ø%'Ð"Ø$&Ð!ØÐà'*§z¡z×'GÑ'GÓ'IÐ$ò ò ;òCò/ô S<ˆVôS<ô\b�&ôbòJ-2Gòh Cò óò ò4 òn,ò .&òbJ òZ%òPó-øð[LòßðúsÁCà C+Ã*C+