hyb
2026-01-30 7657e1b2fa251a2ea372710ad75cb395a3c0e374
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
Ë
hñúhzãó„—dZddlZddlZddlZddlZddlZddlZddlmZm    Z    m
Z
m Z m Z m Z mZmZmZmZmZmZmZddlmZddlZddlmZddlmZej<e«Z d„Z!d„Z"d„Z#d    „Z$d
„Z%d „Z&d „Z'd e(de)fd„Z*d„Z+d„Z,d„Z-d„Z.Gd„de/«Z0Gd„de/«Z1d„Z2d"d„Z3d„Z4d"d„Z5d„Z6d#d„Z7d„Z8d„Z9d „Z:d!„Z;y)$z
Utils for macOS platform.
éN) ÚLC_BUILD_VERSIONÚLC_CODE_SIGNATUREÚ LC_ID_DYLIBÚ LC_LOAD_DYLIBÚLC_LOAD_UPWARD_DYLIBÚLC_LOAD_WEAK_DYLIBÚLC_PREBOUND_DYLIBÚLC_REEXPORT_DYLIBÚLC_RPATHÚ LC_SEGMENT_64Ú    LC_SYMTABÚLC_UUIDÚLC_VERSION_MIN_MACOSX)ÚMachO)Úcompatcó\—t«}|r tjj|«ryy)z
    Check if Python interpreter was installed via Homebrew command 'brew'.
 
    :return: True if Homebrew else otherwise.
    TF)Úget_homebrew_prefixrÚ base_prefixÚ
startswith©Ú
env_prefixs úHH:\Change_password\venv_build\Lib\site-packages\PyInstaller/utils/osx.pyÚis_homebrew_envr.ó(€ô%Ó&€JÙ”f×(Ñ(×3Ñ3°JÔ?ØØ ócó\—t«}|r tjj|«ryy)z
    Check if Python interpreter was installed via Macports command 'port'.
 
    :return: True if Macports else otherwise.
    TF)Úget_macports_prefixrrrrs rÚis_macports_envr;rrcó¨—tjd«}tjj    tjj    |««}|S)z9
    :return: Root path of the Homebrew environment.
    Úbrew©ÚshutilÚwhichÚosÚpathÚdirname©Úprefixs rrrHó6€ô\‰\˜&Ó !€Fä W‰W_‰_œRŸW™WŸ_™_¨VÓ4Ó 5€FØ €Mrcó¨—tjd«}tjj    tjj    |««}|S)z9
    :return: Root path of the Macports environment.
    Úportr!r's rrrRr)rcóė|jDcgc] }|djtthvsŒ|‘Œ"}}t    |«dk(sJdt    |«›d«‚|dScc}w)zJ
    Helper that finds the version command in the given MachO header.
    rézNExpected exactly one LC_BUILD_VERSION or LC_VERSION_MIN_MACOSX command, found ú!)ÚcommandsÚcmdrrÚlen)Úheaderr0Ú version_cmds   rÚ_find_version_cmdr4\sr€ð #)§/¡/Öm˜3°S¸±V·Z±ZÔDTÔVkÐClÒ5l’3Ðm€KÐmÜ ˆ{Ó ˜qÒ  ðmØ
XÔY\Ð]hÓYiÐXjÐjkÐlómÐ  à q‰>Ðùòns
 A°Acó|—t|«}|jd}t|«}t|dj«S)zÙ
    Obtain the version of macOS SDK against which the given binary was built.
 
    NOTE: currently, version is retrieved only from the first arch slice in the binary.
 
    :return: (major, minor, revision) tuple
    rr-)rÚheadersr4Ú _hex_tripletÚsdk)ÚfilenameÚbinaryr2r3s    rÚget_macos_sdk_versionr;hs:€ô8‹_€FØ ^‰^˜AÑ €Fä# FÓ+€KÜ ˜  A™×*Ñ*Ó +Ð+rcó6—|dzdz    }|dzdz    }|dz}|||fS)Niÿéiÿééÿ©)ÚversionÚmajorÚminorÚrevisions    rr7r7ws6€à xÑ  BÑ &€EØ vÑ  !Ñ #€Eؘ$‘€HØ %˜Ð !Ð!rr9Úreturncó(—g}t|«jD]`}t|«}|djtk(r|j |dj «ŒC|j |dj«Œbttt|««S)z}
    Get the -macosx-version-min used to compile a macOS binary.
 
    For fat binaries, the minimum version is selected.
    rr-) rr6r4r0rÚappendrAÚminosÚminÚmapr7)r9Úversionsr2r0s    rÚmacosx_version_minrLs{€ð €Hܘ“/×)Ñ)ò*ˆÜ Ó'ˆØ ˆq‰6:‰:Ô.Ò .Ø O‰O˜C ™FŸN™NÕ +ð O‰O˜C ™FŸL™LÕ )ð *ô Œs”< Ó*Ó +Ð+rcóŽ—d|cxkr dksJd«‚Jd«‚d|cxkr dksJd«‚Jd«‚d|cxkr dksJd«‚Jd«‚t|«}|jd}t|«}|dz|dzz|z|d_t    |j
d    «5}|j |«d
d
d
«y
#1swYy
xYw) zª
    Overwrite the macOS SDK version declared in the given binary with the specified version.
 
    NOTE: currently, only version in the first arch slice is modified.
    rr?zInvalid major version value!zInvalid minor version value!zInvalid revision value!r=r>r-úrb+N)rr6r4r8Úopenr9Úwrite)r9rBrCrDr:r2r3Úfps        rÚset_macos_sdk_versionrR‘sã€ð Ô ˜Ò Ð<Ð<Ó<Ñ Ð<Ð<Ó<Ð Ø Ô ˜Ò Ð<Ð<Ó<Ñ Ð<Ð<Ó<Ð Ø Ô ˜CÒ Ð:Ð!:Ó:Ñ Ð:Ð!:Ó:Ð ä 8‹_€FØ ^‰^˜AÑ €Fä# FÓ+€Kà "™ u°¡zÑ1°HÑ<€KNÔä     ˆfo‰o˜uÓ    %ð¨Ø ‰ RÔ÷÷ñús  B;Â;Ccód—tjj|«}t|«}|jd}|j
Dcgc]}|dj tk(sŒ|‘Œ}}t|«dk(sJd«‚d}|j
Dcgc].}|dj tk(sŒ|dj|k(sŒ-|‘Œ0}}t|«dk(sJd«‚|dd}|j
Dcgc]}|dj tk(sŒ|‘Œ}}t|«dk(sJd«‚|dd}||j|jzz
|_||j|jzz
|_t#|j$«j'd«rd    nd
}    t)j*|j |    z «|    z|_t/|d «5}
|j1|
«d d d «|j2r
dd lm} m} m} m}m}t/|d «5}
|jA|
«}|jB| k(r2tE|jF«Dcgc]}| jA|
«‘Œ}}n@|jB| k(r1tE|jF«Dcgc]}|jA|
«‘Œ}}d}||jz
|_$|
jKd«|jM|
«|D]}|jM|
«Œ    d d d «y y cc}wcc}wcc}w#1swYŒ1xYwcc}wcc}w#1swYy xYw)a
    Fixes the Mach-O headers to make code signing possible.
 
    Code signing on macOS does not work out of the box with embedding .pkg archive into the executable.
 
    The fix is done this way:
    - Make the embedded .pkg archive part of the Mach-O 'String Table'. 'String Table' is at end of the macOS exe file,
      so just change the size of the table to cover the end of the file.
    - Fix the size of the __LINKEDIT segment.
 
    Note: the above fix works only if the single-arch thin executable or the last arch slice in a multi-arch fat
    executable is not signed, because LC_CODE_SIGNATURE comes after LC_SYMTAB, and because modification of headers
    invalidates the code signature. On modern arm64 macOS, code signature is mandatory, and therefore compilers
    create a dummy signature when executable is built. In such cases, that signature needs to be removed before this
    function is called.
 
    Mach-O format specification: http://developer.apple.com/documentation/Darwin/Reference/ManPages/man5/Mach-O.5.html
    éÿÿÿÿrz#Executable contains code signature!s__LINKEDITr-z(Expected exactly one __LINKEDIT segment!z$Expected exactly one SYMTAB section!Úarm64i@irNN)Ú    FAT_MAGICÚ FAT_MAGIC_64Úfat_archÚ
fat_arch64Ú
fat_header)'r$r%Úgetsizerr6r/r0rr1r Úsegnamer ÚoffsetÚstroffÚstrsizeÚfileoffÚfilesizeÚ_get_arch_stringr2rÚmathÚceilÚvmsizerOrPÚfatÚmacholib.mach_orVrWrXrYrZÚ from_fileobjÚmagicÚrangeÚ    nfat_archÚsizeÚseekÚ
to_fileobj)r9Ú    file_sizeÚ
executabler2r0Úsign_secÚ__LINKEDIT_NAMEÚ linkedit_segÚ
symtab_secÚ    page_sizerQrVrWrXrYrZrfÚiÚarchsÚarchs                    rÚfix_exe_for_code_signingry§së€ô(—‘—‘ Ó)€Iôx“€JØ × Ñ  Ñ #€Fð &Ÿ™ÖR˜°#°a±&·*±*Ô@QÓ2Q’ÐR€HÐRÜ ˆx‹=˜AÒ ÐDÐDÓDÐ ð<€OØ#)§?¡?Öx˜C°c¸!±f·j±jÄMÓ6QÐVYÐZ[ÑV\×VdÑVdÐhwÓVw’CÐx€LÐxÜ ˆ|Ó  Ò !ÐMÐ#MÓMÐ !Ø ‘? 1Ñ%€Là!'§¡ÖL˜#°C¸±F·J±JÄ)Ó4K’#ÐL€JÐLÜ ˆz‹?˜aÒ ÐGÐ!GÓGРؘA‘˜qÑ!€Jð # f§m¡m°j×6GÑ6GÑ&GÑH€JÔØ%¨¯©¸×9MÑ9MÑ)MÑN€LÔô,¨F¯M©MÓ:×EÑEÀgÔN‘ÐTZ€IÜŸ)™) L×$9Ñ$9¸IÑ$EÓFÈÑR€LÔô
ˆh˜Ó    ð "Ø×јÔ÷ð
‡~ƒ~ß_Õ_Ü (˜EÓ "ð    $ bð×)Ñ)¨"Ó-ˆC؏y‰y˜IÒ%Ü<AÀ#Ç-Á-Ó<PÖQ°q˜×.Ñ.¨rÕ2ÐQÑQØ—‘˜lÒ*Ü>CÀCÇMÁMÓ>RÖS¸˜×0Ñ0°Õ4ÐSÐSà˜‘9ˆDØ! D§K¡KÑ/ˆDŒIà G‰GAŒJØ N‰N˜2Ô Øò $Ø—‘ Õ#ñ $÷    $ð    $ðùòYSùò
yùòM÷<ñüòRùâS÷    $ð    $úsaÁLÁ$LÂLÂ+LÂ>LÃ/L
Ä L
ÇLÈ8L&ÉLÉ)L&ÊL!Ê AL&ÌLÌ
L&Ì&L/có‚—|j}|jdz}|dk(r|dk(ryy|dk(r|dk(ryy    |d
k(ry Jd «‚) z¹
    Converts cputype and cpusubtype from mach_o.mach_header_64 into arch string comparible with lipo/codesign.
    The list of supported architectures can be found in man(1) arch.
    iÿÿÿir>Úx86_64hÚx86_64i éÚarm64erUéÚi386zUnhandled architecture!)ÚcputypeÚ
cpusubtype)r2rr‚s   rrbrbs\€ð n‰n€GØ×"Ñ" ZÑ/€Jؐ.Ò Ø ˜Š?ØàØ    OÒ    #Ø ˜Š?ØàØ    AŠØØ+Ð+Ó+ˆ5rcóŒ‡ —ddl}|j«}t|d«5Š tˆ fd„d«D]}|j    |«Œ    ddd«t |«}|j D]—}|jDcgc]}|djtk(sŒ|‘Œ}}|sŒ6|d}|dj}    |j«}
|
j    |    «|
j«dd} t| «dk(sJ‚| |d_
Œ™t|d«5Š |j‰ «ddd«y#1swYŒáxYwcc}w#1swYyxYw)    aG
    Modifies the Mach-O image UUID stored in the LC_UUID command (if present) in order to ensure that different
    frozen applications have different identifiers. See TN3178 for details on why this is required:
    https://developer.apple.com/documentation/technotes/tn3178-checking-for-and-resolving-build-uuid-problems
    rNÚrbcó&•—‰jd«S)Ni )Úread)rQs€rú<lambda>z'update_exe_identifier.<locals>.<lambda>&sø€ "§'¡'¨$£-€rrr-r=rN)ÚhashlibÚsha1rOÚiterÚupdaterr6r/r0rÚuuidÚcopyÚdigestr1rP) r9Ú pkg_filenamerˆÚpkg_hashÚchunkrpr2r0Úuuid_cmdÚ original_uuidÚ combined_hashÚnew_uuidrQs             @rÚupdate_exe_identifierr–sFø€ó؏|‰|‹~€HÜ     ˆl˜DÓ    !ð# RÜÓ/°Ó5ò    #ˆEØ O‰O˜EÕ "ñ    #÷#ô
x“€JØ×$Ñ$ò$ˆà#)§?¡?ÖL˜C°c¸!±f·j±jÄGÓ6K’CÐLˆÐLÙØ ؘA‘;ˆð! ™ ×(Ñ(ˆ ð
!Ÿ ™ ›ˆ Ø×ј]Ô+à ×'Ñ'Ó)¨#¨2Ð.ˆÜ8‹} Ò"Ð"Ð"à#ˆ‰ Õð'$ô,
ˆh˜Ó    ð "Ø×јÔ÷ð÷9#ð#üòM÷(ðús#¢&D)Á9D5ÂD5ÄD:Ä)D2Ä:Ecó—eZdZdZy)ÚInvalidBinaryErrorz]
    Exception raised by `get_binary_architectures` when it is passed an invalid binary.
    N)Ú__name__Ú
__module__Ú __qualname__Ú__doc__r@rrr˜r˜Es „ñð    rr˜có"‡—eZdZdZˆfd„ZˆxZS)ÚIncompatibleBinaryArchErrorzq
    Exception raised by `binary_to_target_arch` when the passed binary fails the strict architecture check.
    có2•—d}t‰||›d|›«y)NzMhttps://pyinstaller.org/en/stable/feature-notes.html#macos-multi-arch-supportz, For details about this error message, see: )ÚsuperÚ__init__)ÚselfÚmessageÚurlÚ    __class__s   €rr¡z$IncompatibleBinaryArchError.__init__Ps#ø€Ø]ˆÜ ‰Ñ˜G˜9Ð$PÐQTÐPUÐVÕWr)r™ršr›rœr¡Ú __classcell__)r¥s@rržržLsø„ñ÷XðXrržcó◠   t|«}t|j«|j
Dcgc]}t |j«‘Œc}fS#t$r}td«|‚d}~wwxYwcc}w)zÅ
    Inspects the given binary and returns tuple (is_fat, archs), where is_fat is boolean indicating fat/thin binary,
    and arch is list of architectures with lipo/codesign compatible names.
    zInvalid Mach-O binary!N)rÚ
ValueErrorr˜Úboolrfr6rbr2)r9rpÚeÚhdrs    rÚget_binary_architecturesr¬Usf€ð
Bܘ8“_ˆ
ô 
—‘Ó È*×J\ÑJ\Ö!]À3Ô"2°3·:±:Õ">Ò!]Ð ]Ð]øô òBÜ Ð!9Ó:ÀÐAûðBüâ!]s‚ A¯A,Á    A)Á A$Á$A)cóò—|xs|}dd||d|g}tj|tjtjd¬«}|jr(t d|›d|j›d|j ›«‚y    )
z\
    Convert the given fat binary into thin one with the specified target architecture.
    Úlipoz-thinú-outputúutf-8©ÚstdoutÚstderrÚencodingúlipo command (ú) failed with error code ú
!
output: N©Ú
subprocessÚrunÚPIPEÚSTDOUTÚ
returncodeÚ SystemErrorr²)r9Ú    thin_archÚoutput_filenameÚcmd_argsÚps     rÚconvert_binary_to_thin_archrÃasw€ð&Ò1¨€Oؘ ¨H°iÀÐQ€H܏‰x¬
¯©Ä
×@QÑ@QÐ\cÔd€A؇|‚|ܘN¨8¨*Ð4MÈaÏlÉlÈ^Ð[fÐgh×goÑgoÐfpÐqÓrÐrðrcóæ—ddd|g|¢}tj|tjtjd¬«}|jr(t d|›d|j›d|j ›«‚y    )
zJ
    Merge the given single-arch thin binary files into a fat binary.
    r®z-creater¯r°r±rµr¶r·Nr¸)rÀÚslice_filenamesrÁrÂs    rÚmerge_into_fat_binaryrÆlsn€ð˜     9¨oÐPÀÐP€H܏‰x¬
¯©Ä
×@QÑ@QÐ\cÔd€A؇|‚|ܘN¨8¨*Ð4MÈaÏlÉlÈ^Ð[fÐgh×goÑgoÐfpÐqÓrÐrðrcó—|s|}t|«\}}|dk(r|st|›d«‚y
|r:||vrt|›d|›d«‚tjd|||«t    ||«y
||vrt|›d|›d|d›d    «‚y
) z‰
    Check that the given binary contains required architecture slice(s) and convert the fat binary into thin one,
    if necessary.
    Ú
universal2z is not a fat binary!z does not contain slice for r.z1Converting fat binary %s (%s) to thin binary (%s)z" is incompatible with target arch z  (has arch: rz)!N)r¬ržÚloggerÚdebugrÃ)r9Ú target_archÚ display_nameÚis_fatrws     rÚbinary_to_target_archrÎvsÀ€ñ
؈ ä,¨XÓ6M€FˆEؐlÒ"ÙÜ-°°Ð>SÐ.TÓUÐ Uðñ Ø %Ñ'Ü1°\°NÐB^Ð_jÐ^kÐklÐ2mÓnÐnä L‰LÐLÈhÐXdÐfqÔ rÜ '¨°+Õ >à %Ñ'Ü1Ø#nÐ$FÀ{ÀmÐS_Ð`eÐfgÑ`hÐ_iÐikÐlóðð(rcó—tjd|«ddd|g}tj|tjtj
d¬«}|j r(td|›d|j ›d    |j›«‚y
) zp
    Remove the signature from all architecture slices of the given binary file using the codesign utility.
    zRemoving signature from file %rú/usr/bin/codesignz--removeú--all-architecturesr°r±úcodesign command (r¶r·N)    rÉrÊr¹rºr»r¼r½r¾r²)r9rÁrÂs   rÚremove_signature_from_binaryrӒs~€ô ‡LLÐ2°HÔ=Ø# ZÐ1FÈÐQ€H܏‰x¬
¯©Ä
×@QÑ@QÐ\cÔd€A؇|‚|ÜÐ.¨x¨jÐ8QÐRS×R^ÑR^ÐQ_Ð_jÐkl×ksÑksÐjtÐuÓvÐvðrcó¸—g}|sd}n|jd«|r"|jd«|j|«|r|jd«tjd|«dd|dd    d
g|¢|‘}tj|tj
tj d ¬ «}|jr(td |›d|j›d|j›«‚y)zj
    Sign the binary using codesign utility. If no identity is provided, ad-hoc signing is performed.
    ú-z--options=runtimez--entitlementsz--deepzSigning file %rrÐz-sz--forcerÑz --timestampr°r±rÒr¶r·N)
rGrÉrÊr¹rºr»r¼r½r¾r²)r9ÚidentityÚentitlements_fileÚdeepÚ
extra_argsrÁrÂs       rÚ sign_binaryrڝsä€ð€J٠؉à×ÑÐ-Ô.ÙØ×ÑÐ*Ô+Ø×ÑÐ+Ô,Ù Ø×ј(Ô#ä
‡LLÐ" HÔ-à˜T 8¨YÐ8MÈ}ðØ_iðØksð€Hô    ‰x¬
¯©Ä
×@QÑ@QÐ\cÔd€A؇|‚|ÜÐ.¨x¨jÐ8QÐRS×R^ÑR^ÐQ_Ð_jÐkl×ksÑksÐjtÐuÓvÐvðrcóP—t|«\}}|r~tj«5}g}|D]M}tjj ||«}t |||¬«t||«|j|«ŒOt|g|¢­Žddd«yt||«y#1swYyxYw)aé
    Modify the given dylib's identity (in LC_ID_DYLIB command) and the paths to dependent dylibs (in LC_LOAD_DYLIB)
    commands into `@rpath/<basename>` format, remove any existing rpaths (LC_RPATH commands), and add a new rpath
    (LC_RPATH command) with the specified path.
 
    Uses `install-tool-name` utility to make the changes.
 
    The system libraries (e.g., the ones found in /usr/lib) are exempted from path rewrite.
 
    For multi-arch fat binaries, this function extracts each slice into temporary file, processes it separately,
    and then merges all processed slices back into fat binary. This is necessary because `install-tool-name` cannot
    modify rpaths in cases when an existing rpath is present only in one slice.
    )rÀN)
r¬ÚtempfileÚTemporaryDirectoryr$r%ÚjoinrÃÚ_set_dylib_dependency_pathsrGrÆ)r9Ú target_rpathrÍrwÚtmpdirrÅrxÚslice_filenames        rÚset_dylib_dependency_pathsrãµs¤€ô$-¨XÓ6M€FˆEá Ü × (Ñ (Ó *ð    >¨fØ ˆOØò 7Ü!#§¡§¡¨f°dÓ!;Ü+¨H°dÈNÕ[Ü+¨N¸LÔIØ×&Ñ& ~Õ6ð     7ô
" (Ð =¨_Ó =÷    >ð    >ô    $ H¨lÕ;÷    >ð    >ús ¥A!BÂB%có—ttttth}t |«}d}t «}t «}|jD]•}|jD]„}|dj}    |    |vr|    tthvrŒ%|djd«jd«}
|    |vr|j|
«Œ^|    tk(r|j|
«Œy|    tk(sŒƒ|
}Œ†Œ—~d} |r>tt!j"d«t!j"|«j$z «} g} d} |D]›}t&j(j+|«rŒ#dd    g}t-|Dcgc]}||v‘Œc}«rŒCd
} tt!j"d«t!j"|«j$z «}||k(rŒ‰| j/||f«Œg}| r | |k7r|d | gz }| D] \}}|d ||gz }Œ|D]}||k(rŒ    |d |gz }Œ| r ||vr|d|gz }|sydg|¢|‘}t1j2|t0j4t0j6d¬«}|j8r(t;d|›d|j8›d|j<›«‚ycc}w)z‘
    The actual implementation of set_dylib_dependency_paths functionality.
 
    Implicitly assumes that a single-arch thin binary is given.
    Nrr}r°úz@rpathFz"/Library/Frameworks/Tcl.framework/z!/Library/Frameworks/Tk.framework/Tz-idz-changez -delete_rpathz
-add_rpathÚinstall_name_toolr±zinstall_name_tool command (r¶r·)rrrr    r
rÚsetr6r/r0r rÚdecodeÚrstripÚaddÚstrÚpathlibÚPurePathÚnameÚmacholibÚutilÚin_system_pathÚanyrGr¹rºr»r¼r½r¾r²)r9ràÚ _RELOCATABLEr:Údylib_idÚrpathsÚ linked_libsr2r0Úlc_typer%Únormalized_dylib_idÚchanged_lib_pathsÚrpath_requiredÚ
linked_libÚ _exemptionsÚxÚnew_pathÚinstall_name_tool_argsÚ original_pathÚrpathrÁrÂs                       rrßrß×sâ€ô    ÜÜÜÜð €Lô8‹_€Fà€HÜ ‹U€FÜ“%€Kà—.‘.ò ˆØ—?‘?ò      ˆCؘ!‘f—j‘jˆGؘlÑ*¨w¼xÌÐ>UÑ/UØðq‘6—=‘= Ó)×0Ñ0°Ó8ˆDà˜,Ñ&Ø—‘ Õ%ØœHÒ$Ø—
‘
˜4Õ ØœKÓ'Ø‘ñ      ð ð     ðÐÙÜ!¤'×"2Ñ"2°8Ó"<¼w×?OÑ?OÐPXÓ?Y×?^Ñ?^Ñ"^Ó_Ðð
ÐØ€NØ!ò9ˆ
ä =‰=× 'Ñ '¨
Ô 3Ø ð 1Ø /ð
ˆ ô ¨Ö5 AZ’Ò5Ô 6Ø ðˆä”w×'Ñ'¨Ó1´G×4DÑ4DÀZÓ4P×4UÑ4UÑUÓVˆØ ˜Ò !Ø à× Ñ  *¨hÐ!7Õ8ð19ð6 ÐñÐ2°hÒ>Ø 5Ð*=Ð">Ñ>Ðð$5òGш xØ 9¨m¸XÐ"FÑFÑðGð
ò
ˆØ LÒ  Ø ØØ Ø ð#
ñ    
Ñð
ñ˜,¨fÑ4ØØ Ø ð#
ñ    
Ðñ "Øð$ÐGÐ&<ÐG¸hÐG€H܏‰x¬
¯©Ä
×@QÑ@QÐ\cÔd€A؇|‚|ÜØ)¨(¨Ð3LÈQÏ\É\ÈNÐZeÐfg×fnÑfnÐeoÐ pó
ð    
ðùòa6sÅ I?
cóì—tj|«}|jjjdk7ry|jjjj|jdzk7ryy)zK
    Check if the given shared library is part of a .framework bundle.
    ÚVersionsFz
.frameworkT)rìríÚparentrî)Úlib_paths rÚis_framework_bundle_librQs^€ô
×Ñ Ó)€Hð‡×Ñ×"Ñ" jÒ0ØØ‡×Ñ×$Ñ$×)Ñ)¨X¯]©]¸\Ñ-IÒIØà rc
ó0—d}t«}t«}|D]/\}}}|dk7rŒtj|«}tj|«}t    |«sŒDt    |«sŒP|j
dz dz }    |    j «s‘|j
j
j
dz dz }
|
j «sYd}|j
j
j
} tjrtd| ›d«‚tjd| «Œ|
}    |j
dz dz } |jt| «t|    «d    f«|jt|j
j
d
z «t|j
j«d f«|j
j
j
} |jt| |jz «ttjd «|jz «d f«|jt| dz «d d f«|j| «Œ2ddh}|D]’} |D]‹\}}}tj|«}    |j| «}|j"}|ddk7rŒC|d}||vrŒM|jt| |z «ttjd «|z «d f«ŒŒ”|rtjd«t%|«S#t $rYŒ½wxYw)a 
    Scan the given TOC list of collected files for shared libraries that are collected from macOS .framework bundles,
    and collect the bundles' Info.plist files. Additionally, the following symbolic links:
      - `Versions/Current` pointing to the `Versions/<version>` directory containing the binary
      - `<name>` in the top-level .framework directory, pointing to `Versions/Current/<name>`
      - `Resources` in the top-level .framework directory, pointing to `Versions/Current/Resources`
      - additional directories in top-level .framework directory, pointing to their counterparts in `Versions/Current`
        directory.
 
    Returns TOC list for the discovered Info.plist files and generated symbolic links. The list does not contain
    duplicated entries.
    FÚBINARYÚ    Resourcesz
Info.plistTzCould not find Info.plist in r.z Could not find Info.plist in %s!ÚDATAÚCurrentÚSYMLINKzVersions/CurrentzVersions/Current/ResourcesÚHelpersrrr}zœOne or more collected .framework bundles have missing Info.plist file. If you are building an .app bundle, you will most likely not be able to code-sign it.)rçrìÚPathrírrÚis_filerÚstrict_collect_moder¾rÉÚwarningrêrërîÚ relative_tor¨ÚpartsÚsorted)Úcollected_filesÚinvalid_framework_foundÚframework_filesÚframework_pathsÚ    dest_nameÚsrc_nameÚtypecodeÚsrc_pathÚ    dest_pathÚinfo_plist_srcÚinfo_plist_src_topÚ framework_dirÚinfo_plist_destÚdest_framework_pathÚ VALID_SUBDIRSÚremaining_pathÚremaining_path_partsÚdir_names                  rÚ$collect_files_from_framework_bundlesr'as'€ð$Ðä“e€OÜ“e€Oð*9ó=1Ñ%ˆ    8˜XØ xÒ Ø ä—<‘< Ó)ˆÜ×$Ñ$ YÓ/ˆ    ô' xÔ0Ø ô' yÔ1Ø ð"Ÿ™¨;Ñ6¸ÑEˆØ×%Ñ%Ô'ð"*§¡×!7Ñ!7×!>Ñ!>ÀÑ!LÈ|Ñ![Ð Ø%×-Ñ-Ô/ð +/Ð'Ø (§¡× 6Ñ 6× =Ñ = Ü×-Ò-Ü%Ð(EÀmÀ_ÐTUÐ&VÓWÐWä—N‘NÐ#EÀ}ÔUÙØ/ˆNØ#×*Ñ*¨[Ñ8¸<ÑGˆØ×ÑœS Ó1´3°~Ó3FÈÐOÔPð
    ×ÑœS ×!1Ñ!1×!8Ñ!8¸9Ñ!DÓEÄsÈ9×K[ÑK[×K`ÑK`ÓGaÐclÐmÔnà'×.Ñ.×5Ñ5×<Ñ<Ðð    ×ÑÜ Ð# i§n¡nÑ4Ó 5Ü ”× Ñ Ð!3Ó4°y·~±~ÑEÓ FØ ð
ô     ð    ×ÑÜ Ð# kÑ1Ó 2Ø (Ø ð
ô     ð    ×ÑÐ/Ö0ð{=1ðD  Ð,€Mà.òÐØ-<ò    Ñ )ˆIx Ü×(Ñ(¨Ó3ˆIð Ø!*×!6Ñ!6Ð7JÓ!Kð$2×#7Ñ#7Ð  ð$ AÑ&¨*Ò4Øð,¨AÑ.ˆHؘ}Ñ,Øà × Ñ ÜÐ'¨(Ñ2Ó3Ü”G×$Ñ$Ð%7Ó8¸8ÑCÓDØð!õ ñ)    ðñ:܏‰ð Hô    
ô
/Ó "Ð"øô9ò Ùð úsÉ4L    Ì        LÌL)N)NNF)<rœrcr$rìr¹r"rÜrgrrrrrrr    r
r r r rrÚmacholib.MachOrÚ macholib.utilrïÚPyInstaller.logÚlogÚloggingÚ PyInstallerrÚ    getLoggerr™rÉrrrrr4r;r7rëÚtuplerLrRryrbr–Ú    Exceptionr˜ržr¬rÃrÆrÎrÓrÚrãrßrr'r@rrú<module>r1sôðñó Û    ÛÛÛ Û÷÷÷õõ!Ûå!Ýà    ˆ×    Ñ    ˜8Ó    $€ò
ò
òòò    ò ,ò"ð, ð,¨ó,ò$ò,Z$òz,ò.'ôT    ˜ô    ôX )ôXò    ^ósòsóò8wówò0<òDw
òt ó ~#r