
                            S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr   SSKJ!r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  SSK)r)                           S.S jr* S/S jr+S r,S r-  S0S jr.S r/S1S jr0S  r1S! r2S" r3                             S2S# jr4\Rj                  \Rl                  " \Rn                  Rp                  5       " S$ S%\Rr                  5      5       5       r:\Rl                  " \Rn                  Rv                  5       " S& S'\:5      5       r<\Rl                  " \Rn                  Rz                  5       " S( S)\:5      5       r>S*S+S,S-.r?\?\:l@        g)3z(Command for creating instance templates.    )absolute_import)division)unicode_literalsN)base_classes)	constants)image_utils)instance_template_utils)instance_utils)metadata_utils)partner_metadata_utils)utils)base)
exceptions)
completers)flags)resource_manager_tags_utils)	mesh_util)service_proxy_aux_data)util)	arg_utils)labels_util)logc           
         U R                   R                  [        R                  5        [        R
                  " U 5        [        R                  " XS9  [        R                  " U USUUUS9  U(       a  [        R                  " U 5        O[        R                  " U 5        [        R                  " U 5        [        R                  " U SUUUUUS9  [        R                  " U 5        [        R                  " U 5        U[        R                   R"                  4;   n[        R$                  " U U5        [        R&                  " U 5        [        R(                  " U 5        [        R*                  " U S5        [        R,                  " U 5        [        R.                  " U 5        [        R0                  " U 5        [        R2                  " U 5        [        R4                  " U 5        [6        R8                  " U 5        [        R:                  " U SS9  [        R<                  " U 5        [        R>                  " U 5        [        R@                  " U 5        [        RB                  " U 5        [        RD                  " U 5        [        RF                  " U 5        U(       a  [        RH                  " U 5        [        RJ                  " U U5        [        RL                  " U 5        [N        RP                  " U SS5        [        RR                  " U US	9  [        RT                  " U 5        [        RV                  " U 5        [        RX                  " U 5        [        RZ                  " U 5        [        R\                  " U 5        U(       a  [        R^                  " U 5        U
(       a,  [        R`                  " U 5        [        Rb                  " U 5        U(       a  [        Rd                  " U 5        [        Rf                  " XS
9  U(       a  [        Rh                  " U 5        [j        Rl                  " U 5        [        Rn                  " U 5        U	(       a  [        Rp                  " U 5        [        Rr                  " U 5        U(       a'  U(       a  U Ru                  SSS9  U Ru                  SSS9  [v        Rx                  " U SSS9  U Ru                  SSS9  [        Rz                  " 5       [|        l?        [|        R~                  R                  U SS9  U(       a:  [        R                  " 5       R                  U 5        [        R                  " U 5        [        R                  " U SSUS9  U R                   R                  [        R                  5        U(       a  [        R                  " U 5        U(       a  [        R                  " U 5        U(       a  [        R                  " U 5        U(       a  [        R                  " U SS9  [        R                  " U 5        U(       a  [        R                  " U 5        U(       a  [        R                  " U 5        U(       a  [        R                  " U 5        gg)z<Adding arguments applicable for creating instance templates.
enable_kmsT)r   support_bootsupport_multi_writersupport_replica_zonessupport_disk_labelsF)	instancessupport_network_queue_countsupport_vlan_nicsupport_ipv6_onlysupport_igmp_querysupport_enable_vpc_scoped_dns)instancezadded tozinstance-template)support_flex_start)release_trackz--subnet-regionz'Specifies the region of the subnetwork.)help--instance-template-regionz7Specifies the region of the regional instance template.
subnetworkattach)resource_typeoperation_typez--descriptionz:Specifies a textual description for the instance template.create)r.   zDSpecifies the reservation for instances created from this template.
zBThe type of reservation for instances created from this template.
)
group_textaffinity_text support_specific_then_x_affinity)	is_createN)Odisplay_info	AddFormatinstance_templates_flagsDEFAULT_LIST_FORMATr   AddMetadataArgsinstances_flagsAddDiskArgsAddCreateDiskArgsAddLocalSsdArgsWithSizeAddLocalSsdArgsAddCanIpForwardArgsAddAddressArgsAddAcceleratorArgsAddMachineTypeArgsr   ReleaseTrackALPHAAddMaintenancePolicyArgsAddNoRestartOnFailureArgsAddPreemptibleVmArgsAddServiceAccountAndScopeArgsAddTagsArgsAddCustomMachineTypeArgsAddImageArgsAddNetworkArgsAddShieldedInstanceConfigArgsr   AddCreateLabelsFlagsAddNetworkTierArgsAddPrivateNetworkIpArgsAddMinNodeCpuArgAddNestedVirtualizationArgsAddThreadsPerCoreArgsAddEnableUefiNetworkingArgsAddResourceManagerTagsArgsAddNumaNodeCountArgsAddStackTypeArgsAddIpv6NetworkTierArgsmaintenance_flagsAddResourcePoliciesArgsAddProvisioningModelVmArgs"AddInstanceTerminationActionVmArgsAddIPv6AddressArgsAddIPv6PrefixLengthArgsAddInternalIPv6AddressArgsAddInternalIPv6PrefixLengthArgsAddWatchdogTimerArgAddMaxRunDurationVmArgsAddDiscardLocalSsdVmArgsAddPreemptionNoticeDurationArgsAddServiceProxyConfigArgsAddMeshArgssole_tenancy_flagsAddNodeAffinityFlagToParserAddLocationHintArgAddVisibleCoreCountArgs AddNetworkPerformanceConfigsArgsadd_argumentr   AddRegionFlagMakeInstanceTemplateArgCreateInstanceTemplateArgAddArgumentMakeSourceInstanceArgAddConfigureDiskArgsAddReservationAffinityGroupAddCacheUpdaterr   InstanceTemplatesCompleterAddHostErrorTimeoutSecondsArgsAddLocalSsdRecoveryTimeoutArgsAddMaintenanceIntervalArgsAddGracefulShutdownArgsAddTurboModeArgsAddDisplayDeviceArgAddSkipGuestOsShutdownArgsAddWorkloadIdentityConfigArgs)parserr(   support_source_instancesupport_local_ssd_sizesupport_kmsr   support_mesh"support_host_error_timeout_secondssupport_numa_node_countsupport_visible_core_countsupport_max_run_duration support_region_instance_templatesupport_subnet_regionr   "support_local_ssd_recovery_timeoutr!   support_maintenance_intervalr2   support_graceful_shutdownr#   r"   support_watchdog_timerr   r$   r'   support_display_devicesupport_skip_guest_os_shutdown"support_preemption_notice_durationr%    support_workload_identity_configdeprecate_maintenance_policys                                  0lib/surface/compute/instance_templates/create.py_CommonArgsr   2   s   B 	 8 L LM  (f=##/1- ++F3##F+%%f-  "=')+$A $$V,$$V,!.43D3D3J3J2K!K**63OP++F3&&v.//>f%**62v&  (//7""6*$$Vd;))&1""6*--f5''/--f5,,V4((0""6+<=((0++j- ,,+ 44V<$$V,))&1,,V411&9''/++F3,,V4'33F;44 ((0008$$V,++F3226:%
"K   $F  
 L 	G   668 	 	(((I224@@H11&9-- (H	 	%%j&K&KL'226:'226:!..v6++FdC""6*''/#..v6%11&9 &    c                    [         R                  " U 5        [         R                  " XS9  [         R                  " U 5        [         R                  " U 5        [         R
                  " U 5        [         R                  " U 5        [         R                  " U 5        [         R                  " U 5        [         R                  " U 5        [         R                  " XS9  g)aH  Validate flags for instance template that affects instance creation.

Args:
    args: argparse.Namespace, An object that contains the values for the
      arguments specified in the .Args() method.
    support_kms: If KMS is supported.
    support_max_run_duration: max-run-durrations is supported in instance
      scheduling.
r   )r   N)r9   ValidateDiskCommonFlagsValidateDiskBootFlagsValidateCreateDiskFlagsValidateLocalSsdFlagsValidateNicFlags"ValidateServiceAccountAndScopeArgsValidateAcceleratorArgs ValidateReservationAffinityGroup%ValidateNetworkPerformanceConfigsArgsValidateInstanceScheduling)argsr   r   s      r   _ValidateInstancesFlagsr      s     ))$/''E))$/''-""4(44T:))$/224877=,,
r   c                 &   U(       a  UR                   (       d  g[        R                  " 5       nUR                  XR                  5      nUR                  5       Ul        UR                  (       Ga  U R                  R                  nUR                  5       Ul        UR                   H  nUR                  5       nUR                  S5      Ul        UR                  S5      Ul        UR                  S5      n	U	(       aM  UR                  R!                  UR                  S5      R#                  5       R%                  SS5      5      Ul        UR                  S5      Ul        UR                  R*                  R-                  U5        M     SUl        g)z)Set the source instance for the template.Nzdevice-namezauto-deletezinstantiate-from-_zcustom-image)source_instancer6   rq   ResolveAsResource	resourcesSelfLinksourceInstanceconfigure_diskclientmessagesSourceInstanceParamssourceInstanceParamsDiskInstantiationConfigget
deviceName
autoDeleteInstantiateFromValueValuesEnumupperreplaceinstantiateFromcustomImagediskConfigsappend
properties)
compute_apir   instance_templater   source_instance_argsource_instance_refr   diskdisk_configinstantiate_froms
             r   _AddSourceInstanceToTemplater      sH   
 
!(<(<
0FFH+==
!! &9%A%A%C"	!!**H-5-J-J-L*##446k#xx6k#xx6k"45	,,KK+,224<<S#F 	#
 !% 8k,,88??L $ "&r   c                    SnSnSnSn[        US5      (       d$  [        US5      (       d  [        US5      (       d  U$ UR                  S5      (       d.  UR                  S5      (       d  UR                  S5      (       d  U$ UR                  b  UR                  nUR                  b  UR                  nUR                  b  UR                  n[
        R                  " XXE5      nU$ )zCommon routine for creating instance template.

Build a shielded VM config message.

Args:
    messages: The client messages.
    args: the arguments passed to the test.

Returns:
    A shielded VM config message.
Nshielded_vm_secure_bootshielded_vm_vtpm shielded_vm_integrity_monitoring)hasattrIsSpecifiedr   r   r   r
   #CreateShieldedInstanceConfigMessage)r   r    shielded_instance_config_messageenable_secure_bootenable_vtpmenable_integrity_monitorings         r   "BuildShieldedInstanceConfigMessager      s     &*"+ $d-..	)	*	*	9	:	:++ 

4
5
5122ABB++	!!-55	&''K	**6"&"G"G 88
 # 
*)r   c                 2    [         R                  " XUX45      $ )z5Builds a confidential instance configuration message.)r
   !CreateConfidentialInstanceMessager   r   !support_confidential_compute_type%support_confidential_compute_type_tdxsupport_snp_svsms        r   &BuildConfidentialInstanceConfigMessager   P  s      
	9	97+
? ?r   c                     U " [        [        R                  " U5      5       VVs/ s H  u  p#U R                  X#S9PM     snnS9$ s  snnf )NkeyvalueadditionalProperties)sortedsix	iteritemsAdditionalProperty)
labels_clslabelsr   r   s       r   PackageLabelsr   Y  sO    	 #3==#899jc 
'
'C
'
=9
 s   A
c                     [        X5      n[        U SS5      (       a  Uc  [        R                  " 5       nSUS'   Uc  g[        X5      $ )z5Initializes labels based on args and the given class.service_proxyFNongce-service-proxy)getattrcollectionsOrderedDictr   )r   r   labels_destr   s       r   ParseCreateArgsWithServiceProxyr   f  sL    4%&T?E**~&&(f"&F^	z	**r   c                     [        U SS5      (       ac  U R                  c  [        R                  S S  U l        SU R                  ;  a-  SU R                  ;  a  U R                  R	                  S5        g g g g )Nr   Fcloud-platform.https://www.googleapis.com/auth/cloud-platform)r   scopesr   DEFAULT_SCOPESr   )r   s    r   AddScopesForServiceProxyr   s  sj    T?E**{{,,Q/dk 	+<DKKO
kk)* P 	, +r   c                    [        U SS5      (       Ga  [        R                  " 5       n[        R                  " 5       n[        R                  US'   SUS'   SU R
                  ;   aR  [        [        [        U R
                  S   R                  S5      5      5      n[        U5      n[        U5      nSU0US'   S	U R
                  ;   a  U R
                  S	   US	'   S
U R
                  ;   a  U R
                  S
   US
'   SU R
                  ;   a  U R
                  S   US'   U R
                  R                  SS5      US'   SU R
                  ;   a  U R
                  S   US'   SU R
                  ;   a  U R
                  S   US'   SU R
                  ;   a  U R
                  S   US'   SU R
                  ;   a$  U R
                  S   US'   U R
                  S   US'   [        R                  " 5       nSU R
                  ;   ag  SUS'   SU R
                  ;   a!  U R
                  S   R                  S5      US'   SU R
                  ;   a!  U R
                  S   R                  S5      US'   SU R
                  ;   a  SUS'   U(       a  XQS'   [        U SS5      (       a  U R                  US'   [        U SS5      (       a  U R                  US'   SU R                  S '   [        R                  " 5       n[        R                  " 5       nS!US"'   S#US$'   [        U S%S5      (       a&  S&S'[        R                  U R                   -  00/US('   OS&S'[        R"                  00/US('   U/US)'   [$        R&                  " U5      U R                  S*'   S+U R                  S,'   U(       a  X!S-'   [$        R&                  " U5      U R                  S.'   g/g/)0zInserts the Service Proxy arguments provided by the user to the instance metadata.

Args:
    args: argparse.Namespace, An object that contains the values for the
      arguments specified in the .Args() method.
r   F_disclaimerz0.2zapi-versionzserving-ports;servicez
proxy-porttracingz
access-lognetwork scopemeshzproject-numbersourcezprimary-sourcezsecondary-sourcezintercept-all-outbound-trafficTzintercept-all-outboundzexclude-outbound-ip-rangeszexclude-outbound-port-rangeszintercept-dnsztraffic-interceptionservice_proxy_xds_versionzxds-versionservice_proxy_labelsr   truezenable-osconfigzinstall-gce-service-proxy-agentname	INSTALLEDdesired_stateservice_proxy_agent_location	scriptRunscriptinstallStepssoftwareRecipeszgce-software-declarationTRUEzenable-guest-attributesz
proxy-specr   N)r   r   r   r   
DISCLAIMERr   listmapintsplitsetr   r   r   metadata%startup_script_with_location_templater  startup_scriptjsondumps)r   service_proxy_config
proxy_specserving_portsunique_serving_portstraffic_interceptiongce_software_declarationservice_proxy_agent_recipes           r   AddServiceProxyArgsToMetadatar    s    T?E**&224((*J*@*K*K'*/' $,,,
c4%%o6<<SA
Bm !/ /0m
=)9% t)))!%!3!3L!AjD&&&"00;jt)))!%!3!3L!Aj ..229bAJy$$$$ ..w7j###--f5j4---%)%7%78H%Ij!"4%%%%)%7%7%Aj!"'+'9'9('Cj#$&224'4+=+==7;34	%););	;=A=O=O(>

%* 	9: 
(4+=+=	==>DDSI 	;< $,,,.2?+5I12t0%88"&"@"@j t+U33'+'@'@8$'-DMM#$*668!,!8!8!:)Jv&2=/t3U;;
(NN5565 4	 0 #9#H#HI
J4 0 4N2N./04

 1DMM,- 06DMM+,+5<()-4H)IDMM%&I +r   c                    [        U SS5      (       Ga  U R                  c  [        R                  SS U l        SU R                  ;  a+  SU R                  ;  a  U R                  R	                  S5        [
        R                  " U R                  S   5      u  p4[
        R                  " U R                  S   S9 n[        R                  R                  S	5        S
SU/nUR                  " U6 (       a  UR                  " U6 (       a  UR                  5       nUR                  5       nUR!                  U5      n	UR#                  X45      n
[
        R$                  " U
5        [
        R&                  " U	5      nUR)                  U5      n[        R                  R                  S5        UR*                  n[
        R,                  " U UUUS   R.                  UUU
UUU5
        SSS5        gg! , (       d  f       g= f)av  Adds Anthos Service Mesh configuration into the instance template.

Args:
    args: argparse.Namespace, An object that contains the values for the
      arguments specified in the .Args() method.
    instance_template_ref: Reference to the current instance template to be
      created.
    network_interfaces: network interfaces configured for the instance
      template.
r   FNr   r   workloadzgke-cluster)gke_clusterz=Verifying GKE cluster and Anthos Service Mesh installation...defaultzistio-systemz<Configuring the instance template for Anthos Service Mesh...r   )r   r   r   r   r   r   ParseWorkloadr   KubernetesClientr   statusPrintNamespacesExistHasNamespaceReaderPermissionsGetMembershipCRGetIdentityProviderCRGetNamespaceGetWorkloadGroupCRVerifyWorkloadSetupRetrieveWorkloadRevisionRetrieveMeshConfigprojectConfigureInstanceTemplater   )r   instance_template_refnetwork_interfacesworkload_namespaceworkload_namekube_client
namespacesmembership_manifestr   namespace_manifestworkload_manifestasm_revisionmesh_config
project_ids                 r   ConfigureMeshTemplater:    s    T65!!{{,,Q/dk+<DKKO
kk)*(1(?(?		*)% 
	#	#IIm,
		jj
I ~/ABj		$	$
55zB)99;--/(556HI'::
 	%%&78 99:LM!44\B

J	
 +22
++q!))	
7
 
 "
 
s   :D#G''
G5c                  z!   [        UUU
S9  [        R                  " U5        [        R                  " U5        U(       a  [        R
                  " U5        U(       a  [        R                  " U5        U(       aW  Sn U(       a  Sn [        USS5      n![        UU S5      n"U"b/  U!b,  U!U":w  a&  [        R                  " SSR                  U 5      5      eU R                  n#[        R                  " UR                  5      n$[        R                  " U$UR                   5        ["        R$                  R'                  XR(                  5      n%[+        U5        [-        U5        [/        US5      (       a  UR0                  (       ao  U(       a  [        USS5      n"O[        USS5      n"[2        R4                  " U R(                  [6        R8                  " U#5      U#R:                  UR0                  U"US	9n&GOw[        US
S5      n'[        USS5      n([        USS5      n)[        USS5      n*[        USS5      n+Sn,Sn-Sn.Sn/U(       a  [        USS5      n"O[        USS5      n"U(       a  [        USS5      n,[        USS5      n-U(       a  [        USS5      n.[        USS5      n/[2        R<                  " SI0 SU R(                  _S[6        R8                  " U#5      _SU#R:                  _SUR>                  _SUR@                  _SU"_SURB                  _SURD                  (       d!  URF                  (       d  [2        RH                  OURF                  _S
U'_SU(_SU)_SU,_SU-_SU*_SU+_SU._SU/_6/n&U(       a  [K        UU%U&5        [L        RN                  " U#R:                  URP                  URR                  S9n0[U        U#R:                  US9n1[W        U#R:                  UUUUS9n2[X        RZ                  " UU#R:                  5      n3Sn4UR]                  S5      (       a  UR^                  n4Sn5[/        US5      (       a"  UR]                  S5      (       a  UR`                  n5Sn6[/        US5      (       a"  UR]                  S5      (       a  URb                  n6Sn7[/        US 5      (       a"  UR]                  S 5      (       a  URd                  n7Sn8[/        US!5      (       a"  UR]                  S!5      (       a  URf                  n8Sn9[/        US"5      (       a"  UR]                  S"5      (       a  URh                  n9Sn:U(       a"  UR]                  S#5      (       a  URj                  n:Sn;U(       a"  UR]                  S$5      (       a  URl                  n;U=(       a    UR]                  S%5      n<U<(       a  URn                  OSn=[p        Rr                  " UU5      n>Sn?U(       a"  URu                  S&5      (       a  URv                  n?Sn@U(       a"  UR]                  S'5      (       a  URx                  n@[p        Rz                  " SI0 SU#R:                  _S(UR|                  _S)UR~                  _S*UR                  _S+U3_S,UR                  _SU4_SU5_SU6_S#U:_S U7_S!U8_S$U;_S%U=_S-U>_S"U9_S&U?_S'W@_6nAUR                  (       a  SnBOUR                  nB[p        R                  " U#R:                  UR                  (       a  / OUR                  WBS.9nC[p        R                  " UR                  =(       d    / UR                  =(       d    / -   5      (       + nDUD(       aa  [        R                  " U#U R(                  5      nE UER                  U%R                  UR                  UR                  UR                  S/S09u  nFnGOSnFUR                  (       a$  U#R:                  R                  UR                  S49nIOSnI[2        R                  " UU#U R(                  U%R                  WFU$WDUUUUS59nJ[p        R                  " UR                  UR                  UR                  [        US6S5      [        US7S5      S89nK[2        R                  " U#R:                  [        US9S5      5      nL[p        R                  " UU#R:                  U5      nMU(       a  UR]                  S5      (       at  U#R:                  R                  U#R:                  R                  WKWJUR                  U0UR                  U&WCWAWIWLS:9
UR                  U%R                  5       [        USS5      S;9nNOgU#R:                  R                  U#R:                  R                  WKWJUR                  U0UR                  U&WCWAWIWLS:9
UR                  U%R                  5       S<9nNU(       a  WM(       a  WMWNR                  lb        U1WNR                  lc        [p        R                  " UU#U5      UNR                  le        U2UNR                  lf        UR]                  S=5      (       a&  [p        R                  " UU#5      WNR                  lh        UR]                  S>5      (       a  [        US>/ 5      WNR                  li        U(       ad  UR]                  S?5      (       aN  [        R                  " UR                  U#R:                  R                  R                  5      WNR                  ln        UR]                  S@5      (       aN  [        R                  " UR                  U#R:                  R                  R                  5      WNR                  lq        UR                  bH  [        R                  " U#R:                  5      R                  UR                  5      WNR                  lu        U	=(       a    UR                  SLnOUR                  cn  UR                  ca  U(       a  UR                  cM  WO(       dF  UR                  c9  U(       a  UR                  (       d!  U(       a  UR                  c  UR                  b  WO(       a  UR                  OSnP[p        R                  " U#R:                  UR                  UR                  U(       a  UR                  OSWPUR                  U(       a  UR                  OSU(       a  UR                  OSUR                  SA9	WNR                  l        UGR                   (       a  G[        GR                  " UGR                   5      nQUQb  U#R:                  R                  nRURGR                  G[	        G[
        GR                  " WQ5      5       VSVTs/ s H"  u  nSnTWRGR                  GR                  USUTSB9PM$     snTnSSC9WNR                  l        U(       a  UGR                  (       d  UGR                  (       a  U#R:                  R                  nRG[        GR                  " U5      nUG[        GR                  " UU5        URGR                  5       nVUUGR                  5        H^  u  nWnXWVGR                   GR#                  WRGR                  GR                  UWG[        GR$                  " UXU#R:                  5      SB95        M`     WVWNR                  l        U(       aJ  UR]                  SD5      (       a4  U#R:                  GR)                  UGR*                  SE9WNR                  l        U#R:                  GR/                  WNU%R                  SF9nYU(       aG  UR]                  S5      (       a1  U#R:                  GR1                  WNU%R                  UNGR2                  SG9nYG[5        UU#R:                  R                  GR6                  5      WYGR8                  R                  l        G[=        XWNU5        U(       aB  UR]                  S5      (       a,  U#GR?                  U#GR@                  GRB                  SHWY4/5      $ U#GR?                  U#GR@                  GRD                  SHWY4/5      $ ! [        R                   a  nHUR]                  S15      (       a  WHeWER                  U%R                  UR                  UR                  UR                  S2S09u  nFnG[        R                  " S3R                  UF5      5      eSnHAHff = fs  snTnSf )Ja  Common routine for creating instance template.

This is shared between various release tracks.

Args:
    compute_api: The compute api.
    args: argparse.Namespace, An object that contains the values for the
      arguments specified in the .Args() method.
    support_source_instance: indicates whether source instance is supported.
    support_kms: Indicate whether KMS is integrated or not.
    support_post_key_revocation_action_type: Indicate whether
      post_key_revocation_action_type is supported.
    support_multi_writer: Indicates whether a disk can have multiple writers.
    support_mesh: Indicates whether adding VM to a Anthos Service Mesh is
      supported.
    support_host_error_timeout_seconds: Indicate the timeout in seconds for
      host error detection.
    support_numa_node_count: Indicates whether setting NUMA node count is
      supported.
    support_visible_core_count: Indicates whether setting a custom visible
    support_max_run_duration: Indicate whether max-run-duration or
      termination-time is supported.
    support_region_instance_template: Indicate whether create region instance
      template is supported.
    support_subnet_region: Indicate whether subnet_region flag enhancement
      should be supported.
    support_confidential_compute_type: Indicate what confidential compute type
      is used.
    support_confidential_compute_type_tdx: Indicate if confidential compute
      type 'TDX' is supported.
    support_snp_svsm: Indicate whether Secure VM Service Module (SVSM) is
      supported on AMD SEV-SNP VMs.
    support_ipv6_reservation: Indicate the external IPv6 address is supported.
    support_internal_ipv6_reservation: Indicate the internal IPv6 address is
      supported.
    support_replica_zones: Indicate the replicaZones param is supported for
      create-on-create disk.
    support_local_ssd_recovery_timeout: Indicate whether the local SSD
      recovery timeout is set.
    support_performance_monitoring_unit: Indicate whether the PMU is
      supported.
    support_partner_metadata: Indicate whether partner metadata is supported.
    support_maintenance_interval: Indicate whether maintenance interval was
      set.
    support_specific_then_x_affinity: Indicate whether specific_then_x was
      set.
    support_graceful_shutdown: Indicate whether graceful shutdown is
      supported.
    support_watchdog_timer: Indicate whether the watchdog timer is supported.
    support_disk_labels: Indicate whether disk labels are supported.
    support_display_device: Indicate whether display device is supported.
    support_skip_guest_os_shutdown: Indicate whether skip guest os shutdown is
      supported.
    support_preemption_notice_duration: Indicate whether preemption notice
      duration is supported.
    support_enable_vpc_scoped_dns: Indicate whether enable-vpc-scoped-dns is
      supported.
    support_workload_identity_config: Indicate whether workload identity
      config is supported.

Returns:
    A resource object dispatched by display.Displayer().
)r   r   regionsubnet_regioninstance_template_regionNr*   z<Values of `--instance-template-region` and `--{}` must matchnetwork_interface)r   scope_listerr   network_interface_argr=  r%   network_tier
stack_typeipv6_network_tierexternal_ipv6_addressexternal_ipv6_prefix_lengthipv6_addressipv6_prefix_lengthinternal_ipv6_addressinternal_ipv6_prefix_lengthr   r@  r   r   
private_ipsubnetaddress)r  metadata_from_file)r   r   r   location_hintprovisioning_modelinstance_termination_actionmax_run_durationtermination_time+discard_local_ssds_at_termination_timestamphost_error_timeout_secondslocal_ssd_recovery_timeoutmaintenance_intervalskip_guest_os_shutdownpreemption_notice_durationmaintenance_policypreemptiblerestart_on_failurenode_affinitiesmin_node_cpugraceful_shutdown)r   r   service_accountT)user_projectimageimage_familyimage_projectreturn_image_resourcerd  FzThe resource [{}] was not found. Is the image located in another project? Use the --image-project flag to specify the project where the image is located.)items)boot_disk_size_gbcreate_boot_diskr   r   r   r   custom_extensionscustom_vm_type)machine_type
custom_cpucustom_memoryextvm_typeaccelerator)
machineTypediskscanIpForwardr  minCpuPlatformnetworkInterfacesserviceAccounts
schedulingtagsguestAccelerators)r   descriptionr   r<  )r   rz  r   network_performance_configsresource_policiespost_key_revocation_action_typekey_revocation_action_type)enable_watchdog_timer
turbo_moder   r   enable_display_device)enableDisplay)instanceTemplater,  )r  r,  r<  Insert )r   r9   ValidateNetworkTierArgsr6   ValidateServiceProxyFlagsValidateSourceInstanceFlagsValidateMeshFlagr   r   InvalidArgumentExceptionformatr   r   	BytesToGbboot_disk_sizeWarnIfDiskSizeIsTooSmallboot_disk_typern   ro   r   r   r   r  r   r?  r	   CreateNetworkInterfaceMessagesr   GetDefaultScopeListerr   CreateNetworkInterfaceMessager   private_network_iprL  
no_addressrM  EPHEMERAL_ADDRESSr:  r   ConstructMetadataMessager  rN  r   r   sole_tenancy_util%GetSchedulingNodeAffinityListFromArgsr   rO  rP  rQ  rR  rS  rT  rU  rV  rW  r
   ExtractGracefulShutdownFromArgsIsKnownAndSpecifiedrX  rY  CreateSchedulingMessagerZ  r[  r\  r^  no_service_accountr`  CreateServiceAccountMessages	no_scopesr   UseExistingBootDiskr   create_diskr   ImageExpanderExpandImageFlagr,  rb  rc  rd  ImageNotFoundErrorrx  TagsCreateDiskMessagesInterpretMachineTyperk  rl  rm  CreateAcceleratorConfigMessages#CreateWorkloadIdentityConfigMessageInstanceTemplateInstancePropertiescan_ip_forwardmin_cpu_platformrz  Namer   workloadIdentityConfigshieldedInstanceConfigGetReservationAffinityreservationAffinityconfidentialInstanceConfigGetNetworkPerformanceConfignetworkPerformanceConfigresourcePoliciesr   ChoiceToEnumr}  *PostKeyRevocationActionTypeValueValuesEnumpostKeyRevocationActionTyper~  &KeyRevocationActionTypeValueValuesEnumkeyRevocationActionTypeprivate_ipv6_google_access_type3GetPrivateIpv6GoogleAccessTypeFlagMapperForTemplateGetEnumForChoiceprivateIpv6GoogleAccessvisible_core_countenable_nested_virtualizationthreads_per_corenuma_node_countenable_uefi_networkingperformance_monitoring_unitr  r  $CreateAdvancedMachineFeaturesMessageadvancedMachineFeaturesresource_manager_tagsr   GetResourceManagerTagsResourceManagerTagsValuer   r   r   r   resourceManagerTagspartner_metadatapartner_metadata_from_filer   CreatePartnerMetadataDictValidatePartnerMetadataPartnerMetadataValuerf  r   r   ConvertStructuredEntriespartnerMetadataDisplayDevicer  displayDevice%ComputeInstanceTemplatesInsertRequest+ComputeRegionInstanceTemplatesInsertRequestr<  r   LabelsValuer  r   r   MakeRequestsapitools_clientregionInstanceTemplatesinstanceTemplates)Zr   r   r   r   'support_post_key_revocation_action_typer   r   r   r   r   r   r   r   r   r   r   support_ipv6_reservation!support_internal_ipv6_reservationr   r   #support_performance_monitoring_unitsupport_partner_metadatar   r2   r   r   r   r   r   r   r%   r   subnet_region_flagr>  r=  r   rg  r.  r/  rB  rC  rD  rE  rF  rG  rH  rI  rJ  r  shieldedinstance_config_message$confidential_instance_config_messager]  rO  rP  termination_actionrR  rS  rT  rU  rV  should_set_maintenance_intervalrW  r_  rX  rY  rw  r`  service_accountsrh  image_expander	image_urir   erx  rr  rk  guest_acceleratorsworkload_identity_configr   has_visible_core_countr  ret_resource_manager_tagsr   r   r   partner_metadata_dictpartner_metadata_message	namespacestructured_entriesrequestsZ                                                                                             r   
_RunCreater  /  s   B 
7
 ))$/44T:88>--d3%!*&t-GND"4d;M!$0$5//
&
H
O
O "# #
 &ood&9&9:  !2D4G4GH 44FF
!! 4 %T&''D,B,BdOT:mdHd3m>>''008"44#&C	 46L|T2J&94@#D*A4H")+T# L "&dOT:mdHd3mT>48l"4)=tD(%d,CTJ$+
-t%!
 	 == 	
!++	
44V<	
 __	
 LL		

 ..	
 (	
 ;;	
 t|| (99\\	
 &	
 "	
 0	
  &!	
"  2#	
$ #8%	
& )D'	
( #8)	
* )D+	
4 $ 57IJ44oo}}00( %GT%! *P(I
/'*& &KK
FOO/ -	o&&&&MT'((T-=-=. . 00T011d6F6F#7 7 99T%&&4+;+;<N+O+O,,T%&&4+;+;<N+O+O,,04-
9 FGG88 0  $'D,<,<"- - "&!@!@#'D,<,<"- - "&!@!@ #Ot'7'78N'O " $Cd  %DD
%  $

"
"#;
<
<!88#'D,<,<"- - "&!@!@55 00 "" 00	
 & $$ " , #5 "< ( ( "< 0 *  3^!" 4#$ "<%** 
O**O#@@>>Rt{{% ((99?t//52
6
  ..v{7L7LMN#33,44

((** $ 4 li. I	YY??dii0DD
!
4
4
##)'/1-%  44$$&&
$+T
2d,d3, /NNoowt]D9 ,OO
FOO= &$*:*: + + 88??55$,,000,!0 6 
 $$"'')t7> 9 $ 88??55$,,000,!0 6 
 $$"'') 9 " &*B    7
 & 5
 ++
8 2 + 9 
344224@   9 
)**4;!25  1 -1A1A'2 2 @I?U?U,,**UU@  <
 
233;D;Q;Q''**QQ<  8
 
))5KKOO	


4??
@   8 !HT%<%<D%H  ''3				*
!d&:&:&F			$	$	0
-..
 d&@&@&L
//
% $:t 
 	;;OO--!!$;D  ''2 ,,% #'"<"<	
   8$ 
#::&&	
 
 !,??55j

-
- %+mm$=>%@$A%@jc5 55HHU I ,%@$A . B ""6 
t>>>33J2LL 223HI)>>@)>)D)D)F%	%33::

)
)
<
<*CC$foo =  *G 4L  0 0 01H I I%%D4N4N%O   . OOAA(2G2O2O B ' &$*:*: + + ooII*%-- '' J G 0O
FOO..::0'%%, *,C &$*:*: + + 

 
 
8
8(G	LM  

 
 
2
2Hg	FG w ## 			/	*	*#33,44

((** % 4 li $$006y0A ~$As'   >A@  )AB7
@ AB4@4A;AB/B/AB4c                       \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&\'S 5       r(S r)Sr*g)	rn   i  k  Create a Compute Engine virtual machine instance template.

*{command}* facilitates the creation of Compute Engine
virtual machine instance templates. For example, running:

    $ {command} INSTANCE-TEMPLATE

will create one instance templates called 'INSTANCE-TEMPLATE'.

Instance templates are global resources, and can be used to create
instances in any zone.
TFc                 v   [        U40 S[        R                  R                  _SU R                  _SU R
                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _6  [>        R@                  " U[        R                  R                  5        [>        RB                  " U[D        RF                  5        [>        RH                  " UU RJ                  U RL                  U RN                  S9  [P        RR                  " U5        [>        RT                  " U5        g )Nr(   r   r   r   r   r   r   r   r   r   r   r   r!   r   r2   r   r"   r   r   r#   r$   r   r'   r   r   r   r%   r   r   r   r   )+r   r   rB   GA_support_source_instance_support_kms_support_multi_writer_support_mesh_support_numa_node_count_support_visible_core_count_support_max_run_duration!_support_region_instance_template_support_subnet_region_support_replica_zones_support_local_ssd_size_support_network_queue_count#_support_local_ssd_recovery_timeout!_support_specific_then_x_affinity_support_graceful_shutdown_support_vlan_nic_support_watchdog_timer_support_disk_labels_support_ipv6_only_support_igmp_query#_support_host_error_timeout_seconds_support_flex_start_support_display_device_support_skip_guest_os_shutdown#_support_preemption_notice_duration_support_enable_vpc_scoped_dns!_support_workload_identity_configr9   AddMinCpuPlatformArgs(AddPrivateIpv6GoogleAccessArgForTemplater   COMPUTE_GA_API_VERSIONAddConfidentialComputeArgs"_support_confidential_compute_type&_support_confidential_compute_type_tdx_support_snp_svsmr6   AddKeyRevocationActionTypeArgs AddPerformanceMonitoringUnitArgsclsr~   s     r   ArgsCreate.Args  sT   ''** !$ < < $$	
 !66 && !$ < < $'#B#B "%!>!> *-)N)N "88 "88  #:: %($D$D ,/+R+R  *-)N)N!" #&"@"@#$ ..%&  #::'(  44)* 00+, 22-. ,/+R+R/0 2212  #::34 (+'J'J56 ,/+R+R78 '*&H&H9: *-)N)N;> ))&$2C2C2F2FG<<,, ..*-*P*P.1.X.X..	 ;;FC44V<r   c                 H   [        [        R                  " [        R                  R
                  5      U40 SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _SU R>                  _SU R@                  _SU RB                  _6$ )Creates and runs an InstanceTemplates.Insert request.

Args:
  args: argparse.Namespace, An object that contains the values for the
    arguments specified in the .Args() method.

Returns:
  A resource object dispatched by display.Displayer().
r   r   r  r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r2   r   r   r   r   r   r   r   r%   r   )"r  r   ComputeApiHolderr   rB   r  r  r  (_support_post_key_revocation_action_typer  r  r  r  r  r  r   r  r  r  r  $_support_performance_monitoring_unit"_support_internal_ipv6_reservation_support_partner_metadatar  r  r  r  r	  r  r  r  r  r  r  selfr   s     r   Run
Create.Run  s    %%d&7&7&:&:; !% = = %%	
 150]0] "77 '' !% = = $(#C#C "&!?!? *.)O)O #99 +/*Q*Q /3.Y.Y //  #99!" -1,U,U#$ +/*Q*Q%& "&!?!?'( ,0+S+S)* *.)O)O+, #'"A"A-.  $;;/0 !5512 ,0+S+S34  $;;56 (,'K'K78 ,0+S+S9: '+&I&I;< *.)O)O= r   r  N)+__name__
__module____qualname____firstlineno____doc__r  r  r#  r  r  r  r  r  r  r   r  r  r  r  r  r  r$  r%  r&  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  classmethodr  r)  __static_attributes__r  r   r   rn   rn     s     ",-2*-" $"&*# '+$+/( !%)-&'+$#(,%&+#$!(,%!$(!(-%#( &+#+= +=Z)r   rn   c                       \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'\(S 5       r)S r*Sr+g)	
CreateBetai  r  TFc                    [        U40 S[        R                  R                  _SU R                  _SU R
                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _6  [>        R@                  " U[        R                  R                  5        [>        RB                  " U[D        RF                  5        [>        RH                  " UU RJ                  U RL                  U RN                  S9  [>        RP                  " U5        [R        RT                  " U5        [>        RV                  " U5        [X        RZ                  " U5        g )Nr(   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r2   r   r"   r   r   r#   r$   r'   r   r   r   r%   r   r  ).r   r   rB   BETAr  r  r  r  r  r  r  r  r  r   r  r  r  _support_maintenance_intervalr  r  r  r  r	  r
  r  r  r  r  r  r  r  r9   r  r  r   COMPUTE_BETA_API_VERSIONr  r  r  r  "AddPostKeyRevocationActionTypeArgsr6   r  r  r   AddPartnerMetadataArgsr  s     r   r  CreateBeta.ArgsO  sp   '',,  #:: !$ < <	
 $$ !66 && ,/+R+R $'#B#B "%!>!> *-)N)N "88 "88 ,/+R+R %($D$D  &)%F%F!" *-)N)N#$ #&"@"@%& ..'(  #::)*  44+, 00-. 22/0 2212  #::34 (+'J'J56 ,/+R+R78 '*&H&H9: *-)N)N;> ))&$2C2C2H2HI<<.. ..*-	+	+.1	/	/#BWBWY 66v>;;FC44V<11&9r   c                 f   [        [        R                  " [        R                  R
                  5      40 SU_SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _SU R>                  _SU R@                  _SU RB                  _SU RD                  _6$ r!  r   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r2   r   r   r   r   r   r   r%   r   )#r  r   r"  r   rB   r5  r  r  r#  r  r  r  r  r  r  r  r   r  r  r  r  r  r$  r%  r&  r6  r  r  r  r	  r  r  r  r  r  r'  s     r   r)  CreateBeta.Run  s    %%d&7&7&<&<=   !% = =  %%	 
 150]0]  "77  ''  ,0+S+S  !% = =  $(#C#C  "&!?!?  *.)O)O  #99  +/*Q*Q  /3.Y.Y   //! " #99# $ ,0+S+S% & -1,U,U' ( +/*Q*Q) * "&!?!?+ , &*%G%G- . *.)O)O/ 0 #'"A"A1 2  $;;3 4 !555 6  $;;7 8 (,'K'K9 : ,0+S+S; < '+&I&I= > *.)O)O?   r   r  N),r+  r,  r-  r.  r/  r  r  r#  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r$  r%  r&  r6  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r0  r  r)  r1  r  r   r   r3  r3    s     ",-1*-(,%" $"&*# '+$+/((,% !%)-&'+$""&&*##! $(!(-%#( &+#-: -:^*r   r3  c                       \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%Sr&Sr'\(S 5       r)S r*Sr+g)CreateAlphai  r  Tc                 l   [        U40 S[        R                  R                  _SU R                  _SU R
                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _SU R>                  _6  [@        RB                  " U5        [@        RD                  " U[        R                  R                  5        [@        RF                  " UU RH                  U RJ                  U RL                  S9  [@        RN                  " U[P        RR                  5        [@        RT                  " U5        [@        RV                  " U5        [@        RX                  " U5        [Z        R\                  " U5        [@        R^                  " U5        [`        Rb                  " U5        g )Nr(   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r2   r   r#   r"   r   r   r$   r'   r   r   r   r%   r   r  )2r   r   rB   rC   r  r  r  r  r  r  r  r  r  r  r   r  r  r  r6  r  r  r
  r  r  r	  r  r  r  r  r  r  r  r9   AddLocalNvdimmArgsr  r  r  r  r  r  r   COMPUTE_ALPHA_API_VERSIONr8  AddIPv6AddressAlphaArgsAddIPv6PrefixLengthAlphaArgsr6   r  r  r   r9  r  s     r   r  CreateAlpha.Args  s   ''--  #:: !$ < <	
 $$ !66 && ,/+R+R !$ < < $'#B#B "%!>!> *-)N)N "88 "88 ,/+R+R  %($D$D!" &)%F%F#$ *-)N)N%& #&"@"@'( 00)* ..+,  #::-.  44/0 2212 2234  #::56 (+'J'J78 ,/+R+R9: '*&H&H;< *-)N)N=@ &&v.))&$2C2C2I2IJ..*-*P*P.1.X.X..	 <<// 66v>++F3008;;FC44V<11&9r   c                 f   [        [        R                  " [        R                  R
                  5      40 SU_SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _SU R                  _S	U R                  _S
U R                  _SU R                  _SU R                   _SU R"                  _SU R$                  _SU R&                  _SU R(                  _SU R*                  _SU R,                  _SU R.                  _SU R0                  _SU R2                  _SU R4                  _SU R6                  _SU R8                  _SU R:                  _SU R<                  _SU R>                  _SU R@                  _SU RB                  _SU RD                  _6$ r<  )#r  r   r"  r   rB   rC   r  r  r#  r  r  r  r  r  r  r  r   r  r  r  r  r  r$  r%  r&  r6  r  r  r  r	  r  r  r  r  r  r'  s     r   r)  CreateAlpha.Run  s    %%d&7&7&=&=>   !% = =  %%	 
 150]0]  "77  ''  ,0+S+S  !% = =  $(#C#C  "&!?!?  *.)O)O  #99  +/*Q*Q  /3.Y.Y   //! " #99# $ ,0+S+S% & -1,U,U' ( +/*Q*Q) * "&!?!?+ , &*%G%G- . *.)O)O/ 0 #'"A"A1 2  $;;3 4 !555 6  $;;7 8 (,'K'K9 : ,0+S+S; < '+&I&I= > *.)O)O?   r   r  N),r+  r,  r-  r.  r/  r  r  r#  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r$  r%  r&  r6  r  r  r  r
  r  r	  r  r  r  r  r  r  r  r0  r  r)  r1  r  r   r   r?  r?    s     ",-1*-(,%! $"&*#'+$+/((,%!% )-&'+$""&&*##  $(!(,%#' &*#1: 1:f*r   r?  z:Create a Compute Engine virtual machine instance template.z*{command}* facilitates the creation of Compute Engine virtual machine instance templates. Instance templates are global resources, and can be used to create instances in any zone.z        To create an instance template named 'INSTANCE-TEMPLATE' with the 'n2'
        vm type, '9GB' memory, and 2 CPU cores, run:

          $ {command} INSTANCE-TEMPLATE --custom-vm-type=n2 --custom-cpu=2 --custom-memory=9GB
        )briefDESCRIPTIONEXAMPLES)FFFFFFFFFFTFFFFFFTFFFFFFFFF)FF)FFF)r   )FFFFFFFFFFFFFFFTFFFFFFFFFFFFF)Ar/  
__future__r   r   r   r   r  googlecloudsdk.api_lib.computer   r   r   r	   r
   r   r   r   googlecloudsdk.callioper   r   "googlecloudsdk.command_lib.computer   r   r   5googlecloudsdk.command_lib.compute.instance_templatesr6   r   r   ,googlecloudsdk.command_lib.compute.instancesr9   4googlecloudsdk.command_lib.compute.resource_policiesrX   /googlecloudsdk.command_lib.compute.sole_tenancyrf   r   r  $googlecloudsdk.command_lib.util.apisr   $googlecloudsdk.command_lib.util.argsr   googlecloudsdk.corer   r   r   r   r   r   r   r   r   r   r  r:  r  DefaultUniverseOnlyReleaseTracksrB   r  CreateCommandrn   r5  r3  rC   r?  DETAILED_HELPdetailed_helpr  r   r   <module>r[     s3   / &  '   7 4 6 B 9 9 A 0 ( . 9 4 J c K X Q [ W U : < # 
 !',!$"%*', %!&%*#  #(',"'%*=p:h 7<4&B-*b 7<BG?
+	+kJ\?
L ,1',!$"%*&+*/"&+',(-"!&%*#  #(',"'%*AY	~ D%%(()IT I * IX D%%**+L L ,L^ D%%++,P& P -Ph J	!
  % r   