a „oeT!ã@shddlZddlmZejZejZddd„Zdd„Zdd„ZGd d „d ƒZGd d „d ƒZ Gd d„dƒZ dS)éN)Úgencachec Cslg}zt ||||¡}Wnty.d}Yn0|du�rŠddl}t ||||¡}| ¡} |durÆg}t| ¡ƒD]R} |  | ¡} |  | ¡} |   ¡} | j tj ks¶| j tjkrr| jtj@rr| | d¡qr|D]¼}|  |¡\}}|duròtd|fƒ‚|  ¡} | j tjk�r$| d¡}| |¡}|  ¡} |jj || |  d¡¡}t|j|j|j|jƒ|jD],} | \}}}|d}| |||df¡�qXqÊnÞ|�sžt|j  ¡ƒ}|D]Ä}z|j!|}Wn"t"�yÖtd|fƒ‚Yn0t #|¡}t$||ddƒ}t$||ddƒ}|du�s|du�r$td|fƒ‚t||||ƒ|D],} | \}}}|d}| |||df¡�q6�q¢|S) Nrz%The interface '%s' can not be locatedéÿÿÿÿéz4Interface '%s' does not exist in this cached typelibZ_vtables_dispatch_Z _vtables_z Interface '%s' is IDispatch only)%rZGetModuleForTypelibÚ ImportErrorZwin32com.client.buildÚ pythoncomZLoadRegTypeLibZ GetTypeCompÚrangeZGetTypeInfoCountZ GetTypeInfoZGetDocumentationZ GetTypeAttrZtypekindZTKIND_INTERFACEZTKIND_DISPATCHZ wTypeFlagsZTYPEFLAG_FDUALÚappendZBindTypeÚ ValueErrorZGetRefTypeOfImplTypeZGetRefTypeInfoZclientÚbuildZ VTableItemÚ_doCreateVTableÚclsidZ python_nameZ bIsDispatchZ vtableFuncsÚlistZVTablesToClassMapÚvaluesZ NamesToIIDMapÚKeyErrorZGetModuleForCLSIDÚgetattr)Z typelibGUIDZlcidÚmajorÚminorZinterface_namesÚretÚmodZwin32comZtlbZ typecomp_libÚiÚinfoÚdocÚattrÚnameZ type_infoZ type_compZrefhtypeÚitemÚnamesÚdispidÚdescÚinvkindÚiidZsub_modÚ is_dispatchÚ method_defs©r"ú3C:\Program Files\Certbot\pkgs\win32com\universal.pyÚRegisterInterfaces s|       ÿ þÿ   ÿÿ  ÿ   r$cCs*t|||ƒ}t ||¡}t |||¡dS©N)Ú DefinitionÚ_univgwZ CreateVTableZRegisterVTable)rZinterface_namer r!ZdefnZvtblr"r"r#r Ws  r cCsX|d}|tjtjB@r*t tj¡d}n*|tjkrFt tj¡d}nt |¡d}|S)Nré)rZVT_BYREFZVT_ARRAYr'ZSizeOfVTZVT_PTRZ VT_RECORD)Z typeTupleÚtÚcbr"r"r#Ú _CalcTypeSize]s r+c@seZdZddd„ZdS)ÚArgNcCs.||_|\|_|_|_|_t|ƒ|_d|_dS©Nr)rÚvtÚinOutÚdefaultr r+ÚsizeÚoffset)ÚselfZarg_inforr"r"r#Ú__init__ss z Arg.__init__)N)Ú__name__Ú __module__Ú __qualname__r4r"r"r"r#r,rsr,c@s&eZdZd dd„Zdd„Zdd„ZdS) ÚMethodrcCsº|\}}}|d}|dd…}|d}|d} |d} ||_||_|r^|dd…dkr^d|}||_d} g|_| D](} t| ƒ} | | _| | j} |j | ¡qr| |_|  ¡|_ |  ¡|_ dS)Nrr(rééZOnzOn%s) rrrÚargsr,r2r1rÚcbArgsÚ_GenerateInArgTupleÚ _gw_in_argsÚ_GenerateOutArgTupleÚ _gw_out_args)r3Z method_infoZ isEventSinkZ all_namesrrrrrZarg_defsZret_defr<ZargDescÚargr"r"r#r4|s*    zMethod.__init__cCsDg}|jD]0}|jtj@s$|jdkr | |j|j|jf¡q t|ƒSr-) r;r/rZ PARAMFLAG_FINrr.r2r1Útuple©r3ÚlrAr"r"r#r=–s  zMethod._GenerateInArgTuplecCsTg}|jD]@}|jtj@s0|jtj@s0|jdkr | |j|j|j|j f¡q t |ƒSr-) r;r/rZPARAMFLAG_FOUTZPARAMFLAG_FRETVALrr.r2r1r rBrCr"r"r#r?žs  ÿ þýzMethod._GenerateOutArgTupleN)r)r5r6r7r4r=r?r"r"r"r#r8{s r8c@s>eZdZdd„Zdd„Zdd„Zdd„Zejej fd d „Z d S) r&cCs4||_g|_||_|D]}t|ƒ}|j |¡qdSr%)Ú_iidÚ_methodsZ _is_dispatchr8r)r3rr r!rÚentryr"r"r#r4¬s zDefinition.__init__cCs|jSr%)rE©r3r"r"r#r´szDefinition.iidcCsdd„|jDƒS)NcSsg|] }|j‘qSr")r<©Ú.0Úmr"r"r#Ú ¸óz,Definition.vtbl_argsizes..©rFrHr"r"r#Ú vtbl_argsizes·szDefinition.vtbl_argsizescCsdd„|jDƒS)NcSsg|]}t|jƒ‘qSr")Úlenr;rIr"r"r#rL»rMz-Definition.vtbl_argcounts..rNrHr"r"r#Úvtbl_argcountsºszDefinition.vtbl_argcountsc CsÞ|j|}d}||j|ƒ}t|d|ƒ}|j|j|j<| |jd|j|dd¡} t| ƒt kr¤t | ƒt |j ƒdkr„| d}| dd…} qÌt dt |j ƒdt | ƒfƒ‚n(| g} |   dgt |j ƒd¡t | ƒ} || |j |ƒ|S)z'Dispatch a call to an interface method.rZpolicyNr(z"Expected %s return values, got: %s)rFr>rrZ_dispid_to_func_rZ _InvokeEx_rÚtyperBrPr@Ú TypeErrorÚextend) r3ÚobÚindexZargPtrÚReadFromInTupleÚWriteFromOutTupleÚmethÚhrr;ZretValr"r"r#Údispatch½s(    ÿÿzDefinition.dispatchN) r5r6r7r4rrOrQr'rWrXr[r"r"r"r#r&«súr&)N) rZwin32com.clientrZ com_errorr'r$r r+r,r8r&r"r"r"r#Ús  K 0