<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>82666</bug_id>
          
          <creation_ts>2012-03-29 15:09:39 -0700</creation_ts>
          <short_desc>Chromium bots should upload archived built files</short_desc>
          <delta_ts>2012-04-03 01:40:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>lforschler</cc>
    
    <cc>ossy</cc>
    
    <cc>peter</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tony</cc>
    
    <cc>wsiegrist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591615</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 15:09:39 -0700</bug_when>
    <thetext>I want Chromium test/perf bots to just extra built archives instead of building on their own.

This is the first half of this transition. The patch for this bug will make builders create zip files and then upload them to the master.
The second half (which will be posted on a follow up bug) will make testers extract the uploaded zip files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591638</commentid>
    <comment_count>1</comment_count>
      <attachid>134683</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 15:29:13 -0700</bug_when>
    <thetext>Created attachment 134683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591647</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 15:34:53 -0700</bug_when>
    <thetext>Maybe Qt and GTK want to use copyBuildFiles to avoid archiving intermediate files as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591668</commentid>
    <comment_count>3</comment_count>
      <attachid>134683</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-29 15:53:37 -0700</bug_when>
    <thetext>Comment on attachment 134683
Patch

Attachment 134683 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12230004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591672</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 15:57:47 -0700</bug_when>
    <thetext>Note EWS can never check the correctness of this patch...

(In reply to comment #3)
&gt; (From update of attachment 134683 [details])
&gt; Attachment 134683 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/12230004

===============================================================================
WebKitSupportLibrary.zip is out-of-date.
Please download WebKitSupportLibrary.zip from:

    https://developer.apple.com/opensource/internet/webkit_sptlib_agree.html

and place it in:

    /home/buildbot/WebKit

Then run build-webkit again.
===============================================================================</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591749</commentid>
    <comment_count>5</comment_count>
      <attachid>134683</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-29 17:26:16 -0700</bug_when>
    <thetext>Comment on attachment 134683
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=134683&amp;action=review

Seems OK in general.

&gt; Tools/BuildSlaveSupport/built-product-archive:34
&gt; +buildDirectory = None

Nit: Prefix with an underscore to signify that this is only used within the module.

&gt; Tools/BuildSlaveSupport/built-product-archive:73
&gt; +def removeDirectoryIfExists(thinDirectory):
&gt; +    if os.path.isdir(thinDirectory):
&gt; +        shutil.rmtree(thinDirectory)

Are we intentionally not using webkitpy code here?  Maybe reusing some of webkitpy.common would be nice.

&gt; Tools/BuildSlaveSupport/built-product-archive:78
&gt; +def copyBuildFiles(source, destination):
&gt; +    shutil.copytree(source, destination,
&gt; +        ignore=shutil.ignore_patterns(&apos;.svn&apos;, &apos;*.a&apos;, &apos;*.d&apos;, &apos;*.dSYM&apos;, &apos;*.o&apos;, &apos;*.ilk&apos;, &apos;*.pdb&apos;))

I think we want to ignore .lib and .obj too (MSVC extensions).

&gt; Tools/BuildSlaveSupport/built-product-archive:91
&gt; +    os.path.walk(directoryToZip, addToArchive, None)

Use os.walk instead of os.path.walk.

&gt; Tools/Scripts/webkit-build-directory:65
&gt; +# FIXME: Check if extra flags are valid or not.
&gt; +Getopt::Long::Configure(&apos;pass_through&apos;); # Let --blackberry, etc... be handled by webkitdirs
&gt; +my $chromium = 0;

Why do we need $chromium here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591753</commentid>
    <comment_count>6</comment_count>
      <attachid>134683</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 17:31:48 -0700</bug_when>
    <thetext>Comment on attachment 134683
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=134683&amp;action=review

&gt;&gt; Tools/BuildSlaveSupport/built-product-archive:73
&gt;&gt; +        shutil.rmtree(thinDirectory)
&gt; 
&gt; Are we intentionally not using webkitpy code here?  Maybe reusing some of webkitpy.common would be nice.

Yes. It seems like not directly depending on Tools/Scripts is the convention used in this directory.

&gt;&gt; Tools/BuildSlaveSupport/built-product-archive:78
&gt;&gt; +        ignore=shutil.ignore_patterns(&apos;.svn&apos;, &apos;*.a&apos;, &apos;*.d&apos;, &apos;*.dSYM&apos;, &apos;*.o&apos;, &apos;*.ilk&apos;, &apos;*.pdb&apos;))
&gt; 
&gt; I think we want to ignore .lib and .obj too (MSVC extensions).

Good point. Will do.

&gt;&gt; Tools/BuildSlaveSupport/built-product-archive:91
&gt;&gt; +    os.path.walk(directoryToZip, addToArchive, None)
&gt; 
&gt; Use os.walk instead of os.path.walk.

Okay. Will do.

&gt;&gt; Tools/Scripts/webkit-build-directory:65
&gt;&gt; +my $chromium = 0;
&gt; 
&gt; Why do we need $chromium here?

Oh oops, that&apos;s a left over. Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591766</commentid>
    <comment_count>7</comment_count>
      <attachid>134704</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-29 17:51:30 -0700</bug_when>
    <thetext>Created attachment 134704
Updated per Tony&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592244</commentid>
    <comment_count>8</comment_count>
      <attachid>134704</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-30 10:10:58 -0700</bug_when>
    <thetext>Comment on attachment 134704
Updated per Tony&apos;s comments

View in context: https://bugs.webkit.org/attachment.cgi?id=134704&amp;action=review

&gt; Tools/BuildSlaveSupport/built-product-archive:91
&gt; +    os.walk(directoryToZip, addToArchive, None)

Err, did you try this? os.walk is an iterator. See the example here:
http://docs.python.org/library/os.html#os.walk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592266</commentid>
    <comment_count>9</comment_count>
      <attachid>134704</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-30 10:35:56 -0700</bug_when>
    <thetext>Comment on attachment 134704
Updated per Tony&apos;s comments

View in context: https://bugs.webkit.org/attachment.cgi?id=134704&amp;action=review

&gt;&gt; Tools/BuildSlaveSupport/built-product-archive:91
&gt;&gt; +    os.walk(directoryToZip, addToArchive, None)
&gt; 
&gt; Err, did you try this? os.walk is an iterator. See the example here:
&gt; http://docs.python.org/library/os.html#os.walk

Why is that better tahn os.path.walk?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592271</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-30 10:40:21 -0700</bug_when>
    <thetext>Effing python. The stupid function is deprecated in 3.0 :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592287</commentid>
    <comment_count>11</comment_count>
      <attachid>134837</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-30 10:50:41 -0700</bug_when>
    <thetext>Created attachment 134837
Fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592351</commentid>
    <comment_count>12</comment_count>
      <attachid>134837</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-30 11:43:43 -0700</bug_when>
    <thetext>Comment on attachment 134837
Fixed

View in context: https://bugs.webkit.org/attachment.cgi?id=134837&amp;action=review

&gt; Tools/BuildSlaveSupport/built-product-archive:87
&gt; +    for path, dirNames, fileNames in os.walk(directoryToZip):
&gt; +        relativePath = os.path.relpath(path, directoryToZip)
&gt; +        for dirName in dirNames:
&gt; +            archiveZip.write(os.path.join(path, dirName), os.path.join(relativePath, dirName))

This looks like you&apos;re writing directory names only.  I think you can ignore dirNames and just use fileNames here.  Please test this (you locally modify the code to run on OSX) before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592352</commentid>
    <comment_count>13</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-30 11:44:27 -0700</bug_when>
    <thetext>It&apos;s also unfortunate that this file uses camelCaseNames instead of variables_with_underscores, but that would be a separate style only change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592386</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-30 12:16:04 -0700</bug_when>
    <thetext>Thanks for the review.

(In reply to comment #12)
&gt; (From update of attachment 134837 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=134837&amp;action=review
&gt; 
&gt; &gt; Tools/BuildSlaveSupport/built-product-archive:87
&gt; &gt; +    for path, dirNames, fileNames in os.walk(directoryToZip):
&gt; &gt; +        relativePath = os.path.relpath(path, directoryToZip)
&gt; &gt; +        for dirName in dirNames:
&gt; &gt; +            archiveZip.write(os.path.join(path, dirName), os.path.join(relativePath, dirName))
&gt; 
&gt; This looks like you&apos;re writing directory names only.  I think you can ignore dirNames and just use fileNames here.  Please test this (you locally modify the code to run on OSX) before landing.

Oops, fixed.

(In reply to comment #13)
&gt; It&apos;s also unfortunate that this file uses camelCaseNames instead of variables_with_underscores, but that would be a separate style only change.

Yeah, we could fix that later I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592807</commentid>
    <comment_count>15</comment_count>
      <attachid>134837</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-30 23:50:13 -0700</bug_when>
    <thetext>Comment on attachment 134837
Fixed

Clearing flags on attachment: 134837

Committed r112781: &lt;http://trac.webkit.org/changeset/112781&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592808</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-30 23:50:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592813</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-31 00:22:14 -0700</bug_when>
    <thetext>Landed build fixes in http://trac.webkit.org/changeset/112782 and http://trac.webkit.org/changeset/112783.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592936</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-31 14:38:27 -0700</bug_when>
    <thetext>More build fixes landed in http://trac.webkit.org/changeset/112802 and http://trac.webkit.org/changeset/112804.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>593527</commentid>
    <comment_count>19</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-04-02 09:29:06 -0700</bug_when>
    <thetext>Out of interest, why didn&apos;t you enable this for the Chromium Android builder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594291</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-03 01:40:17 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Out of interest, why didn&apos;t you enable this for the Chromium Android builder?

Because I don&apos;t know what kind of tools are available on Chromium Android builder and how builds are setup. Also, you guys don&apos;t have any testers setup so this whole change (making testers not build) is irrelevant.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134683</attachid>
            <date>2012-03-29 15:29:13 -0700</date>
            <delta_ts>2012-03-29 17:51:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82666-20120329152912.patch</filename>
            <type>text/plain</type>
            <size>11210</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMjU4NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTAzLTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIENocm9taXVtIGJvdHMgc2hvdWxkIHVwbG9hZCBhcmNoaXZlZCBidWlsdCBmaWxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2NjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uOgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAoZGV0ZXJtaW5lV2ViS2l0QnVpbGREaXJlY3RvcnkpOiBJbnN0ZWFkIG9m
IGhhcmQtY29kaW5nIFdlYktpdEJ1aWxkIGFzIHRoZSBidWlsZCBvdXRvdXQgZGlyZWN0b3J5LAor
ICAgICAgICBjYWxsIG91dCB0byB3ZWJraXQtYnVpbGQtZGlyZWN0b3J5LgorICAgICAgICAocmVt
b3ZlRGlyZWN0b3J5SWZFeGlzdHMpOiBFeHRyYWN0ZWQuCisgICAgICAgIChjb3B5QnVpbGRGaWxl
cyk6IEFkZGVkIHRvIGF2b2lkIGFyY2hpdmluZyB1c2VsZXNzIGludGVybWVkaW5hdGUgZmlsZXMu
CisgICAgICAgIChjcmVhdGVaaXBNYW51YWxseSk6IFVzZWQgaW4gQ2hyb21pdW0gV2luZG93cyB3
aGVyZSB3ZSBkb24ndCBleGVjdXRlIHB5dGhvbiBzY3JpcHRzIGluc2lkZSBjeWd3aW4uCisgICAg
ICAgIChjcmVhdGVaaXBNYW51YWxseS5hZGRUb0FyY2hpdmUpOgorICAgICAgICAoY3JlYXRlWmlw
KTogRXh0cmFjdGVkLiBDYWxscyBvdXQgdG8gYXBwcm9wcmFpdGUgY29tbWFuZCBsaW5lIHNjcmlw
dHMgb3IgY3JlYXRlWmlwTWFudWFsbHkuCisgICAgICAgIChhcmNoaXZlQnVpbHRQcm9kdWN0KTog
QWRkIHN1cHBvcnQgZm9yIENocm9taXVtIHBvcnQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQt
YnVpbGQtZGlyZWN0b3J5OiBBZGQgc3VwcG9ydCBmb3IgLS1wbGF0Zm9ybSBvcHRpb25zLgorCiAy
MDEyLTAzLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNjcmlwdHMgZmFpbCB0byBkZXRlY3Qgd2hlbiBhIHRvb2wgY3Jhc2hlcwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZQkocmV2aXNpb24g
MTEyNDkxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZl
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogIyEvdXNyL2Jpbi9weXRob24KIAogIyBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzI0LDE1IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgb3B0cGFyc2UsIG9zLCBzaHV0aWwsIHN1YnByb2Nlc3Ms
IHN5cworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgemlwZmlsZQorCitidWlsZERpcmVjdG9yeSA9
IE5vbmUKIAotYnVpbGREaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9z
LnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIsICJXZWJLaXRCdWlsZCIpKQogCiBk
ZWYgbWFpbigpOgogICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigidXNhZ2U6ICVw
cm9nIFtvcHRpb25zXSBbYWN0aW9uXSIpCkBAIC00NCwxNiArNTEsNTUgQEAgZGVmIG1haW4oKToK
ICAgICAgICAgcGFyc2VyLmVycm9yKCJBY3Rpb24gaXMgcmVxdWlyZWQiKQogICAgICAgICByZXR1
cm4gMQogCisgICAgaWYgbm90IGRldGVybWluZVdlYktpdEJ1aWxkRGlyZWN0b3J5KG9wdGlvbnMu
cGxhdGZvcm0sIG9wdGlvbnMuY29uZmlndXJhdGlvbik6CisgICAgICAgIHByaW50ID4+IHN5cy5z
dGRlcnIsICJDb3VsZCBub3QgZGV0ZXJtaW5lIGJ1aWxkIGRpcmVjdG9yeSIKKyAgICAgICAgcmV0
dXJuIDEKKwogICAgIGlmIGFjdGlvbiA9PSAnYXJjaGl2ZSc6CiAgICAgICAgIHJldHVybiBhcmNo
aXZlQnVpbHRQcm9kdWN0KG9wdGlvbnMuY29uZmlndXJhdGlvbiwgb3B0aW9ucy5wbGF0Zm9ybSkK
ICAgICBlbHNlOgogICAgICAgICByZXR1cm4gZXh0cmFjdEJ1aWx0UHJvZHVjdChvcHRpb25zLmNv
bmZpZ3VyYXRpb24sIG9wdGlvbnMucGxhdGZvcm0pCiAKIAotZGVmIGFyY2hpdmVCdWlsdFByb2R1
Y3QoY29uZmlndXJhdGlvbiwgcGxhdGZvcm0pOgotICAgIGFzc2VydCBwbGF0Zm9ybSBpbiAoJ21h
YycsICd3aW4nLCAncXQnLCAnZ3RrJywgJ2VmbCcpCitkZWYgZGV0ZXJtaW5lV2ViS2l0QnVpbGRE
aXJlY3RvcnkocGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24pOgorICAgIGdsb2JhbCBidWlsZERpcmVj
dG9yeQorICAgIGJ1aWxkRGlyZWN0b3J5ID0gc3VicHJvY2Vzcy5Qb3Blbihbb3MucGF0aC5qb2lu
KG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICJTY3JpcHRzIiwgIndlYmtpdC1idWls
ZC1kaXJlY3RvcnkiKSwKKyAgICAgICAgIi0tIiArIHBsYXRmb3JtLCAiLS0iICsgY29uZmlndXJh
dGlvbiwgJy0tdG9wLWxldmVsJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRl
KClbMF0uc3RyaXAoKQorICAgIHJldHVybiBidWlsZERpcmVjdG9yeQogCi0gICAgYXJjaGl2ZUZp
bGUgPSBvcy5wYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24gKyAiLnppcCIp
CisKK2RlZiByZW1vdmVEaXJlY3RvcnlJZkV4aXN0cyh0aGluRGlyZWN0b3J5KToKKyAgICBpZiBv
cy5wYXRoLmlzZGlyKHRoaW5EaXJlY3RvcnkpOgorICAgICAgICBzaHV0aWwucm10cmVlKHRoaW5E
aXJlY3RvcnkpCisKKworZGVmIGNvcHlCdWlsZEZpbGVzKHNvdXJjZSwgZGVzdGluYXRpb24pOgor
ICAgIHNodXRpbC5jb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLAorICAgICAgICBpZ25vcmU9
c2h1dGlsLmlnbm9yZV9wYXR0ZXJucygnLnN2bicsICcqLmEnLCAnKi5kJywgJyouZFNZTScsICcq
Lm8nLCAnKi5pbGsnLCAnKi5wZGInKSkKKworCitkZWYgY3JlYXRlWmlwTWFudWFsbHkoZGlyZWN0
b3J5VG9aaXAsIGFyY2hpdmVGaWxlKToKKyAgICBhcmNoaXZlWmlwID0gemlwZmlsZS5aaXBGaWxl
KGFyY2hpdmVGaWxlLCAidyIpCisKKyAgICBkZWYgYWRkVG9BcmNoaXZlKGFyZywgZGlyTmFtZSwg
bmFtZXMpOgorICAgICAgICByZWxhdGl2ZURpck5hbWUgPSBvcy5wYXRoLnJlbHBhdGgoZGlyTmFt
ZSwgZGlyZWN0b3J5VG9aaXApCisgICAgICAgIGZvciBmaWxlTmFtZSBpbiBuYW1lczoKKyAgICAg
ICAgICAgIGZ1bGxQYXRoID0gb3MucGF0aC5qb2luKGRpck5hbWUsIGZpbGVOYW1lKQorICAgICAg
ICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZnVsbFBhdGgpOgorICAgICAgICAgICAgICAgIGFyY2hp
dmVaaXAud3JpdGUoZnVsbFBhdGgsIG9zLnBhdGguam9pbihyZWxhdGl2ZURpck5hbWUsIGZpbGVO
YW1lKSkKKworICAgIG9zLnBhdGgud2FsayhkaXJlY3RvcnlUb1ppcCwgYWRkVG9BcmNoaXZlLCBO
b25lKQorICAgIGFyY2hpdmVaaXAuY2xvc2UoKQorCisKK2RlZiBjcmVhdGVaaXAoZGlyZWN0b3J5
VG9aaXAsIGNvbmZpZ3VyYXRpb24pOgorICAgIGFyY2hpdmVEaXIgPSBvcy5wYXRoLmpvaW4ob3Mu
cGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgIi4uIiwgIldlYktpdEJ1aWxkIikKKworICAg
ICMgQ2hyb21pdW0gYm90cyBtYXkgbm90IGhhdmUgdGhpcyBkaXJlY3RvcnkKKyAgICBpZiBub3Qg
b3MucGF0aC5pc2RpcihhcmNoaXZlRGlyKToKKyAgICAgICAgb3MubWtkaXIoYXJjaGl2ZURpcikK
KworICAgIGFyY2hpdmVGaWxlID0gb3MucGF0aC5qb2luKGFyY2hpdmVEaXIsIGNvbmZpZ3VyYXRp
b24gKyAiLnppcCIpCiAKICAgICB0cnk6CiAgICAgICAgIG9zLnVubGluayhhcmNoaXZlRmlsZSkK
QEAgLTYxLDI2ICsxMDcsMzIgQEAgZGVmIGFyY2hpdmVCdWlsdFByb2R1Y3QoY29uZmlndXJhdGlv
biwgcAogICAgICAgICBpZiBlLmVycm5vICE9IDI6CiAgICAgICAgICAgICByYWlzZQogCisgICAg
aWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5j
YWxsKFsiZGl0dG8iLCAiLWMiLCAiLWsiLCAiLS1rZWVwUGFyZW50IiwgIi0tc2VxdWVzdGVyUnNy
YyIsIGRpcmVjdG9yeVRvWmlwLCBhcmNoaXZlRmlsZV0pCisgICAgZWxpZiBzeXMucGxhdGZvcm0g
PT0gJ2N5Z3dpbic6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoWyJ6aXAiLCAiLXIi
LCBhcmNoaXZlRmlsZSwgImJpbiJdLCBjd2Q9ZGlyZWN0b3J5VG9aaXApCisgICAgZWxpZiBzeXMu
cGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgY3JlYXRlWmlwTWFudWFsbHkoZGlyZWN0b3J5
VG9aaXAsIGFyY2hpdmVGaWxlKQorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgc3lzLnBsYXRm
b3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwo
WyJ6aXAiLCAiLXkiLCAiLXIiLCBhcmNoaXZlRmlsZSwgIi4iXSwgY3dkPWRpcmVjdG9yeVRvWmlw
KQorCisKK2RlZiBhcmNoaXZlQnVpbHRQcm9kdWN0KGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtKToK
KyAgICBhc3NlcnQgcGxhdGZvcm0gaW4gKCdtYWMnLCAnd2luJywgJ3F0JywgJ2d0aycsICdlZmwn
LCAnY2hyb21pdW0nKQorCiAgICAgY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5ID0gb3MucGF0
aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCBjb25maWd1cmF0aW9uLnRpdGxlKCkpCiAKICAgICBpZiBw
bGF0Zm9ybSA9PSAnbWFjJzoKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbChbImRpdHRv
IiwgIi1jIiwgIi1rIiwgIi0ta2VlcFBhcmVudCIsICItLXNlcXVlc3RlclJzcmMiLCBjb25maWd1
cmF0aW9uQnVpbGREaXJlY3RvcnksIGFyY2hpdmVGaWxlXSkKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZVppcChjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pCiAgICAgZWxp
ZiBwbGF0Zm9ybSA9PSAnd2luJzoKICAgICAgICAgYmluRGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KGNvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSwgImJpbiIpCiAgICAgICAgIHRoaW5EaXJlY3Rv
cnkgPSBvcy5wYXRoLmpvaW4oY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCAidGhpbiIpCiAg
ICAgICAgIHRoaW5CaW5EaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4odGhpbkRpcmVjdG9yeSwgImJp
biIpCiAKLSAgICAgICAgaWYgb3MucGF0aC5pc2Rpcih0aGluRGlyZWN0b3J5KToKLSAgICAgICAg
ICAgIHNodXRpbC5ybXRyZWUodGhpbkRpcmVjdG9yeSkKLSAgICAgICAgb3MubWtkaXIodGhpbkRp
cmVjdG9yeSkKLQotICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoWyJjcCIsICItUiIsIGJpbkRp
cmVjdG9yeSwgdGhpbkJpbkRpcmVjdG9yeV0pOgotICAgICAgICAgICAgcmV0dXJuIDEKLQotICAg
ICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoInJtIC1mICVzIiAlIG9zLnBhdGguam9pbih0aGluQmlu
RGlyZWN0b3J5LCAiKi5pbGsiKSwgc2hlbGw9VHJ1ZSk6Ci0gICAgICAgICAgICByZXR1cm4gMQot
Ci0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbInppcCIsICItciIsIGFyY2hpdmVGaWxlLCAi
YmluIl0sIGN3ZD10aGluRGlyZWN0b3J5KToKKyAgICAgICAgcmVtb3ZlRGlyZWN0b3J5SWZFeGlz
dHModGhpbkRpcmVjdG9yeSkKKyAgICAgICAgY29weUJ1aWxkRmlsZXMoYmluRGlyZWN0b3J5LCB0
aGluQmluRGlyZWN0b3J5KQorICAgICAgICBpZiBjcmVhdGVaaXAodGhpbkRpcmVjdG9yeSwgY29u
ZmlndXJhdGlvbik6CiAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgIHNodXRpbC5ybXRy
ZWUodGhpbkRpcmVjdG9yeSkKQEAgLTg4LDggKzE0MCw3IEBAIGRlZiBhcmNoaXZlQnVpbHRQcm9k
dWN0KGNvbmZpZ3VyYXRpb24sIHAKICAgICBlbGlmIHBsYXRmb3JtID09ICdxdCcgb3IgcGxhdGZv
cm0gPT0gJ2d0aycgb3IgcGxhdGZvcm0gPT0gJ2VmbCc6CiAgICAgICAgIHRoaW5EaXJlY3Rvcnkg
PSBvcy5wYXRoLmpvaW4oY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCAidGhpbiIpCiAKLSAg
ICAgICAgaWYgb3MucGF0aC5pc2Rpcih0aGluRGlyZWN0b3J5KToKLSAgICAgICAgICAgIHNodXRp
bC5ybXRyZWUodGhpbkRpcmVjdG9yeSkKKyAgICAgICAgcmVtb3ZlRGlyZWN0b3J5SWZFeGlzdHMo
dGhpbkRpcmVjdG9yeSkKICAgICAgICAgb3MubWtkaXIodGhpbkRpcmVjdG9yeSkKIAogICAgICAg
ICBpZiBwbGF0Zm9ybSA9PSAncXQnIG9yIHBsYXRmb3JtID09ICdlZmwnOgpAQCAtMTA5LDggKzE2
MCwxNyBAQCBkZWYgYXJjaGl2ZUJ1aWx0UHJvZHVjdChjb25maWd1cmF0aW9uLCBwCiAgICAgICAg
ICAgICAgICAgaWYgbmFtZS5lbmRzd2l0aCgiLm8iKToKICAgICAgICAgICAgICAgICAgICAgb3Mu
cmVtb3ZlKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKIAotICAgICAgICBpZiBzdWJwcm9jZXNz
LmNhbGwoWyJ6aXAiLCAiLXkiLCAiLXIiLCBhcmNoaXZlRmlsZSwgIi4iXSwgY3dkPXRoaW5EaXJl
Y3RvcnkpOgorICAgICAgICBpZiBjcmVhdGVaaXAodGhpbkRpcmVjdG9yeSwgY29uZmlndXJhdGlv
bik6CisgICAgICAgICAgICByZXR1cm4gMQorCisgICAgZWxpZiBwbGF0Zm9ybSA9PSAnY2hyb21p
dW0nOgorICAgICAgICB0aGluRGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKGNvbmZpZ3VyYXRpb25C
dWlsZERpcmVjdG9yeSwgInRoaW4iKQorCisgICAgICAgIHJlbW92ZURpcmVjdG9yeUlmRXhpc3Rz
KHRoaW5EaXJlY3RvcnkpCisgICAgICAgIGNvcHlCdWlsZEZpbGVzKGNvbmZpZ3VyYXRpb25CdWls
ZERpcmVjdG9yeSwgdGhpbkRpcmVjdG9yeSkKKyAgICAgICAgaWYgY3JlYXRlWmlwKHRoaW5EaXJl
Y3RvcnksIGNvbmZpZ3VyYXRpb24pOgogICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgCiAK
IGRlZiBleHRyYWN0QnVpbHRQcm9kdWN0KGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtKToKICAgICBh
c3NlcnQgcGxhdGZvcm0gaW4gKCdtYWMnLCAnd2luJywgJ3F0JywgJ2d0aycsICdlZmwnKQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmln
Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvY29uZmlnLmpzb24JKHJldmlzaW9uIDExMjQ5MSkKKysrIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjcsNiArMjI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICJuYW1lIjogIkNocm9taXVtIFdpbiBSZWxlYXNlIiwgInR5cGUiOiAi
QnVpbGQiLCAiYnVpbGRkaXIiOiAiY2hyb21pdW0td2luLXJlbGVhc2UiLAogICAgICAgICAgICAg
ICAgICAgICAgICJwbGF0Zm9ybSI6ICJjaHJvbWl1bS13aW4iLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImkzODYiXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAidXBsb2FkIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAic2xhdmVuYW1lcyI6IFsi
Z29vZ2xlLXdpbmRvd3MtMSJdCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgICAgIHsKQEAgLTI0Miw2ICsyNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ2hyb21pdW0gTWFjIFJlbGVhc2UiLCAidHlwZSI6
ICJCdWlsZCIsICJidWlsZGRpciI6ICJjaHJvbWl1bS1tYWMtcmVsZWFzZSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgInBsYXRmb3JtIjogImNocm9taXVtLW1hYyIsICJjb25maWd1cmF0aW9uIjog
InJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiaTM4NiJdLAorICAgICAgICAgICAgICAgICAg
ICAgICJ1cGxvYWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVzIjog
WyJnb29nbGUtbWFjLTEiLCAiZ29vZ2xlLW1hYy0zIl0KICAgICAgICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjU3LDYgKzI1OSw3IEBACiAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJDaHJvbWl1bSBMaW51eCBS
ZWxlYXNlIiwgInR5cGUiOiAiQnVpbGQiLCAiYnVpbGRkaXIiOiAiY2hyb21pdW0tbGludXgtcmVs
ZWFzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImNocm9taXVtLWxpbnV4
IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJpMzg2Il0s
CisgICAgICAgICAgICAgICAgICAgICAgInVwbG9hZCI6IHRydWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgInNsYXZlbmFtZXMiOiBbImdvb2dsZS1saW51eC0xIl0KICAgICAgICAgICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgICAgICAgICAgewpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXQt
YnVpbGQtZGlyZWN0b3J5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0LWJ1aWxk
LWRpcmVjdG9yeQkocmV2aXNpb24gMTEyMjgzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXQtYnVp
bGQtZGlyZWN0b3J5CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNSArNDIsMjcgQEAgbXkgJHNob3dU
b3BMZXZlbERpcmVjdG9yeSA9IDA7CiBteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CiBt
eSAkdXNhZ2UgPSA8PEVPRjsKIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdCi0gIC0tY29u
ZmlndXJhdGlvbiAgU2hvdyB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBhIHNwZWNpZmljIGNvbmZp
Z3VyYXRpb24gKGUuZy4gRGVidWcsIFJlbGVhc2UuICBEZWZhdWx0cyB0byB0aGUgYWN0aXZlIGNv
bmZpZ3VyYXRpb24gc2V0IGJ5IHNldC13ZWJraXQtY29uZmlndXJhdGlvbikKLSAgLWh8LS1oZWxw
ICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCi0gIC0tdG9wLWxldmVsICAgICAgU2hvdyB0
aGUgdG9wLWxldmVsIGJ1aWxkIGRpcmVjdG9yeQorICAtLWNvbmZpZ3VyYXRpb24gICAgICAgU2hv
dyB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gKGUuZy4g
RGVidWcsIFJlbGVhc2UuICBEZWZhdWx0cyB0byB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24gc2V0
IGJ5IHNldC13ZWJraXQtY29uZmlndXJhdGlvbikKKyAgLWh8LS1oZWxwICAgICAgICAgICAgIFNo
b3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS10b3AtbGV2ZWwgICAgICAgICAgIFNob3cgdGhlIHRv
cC1sZXZlbCBidWlsZCBkaXJlY3RvcnkKKworICAtLWJsYWNrYmVycnkgICAgICAgICAgRmluZCB0
aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgQmxhY2tCZXJyeSBwb3J0IG9uIE1hYy9MaW51eAor
ICAtLWNocm9taXVtICAgICAgICAgICAgRmluZCB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUg
Q2hyb21pdW0gcG9ydCBvbiBNYWMvV2luL0xpbnV4CisgIC0tY2hyb21pdW0tYW5kcm9pZCAgICBG
aW5kIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBDaHJvbWl1bSBwb3J0IG9uIEFuZHJvaWQK
KyAgLS1lZmwgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhl
IEVGTCBwb3J0CisgIC0tZ3RrICAgICAgICAgICAgICAgICBGaW5kIHRoZSBidWlsZCBkaXJlY3Rv
cnkgZm9yIHRoZSBHVEsrIHBvcnQKKyAgLS1xdCAgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1
aWxkIGRpcmVjdG9yeSBmb3IgdGhlIFF0IHBvcnQKKyAgLS13aW5jYWlybyAgICAgICAgICAgIEZp
bmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdXNpbmcgQ2Fpcm8gKHJhdGhlciB0aGFuIENvcmVH
cmFwaGljcykgb24gV2luZG93cworICAtLXdpbmNlICAgICAgICAgICAgICAgRmluZCB0aGUgYnVp
bGQgZGlyZWN0b3J5IGZvciB0aGUgV2luQ0UgcG9ydAogCiBFaXRoZXIgLS1jb25maWd1cmF0aW9u
IG9yIC0tdG9wLWxldmVsIGlzIHJlcXVpcmVkLgogRU9GCiAKIHNldENvbmZpZ3VyYXRpb24oKTsg
IyBGaWd1cmUgb3V0IGZyb20gdGhlIGNvbW1hbmQgbGluZSBpZiB3ZSdyZSAtLWRlYnVnIG9yIC0t
cmVsZWFzZSBvciB0aGUgZGVmYXVsdC4KIAorIyBGSVhNRTogQ2hlY2sgaWYgZXh0cmEgZmxhZ3Mg
YXJlIHZhbGlkIG9yIG5vdC4KK0dldG9wdDo6TG9uZzo6Q29uZmlndXJlKCdwYXNzX3Rocm91Z2gn
KTsgIyBMZXQgLS1ibGFja2JlcnJ5LCBldGMuLi4gYmUgaGFuZGxlZCBieSB3ZWJraXRkaXJzCitt
eSAkY2hyb21pdW0gPSAwOwogbXkgJGdldE9wdGlvbnNSZXN1bHQgPSBHZXRPcHRpb25zKAogICAg
ICdjb25maWd1cmF0aW9uJyA9PiBcJHNob3dDb25maWd1cmF0aW9uRGlyZWN0b3J5LAogICAgICd0
b3AtbGV2ZWwnID0+IFwkc2hvd1RvcExldmVsRGlyZWN0b3J5LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134704</attachid>
            <date>2012-03-29 17:51:30 -0700</date>
            <delta_ts>2012-03-30 10:50:31 -0700</delta_ts>
            <desc>Updated per Tony&apos;s comments</desc>
            <filename>bug-82666-20120329175129.patch</filename>
            <type>text/plain</type>
            <size>12441</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMjU4NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTAzLTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIENocm9taXVtIGJvdHMgc2hvdWxkIHVwbG9hZCBhcmNoaXZlZCBidWlsdCBmaWxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2NjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uOgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAoZGV0ZXJtaW5lV2ViS2l0QnVpbGREaXJlY3RvcnkpOiBJbnN0ZWFkIG9m
IGhhcmQtY29kaW5nIFdlYktpdEJ1aWxkIGFzIHRoZSBidWlsZCBvdXRvdXQgZGlyZWN0b3J5LAor
ICAgICAgICBjYWxsIG91dCB0byB3ZWJraXQtYnVpbGQtZGlyZWN0b3J5LgorICAgICAgICAocmVt
b3ZlRGlyZWN0b3J5SWZFeGlzdHMpOiBFeHRyYWN0ZWQuCisgICAgICAgIChjb3B5QnVpbGRGaWxl
cyk6IEFkZGVkIHRvIGF2b2lkIGFyY2hpdmluZyB1c2VsZXNzIGludGVybWVkaW5hdGUgZmlsZXMu
CisgICAgICAgIChjcmVhdGVaaXBNYW51YWxseSk6IFVzZWQgaW4gQ2hyb21pdW0gV2luZG93cyB3
aGVyZSB3ZSBkb24ndCBleGVjdXRlIHB5dGhvbiBzY3JpcHRzIGluc2lkZSBjeWd3aW4uCisgICAg
ICAgIChjcmVhdGVaaXBNYW51YWxseS5hZGRUb0FyY2hpdmUpOgorICAgICAgICAoY3JlYXRlWmlw
KTogRXh0cmFjdGVkLiBDYWxscyBvdXQgdG8gYXBwcm9wcmFpdGUgY29tbWFuZCBsaW5lIHNjcmlw
dHMgb3IgY3JlYXRlWmlwTWFudWFsbHkuCisgICAgICAgIChhcmNoaXZlQnVpbHRQcm9kdWN0KTog
QWRkIHN1cHBvcnQgZm9yIENocm9taXVtIHBvcnQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQt
YnVpbGQtZGlyZWN0b3J5OiBBZGQgc3VwcG9ydCBmb3IgLS1wbGF0Zm9ybSBvcHRpb25zLgorCiAy
MDEyLTAzLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNjcmlwdHMgZmFpbCB0byBkZXRlY3Qgd2hlbiBhIHRvb2wgY3Jhc2hlcwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZQkocmV2aXNpb24g
MTEyNDkxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZl
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogIyEvdXNyL2Jpbi9weXRob24KIAogIyBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzI0LDE1IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgb3B0cGFyc2UsIG9zLCBzaHV0aWwsIHN1YnByb2Nlc3Ms
IHN5cworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgemlwZmlsZQorCitfYnVpbGREaXJlY3Rvcnkg
PSBOb25lCiAKLWJ1aWxkRGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihv
cy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAiLi4iLCAiV2ViS2l0QnVpbGQiKSkKIAog
ZGVmIG1haW4oKToKICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoInVzYWdlOiAl
cHJvZyBbb3B0aW9uc10gW2FjdGlvbl0iKQpAQCAtNDQsMTYgKzUxLDU1IEBAIGRlZiBtYWluKCk6
CiAgICAgICAgIHBhcnNlci5lcnJvcigiQWN0aW9uIGlzIHJlcXVpcmVkIikKICAgICAgICAgcmV0
dXJuIDEKIAorICAgIGlmIG5vdCBkZXRlcm1pbmVXZWJLaXRCdWlsZERpcmVjdG9yeShvcHRpb25z
LnBsYXRmb3JtLCBvcHRpb25zLmNvbmZpZ3VyYXRpb24pOgorICAgICAgICBwcmludCA+PiBzeXMu
c3RkZXJyLCAiQ291bGQgbm90IGRldGVybWluZSBidWlsZCBkaXJlY3RvcnkiCisgICAgICAgIHJl
dHVybiAxCisKICAgICBpZiBhY3Rpb24gPT0gJ2FyY2hpdmUnOgogICAgICAgICByZXR1cm4gYXJj
aGl2ZUJ1aWx0UHJvZHVjdChvcHRpb25zLmNvbmZpZ3VyYXRpb24sIG9wdGlvbnMucGxhdGZvcm0p
CiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGV4dHJhY3RCdWlsdFByb2R1Y3Qob3B0aW9ucy5j
b25maWd1cmF0aW9uLCBvcHRpb25zLnBsYXRmb3JtKQogCiAKLWRlZiBhcmNoaXZlQnVpbHRQcm9k
dWN0KGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtKToKLSAgICBhc3NlcnQgcGxhdGZvcm0gaW4gKCdt
YWMnLCAnd2luJywgJ3F0JywgJ2d0aycsICdlZmwnKQorZGVmIGRldGVybWluZVdlYktpdEJ1aWxk
RGlyZWN0b3J5KHBsYXRmb3JtLCBjb25maWd1cmF0aW9uKToKKyAgICBnbG9iYWwgX2J1aWxkRGly
ZWN0b3J5CisgICAgX2J1aWxkRGlyZWN0b3J5ID0gc3VicHJvY2Vzcy5Qb3Blbihbb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICJTY3JpcHRzIiwgIndlYmtpdC1i
dWlsZC1kaXJlY3RvcnkiKSwKKyAgICAgICAgIi0tIiArIHBsYXRmb3JtLCAiLS0iICsgY29uZmln
dXJhdGlvbiwgJy0tdG9wLWxldmVsJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmlj
YXRlKClbMF0uc3RyaXAoKQorICAgIHJldHVybiBfYnVpbGREaXJlY3RvcnkKKworCitkZWYgcmVt
b3ZlRGlyZWN0b3J5SWZFeGlzdHModGhpbkRpcmVjdG9yeSk6CisgICAgaWYgb3MucGF0aC5pc2Rp
cih0aGluRGlyZWN0b3J5KToKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh0aGluRGlyZWN0b3J5KQor
CisKK2RlZiBjb3B5QnVpbGRGaWxlcyhzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICBzaHV0aWwu
Y29weXRyZWUoc291cmNlLCBkZXN0aW5hdGlvbiwKKyAgICAgICAgaWdub3JlPXNodXRpbC5pZ25v
cmVfcGF0dGVybnMoJy5zdm4nLCAnKi5hJywgJyouZCcsICcqLmRTWU0nLCAnKi5vJywgJyouaWxr
JywgJyoubGliJywgJyoub2JqJywgJyoucGRiJykpCisKKworZGVmIGNyZWF0ZVppcE1hbnVhbGx5
KGRpcmVjdG9yeVRvWmlwLCBhcmNoaXZlRmlsZSk6CisgICAgYXJjaGl2ZVppcCA9IHppcGZpbGUu
WmlwRmlsZShhcmNoaXZlRmlsZSwgInciKQorCisgICAgZGVmIGFkZFRvQXJjaGl2ZShhcmcsIGRp
ck5hbWUsIG5hbWVzKToKKyAgICAgICAgcmVsYXRpdmVEaXJOYW1lID0gb3MucGF0aC5yZWxwYXRo
KGRpck5hbWUsIGRpcmVjdG9yeVRvWmlwKQorICAgICAgICBmb3IgZmlsZU5hbWUgaW4gbmFtZXM6
CisgICAgICAgICAgICBmdWxsUGF0aCA9IG9zLnBhdGguam9pbihkaXJOYW1lLCBmaWxlTmFtZSkK
KyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZ1bGxQYXRoKToKKyAgICAgICAgICAgICAg
ICBhcmNoaXZlWmlwLndyaXRlKGZ1bGxQYXRoLCBvcy5wYXRoLmpvaW4ocmVsYXRpdmVEaXJOYW1l
LCBmaWxlTmFtZSkpCisKKyAgICBvcy53YWxrKGRpcmVjdG9yeVRvWmlwLCBhZGRUb0FyY2hpdmUs
IE5vbmUpCisgICAgYXJjaGl2ZVppcC5jbG9zZSgpCisKKworZGVmIGNyZWF0ZVppcChkaXJlY3Rv
cnlUb1ppcCwgY29uZmlndXJhdGlvbik6CisgICAgYXJjaGl2ZURpciA9IG9zLnBhdGguam9pbihv
cy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAiLi4iLCAiV2ViS2l0QnVpbGQiKQogCi0g
ICAgYXJjaGl2ZUZpbGUgPSBvcy5wYXRoLmpvaW4oYnVpbGREaXJlY3RvcnksIGNvbmZpZ3VyYXRp
b24gKyAiLnppcCIpCisgICAgIyBDaHJvbWl1bSBib3RzIG1heSBub3QgaGF2ZSB0aGlzIGRpcmVj
dG9yeQorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGFyY2hpdmVEaXIpOgorICAgICAgICBvcy5t
a2RpcihhcmNoaXZlRGlyKQorCisgICAgYXJjaGl2ZUZpbGUgPSBvcy5wYXRoLmpvaW4oYXJjaGl2
ZURpciwgY29uZmlndXJhdGlvbiArICIuemlwIikKIAogICAgIHRyeToKICAgICAgICAgb3MudW5s
aW5rKGFyY2hpdmVGaWxlKQpAQCAtNjEsMjYgKzEwNywzMiBAQCBkZWYgYXJjaGl2ZUJ1aWx0UHJv
ZHVjdChjb25maWd1cmF0aW9uLCBwCiAgICAgICAgIGlmIGUuZXJybm8gIT0gMjoKICAgICAgICAg
ICAgIHJhaXNlCiAKLSAgICBjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkgPSBvcy5wYXRoLmpv
aW4oYnVpbGREaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24udGl0bGUoKSkKKyAgICBpZiBzeXMucGxh
dGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoWyJkaXR0
byIsICItYyIsICItayIsICItLWtlZXBQYXJlbnQiLCAiLS1zZXF1ZXN0ZXJSc3JjIiwgZGlyZWN0
b3J5VG9aaXAsIGFyY2hpdmVGaWxlXSkKKyAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2lu
JzoKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbChbInppcCIsICItciIsIGFyY2hpdmVG
aWxlLCAiYmluIl0sIGN3ZD1kaXJlY3RvcnlUb1ppcCkKKyAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9
PSAnd2luMzInOgorICAgICAgICBjcmVhdGVaaXBNYW51YWxseShkaXJlY3RvcnlUb1ppcCwgYXJj
aGl2ZUZpbGUpCisgICAgICAgIHJldHVybiAwCisgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgnbGludXgnKToKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbChbInppcCIsICIt
eSIsICItciIsIGFyY2hpdmVGaWxlLCAiLiJdLCBjd2Q9ZGlyZWN0b3J5VG9aaXApCisKKworZGVm
IGFyY2hpdmVCdWlsdFByb2R1Y3QoY29uZmlndXJhdGlvbiwgcGxhdGZvcm0pOgorICAgIGFzc2Vy
dCBwbGF0Zm9ybSBpbiAoJ21hYycsICd3aW4nLCAncXQnLCAnZ3RrJywgJ2VmbCcsICdjaHJvbWl1
bScpCisKKyAgICBjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oX2J1
aWxkRGlyZWN0b3J5LCBjb25maWd1cmF0aW9uLnRpdGxlKCkpCiAKICAgICBpZiBwbGF0Zm9ybSA9
PSAnbWFjJzoKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbChbImRpdHRvIiwgIi1jIiwg
Ii1rIiwgIi0ta2VlcFBhcmVudCIsICItLXNlcXVlc3RlclJzcmMiLCBjb25maWd1cmF0aW9uQnVp
bGREaXJlY3RvcnksIGFyY2hpdmVGaWxlXSkKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVppcChjb25m
aWd1cmF0aW9uQnVpbGREaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pCiAgICAgZWxpZiBwbGF0Zm9y
bSA9PSAnd2luJzoKICAgICAgICAgYmluRGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKGNvbmZpZ3Vy
YXRpb25CdWlsZERpcmVjdG9yeSwgImJpbiIpCiAgICAgICAgIHRoaW5EaXJlY3RvcnkgPSBvcy5w
YXRoLmpvaW4oY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCAidGhpbiIpCiAgICAgICAgIHRo
aW5CaW5EaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4odGhpbkRpcmVjdG9yeSwgImJpbiIpCiAKLSAg
ICAgICAgaWYgb3MucGF0aC5pc2Rpcih0aGluRGlyZWN0b3J5KToKLSAgICAgICAgICAgIHNodXRp
bC5ybXRyZWUodGhpbkRpcmVjdG9yeSkKLSAgICAgICAgb3MubWtkaXIodGhpbkRpcmVjdG9yeSkK
LQotICAgICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoWyJjcCIsICItUiIsIGJpbkRpcmVjdG9yeSwg
dGhpbkJpbkRpcmVjdG9yeV0pOgotICAgICAgICAgICAgcmV0dXJuIDEKLQotICAgICAgICBpZiBz
dWJwcm9jZXNzLmNhbGwoInJtIC1mICVzIiAlIG9zLnBhdGguam9pbih0aGluQmluRGlyZWN0b3J5
LCAiKi5pbGsiKSwgc2hlbGw9VHJ1ZSk6Ci0gICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAg
IGlmIHN1YnByb2Nlc3MuY2FsbChbInppcCIsICItciIsIGFyY2hpdmVGaWxlLCAiYmluIl0sIGN3
ZD10aGluRGlyZWN0b3J5KToKKyAgICAgICAgcmVtb3ZlRGlyZWN0b3J5SWZFeGlzdHModGhpbkRp
cmVjdG9yeSkKKyAgICAgICAgY29weUJ1aWxkRmlsZXMoYmluRGlyZWN0b3J5LCB0aGluQmluRGly
ZWN0b3J5KQorICAgICAgICBpZiBjcmVhdGVaaXAodGhpbkRpcmVjdG9yeSwgY29uZmlndXJhdGlv
bik6CiAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgIHNodXRpbC5ybXRyZWUodGhpbkRp
cmVjdG9yeSkKQEAgLTg4LDggKzE0MCw3IEBAIGRlZiBhcmNoaXZlQnVpbHRQcm9kdWN0KGNvbmZp
Z3VyYXRpb24sIHAKICAgICBlbGlmIHBsYXRmb3JtID09ICdxdCcgb3IgcGxhdGZvcm0gPT0gJ2d0
aycgb3IgcGxhdGZvcm0gPT0gJ2VmbCc6CiAgICAgICAgIHRoaW5EaXJlY3RvcnkgPSBvcy5wYXRo
LmpvaW4oY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCAidGhpbiIpCiAKLSAgICAgICAgaWYg
b3MucGF0aC5pc2Rpcih0aGluRGlyZWN0b3J5KToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUo
dGhpbkRpcmVjdG9yeSkKKyAgICAgICAgcmVtb3ZlRGlyZWN0b3J5SWZFeGlzdHModGhpbkRpcmVj
dG9yeSkKICAgICAgICAgb3MubWtkaXIodGhpbkRpcmVjdG9yeSkKIAogICAgICAgICBpZiBwbGF0
Zm9ybSA9PSAncXQnIG9yIHBsYXRmb3JtID09ICdlZmwnOgpAQCAtMTA5LDIwICsxNjAsMjkgQEAg
ZGVmIGFyY2hpdmVCdWlsdFByb2R1Y3QoY29uZmlndXJhdGlvbiwgcAogICAgICAgICAgICAgICAg
IGlmIG5hbWUuZW5kc3dpdGgoIi5vIik6CiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShv
cy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCiAKLSAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKFsi
emlwIiwgIi15IiwgIi1yIiwgYXJjaGl2ZUZpbGUsICIuIl0sIGN3ZD10aGluRGlyZWN0b3J5KToK
KyAgICAgICAgaWYgY3JlYXRlWmlwKHRoaW5EaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pOgorICAg
ICAgICAgICAgcmV0dXJuIDEKKworICAgIGVsaWYgcGxhdGZvcm0gPT0gJ2Nocm9taXVtJzoKKyAg
ICAgICAgdGhpbkRpcmVjdG9yeSA9IG9zLnBhdGguam9pbihjb25maWd1cmF0aW9uQnVpbGREaXJl
Y3RvcnksICJ0aGluIikKKworICAgICAgICByZW1vdmVEaXJlY3RvcnlJZkV4aXN0cyh0aGluRGly
ZWN0b3J5KQorICAgICAgICBjb3B5QnVpbGRGaWxlcyhjb25maWd1cmF0aW9uQnVpbGREaXJlY3Rv
cnksIHRoaW5EaXJlY3RvcnkpCisgICAgICAgIGlmIGNyZWF0ZVppcCh0aGluRGlyZWN0b3J5LCBj
b25maWd1cmF0aW9uKToKICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIAogCiBkZWYgZXh0
cmFjdEJ1aWx0UHJvZHVjdChjb25maWd1cmF0aW9uLCBwbGF0Zm9ybSk6CiAgICAgYXNzZXJ0IHBs
YXRmb3JtIGluICgnbWFjJywgJ3dpbicsICdxdCcsICdndGsnLCAnZWZsJykKIAotICAgIGFyY2hp
dmVGaWxlID0gb3MucGF0aC5qb2luKGJ1aWxkRGlyZWN0b3J5LCBjb25maWd1cmF0aW9uICsgIi56
aXAiKQotICAgIGNvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSA9IG9zLnBhdGguam9pbihidWls
ZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbi50aXRsZSgpKQorICAgIGFyY2hpdmVGaWxlID0gb3Mu
cGF0aC5qb2luKF9idWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbiArICIuemlwIikKKyAgICBj
b25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oX2J1aWxkRGlyZWN0b3J5
LCBjb25maWd1cmF0aW9uLnRpdGxlKCkpCiAKICAgICBpZiBwbGF0Zm9ybSA9PSAnbWFjJzoKICAg
ICAgICAgaWYgb3MucGF0aC5pc2Rpcihjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkpOgogICAg
ICAgICAgICAgc2h1dGlsLnJtdHJlZShjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkpCiAKLSAg
ICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKFsiZGl0dG8iLCAiLXgiLCAiLWsiLCBhcmNoaXZlRmls
ZSwgYnVpbGREaXJlY3RvcnldKToKKyAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKFsiZGl0dG8i
LCAiLXgiLCAiLWsiLCBhcmNoaXZlRmlsZSwgX2J1aWxkRGlyZWN0b3J5XSk6CiAgICAgICAgICAg
ICByZXR1cm4gMQogICAgICAgICBvcy51bmxpbmsoYXJjaGl2ZUZpbGUpCiAKQEAgLTE0Niw3ICsy
MDYsNyBAQCBkZWYgZXh0cmFjdEJ1aWx0UHJvZHVjdChjb25maWd1cmF0aW9uLCBwCiAgICAgICAg
IGlmIG9zLnBhdGguaXNkaXIoY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5KToKICAgICAgICAg
ICAgIHNodXRpbC5ybXRyZWUoY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5KQogCi0gICAgICAg
IGlmIHN1YnByb2Nlc3MuY2FsbChbInVuemlwIiwgIi1vIiwgYXJjaGl2ZUZpbGUsICItZCIsIGNv
bmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeV0sIGN3ZD1idWlsZERpcmVjdG9yeSk6CisgICAgICAg
IGlmIHN1YnByb2Nlc3MuY2FsbChbInVuemlwIiwgIi1vIiwgYXJjaGl2ZUZpbGUsICItZCIsIGNv
bmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeV0sIGN3ZD1fYnVpbGREaXJlY3RvcnkpOgogICAgICAg
ICAgICAgcmV0dXJuIDEKICAgICAgICAgb3MudW5saW5rKGFyY2hpdmVGaWxlKQogCkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb25maWcuanNv
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9jb25maWcuanNvbgkocmV2aXNpb24gMTEyNDkxKQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24JKHdvcmtpbmcgY29w
eSkKQEAgLTIyNyw2ICsyMjcsNyBAQAogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiQ2hyb21pdW0gV2luIFJlbGVhc2UiLCAidHlwZSI6ICJCdWls
ZCIsICJidWlsZGRpciI6ICJjaHJvbWl1bS13aW4tcmVsZWFzZSIsCiAgICAgICAgICAgICAgICAg
ICAgICAgInBsYXRmb3JtIjogImNocm9taXVtLXdpbiIsICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiaTM4NiJdLAorICAgICAgICAgICAgICAgICAgICAgICJ1
cGxvYWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVzIjogWyJnb29n
bGUtd2luZG93cy0xIl0KICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAg
ICAgewpAQCAtMjQyLDYgKzI0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJDaHJvbWl1bSBNYWMgUmVsZWFzZSIsICJ0eXBlIjogIkJ1
aWxkIiwgImJ1aWxkZGlyIjogImNocm9taXVtLW1hYy1yZWxlYXNlIiwKICAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAiY2hyb21pdW0tbWFjIiwgImNvbmZpZ3VyYXRpb24iOiAicmVs
ZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJpMzg2Il0sCisgICAgICAgICAgICAgICAgICAgICAg
InVwbG9hZCI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgInNsYXZlbmFtZXMiOiBbImdv
b2dsZS1tYWMtMSIsICJnb29nbGUtbWFjLTMiXQogICAgICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgICAgICB7CkBAIC0yNTcsNiArMjU5LDcgQEAKICAgICAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkNocm9taXVtIExpbnV4IFJlbGVh
c2UiLCAidHlwZSI6ICJCdWlsZCIsICJidWlsZGRpciI6ICJjaHJvbWl1bS1saW51eC1yZWxlYXNl
IiwKICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiY2hyb21pdW0tbGludXgiLCAi
Y29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImkzODYiXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAidXBsb2FkIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAic2xhdmVuYW1lcyI6IFsiZ29vZ2xlLWxpbnV4LTEiXQogICAgICAgICAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgICAgICAgICB7CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdC1idWls
ZC1kaXJlY3RvcnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXQtYnVpbGQtZGly
ZWN0b3J5CShyZXZpc2lvbiAxMTIyODMpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdC1idWlsZC1k
aXJlY3RvcnkJKHdvcmtpbmcgY29weSkKQEAgLTQyLDE1ICs0MiwyNiBAQCBteSAkc2hvd1RvcExl
dmVsRGlyZWN0b3J5ID0gMDsKIG15ICRwcm9ncmFtTmFtZSA9IGJhc2VuYW1lKCQwKTsKIG15ICR1
c2FnZSA9IDw8RU9GOwogVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10KLSAgLS1jb25maWd1
cmF0aW9uICBTaG93IHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIGEgc3BlY2lmaWMgY29uZmlndXJh
dGlvbiAoZS5nLiBEZWJ1ZywgUmVsZWFzZS4gIERlZmF1bHRzIHRvIHRoZSBhY3RpdmUgY29uZmln
dXJhdGlvbiBzZXQgYnkgc2V0LXdlYmtpdC1jb25maWd1cmF0aW9uKQotICAtaHwtLWhlbHAgICAg
ICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKLSAgLS10b3AtbGV2ZWwgICAgICBTaG93IHRoZSB0
b3AtbGV2ZWwgYnVpbGQgZGlyZWN0b3J5CisgIC0tY29uZmlndXJhdGlvbiAgICAgICBTaG93IHRo
ZSBidWlsZCBkaXJlY3RvcnkgZm9yIGEgc3BlY2lmaWMgY29uZmlndXJhdGlvbiAoZS5nLiBEZWJ1
ZywgUmVsZWFzZS4gIERlZmF1bHRzIHRvIHRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBzZXQgYnkg
c2V0LXdlYmtpdC1jb25maWd1cmF0aW9uKQorICAtaHwtLWhlbHAgICAgICAgICAgICAgU2hvdyB0
aGlzIGhlbHAgbWVzc2FnZQorICAtLXRvcC1sZXZlbCAgICAgICAgICAgU2hvdyB0aGUgdG9wLWxl
dmVsIGJ1aWxkIGRpcmVjdG9yeQorCisgIC0tYmxhY2tiZXJyeSAgICAgICAgICBGaW5kIHRoZSBi
dWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBCbGFja0JlcnJ5IHBvcnQgb24gTWFjL0xpbnV4CisgIC0t
Y2hyb21pdW0gICAgICAgICAgICBGaW5kIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBDaHJv
bWl1bSBwb3J0IG9uIE1hYy9XaW4vTGludXgKKyAgLS1jaHJvbWl1bS1hbmRyb2lkICAgIEZpbmQg
dGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIENocm9taXVtIHBvcnQgb24gQW5kcm9pZAorICAt
LWVmbCAgICAgICAgICAgICAgICAgRmluZCB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgRUZM
IHBvcnQKKyAgLS1ndGsgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBm
b3IgdGhlIEdUSysgcG9ydAorICAtLXF0ICAgICAgICAgICAgICAgICAgRmluZCB0aGUgYnVpbGQg
ZGlyZWN0b3J5IGZvciB0aGUgUXQgcG9ydAorICAtLXdpbmNhaXJvICAgICAgICAgICAgRmluZCB0
aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB1c2luZyBDYWlybyAocmF0aGVyIHRoYW4gQ29yZUdyYXBo
aWNzKSBvbiBXaW5kb3dzCisgIC0td2luY2UgICAgICAgICAgICAgICBGaW5kIHRoZSBidWlsZCBk
aXJlY3RvcnkgZm9yIHRoZSBXaW5DRSBwb3J0CiAKIEVpdGhlciAtLWNvbmZpZ3VyYXRpb24gb3Ig
LS10b3AtbGV2ZWwgaXMgcmVxdWlyZWQuCiBFT0YKIAogc2V0Q29uZmlndXJhdGlvbigpOyAjIEZp
Z3VyZSBvdXQgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGlmIHdlJ3JlIC0tZGVidWcgb3IgLS1yZWxl
YXNlIG9yIHRoZSBkZWZhdWx0LgogCisjIEZJWE1FOiBDaGVjayBpZiBleHRyYSBmbGFncyBhcmUg
dmFsaWQgb3Igbm90LgorR2V0b3B0OjpMb25nOjpDb25maWd1cmUoJ3Bhc3NfdGhyb3VnaCcpOyAj
IExldCAtLWJsYWNrYmVycnksIGV0Yy4uLiBiZSBoYW5kbGVkIGJ5IHdlYmtpdGRpcnMKIG15ICRn
ZXRPcHRpb25zUmVzdWx0ID0gR2V0T3B0aW9ucygKICAgICAnY29uZmlndXJhdGlvbicgPT4gXCRz
aG93Q29uZmlndXJhdGlvbkRpcmVjdG9yeSwKICAgICAndG9wLWxldmVsJyA9PiBcJHNob3dUb3BM
ZXZlbERpcmVjdG9yeSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134837</attachid>
            <date>2012-03-30 10:50:41 -0700</date>
            <delta_ts>2012-03-30 23:50:13 -0700</delta_ts>
            <desc>Fixed</desc>
            <filename>bug-82666-20120330105040.patch</filename>
            <type>text/plain</type>
            <size>12388</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExMjU4NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDEyLTAzLTI5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIENocm9taXVtIGJvdHMgc2hvdWxkIHVwbG9hZCBhcmNoaXZlZCBidWlsdCBmaWxl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2NjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uOgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAoZGV0ZXJtaW5lV2ViS2l0QnVpbGREaXJlY3RvcnkpOiBJbnN0ZWFkIG9m
IGhhcmQtY29kaW5nIFdlYktpdEJ1aWxkIGFzIHRoZSBidWlsZCBvdXRvdXQgZGlyZWN0b3J5LAor
ICAgICAgICBjYWxsIG91dCB0byB3ZWJraXQtYnVpbGQtZGlyZWN0b3J5LgorICAgICAgICAocmVt
b3ZlRGlyZWN0b3J5SWZFeGlzdHMpOiBFeHRyYWN0ZWQuCisgICAgICAgIChjb3B5QnVpbGRGaWxl
cyk6IEFkZGVkIHRvIGF2b2lkIGFyY2hpdmluZyB1c2VsZXNzIGludGVybWVkaW5hdGUgZmlsZXMu
CisgICAgICAgIChjcmVhdGVaaXBNYW51YWxseSk6IFVzZWQgaW4gQ2hyb21pdW0gV2luZG93cyB3
aGVyZSB3ZSBkb24ndCBleGVjdXRlIHB5dGhvbiBzY3JpcHRzIGluc2lkZSBjeWd3aW4uCisgICAg
ICAgIChjcmVhdGVaaXBNYW51YWxseS5hZGRUb0FyY2hpdmUpOgorICAgICAgICAoY3JlYXRlWmlw
KTogRXh0cmFjdGVkLiBDYWxscyBvdXQgdG8gYXBwcm9wcmFpdGUgY29tbWFuZCBsaW5lIHNjcmlw
dHMgb3IgY3JlYXRlWmlwTWFudWFsbHkuCisgICAgICAgIChhcmNoaXZlQnVpbHRQcm9kdWN0KTog
QWRkIHN1cHBvcnQgZm9yIENocm9taXVtIHBvcnQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQt
YnVpbGQtZGlyZWN0b3J5OiBBZGQgc3VwcG9ydCBmb3IgLS1wbGF0Zm9ybSBvcHRpb25zLgorCiAy
MDEyLTAzLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAg
ICAgIFNjcmlwdHMgZmFpbCB0byBkZXRlY3Qgd2hlbiBhIHRvb2wgY3Jhc2hlcwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZQkocmV2aXNpb24g
MTEyNDkxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZl
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogIyEvdXNyL2Jpbi9weXRob24KIAogIyBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzI0LDE1IEBACiAjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgb3B0cGFyc2UsIG9zLCBzaHV0aWwsIHN1YnByb2Nlc3Ms
IHN5cworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBz
dWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgemlwZmlsZQorCitfYnVpbGREaXJlY3Rvcnkg
PSBOb25lCiAKLWJ1aWxkRGlyZWN0b3J5ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihv
cy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAiLi4iLCAiV2ViS2l0QnVpbGQiKSkKIAog
ZGVmIG1haW4oKToKICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoInVzYWdlOiAl
cHJvZyBbb3B0aW9uc10gW2FjdGlvbl0iKQpAQCAtNDQsMTYgKzUxLDUyIEBAIGRlZiBtYWluKCk6
CiAgICAgICAgIHBhcnNlci5lcnJvcigiQWN0aW9uIGlzIHJlcXVpcmVkIikKICAgICAgICAgcmV0
dXJuIDEKIAorICAgIGlmIG5vdCBkZXRlcm1pbmVXZWJLaXRCdWlsZERpcmVjdG9yeShvcHRpb25z
LnBsYXRmb3JtLCBvcHRpb25zLmNvbmZpZ3VyYXRpb24pOgorICAgICAgICBwcmludCA+PiBzeXMu
c3RkZXJyLCAiQ291bGQgbm90IGRldGVybWluZSBidWlsZCBkaXJlY3RvcnkiCisgICAgICAgIHJl
dHVybiAxCisKICAgICBpZiBhY3Rpb24gPT0gJ2FyY2hpdmUnOgogICAgICAgICByZXR1cm4gYXJj
aGl2ZUJ1aWx0UHJvZHVjdChvcHRpb25zLmNvbmZpZ3VyYXRpb24sIG9wdGlvbnMucGxhdGZvcm0p
CiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGV4dHJhY3RCdWlsdFByb2R1Y3Qob3B0aW9ucy5j
b25maWd1cmF0aW9uLCBvcHRpb25zLnBsYXRmb3JtKQogCiAKLWRlZiBhcmNoaXZlQnVpbHRQcm9k
dWN0KGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtKToKLSAgICBhc3NlcnQgcGxhdGZvcm0gaW4gKCdt
YWMnLCAnd2luJywgJ3F0JywgJ2d0aycsICdlZmwnKQorZGVmIGRldGVybWluZVdlYktpdEJ1aWxk
RGlyZWN0b3J5KHBsYXRmb3JtLCBjb25maWd1cmF0aW9uKToKKyAgICBnbG9iYWwgX2J1aWxkRGly
ZWN0b3J5CisgICAgX2J1aWxkRGlyZWN0b3J5ID0gc3VicHJvY2Vzcy5Qb3Blbihbb3MucGF0aC5q
b2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICJTY3JpcHRzIiwgIndlYmtpdC1i
dWlsZC1kaXJlY3RvcnkiKSwKKyAgICAgICAgIi0tIiArIHBsYXRmb3JtLCAiLS0iICsgY29uZmln
dXJhdGlvbiwgJy0tdG9wLWxldmVsJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmlj
YXRlKClbMF0uc3RyaXAoKQorICAgIHJldHVybiBfYnVpbGREaXJlY3RvcnkKKworCitkZWYgcmVt
b3ZlRGlyZWN0b3J5SWZFeGlzdHModGhpbkRpcmVjdG9yeSk6CisgICAgaWYgb3MucGF0aC5pc2Rp
cih0aGluRGlyZWN0b3J5KToKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh0aGluRGlyZWN0b3J5KQor
CisKK2RlZiBjb3B5QnVpbGRGaWxlcyhzb3VyY2UsIGRlc3RpbmF0aW9uKToKKyAgICBzaHV0aWwu
Y29weXRyZWUoc291cmNlLCBkZXN0aW5hdGlvbiwKKyAgICAgICAgaWdub3JlPXNodXRpbC5pZ25v
cmVfcGF0dGVybnMoJy5zdm4nLCAnKi5hJywgJyouZCcsICcqLmRTWU0nLCAnKi5vJywgJyouaWxr
JywgJyoubGliJywgJyoub2JqJywgJyoucGRiJykpCisKKworZGVmIGNyZWF0ZVppcE1hbnVhbGx5
KGRpcmVjdG9yeVRvWmlwLCBhcmNoaXZlRmlsZSk6CisgICAgYXJjaGl2ZVppcCA9IHppcGZpbGUu
WmlwRmlsZShhcmNoaXZlRmlsZSwgInciKQorCisgICAgZm9yIHBhdGgsIGRpck5hbWVzLCBmaWxl
TmFtZXMgaW4gb3Mud2FsayhkaXJlY3RvcnlUb1ppcCk6CisgICAgICAgIHJlbGF0aXZlUGF0aCA9
IG9zLnBhdGgucmVscGF0aChwYXRoLCBkaXJlY3RvcnlUb1ppcCkKKyAgICAgICAgZm9yIGRpck5h
bWUgaW4gZGlyTmFtZXM6CisgICAgICAgICAgICBhcmNoaXZlWmlwLndyaXRlKG9zLnBhdGguam9p
bihwYXRoLCBkaXJOYW1lKSwgb3MucGF0aC5qb2luKHJlbGF0aXZlUGF0aCwgZGlyTmFtZSkpCisK
KyAgICBhcmNoaXZlWmlwLmNsb3NlKCkKKworCitkZWYgY3JlYXRlWmlwKGRpcmVjdG9yeVRvWmlw
LCBjb25maWd1cmF0aW9uKToKKyAgICBhcmNoaXZlRGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIsICJXZWJLaXRCdWlsZCIpCiAKLSAgICBhcmNo
aXZlRmlsZSA9IG9zLnBhdGguam9pbihidWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbiArICIu
emlwIikKKyAgICAjIENocm9taXVtIGJvdHMgbWF5IG5vdCBoYXZlIHRoaXMgZGlyZWN0b3J5Cisg
ICAgaWYgbm90IG9zLnBhdGguaXNkaXIoYXJjaGl2ZURpcik6CisgICAgICAgIG9zLm1rZGlyKGFy
Y2hpdmVEaXIpCisKKyAgICBhcmNoaXZlRmlsZSA9IG9zLnBhdGguam9pbihhcmNoaXZlRGlyLCBj
b25maWd1cmF0aW9uICsgIi56aXAiKQogCiAgICAgdHJ5OgogICAgICAgICBvcy51bmxpbmsoYXJj
aGl2ZUZpbGUpCkBAIC02MSwyNiArMTA0LDM1IEBAIGRlZiBhcmNoaXZlQnVpbHRQcm9kdWN0KGNv
bmZpZ3VyYXRpb24sIHAKICAgICAgICAgaWYgZS5lcnJubyAhPSAyOgogICAgICAgICAgICAgcmFp
c2UKIAotICAgIGNvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSA9IG9zLnBhdGguam9pbihidWls
ZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbi50aXRsZSgpKQorICAgIGNyZWF0ZVppcE1hbnVhbGx5
KGRpcmVjdG9yeVRvWmlwLCBhcmNoaXZlRmlsZSkKKyAgICByZXR1cm4gMAorCisgICAgaWYgc3lz
LnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKFsi
ZGl0dG8iLCAiLWMiLCAiLWsiLCAiLS1rZWVwUGFyZW50IiwgIi0tc2VxdWVzdGVyUnNyYyIsIGRp
cmVjdG9yeVRvWmlwLCBhcmNoaXZlRmlsZV0pCisgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2N5
Z3dpbic6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoWyJ6aXAiLCAiLXIiLCBhcmNo
aXZlRmlsZSwgImJpbiJdLCBjd2Q9ZGlyZWN0b3J5VG9aaXApCisgICAgZWxpZiBzeXMucGxhdGZv
cm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgY3JlYXRlWmlwTWFudWFsbHkoZGlyZWN0b3J5VG9aaXAs
IGFyY2hpdmVGaWxlKQorICAgICAgICByZXR1cm4gMAorICAgIGVsaWYgc3lzLnBsYXRmb3JtLnN0
YXJ0c3dpdGgoJ2xpbnV4Jyk6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoWyJ6aXAi
LCAiLXkiLCAiLXIiLCBhcmNoaXZlRmlsZSwgIi4iXSwgY3dkPWRpcmVjdG9yeVRvWmlwKQorCisK
K2RlZiBhcmNoaXZlQnVpbHRQcm9kdWN0KGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtKToKKyAgICBh
c3NlcnQgcGxhdGZvcm0gaW4gKCdtYWMnLCAnd2luJywgJ3F0JywgJ2d0aycsICdlZmwnLCAnY2hy
b21pdW0nKQorCisgICAgY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KF9idWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbi50aXRsZSgpKQogCiAgICAgaWYgcGxhdGZv
cm0gPT0gJ21hYyc6Ci0gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoWyJkaXR0byIsICIt
YyIsICItayIsICItLWtlZXBQYXJlbnQiLCAiLS1zZXF1ZXN0ZXJSc3JjIiwgY29uZmlndXJhdGlv
bkJ1aWxkRGlyZWN0b3J5LCBhcmNoaXZlRmlsZV0pCisgICAgICAgIHJldHVybiBjcmVhdGVaaXAo
Y29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCBjb25maWd1cmF0aW9uKQogICAgIGVsaWYgcGxh
dGZvcm0gPT0gJ3dpbic6CiAgICAgICAgIGJpbkRpcmVjdG9yeSA9IG9zLnBhdGguam9pbihjb25m
aWd1cmF0aW9uQnVpbGREaXJlY3RvcnksICJiaW4iKQogICAgICAgICB0aGluRGlyZWN0b3J5ID0g
b3MucGF0aC5qb2luKGNvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSwgInRoaW4iKQogICAgICAg
ICB0aGluQmluRGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHRoaW5EaXJlY3RvcnksICJiaW4iKQog
Ci0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIodGhpbkRpcmVjdG9yeSk6Ci0gICAgICAgICAgICBz
aHV0aWwucm10cmVlKHRoaW5EaXJlY3RvcnkpCi0gICAgICAgIG9zLm1rZGlyKHRoaW5EaXJlY3Rv
cnkpCi0KLSAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKFsiY3AiLCAiLVIiLCBiaW5EaXJlY3Rv
cnksIHRoaW5CaW5EaXJlY3RvcnldKToKLSAgICAgICAgICAgIHJldHVybiAxCi0KLSAgICAgICAg
aWYgc3VicHJvY2Vzcy5jYWxsKCJybSAtZiAlcyIgJSBvcy5wYXRoLmpvaW4odGhpbkJpbkRpcmVj
dG9yeSwgIiouaWxrIiksIHNoZWxsPVRydWUpOgotICAgICAgICAgICAgcmV0dXJuIDEKLQotICAg
ICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoWyJ6aXAiLCAiLXIiLCBhcmNoaXZlRmlsZSwgImJpbiJd
LCBjd2Q9dGhpbkRpcmVjdG9yeSk6CisgICAgICAgIHJlbW92ZURpcmVjdG9yeUlmRXhpc3RzKHRo
aW5EaXJlY3RvcnkpCisgICAgICAgIGNvcHlCdWlsZEZpbGVzKGJpbkRpcmVjdG9yeSwgdGhpbkJp
bkRpcmVjdG9yeSkKKyAgICAgICAgaWYgY3JlYXRlWmlwKHRoaW5EaXJlY3RvcnksIGNvbmZpZ3Vy
YXRpb24pOgogICAgICAgICAgICAgcmV0dXJuIDEKIAogICAgICAgICBzaHV0aWwucm10cmVlKHRo
aW5EaXJlY3RvcnkpCkBAIC04OCw4ICsxNDAsNyBAQCBkZWYgYXJjaGl2ZUJ1aWx0UHJvZHVjdChj
b25maWd1cmF0aW9uLCBwCiAgICAgZWxpZiBwbGF0Zm9ybSA9PSAncXQnIG9yIHBsYXRmb3JtID09
ICdndGsnIG9yIHBsYXRmb3JtID09ICdlZmwnOgogICAgICAgICB0aGluRGlyZWN0b3J5ID0gb3Mu
cGF0aC5qb2luKGNvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSwgInRoaW4iKQogCi0gICAgICAg
IGlmIG9zLnBhdGguaXNkaXIodGhpbkRpcmVjdG9yeSk6Ci0gICAgICAgICAgICBzaHV0aWwucm10
cmVlKHRoaW5EaXJlY3RvcnkpCisgICAgICAgIHJlbW92ZURpcmVjdG9yeUlmRXhpc3RzKHRoaW5E
aXJlY3RvcnkpCiAgICAgICAgIG9zLm1rZGlyKHRoaW5EaXJlY3RvcnkpCiAKICAgICAgICAgaWYg
cGxhdGZvcm0gPT0gJ3F0JyBvciBwbGF0Zm9ybSA9PSAnZWZsJzoKQEAgLTEwOSwyMCArMTYwLDI5
IEBAIGRlZiBhcmNoaXZlQnVpbHRQcm9kdWN0KGNvbmZpZ3VyYXRpb24sIHAKICAgICAgICAgICAg
ICAgICBpZiBuYW1lLmVuZHN3aXRoKCIubyIpOgogICAgICAgICAgICAgICAgICAgICBvcy5yZW1v
dmUob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQogCi0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2Fs
bChbInppcCIsICIteSIsICItciIsIGFyY2hpdmVGaWxlLCAiLiJdLCBjd2Q9dGhpbkRpcmVjdG9y
eSk6CisgICAgICAgIGlmIGNyZWF0ZVppcCh0aGluRGlyZWN0b3J5LCBjb25maWd1cmF0aW9uKToK
KyAgICAgICAgICAgIHJldHVybiAxCisKKyAgICBlbGlmIHBsYXRmb3JtID09ICdjaHJvbWl1bSc6
CisgICAgICAgIHRoaW5EaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oY29uZmlndXJhdGlvbkJ1aWxk
RGlyZWN0b3J5LCAidGhpbiIpCisKKyAgICAgICAgcmVtb3ZlRGlyZWN0b3J5SWZFeGlzdHModGhp
bkRpcmVjdG9yeSkKKyAgICAgICAgY29weUJ1aWxkRmlsZXMoY29uZmlndXJhdGlvbkJ1aWxkRGly
ZWN0b3J5LCB0aGluRGlyZWN0b3J5KQorICAgICAgICBpZiBjcmVhdGVaaXAodGhpbkRpcmVjdG9y
eSwgY29uZmlndXJhdGlvbik6CiAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAKIAogZGVm
IGV4dHJhY3RCdWlsdFByb2R1Y3QoY29uZmlndXJhdGlvbiwgcGxhdGZvcm0pOgogICAgIGFzc2Vy
dCBwbGF0Zm9ybSBpbiAoJ21hYycsICd3aW4nLCAncXQnLCAnZ3RrJywgJ2VmbCcpCiAKLSAgICBh
cmNoaXZlRmlsZSA9IG9zLnBhdGguam9pbihidWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbiAr
ICIuemlwIikKLSAgICBjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4o
YnVpbGREaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24udGl0bGUoKSkKKyAgICBhcmNoaXZlRmlsZSA9
IG9zLnBhdGguam9pbihfYnVpbGREaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24gKyAiLnppcCIpCisg
ICAgY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKF9idWlsZERpcmVj
dG9yeSwgY29uZmlndXJhdGlvbi50aXRsZSgpKQogCiAgICAgaWYgcGxhdGZvcm0gPT0gJ21hYyc6
CiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5KToK
ICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5KQog
Ci0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbImRpdHRvIiwgIi14IiwgIi1rIiwgYXJjaGl2
ZUZpbGUsIGJ1aWxkRGlyZWN0b3J5XSk6CisgICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbImRp
dHRvIiwgIi14IiwgIi1rIiwgYXJjaGl2ZUZpbGUsIF9idWlsZERpcmVjdG9yeV0pOgogICAgICAg
ICAgICAgcmV0dXJuIDEKICAgICAgICAgb3MudW5saW5rKGFyY2hpdmVGaWxlKQogCkBAIC0xNDYs
NyArMjA2LDcgQEAgZGVmIGV4dHJhY3RCdWlsdFByb2R1Y3QoY29uZmlndXJhdGlvbiwgcAogICAg
ICAgICBpZiBvcy5wYXRoLmlzZGlyKGNvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSk6CiAgICAg
ICAgICAgICBzaHV0aWwucm10cmVlKGNvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSkKIAotICAg
ICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoWyJ1bnppcCIsICItbyIsIGFyY2hpdmVGaWxlLCAiLWQi
LCBjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnldLCBjd2Q9YnVpbGREaXJlY3RvcnkpOgorICAg
ICAgICBpZiBzdWJwcm9jZXNzLmNhbGwoWyJ1bnppcCIsICItbyIsIGFyY2hpdmVGaWxlLCAiLWQi
LCBjb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnldLCBjd2Q9X2J1aWxkRGlyZWN0b3J5KToKICAg
ICAgICAgICAgIHJldHVybiAxCiAgICAgICAgIG9zLnVubGluayhhcmNoaXZlRmlsZSkKIApJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmln
Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvY29uZmlnLmpzb24JKHJldmlzaW9uIDExMjQ5MSkKKysrIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjcsNiArMjI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICJuYW1lIjogIkNocm9taXVtIFdpbiBSZWxlYXNlIiwgInR5cGUiOiAi
QnVpbGQiLCAiYnVpbGRkaXIiOiAiY2hyb21pdW0td2luLXJlbGVhc2UiLAogICAgICAgICAgICAg
ICAgICAgICAgICJwbGF0Zm9ybSI6ICJjaHJvbWl1bS13aW4iLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImkzODYiXSwKKyAgICAgICAgICAgICAgICAgICAg
ICAidXBsb2FkIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAic2xhdmVuYW1lcyI6IFsi
Z29vZ2xlLXdpbmRvd3MtMSJdCiAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg
ICAgICAgIHsKQEAgLTI0Miw2ICsyNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQ2hyb21pdW0gTWFjIFJlbGVhc2UiLCAidHlwZSI6
ICJCdWlsZCIsICJidWlsZGRpciI6ICJjaHJvbWl1bS1tYWMtcmVsZWFzZSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgInBsYXRmb3JtIjogImNocm9taXVtLW1hYyIsICJjb25maWd1cmF0aW9uIjog
InJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiaTM4NiJdLAorICAgICAgICAgICAgICAgICAg
ICAgICJ1cGxvYWQiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICJzbGF2ZW5hbWVzIjog
WyJnb29nbGUtbWFjLTEiLCAiZ29vZ2xlLW1hYy0zIl0KICAgICAgICAgICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgICAgICAgICAgewpAQCAtMjU3LDYgKzI1OSw3IEBACiAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJDaHJvbWl1bSBMaW51eCBS
ZWxlYXNlIiwgInR5cGUiOiAiQnVpbGQiLCAiYnVpbGRkaXIiOiAiY2hyb21pdW0tbGludXgtcmVs
ZWFzZSIsCiAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImNocm9taXVtLWxpbnV4
IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJpMzg2Il0s
CisgICAgICAgICAgICAgICAgICAgICAgInVwbG9hZCI6IHRydWUsCiAgICAgICAgICAgICAgICAg
ICAgICAgInNsYXZlbmFtZXMiOiBbImdvb2dsZS1saW51eC0xIl0KICAgICAgICAgICAgICAgICAg
ICAgfSwKICAgICAgICAgICAgICAgICAgICAgewpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXQt
YnVpbGQtZGlyZWN0b3J5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0LWJ1aWxk
LWRpcmVjdG9yeQkocmV2aXNpb24gMTEyMjgzKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXQtYnVp
bGQtZGlyZWN0b3J5CSh3b3JraW5nIGNvcHkpCkBAIC00MiwxNSArNDIsMjYgQEAgbXkgJHNob3dU
b3BMZXZlbERpcmVjdG9yeSA9IDA7CiBteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CiBt
eSAkdXNhZ2UgPSA8PEVPRjsKIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdCi0gIC0tY29u
ZmlndXJhdGlvbiAgU2hvdyB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBhIHNwZWNpZmljIGNvbmZp
Z3VyYXRpb24gKGUuZy4gRGVidWcsIFJlbGVhc2UuICBEZWZhdWx0cyB0byB0aGUgYWN0aXZlIGNv
bmZpZ3VyYXRpb24gc2V0IGJ5IHNldC13ZWJraXQtY29uZmlndXJhdGlvbikKLSAgLWh8LS1oZWxw
ICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlCi0gIC0tdG9wLWxldmVsICAgICAgU2hvdyB0
aGUgdG9wLWxldmVsIGJ1aWxkIGRpcmVjdG9yeQorICAtLWNvbmZpZ3VyYXRpb24gICAgICAgU2hv
dyB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gKGUuZy4g
RGVidWcsIFJlbGVhc2UuICBEZWZhdWx0cyB0byB0aGUgYWN0aXZlIGNvbmZpZ3VyYXRpb24gc2V0
IGJ5IHNldC13ZWJraXQtY29uZmlndXJhdGlvbikKKyAgLWh8LS1oZWxwICAgICAgICAgICAgIFNo
b3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS10b3AtbGV2ZWwgICAgICAgICAgIFNob3cgdGhlIHRv
cC1sZXZlbCBidWlsZCBkaXJlY3RvcnkKKworICAtLWJsYWNrYmVycnkgICAgICAgICAgRmluZCB0
aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgQmxhY2tCZXJyeSBwb3J0IG9uIE1hYy9MaW51eAor
ICAtLWNocm9taXVtICAgICAgICAgICAgRmluZCB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUg
Q2hyb21pdW0gcG9ydCBvbiBNYWMvV2luL0xpbnV4CisgIC0tY2hyb21pdW0tYW5kcm9pZCAgICBG
aW5kIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBDaHJvbWl1bSBwb3J0IG9uIEFuZHJvaWQK
KyAgLS1lZmwgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhl
IEVGTCBwb3J0CisgIC0tZ3RrICAgICAgICAgICAgICAgICBGaW5kIHRoZSBidWlsZCBkaXJlY3Rv
cnkgZm9yIHRoZSBHVEsrIHBvcnQKKyAgLS1xdCAgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1
aWxkIGRpcmVjdG9yeSBmb3IgdGhlIFF0IHBvcnQKKyAgLS13aW5jYWlybyAgICAgICAgICAgIEZp
bmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdXNpbmcgQ2Fpcm8gKHJhdGhlciB0aGFuIENvcmVH
cmFwaGljcykgb24gV2luZG93cworICAtLXdpbmNlICAgICAgICAgICAgICAgRmluZCB0aGUgYnVp
bGQgZGlyZWN0b3J5IGZvciB0aGUgV2luQ0UgcG9ydAogCiBFaXRoZXIgLS1jb25maWd1cmF0aW9u
IG9yIC0tdG9wLWxldmVsIGlzIHJlcXVpcmVkLgogRU9GCiAKIHNldENvbmZpZ3VyYXRpb24oKTsg
IyBGaWd1cmUgb3V0IGZyb20gdGhlIGNvbW1hbmQgbGluZSBpZiB3ZSdyZSAtLWRlYnVnIG9yIC0t
cmVsZWFzZSBvciB0aGUgZGVmYXVsdC4KIAorIyBGSVhNRTogQ2hlY2sgaWYgZXh0cmEgZmxhZ3Mg
YXJlIHZhbGlkIG9yIG5vdC4KK0dldG9wdDo6TG9uZzo6Q29uZmlndXJlKCdwYXNzX3Rocm91Z2gn
KTsgIyBMZXQgLS1ibGFja2JlcnJ5LCBldGMuLi4gYmUgaGFuZGxlZCBieSB3ZWJraXRkaXJzCiBt
eSAkZ2V0T3B0aW9uc1Jlc3VsdCA9IEdldE9wdGlvbnMoCiAgICAgJ2NvbmZpZ3VyYXRpb24nID0+
IFwkc2hvd0NvbmZpZ3VyYXRpb25EaXJlY3RvcnksCiAgICAgJ3RvcC1sZXZlbCcgPT4gXCRzaG93
VG9wTGV2ZWxEaXJlY3RvcnksCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>