
    r                     z   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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r'SS/r( " S S\RR                  5      r* " S S\RR                  5      r+ " S S\RR                  5      r,S r-S \.4S! jr/S" r0S# r1S$\Rd                  S4S% jr3S& r4S' r5S( r6S) r7S* r8 S2S+ jr9S, r:    S3S- jr;    S3S. jr<S2S/ jr=S$\Rd                  S$S$S$S04S1 jr>g)4z+Support library to handle the build submit.    )absolute_import)division)unicode_literalsN)encoding)
exceptions)cloudbuild_exceptions)cloudbuild_util)config)logs)utils)storage_api)flags)staging_bucket_util)	execution)execution_utils)log)
properties)	resources)timesz?projects/{project}/locations/{location}/clusters/{cluster_name}zgcr.iozpkg.devc                       \ rS rSrSrSrg)BucketForbiddenError5   z8Error raised when the user is forbidden to use a bucket. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       4lib/googlecloudsdk/command_lib/builds/submit_util.pyr   r   5   s    @r    r   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )FailedBuildException9   z*Exception for builds that did not succeed.c                 p   > [         [        U ]  SR                  UR                  UR
                  S95        g )Nz+build {id} completed with status "{status}")idstatus)superr#   __init__formatr&   r'   )selfbuild	__class__s     r!   r)   FailedBuildException.__init__<   s3    	
.5<<xx 	= 	
r    r   r   r   r   r   r   r)   r   __classcell__r-   s   @r!   r#   r#   9   s    2 r    r#   c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )RegionMismatchErrorD   zBUser-specified build region does not match the worker pool region.c                 B   > SU< SU< S3n[         [        U ]  U5        g)zAlert that build_region does not match wp_region.

Args:
  build_region: str, The region specified in the build config.
  wp_region: str, The region where the worker pool is.
zYBuilds that run in a worker pool can only run in that worker pool's region. You selected z, but your worker pool is in z-. To fix this, simply omit the --region flag.N)r(   r3   r)   )r+   build_region	wp_regionmsgr-   s       r!   r)   RegionMismatchError.__init__G   s(     7CI	O 
 

t-c2r    r   r/   r1   s   @r!   r3   r3   D   s    J3 3r    r3   c                  8   [         R                  R                  R                  R	                  5       n U b'   [        U 5      n[        R                  " U5      S-   nU$ SnU$ ! [         a.    [        R                  " U 5      n[        UR                  5      n NVf = f)zGet the build timeout.Ns)r   VALUESbuildstimeoutGetint
ValueErrorr   ParseDurationtotal_secondssix	text_type)build_timeoutbuild_timeout_secsbuild_timeout_durationtimeout_strs       r!   _GetBuildTimeoutrJ   V   s    ##**22668-E}- -- 23c9K 
 K	  E$22=A5CCDEs   A! !5BBreturnc                 B    U S:X  d  U S:X  a  gU S:X  a  gU S:X  a  gU c  gg	)
zGet the builder tag for input builder useful to cloudbuild.

Args:
  builder: Google owned builder that needs to be tagged. Any other builders
    are marked as other
Returns:
  Tag identifying the builder being used.
 gcr.io/buildpacks/builder:latestzgcr.io/buildpacks/builderlatestz#gcr.io/buildpacks/builder:google-22google22zgcr.io/buildpacks/builder:v1v1defaultotherr   )builders    r!   _GetBuildTagrT   g   s<     33	/	/7700r    c
                 	  ^ ^	^ T Gb+  [         R                  R                  R                  R	                  5       (       a5  [        U 4S j[         5       5      (       d  [        R                  " SS5      e[         R                  R                  R                  R	                  5       (       a  U(       a  Sn
OASR                  [         R                  R                  R                  R                  5       5      n
UR                  UR                  [         R                  R                  R                  R                  5       ST SSU
S	S
/S9/U[         R"                  " X25      S9nGORU(       a  [        R                  " SS5      eU(       dk  [$        R&                  R)                  U5      (       aG  Sn[$        R*                  " U5       H  nUS:X  d  M  Sn  O   U(       d  [        R                  " SS5      eUR                  T /UR                  SSSSSSST S/S9/U[         R"                  " X25      S9nGOUGb-  U(       d  [        R                  " SS5      eUS   R-                  S 5      c  [        R                  " SS5      eUS   R-                  S 5      m[         R                  R                  R                  R	                  5       (       a5  [        U4S! j[         5       5      (       d  [        R                  " SS"5      eUS   R-                  S#5      nUS   R-                  S$5      nUS   R-                  S%5      n/ nSTSS/n[/        U5      /nUb"  UR1                  S&5        UR1                  U5        Ub+  U H%  nUR1                  S&5        UR1                  U5        M'     Ub#  UR1                  S'5        UR1                  U5        O1S(nUR1                  [/        U5      5        UR                  S)S*S+S,U/S-9/nUR1                  UR                  S)S*US-95        T	c  S.OT	m	[3        [5        U	4S/ jU5      5      nUR                  T/UU[         R"                  " X25      US09nOQU(       a  [        R6                  " S1S5      eU(       d  [        R                  " S1S25      e[8        R:                  " XBX5S39nU(       a  X{l        U$ )4zSet build steps.c              3   ,   >#    U  H	  oT;   v   M     g 7fNr   ).0regtags     r!   	<genexpr>!_SetBuildSteps.<locals>.<genexpr>   s      @3ss
3   z--tagz9Tag value must be in the *gcr.io* or *pkg.dev* namespace.0hz{}hz--destinationz--cachez--cache-ttlz--cache-dir )nameargs)stepsr>   substitutionszno-cachez@Cannot specify --no-cache if builds/use_kaniko property is FalseF
DockerfileTsourcez)Dockerfile required when specifying --tagz"gcr.io/cloud-builders/gcb-internaldockerr,   z	--network
cloudbuildz
--no-cachez-t.)imagesrb   r>   rc   z--packzImage value must not be empty.r   imagec              3   ,   >#    U  H	  oT;   v   M     g 7frW   r   )rX   rY   rj   s     r!   r[   r\      s      @ 5u 5r]   z:Image value must be in the *gcr.io* or *pkg.dev* namespaceenvenvsrS   z--envz	--builderrM   zgcr.io/k8s-skaffold/packpackr
   zdefault-builder)r`   
entrypointra   rR   c                    > SU -   S-   T-   $ )Nzgcp-runtimes-builder--r   )x
client_tags    r!   <lambda> _SetBuildSteps.<locals>.<lambda>  s    -1C7*Dr    )ri   rb   r>   rc   tagsz--configz#Config file path must not be empty.)params	no_source)r   r<   r=   	check_tagGetBoolany_SUPPORTED_REGISTRIESc_exceptionsInvalidArgumentException
use_kanikor*   kaniko_cache_ttlr?   Build	BuildStepkaniko_imager	   EncodeSubstitutionsospathisdirlistdirgetrT   appendlistmapConflictingArgumentsExceptionr
   LoadCloudbuildConfigFromPathr>   )rZ   no_cachemessagesrc   
arg_configrx   re   rI   	buildpackrs   ttlbuild_configfoundfilenamerl   rm   rS   rb   	pack_args
build_tagsdefault_buildpacks_buildercloudbuild_tagsrj   s   `        `            @r!   _SetBuildStepsr      s    	_))1133C @3@ = = 11
N  **2244	ll:,,33DDHHJK^^  !((//<<@@B%## !  ';;! $ l* 
33N
 	

 277==00

6*H%E + 55C  ^^  ;!""	 !  ';;% $ l, 11
4  | (11
4  aLW%E))1133C @ 5@ = = 11
P  A,

5
!CQ<F#Dly)GE	I w'(J
ws#!  {#w#E %?@A 

-#,  
e 
LL+ 	 	
 '.JJD	
O >>w%99
  " L 66z<PP11
;  66]L
 &	r    c                      [         R                  R                  R                  R	                  5       [         R                  R                  R                  R
                  :g  $ )zAReturns true if the command is running in a non-default universe.)r   r<   coreuniverse_domainr?   rQ   r   r    r!   _IsNonDefaultUniverser   8  sG     ,,002						/	/	7	78r    Fc                   ^ SnSn[         R                  nUc  SnU[         R                  :w  af  [        5       (       a  Ub;  UbQ  [        R                  " U5      UR
                  R                  R                  :X  a  Un[        R                  " U5      nO[        R                  " 5       nSR                  U5      n[        R                  " 5       nU(       d	  U(       a  SmT(       Ga  [        U4S jS 5       5      (       a%  UR                  UR!                  TUU	S9S9U l        U $ [$        R&                  " S	T5      (       a%  UR                  UR)                  TUUS
9S9U l        U $ [$        R&                  " ST5      (       a%  UR                  UR+                  TUUS9S9U l        U $ SnTR-                  S5      (       d$  [.        R0                  R3                  T5      (       a"  [.        R0                  R5                  T5      u  nnSR                  [6        R8                  " [6        R:                  " 5       5      [<        R>                  " 5       R@                  US9n[B        RD                  RG                  USS9n U[         R                  :X  a  URI                  URJ                  US9  OURI                  URJ                  UUS9   URX                  (       a  URX                  S-   U-   n[B        RD                  R[                  SURJ                  US9n[        R\                  " TUUU
US9nUS:X  aC  UR                  UR_                  URJ                  UR`                  URb                  S9S9U l        U $ UR                  URe                  URJ                  UR`                  URb                  S9S 9U l         U $ U(       d  [T        Rf                  " S!S"5      eU $ ! [L        RN                   a%    [Q        SR                  URJ                  5      5      e[        RR                   a'    [T        RV                  " SSR                  U5      5      ef = f)#z$Set the source for the build config.FNTzgs://{}/sourcec              3   F   >#    U  H  nTR                  U5      v   M     g 7frW   )
startswith)rX   rr   re   s     r!   r[   SetSource.<locals>.<genexpr>l  s!     
A)@A6Q)@s   !)zhttp://zhttps://)urldirrevision)	gitSourcez7projects/.*/locations/.*/connections/.*/repositories/.*)
repositoryr   r   )connectedRepositoryz=projects/.*/locations/.*/connections/.*/gitRepositoryLinks/.*)gitRepositoryLinkr   r   )developerConnectConfigz.tgzgs://z{stamp}-{uuid}{suffix})stampuuidsuffixstorage.objects
collection)check_ownership)locationr   aV  The user is forbidden from accessing the bucket [{}]. Please check your organization's policy or if the user has the "serviceusage.services.use" permission. Giving the user a role with this permission such as Service Usage Admin may fix this issue. Alternatively, use the --no-source option and access your source code via a different method.zgcs-source-staging-dirzvA bucket with name {} already exists and is owned by another project. Specify a bucket using --gcs-source-staging-dir./)r   bucketobject)ignore_file	hide_logsz.json)r   r   
generation)storageSourceManifest)storageSourcez--no-sourcez)To omit source, use the --no-source flag.)4r	   DEFAULT_REGIONr   r   GetDefaultBuckestBehaviorBuildOptions(DefaultLogsBucketBehaviorValueValuesEnumREGIONAL_USER_OWNED_BUCKETr   GetDefaultRegionalStagingBucketGetDefaultStagingBucketr*   r   StorageClientr{   Source	GitSourcere   rematchConnectedRepositoryDeveloperConnectConfigr   r   r   isfilesplitextr   GetTimeStampFromDateTimeNowr   uuid4hexr   REGISTRYParseCreateBucketIfNotExistsr   api_exceptionsHttpForbiddenErrorr   BucketInWrongProjectErrorr}   RequiredArgumentExceptionr   CreateUploadStorageSourceManifestr`   r   StorageSourcer~   )r   r   is_specified_sourcerx   re   gcs_source_staging_dirarg_dirarg_revisionarg_git_source_dirarg_git_source_revisionr   r   r6   arg_bucket_behaviordefault_gcs_sourcedefault_bucket_namedefault_bucket_location
gcs_clientr   _staged_objectgcs_source_stagingstaged_source_objs       `                  r!   	SetSourcer   @  sf   " +::#555		 	 %8%@+//0CD$$MMhhi !-/OO
 0GGI-445HI((** 
F

A)@
AAA$OO&&$. '  , l 	xxBF  %OO&::# ;  , l 	xxH&  %OO!)!@!@ &# "A " , l F!!RWW^^F%;%;''""6*ia -33,,UYY[9ZZ\ 4 M
 '//55+< 6 	 O$B$B	B**")). 	+ 	

 	**")),. 	+ 	
0 $$,33c9MIm"++22$%,, 3  ,22 $OO ( > >&--&++*55 !? ! , l, 
 %OO ..&--&++*55 /  , l 
 11
D  
u ,,  *
 +1&1G1N1N*O  00  22
"&&,f-@&A	 s   ;.O *O A2Q	c                    U(       aE   [         R                  R                  USS9nSUR                  -   S-   UR                  -   U l        U $ U $ ! [         R                   a     Of = f [         R                  R                  USS9nSUR                  -   U l        U $ ! [         R                   a/  n[         R                  " SUR                  UR                  S9eSnAff = f)	z8Set a Google Cloud Storage directory to hold build logs.r   r   r   r   zstorage.bucketszstorage.buckets,storage.objects)expectedgotr   N)	r   r   r   r   r   
logsBucket WrongResourceCollectionExceptionr   r   )r   arg_gcs_log_dirgcs_log_dires       r!   _SetLogsBucketr     s    	&&,,
&7 - k K&&
&
,{/A/A
A   
 55 
&&,,
&7 - k !(+*<*< <l 
 55 664!%%aff s*   AA A&%A&*2B C!2*CC!c                     UbL  [         R                  " U5      nU R                  (       d  UR                  5       U l        X0R                  l        U $ )z+Set the machine type used to run the build.)r   GetMachineTypeoptionsr   machineType)r   r   arg_machine_typemachine_types       r!   _SetMachineTyper     sE    !''(89L%224l'3$	r    c                     UbV  [         R                  " U5      nU R                  (       d  UR                  5       U l        [	        U5      U R                  l        U $ )z(Set the disk size used to run the build.)compute_utils	BytesToGbr   r   r@   
diskSizeGb)r   r   arg_disk_size	disk_sizes       r!   _SetDiskSizer    sJ    ''6I%224l&))nL#	r    c                 $   Ub  [         R                  R                  USS9nU R                  (       d  UR	                  5       U l        UR                  5       U R                  l        UR                  5       U R                  R                  l        U $ )z(Set the worker pool to run the build in.z)cloudbuild.projects.locations.workerPoolsr   )	r   r   r   r   r   
PoolOptionpoolRelativeNamer`   )r   r   arg_worker_poolworker_pools       r!   _SetWorkerPoolr	    s     $$**$O + K %224l ( 3 3 5L%0%=%=%?L"	r    c                    Ub  [         R                  " U 5      (       d  Uc  UGbO  U R                  (       d  UR                  5       U l        U R                  R                  (       d  UR                  5       U R                  l        U R                  R                  R                  (       d)  UR                  5       U R                  R                  l        Ub:  [        R                  " U5      nXPR                  R                  R                  l
        Ub:  [         R                  " U5      nX`R                  R                  R                  l        Ub$  X@R                  R                  R                  l        U $ )zSet the worker pool config.)r	   WorkerPoolIsSpecifiedr   r   r  r  workerConfig<GoogleDevtoolsCloudbuildV1BuildOptionsPoolOptionWorkerConfigr   r   r   memoryGb	vcpuCount)r   r   r   
arg_memoryarg_vcpu_countr  memorys          r!   _SetWorkerPoolConfigr  &  s    
#33LAA				#%224l$$"*"5"5"7l$$11

O
O
Q ,  ))-8i:C,,7((4f8>,,5!9G,,6	r    c                     Ubx  [        5       (       a  US:X  a  [        R                  " SS5      e[        R                  " U5      nU R
                  (       d  UR                  5       U l        X0R
                  l        U $ )a  Sets the behavior of the default logs bucket on Build options.

Args:
  build_config: apitools.base.protorpclite.messages.Message, The Build message
    to analyze.
  messages: API messages class. The CloudBuild API messages.
  arg_bucket_behavior: The default buckets behavior flag.

Returns:
  build_config: apitools.base.protorpclite.messages.Message, The Build message
    to analyze.
zlegacy-bucketz--default-buckets-behaviorz>The legacy-bucket option is not supported in this environment.)r   r}   r~   r   r   r   r   defaultLogsBucketBehavior)r   r   r   bucket_behaviors       r!   _SetDefaultLogsBucketBehaviorr  H  ss     $#6/#I11
&
J  556IJO%224l5D2	r    c                     Ub  Xl         U $ )a7  Sets the service account to run the build in.

Args:
  build_config: apitools.base.protorpclite.messages.Message, The Build message
    to analyze.
  arg_service_account: The service account behavior flag.

Returns:
  build_config: apitools.base.protorpclite.messages.Message, The Build message
    to analyze.
)serviceAccount)r   arg_service_accounts     r!   _SetServiceAccountr  e  s     $"5	r    c                 
   [        5       n[        U UUUUUUUUU5
      nU(       d  [        UUUUUUUUUUU	US9n[        UU
5      n[	        UX+5      n[        UX,5      n[        UX-5      n[        UUU5      n[        UU5      nU$ zReturns a build config.)r   )	rJ   r   r   r   r   r  r	  r  r  )rZ   r   r   rc   r   r   rx   re   r   r   r   r   r   r  r   r   r   r   r  r   r   r   skip_set_sourcers   rI   r   s                             r!   CreateBuildConfigr  v  s    8 !"+	, 
L  o>, xJ,lHD,hH,.H1, $L2EF,	r    c                    [        5       n[        U UUUUUUUUU5
      nU(       d  [        UUUUUUUUUUU	US9n[        UU
5      n[	        UX+5      n[        UX/5      n[        UX,X5      n[        UUU5      n[        R                  " U5      (       a+  [        R                  " U5      (       d  [        R                  e[        R                  " U5      (       d  [        UX,5      nU$ r  )rJ   r   r   r   r   r	  r  r  r	   WorkerPoolConfigIsSpecifiedr  r    WorkerConfigButNoWorkerpoolErrorr  )rZ   r   r   rc   r   r   rx   re   r   r   r   r   r   r  r  r  r   r   r   r   r   r   r   r  rs   rI   r   s                              r!   CreateBuildConfigAlphar#    s
   8 !"+	, 
L  o>, xJ,hH,%HZ, /H1, 00 11,??

@
@@		.	.|	<	<hFL	r    c                    Uc2  [         R                  R                  R                  R	                  5       nU R
                  nU(       d  U$ UR                  (       a  UR                  R                  OSnU(       d  UR                  nU(       d  U$ [        R                  " U5      (       d  U$ [        R                  " U5      n/ nU R                  (       aA  U(       a:  [        S U R                  R                   5       5      nU Vs/ s H  owU;   PM	     nnU(       d%  U(       a  U(       a  [        R                   " SS5      eU(       a  X:w  a  U$ U$ s  snf )aQ  Determine what region of the GCB service this build should be sent to.

Args:
  build_config: apitools.base.protorpclite.messages.Message, The Build message
    to analyze.
  desired_region: str, The region requested by the user, if any.

Raises:
  RegionMismatchError: If the config conflicts with the desired region.

Returns:
  str, The region that the build should be sent to, or None if it should be
  sent to the global region.

Note: we do not validate region strings so that old versions of gcloud are
able to access new regions. This is aligned with the approach used by other
teams.
r_   c              3   8   #    U  H  oR                   v   M     g 7frW   )key)rX   ps     r!   r[   'DetermineBuildRegion.<locals>.<genexpr>/  s      F!Fs   z--regionzL--region flag required when workerpool resource includes region substitution)r   r<   r=   regionr?   r   r  r`   
workerPoolr	   IsWorkerPoolWorkerPoolRegionrc   r   additionalPropertiesr}   r~   )r   desired_region
wp_optionswp_resourcer7   matchessubstitution_keysks           r!   DetermineBuildRegionr4    s    * &&--4488:N##*	(2
$$R+	''K			%	%k	2	2..{;) 'I #11FF  *;;):AY):G;
iG

/
/  3	 <s   E   c	           	         [         R                  " S[        U5      -   5        [        R                  " US9n	[
        R                  R                  S[        R                  R                  R                  R                  5       US9n
U	R                  R                  U R                  U
R                  5       US95      n[         R"                  " UR$                  5      n[         R&                  " U R(                  U5      R*                  n[
        R                  R-                  SSSUR.                  UUR0                  S	.S
9nU(       d}  [         R2                  " U5        UR4                  (       a7  [         R6                  R9                  SR;                  UR4                  S95        O[         R6                  R9                  S5        U(       a  X4$ U(       d  UR<                  (       aw  UR<                  R>                  U R@                  RB                  RD                  U R@                  RB                  RF                  4;   a  [         R6                  R9                  S5        [H        RJ                  " [H        RL                  " XU5      5      nU(       d  [         RN                  OSn[P        RR                  " U5         [T        RV                  " U	U UU5      RY                  UU5      nSSS5        UR6                  U RZ                  R\                  R^                  :X  a  [         R6                  R9                  S5        UR`                  (       a  UR`                   HD  n[         R6                  R9                  SR;                  URb                  URd                  S95        MF     [         R6                  R9                  SR;                  [g        UR`                  5      S95        URh                  (       a@  [         R6                  R9                  SR;                  URh                  Rj                  S95        UR6                  U RZ                  R\                  Rl                  :w  a  [o        U5      eX4$ ! , (       d  f       GN= f)zStarts the build.zsubmitting build: )skip_activation_promptzcloudbuild.projects.locations)r   
projectsIdlocationsId)parentr,   Nz$cloudbuild.projects.locations.buildsrP   )r8  r9  buildsId)r   api_versionrw   z$Logs are available at [ {log_url} ].)log_urlz(Logs are available in the Cloud Console.z}
gcloud builds submit only displays logs from Cloud Storage. To view logs from Cloud Logging, run:
gcloud beta builds submit
zXYour build timed out. Use the [--timeout=DURATION] flag to change the timeout threshold.z
{priority}: {text})textpriorityz
{count} message(s) issued.)countz
BUILD FAILURE: {detail})detail)8r   debugreprr	   GetClientInstancer   r   r   r   r<   r   project	GetOrFailprojects_locations_builds.CloudbuildProjectsLocationsBuildsCreateRequestr  r   MessageToJsonmetadataJsonToMessageBuildOperationMetadatar,   r   	projectIdr&   CreatedResourcelogUrlr'   Printr*   r   loggingr   LoggingValueValuesEnumSTACKDRIVER_ONLYCLOUD_LOGGING_ONLYr   MashHandlerGetCancelBuildHandleroutr   CtrlCSectioncb_logsCloudBuildClientStreamr   StatusValueValuesEnumTIMEOUTwarningsr>  r?  lenfailureInforA  SUCCESSr#   )r   async_r   r   r6   support_gclsuppress_logsr7  polling_intervalclientparent_resourceopjsonr,   	build_refmash_handlerrW  warns                     r!   r   r   A  sn    )) 4#556,,3& &&--0""''//99; . / ''..== --/| > " 
			,$

 
 !@!@$
G
M
M%   &&
7%hh	 ' 	) 
	"||	jj
0
7
7
7
M 
jjAB 9 
--
--





6
6
G
G



6
6
I
I
 JJ	  &&%%f	B, %$# ##L1$$V%-%0%57 8>vi7M 
 2 \\X^^99AAAJJ	!
 ^^	jj
 
'
'TYY
'
O 
 JJ&--C4G-H JJ#**%2C2C2J2J*K \\X^^99AAA
u
%%	= 21s   7*Q''
Q6rW   )FNFN)?r   
__future__r   r   r   r   r   r   apitools.base.pyr   r   r   !googlecloudsdk.api_lib.cloudbuildr   r	   r
   r   rY  googlecloudsdk.api_lib.computer   r   googlecloudsdk.api_lib.storager   googlecloudsdk.callioper}   !googlecloudsdk.command_lib.buildsr   r   %googlecloudsdk.command_lib.cloudbuildr   googlecloudsdk.corecore_exceptionsr   r   r   r   googlecloudsdk.core.utilr   rD   _CLUSTER_NAME_FMTr|   Errorr   r#   r3   rJ   strrT   r   r   r   r   r   r   r  r	  r  r  r  r  r#  r4  r   r   r    r!   <module>r{     sT   2 &  ' 	 	  % 9 C = 4 = A 6 > 3 A ; = / # * ) * 
 F  "9- A?00 A?00 3/// 3$"S 0vr(  //bJ:F 15:L 1At 3K\6z  // mr    