<?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>49586</bug_id>
          
          <creation_ts>2010-11-16 02:43:10 -0800</creation_ts>
          <short_desc>Chrome DevTools: concatenate CSS files, do not link missing JS files in release mode.</short_desc>
          <delta_ts>2010-11-16 08:44:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>loislo</cc>
    
    <cc>mnaganov</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>309644</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-16 02:43:10 -0800</bug_when>
    <thetext>Drive-by move of py script files upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309653</commentid>
    <comment_count>1</comment_count>
      <attachid>73976</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-16 03:09:03 -0800</bug_when>
    <thetext>Created attachment 73976
[PATCH] Proposed change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309657</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-16 03:12:09 -0800</bug_when>
    <thetext>Attachment 73976 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit/chromium/Build/concatenate_css_files.py&apos;, u&apos;WebKit/chromium/Build/concatenate_js_files.py&apos;, u&apos;WebKit/chromium/Build/generate_devtools_html.py&apos;, u&apos;WebKit/chromium/ChangeLog&apos;, u&apos;WebKit/chromium/WebKit.gyp&apos;]&quot; exit_code: 1
Last 3072 characters of output:
 four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:74:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:75:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:76:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:77:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:81:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:86:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:9:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKit/chromium/Build/generate_devtools_html.py:10:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:11:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:13:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:15:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:16:  at least two spaces before inline comment  [pep8/E261] [5]
WebKit/chromium/Build/generate_devtools_html.py:21:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:29:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:30:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:31:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:32:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:33:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:35:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:37:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:39:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:41:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:43:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:47:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:52:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:53:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:57:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/generate_devtools_html.py:62:  indentation is not a multiple of four  [pep8/E111] [5]
Total errors found: 79 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309674</commentid>
    <comment_count>3</comment_count>
      <attachid>73976</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-11-16 04:49:09 -0800</bug_when>
    <thetext>Comment on attachment 73976
[PATCH] Proposed change.

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

&gt; WebKit/chromium/WebKit.gyp:733
&gt;                      &apos;&lt;@(devtools_files)&apos;,

If you are adding &apos;DevTools.js&apos; and &apos;Tests.js&apos; manually in the script, why do you need devtools_files here?

&gt; WebKit/chromium/WebKit.gyp:734
&gt; +                    &apos;&lt;(SHARED_INTERMEDIATE_DIR)/webcore/InspectorBackendStub.js&apos;

BTW, Python is OK with array elements list ended with a comma.

&gt; WebKit/chromium/WebKit.gyp:750
&gt; +                &apos;../../WebCore/WebCore.gyp/WebCore.gyp:inspector_protocol_sources&apos;

Why CSS depends on inspector_protocol_sources?

&gt; WebKit/chromium/WebKit.gyp:761
&gt; +                    &apos;&lt;@(devtools_files)&apos;

If you are adding &apos;devTools.css&apos; manually in the script, why do you need devtools_files here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309682</commentid>
    <comment_count>4</comment_count>
      <attachid>73984</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-16 05:22:14 -0800</bug_when>
    <thetext>Created attachment 73984
[PATCH] Same with style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309684</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-16 05:23:51 -0800</bug_when>
    <thetext>Attachment 73984 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;WebKit/chromium/Build/concatenate_css_files.py&apos;, u&apos;WebKit/chromium/Build/concatenate_js_files.py&apos;, u&apos;WebKit/chromium/Build/generate_devtools_html.py&apos;, u&apos;WebKit/chromium/ChangeLog&apos;, u&apos;WebKit/chromium/WebKit.gyp&apos;]&quot; exit_code: 1
Last 3072 characters of output:
2] [5]
WebKit/chromium/Build/concatenate_js_files.py:31:  multiple statements on one line (semicolon)  [pep8/E702] [5]
WebKit/chromium/Build/concatenate_js_files.py:46:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKit/chromium/Build/concatenate_js_files.py:73:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_js_files.py:78:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_css_files.py:14:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKit/chromium/Build/concatenate_css_files.py:21:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_css_files.py:29:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKit/chromium/Build/concatenate_css_files.py:31:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:32:  multiple statements on one line (semicolon)  [pep8/E702] [5]
WebKit/chromium/Build/concatenate_css_files.py:32:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:34:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:35:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:36:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:37:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:38:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:39:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:40:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:41:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:43:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:44:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:45:  indentation is not a multiple of four  [pep8/E111] [5]
WebKit/chromium/Build/concatenate_css_files.py:47:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKit/chromium/Build/concatenate_css_files.py:53:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_css_files.py:58:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_css_files.py:61:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_css_files.py:73:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_css_files.py:78:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/concatenate_css_files.py:84:  trailing whitespace  [pep8/W291] [5]
WebKit/chromium/Build/generate_devtools_html.py:9:  expected 2 blank lines, found 1  [pep8/E302] [5]
WebKit/chromium/Build/generate_devtools_html.py:16:  at least two spaces before inline comment  [pep8/E261] [5]
Total errors found: 32 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309686</commentid>
    <comment_count>6</comment_count>
      <attachid>73985</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-16 05:30:10 -0800</bug_when>
    <thetext>Created attachment 73985
[PATCH] Same with style fixes for real.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309688</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-16 05:37:11 -0800</bug_when>
    <thetext>&gt; &gt; WebKit/chromium/WebKit.gyp:750
&gt; &gt; +                &apos;../../WebCore/WebCore.gyp/WebCore.gyp:inspector_protocol_sources&apos;
&gt; 

Fixed.

Rest seems to be correct as we discussed offline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309689</commentid>
    <comment_count>8</comment_count>
      <attachid>73986</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-16 05:38:04 -0800</bug_when>
    <thetext>Created attachment 73986
[PATCH] Addressed Mikhail&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309690</commentid>
    <comment_count>9</comment_count>
      <attachid>73986</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-11-16 05:42:11 -0800</bug_when>
    <thetext>Comment on attachment 73986
[PATCH] Addressed Mikhail&apos;s comments.

Looks good to me, I would put r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309729</commentid>
    <comment_count>10</comment_count>
      <attachid>73986</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2010-11-16 08:16:57 -0800</bug_when>
    <thetext>Comment on attachment 73986
[PATCH] Addressed Mikhail&apos;s comments.

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

Please address the comments before landing.

&gt; WebKit/chromium/Build/concatenate_css_files.py:2
&gt; +# Copyright (c) 2009 The Chromium Authors. All rights reserved.

it&apos;s 2010 already:) and btw should we use a different license header like in the other webkit files?

&gt; WebKit/chromium/Build/concatenate_css_files.py:7
&gt; +# using &lt;script&gt; tags in a given &apos;order.html&apos; file.

did you mean using &lt;link&gt; tags?

&gt; WebKit/chromium/Build/concatenate_css_files.py:60
&gt; +    extractor.ordered_css_files.append(&apos;devTools.css&apos;)

should we have a comment explaining this stuff?

&gt; WebKit/chromium/Build/concatenate_css_files.py:67
&gt; +        if (full_path is None):

nit: if not full_path:

&gt; WebKit/chromium/Build/concatenate_js_files.py:2
&gt; +# Copyright (c) 2009 The Chromium Authors. All rights reserved.

2009-&gt;2010

&gt; WebKit/chromium/Build/concatenate_js_files.py:42
&gt; +                    raise Exception(&apos;Ambiguous file %s: found in %s and %s&apos; %

I understand that these are build scripts but can we extract common functionality into its own file?

&gt; WebKit/chromium/Build/generate_devtools_html.py:2
&gt; +# Copyright (c) 2009 The Chromium Authors. All rights reserved.

2009-&gt;2010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>309743</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-11-16 08:44:36 -0800</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
        A       WebKit/chromium/Build/concatenate_css_files.py
        A       WebKit/chromium/Build/concatenate_js_files.py
        A       WebKit/chromium/Build/generate_devtools_html.py
        M       WebKit/chromium/ChangeLog
        M       WebKit/chromium/WebKit.gyp
Committed r72103</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73976</attachid>
            <date>2010-11-16 03:09:03 -0800</date>
            <delta_ts>2010-11-16 05:22:14 -0800</delta_ts>
            <desc>[PATCH] Proposed change.</desc>
            <filename>concat</filename>
            <type>text/plain</type>
            <size>13516</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9jc3NfZmlsZXMu
cHkgYi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZTRjNTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5CkBAIC0wLDAg
KzEsODYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIHNjcmlwdCBjb25jYXRlbmF0
ZXMgaW4gcGxhY2UgSlMgZmlsZXMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZAorIyB1c2luZyA8c2Ny
aXB0PiB0YWdzIGluIGEgZ2l2ZW4gJ29yZGVyLmh0bWwnIGZpbGUuCisKK2Zyb20gSFRNTFBhcnNl
ciBpbXBvcnQgSFRNTFBhcnNlcgorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IHN5cworCitjbGFzcyBPcmRlcmVkQ1NTRmlsZXNFeHRyYWN0b3Io
SFRNTFBhcnNlcik6CisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIG9yZGVyX2h0bWxfbmFtZSk6Cisg
ICAgSFRNTFBhcnNlci5fX2luaXRfXyhzZWxmKQorICAgIHNlbGYub3JkZXJlZF9jc3NfZmlsZXMg
PSBbXQorICAgIG9yZGVyX2h0bWwgPSBvcGVuKG9yZGVyX2h0bWxfbmFtZSwgJ3InKQorICAgIHNl
bGYuZmVlZChvcmRlcl9odG1sLnJlYWQoKSkKKworICBkZWYgaGFuZGxlX3N0YXJ0dGFnKHNlbGYs
IHRhZywgYXR0cnMpOgorICAgIGlmIHRhZyA9PSAnbGluayc6CisgICAgICBhdHRyc19kaWN0ID0g
ZGljdChhdHRycykKKyAgICAgIGlmICgndHlwZScgaW4gYXR0cnNfZGljdCBhbmQgYXR0cnNfZGlj
dFsndHlwZSddID09ICd0ZXh0L2NzcycgYW5kCisgICAgICAgICAgJ2hyZWYnIGluIGF0dHJzX2Rp
Y3QpOgorICAgICAgICBzZWxmLm9yZGVyZWRfY3NzX2ZpbGVzLmFwcGVuZChhdHRyc19kaWN0Wydo
cmVmJ10pCisKK2NsYXNzIFBhdGhFeHBhbmRlcjoKKworICBkZWYgX19pbml0X18oc2VsZiwgcGF0
aHMpOgorICAgIHNlbGYucGF0aHMgPSBwYXRoczsKKworICBkZWYgZXhwYW5kKHNlbGYsIGZpbGVu
YW1lKToKKyAgICBsYXN0X3BhdGggPSBOb25lCisgICAgZXhwYW5kZWRfbmFtZSA9IE5vbmUKKyAg
ICBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzOgorICAgICAgZm5hbWUgPSAiJXMvJXMiICUgKHBhdGgs
IGZpbGVuYW1lKQorICAgICAgaWYgKG9zLmFjY2VzcyhmbmFtZSwgb3MuRl9PSykpOgorICAgICAg
ICBpZiAobGFzdF9wYXRoICE9IE5vbmUpOgorICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQW1i
aWd1b3VzIGZpbGUgJXM6IGZvdW5kIGluICVzIGFuZCAlcycgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZmlsZW5hbWUsIGxhc3RfcGF0aCwgcGF0aCkpCisgICAgICAgIGV4cGFuZGVkX25h
bWUgPSBmbmFtZQorICAgICAgICBsYXN0X3BhdGggPSBwYXRoCisgICAgcmV0dXJuIGV4cGFuZGVk
X25hbWUKKworZGVmIG1haW4oYXJndik6CisKKyAgaWYgbGVuKGFyZ3YpIDwgMzoKKyAgICBwcmlu
dCgndXNhZ2U6ICVzIG9yZGVyLmh0bWwgaW5wdXRfc291cmNlX2Rpcl8xIGlucHV0X3NvdXJjZV9k
aXJfMiAuLi4gJworICAgICAgICAgICdvdXRwdXRfZmlsZScgJSBhcmd2WzBdKQorICAgIHJldHVy
biAxCisKKyAgb3V0cHV0X2ZpbGVfbmFtZSA9IGFyZ3YucG9wKCkKKyAgaW5wdXRfb3JkZXJfZmls
ZV9uYW1lID0gYXJndlsxXQorICBleHRyYWN0b3IgPSBPcmRlcmVkQ1NTRmlsZXNFeHRyYWN0b3Io
aW5wdXRfb3JkZXJfZmlsZV9uYW1lKQorICBleHRyYWN0b3Iub3JkZXJlZF9jc3NfZmlsZXMuYXBw
ZW5kKCdkZXZUb29scy5jc3MnKQorCisgIGV4cGFuZGVyID0gUGF0aEV4cGFuZGVyKGFyZ3ZbMjpd
KQorICBvdXRwdXQgPSBTdHJpbmdJTygpCisKKyAgZm9yIGlucHV0X2ZpbGVfbmFtZSBpbiBleHRy
YWN0b3Iub3JkZXJlZF9jc3NfZmlsZXM6CisgICAgZnVsbF9wYXRoID0gZXhwYW5kZXIuZXhwYW5k
KGlucHV0X2ZpbGVfbmFtZSkKKyAgICBpZiAoZnVsbF9wYXRoIGlzIE5vbmUpOgorICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdGaWxlICVzIHJlZmVyZW5jZWQgaW4gJXMgbm90IGZvdW5kIG9uIGFueSBz
b3VyY2UgcGF0aHMsICcKKyAgICAgICAgICAgICAgICAgICAgICAnY2hlY2sgc291cmNlIHRyZWUg
Zm9yIGNvbnNpc3RlbmN5JyAlCisgICAgICAgICAgICAgICAgICAgICAgKGlucHV0X2ZpbGVfbmFt
ZSwgaW5wdXRfb3JkZXJfZmlsZV9uYW1lKSkKKyAgICBvdXRwdXQud3JpdGUoJy8qICVzICovXG5c
bicgJSBpbnB1dF9maWxlX25hbWUpCisgICAgaW5wdXRfZmlsZSA9IG9wZW4oZnVsbF9wYXRoLCAn
cicpCisgICAgb3V0cHV0LndyaXRlKGlucHV0X2ZpbGUucmVhZCgpKQorICAgIG91dHB1dC53cml0
ZSgnXG4nKQorICAgIGlucHV0X2ZpbGUuY2xvc2UoKQorCisgIG91dHB1dF9maWxlID0gb3Blbihv
dXRwdXRfZmlsZV9uYW1lLCAndycpCisgIG91dHB1dF9maWxlLndyaXRlKG91dHB1dC5nZXR2YWx1
ZSgpKQorICBvdXRwdXRfZmlsZS5jbG9zZSgpCisgIG91dHB1dC5jbG9zZSgpCisKKyAgIyBUb3Vj
aCBvdXRwdXQgZmlsZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5
CisgICMgbW9kaWZpZWQgcmVzb3VyY2UgZmlsZXMuCisgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFy
d2luJzoKKyAgICBvdXRwdXRfZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUob3V0cHV0X2ZpbGVf
bmFtZSkKKyAgICBvcy51dGltZShvdXRwdXRfZGlyX25hbWUsIE5vbmUpCisKK2lmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6CisgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2Nocm9taXVtL0J1aWxkL2NvbmNhdGVuYXRlX2pzX2ZpbGVzLnB5IGIvV2ViS2l0L2No
cm9taXVtL0J1aWxkL2NvbmNhdGVuYXRlX2pzX2ZpbGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjk1Mzk2NGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21p
dW0vQnVpbGQvY29uY2F0ZW5hdGVfanNfZmlsZXMucHkKQEAgLTAsMCArMSw4NyBAQAorIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCisjIENvcHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorCisjIFRoaXMgc2NyaXB0IGNvbmNhdGVuYXRlcyBpbiBwbGFjZSBKUyBm
aWxlcyBpbiB0aGUgb3JkZXIgc3BlY2lmaWVkCisjIHVzaW5nIDxzY3JpcHQ+IHRhZ3MgaW4gYSBn
aXZlbiAnb3JkZXIuaHRtbCcgZmlsZS4KKworZnJvbSBIVE1MUGFyc2VyIGltcG9ydCBIVE1MUGFy
c2VyCitmcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCBvcy5wYXRoCitpbXBv
cnQgc3lzCisKK2NsYXNzIE9yZGVyZWRKU0ZpbGVzRXh0cmFjdG9yKEhUTUxQYXJzZXIpOgorCisg
IGRlZiBfX2luaXRfXyhzZWxmLCBvcmRlcl9odG1sX25hbWUpOgorICAgIEhUTUxQYXJzZXIuX19p
bml0X18oc2VsZikKKyAgICBzZWxmLm9yZGVyZWRfanNfZmlsZXMgPSBbXQorICAgIG9yZGVyX2h0
bWwgPSBvcGVuKG9yZGVyX2h0bWxfbmFtZSwgJ3InKQorICAgIHNlbGYuZmVlZChvcmRlcl9odG1s
LnJlYWQoKSkKKworICBkZWYgaGFuZGxlX3N0YXJ0dGFnKHNlbGYsIHRhZywgYXR0cnMpOgorICAg
IGlmIHRhZyA9PSAnc2NyaXB0JzoKKyAgICAgIGF0dHJzX2RpY3QgPSBkaWN0KGF0dHJzKQorICAg
ICAgaWYgKCd0eXBlJyBpbiBhdHRyc19kaWN0IGFuZCBhdHRyc19kaWN0Wyd0eXBlJ10gPT0gJ3Rl
eHQvamF2YXNjcmlwdCcgYW5kCisgICAgICAgICAgJ3NyYycgaW4gYXR0cnNfZGljdCk6CisgICAg
ICAgIHNlbGYub3JkZXJlZF9qc19maWxlcy5hcHBlbmQoYXR0cnNfZGljdFsnc3JjJ10pCisKK2Ns
YXNzIFBhdGhFeHBhbmRlcjoKKworICBkZWYgX19pbml0X18oc2VsZiwgcGF0aHMpOgorICAgIHNl
bGYucGF0aHMgPSBwYXRoczsKKworICBkZWYgZXhwYW5kKHNlbGYsIGZpbGVuYW1lKToKKyAgICBs
YXN0X3BhdGggPSBOb25lCisgICAgZXhwYW5kZWRfbmFtZSA9IE5vbmUKKyAgICBmb3IgcGF0aCBp
biBzZWxmLnBhdGhzOgorICAgICAgZm5hbWUgPSAiJXMvJXMiICUgKHBhdGgsIGZpbGVuYW1lKQor
ICAgICAgaWYgKG9zLmFjY2VzcyhmbmFtZSwgb3MuRl9PSykpOgorICAgICAgICBpZiAobGFzdF9w
YXRoICE9IE5vbmUpOgorICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQW1iaWd1b3VzIGZpbGUg
JXM6IGZvdW5kIGluICVzIGFuZCAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZmls
ZW5hbWUsIGxhc3RfcGF0aCwgcGF0aCkpCisgICAgICAgIGV4cGFuZGVkX25hbWUgPSBmbmFtZQor
ICAgICAgICBsYXN0X3BhdGggPSBwYXRoCisgICAgcmV0dXJuIGV4cGFuZGVkX25hbWUKKworZGVm
IG1haW4oYXJndik6CisKKyAgaWYgbGVuKGFyZ3YpIDwgMzoKKyAgICBwcmludCgndXNhZ2U6ICVz
IG9yZGVyLmh0bWwgaW5wdXRfc291cmNlX2Rpcl8xIGlucHV0X3NvdXJjZV9kaXJfMiAuLi4gJwor
ICAgICAgICAgICdvdXRwdXRfZmlsZScgJSBhcmd2WzBdKQorICAgIHJldHVybiAxCisKKyAgb3V0
cHV0X2ZpbGVfbmFtZSA9IGFyZ3YucG9wKCkKKyAgaW5wdXRfb3JkZXJfZmlsZV9uYW1lID0gYXJn
dlsxXQorICBleHRyYWN0b3IgPSBPcmRlcmVkSlNGaWxlc0V4dHJhY3RvcihpbnB1dF9vcmRlcl9m
aWxlX25hbWUpCisgIGV4dHJhY3Rvci5vcmRlcmVkX2pzX2ZpbGVzLmFwcGVuZCgnRGV2VG9vbHMu
anMnKQorICBleHRyYWN0b3Iub3JkZXJlZF9qc19maWxlcy5hcHBlbmQoJ1Rlc3RzLmpzJykKKwor
ICBleHBhbmRlciA9IFBhdGhFeHBhbmRlcihhcmd2WzI6XSkKKyAgb3V0cHV0ID0gU3RyaW5nSU8o
KQorCisgIGZvciBpbnB1dF9maWxlX25hbWUgaW4gZXh0cmFjdG9yLm9yZGVyZWRfanNfZmlsZXM6
CisgICAgZnVsbF9wYXRoID0gZXhwYW5kZXIuZXhwYW5kKGlucHV0X2ZpbGVfbmFtZSkKKyAgICBp
ZiAoZnVsbF9wYXRoIGlzIE5vbmUpOgorICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGaWxlICVzIHJl
ZmVyZW5jZWQgaW4gJXMgbm90IGZvdW5kIG9uIGFueSBzb3VyY2UgcGF0aHMsICcKKyAgICAgICAg
ICAgICAgICAgICAgICAnY2hlY2sgc291cmNlIHRyZWUgZm9yIGNvbnNpc3RlbmN5JyAlCisgICAg
ICAgICAgICAgICAgICAgICAgKGlucHV0X2ZpbGVfbmFtZSwgaW5wdXRfb3JkZXJfZmlsZV9uYW1l
KSkKKyAgICBvdXRwdXQud3JpdGUoJy8qICVzICovXG5cbicgJSBpbnB1dF9maWxlX25hbWUpCisg
ICAgaW5wdXRfZmlsZSA9IG9wZW4oZnVsbF9wYXRoLCAncicpCisgICAgb3V0cHV0LndyaXRlKGlu
cHV0X2ZpbGUucmVhZCgpKQorICAgIG91dHB1dC53cml0ZSgnXG4nKQorICAgIGlucHV0X2ZpbGUu
Y2xvc2UoKQorCisgIG91dHB1dF9maWxlID0gb3BlbihvdXRwdXRfZmlsZV9uYW1lLCAndycpCisg
IG91dHB1dF9maWxlLndyaXRlKG91dHB1dC5nZXR2YWx1ZSgpKQorICBvdXRwdXRfZmlsZS5jbG9z
ZSgpCisgIG91dHB1dC5jbG9zZSgpCisKKyAgIyBUb3VjaCBvdXRwdXQgZmlsZSBkaXJlY3Rvcnkg
dG8gbWFrZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5CisgICMgbW9kaWZpZWQgcmVzb3VyY2Ug
ZmlsZXMuCisgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBvdXRwdXRfZGlyX25h
bWUgPSBvcy5wYXRoLmRpcm5hbWUob3V0cHV0X2ZpbGVfbmFtZSkKKyAgICBvcy51dGltZShvdXRw
dXRfZGlyX25hbWUsIE5vbmUpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgIHN5cy5l
eGl0KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0J1aWxkL2dl
bmVyYXRlX2RldnRvb2xzX2h0bWwucHkgYi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvZ2VuZXJhdGVf
ZGV2dG9vbHNfaHRtbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjEw
YTdjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL0J1aWxkL2dlbmVyYXRlX2Rl
dnRvb2xzX2h0bWwucHkKQEAgLTAsMCArMSw2MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisj
IENvcHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitp
bXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworCitkZWYgR2VuZXJhdGVJbmNsdWRlVGFnKHJlc291
cmNlX3BhdGgpOgorICAoZGlyX25hbWUsIGZpbGVfbmFtZSkgPSBvcy5wYXRoLnNwbGl0KHJlc291
cmNlX3BhdGgpCisgIGlmIChmaWxlX25hbWUuZW5kc3dpdGgoJy5qcycpKToKKyAgICByZXR1cm4g
JyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIlcyI+PC9zY3JpcHQ+XG4n
ICUgZmlsZV9uYW1lCisgIGVsaWYgKGZpbGVfbmFtZS5lbmRzd2l0aCgnLmNzcycpKToKKyAgICBy
ZXR1cm4gJyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIl
cyI+XG4nICUgZmlsZV9uYW1lCisgIGVsc2U6CisgICAgcmV0dXJuIHJlc291cmNlX3BhdGggI2Fz
c2VydCByZXNvdXJjZV9wYXRoCisKKworZGVmIG1haW4oYXJndik6CisKKyAgaWYgbGVuKGFyZ3Yp
IDwgNToKKyAgICBwcmludCgndXNhZ2U6ICVzIGlnbm9yZWQgaW5zcGVjdG9yX2h0bWwgZGV2dG9v
bHNfaHRtbCBkZWJ1ZycKKyAgICAgICAgICAnIGNzc19hbmRfanNfZmlsZXNfbGlzdCcgJSBhcmd2
WzBdKQorICAgIHJldHVybiAxCisKKyAgIyBUaGUgZmlyc3QgYXJndW1lbnQgaXMgaWdub3JlZC4g
V2UgcHV0ICd3ZWJraXQuZ3lwJyBpbiB0aGUgaW5wdXRzIGxpc3QKKyAgIyBmb3IgdGhpcyBzY3Jp
cHQsIHNvIGV2ZXJ5IHRpbWUgdGhlIGxpc3Qgb2Ygc2NyaXB0IGdldHMgY2hhbmdlZCwgb3VyIGh0
bWwKKyAgIyBmaWxlIGlzIHJlYnVpbHQuCisgIGluc3BlY3Rvcl9odG1sX25hbWUgPSBhcmd2WzJd
CisgIGRldnRvb2xzX2h0bWxfbmFtZSA9IGFyZ3ZbM10KKyAgZGVidWcgPSBhcmd2WzRdICE9ICcw
JworICBpbnNwZWN0b3JfaHRtbCA9IG9wZW4oaW5zcGVjdG9yX2h0bWxfbmFtZSwgJ3InKQorICBk
ZXZ0b29sc19odG1sID0gb3BlbihkZXZ0b29sc19odG1sX25hbWUsICd3JykKKworICBmb3IgbGlu
ZSBpbiBpbnNwZWN0b3JfaHRtbDoKKyAgICBpZiBub3QgZGVidWcgYW5kICc8c2NyaXB0ICcgaW4g
bGluZToKKyAgICAgIGNvbnRpbnVlCisgICAgaWYgbm90IGRlYnVnIGFuZCAnPGxpbmsgJyBpbiBs
aW5lOgorICAgICAgY29udGludWUKKyAgICBpZiAnPC9oZWFkPicgaW4gbGluZToKKyAgICAgIGlm
IGRlYnVnOgorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gYXJndls1Ol06CisgICAgICAgICAgZGV2
dG9vbHNfaHRtbC53cml0ZShHZW5lcmF0ZUluY2x1ZGVUYWcocmVzb3VyY2UpKQorICAgICAgICBk
ZXZ0b29sc19odG1sLndyaXRlKEdlbmVyYXRlSW5jbHVkZVRhZygiZGV2VG9vbHMuY3NzIikpCisg
ICAgICAgIGRldnRvb2xzX2h0bWwud3JpdGUoR2VuZXJhdGVJbmNsdWRlVGFnKCJEZXZUb29scy5q
cyIpKQorICAgICAgICBkZXZ0b29sc19odG1sLndyaXRlKEdlbmVyYXRlSW5jbHVkZVRhZygiVGVz
dHMuanMiKSkKKyAgICAgIGVsc2U6CisgICAgICAgIGRldnRvb2xzX2h0bWwud3JpdGUoR2VuZXJh
dGVJbmNsdWRlVGFnKCJkZXZUb29scy5jc3MiKSkKKyAgICAgICAgZGV2dG9vbHNfaHRtbC53cml0
ZShHZW5lcmF0ZUluY2x1ZGVUYWcoIkRldlRvb2xzLmpzIikpCisgICAgZGV2dG9vbHNfaHRtbC53
cml0ZShsaW5lKQorCisgIGRldnRvb2xzX2h0bWwuY2xvc2UoKQorICBpbnNwZWN0b3JfaHRtbC5j
bG9zZSgpCisKKyAgIyBUb3VjaCBvdXRwdXQgZmlsZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHRo
YXQgWGNvZGUgd2lsbCBjb3B5CisgICMgbW9kaWZpZWQgcmVzb3VyY2UgZmlsZXMuCisgIGlmIHN5
cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBvdXRwdXRfZGlyX25hbWUgPSBvcy5wYXRoLmRp
cm5hbWUoZGV2dG9vbHNfaHRtbF9uYW1lKQorICAgIG9zLnV0aW1lKG91dHB1dF9kaXJfbmFtZSwg
Tm9uZSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgc3lzLmV4aXQobWFpbihzeXMu
YXJndikpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCAyNDI2MjBiLi5hNzRhYjJhIDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMC0xMS0xNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaHJvbWUgRGV2VG9vbHM6IGNvbmNhdGVuYXRlIENTUyBmaWxlcywgZG8gbm90IGxpbmsKKyAg
ICAgICAgbWlzc2luZyBKUyBmaWxlcyBpbiByZWxlYXNlIG1vZGUuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTU4NgorCisgICAgICAgICogQnVpbGQv
Y29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBCdWlsZC9jb25jYXRl
bmF0ZV9qc19maWxlcy5weTogQWRkZWQuCisgICAgICAgICogQnVpbGQvZ2VuZXJhdGVfZGV2dG9v
bHNfaHRtbC5weTogQWRkZWQuCisgICAgICAgICogV2ViS2l0Lmd5cDoKKwogMjAxMC0xMS0xNCAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAg
Yi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA0ZGNjNjFhLi5lMmIyYzQ5IDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cApAQCAtNjcxLDcgKzY3MSw4IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAgICAgICAgICAgICAgWydkZWJ1Z19kZXZ0b29scz09MCcs
IHsKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsnY29uY2F0ZW5hdGVkX2Rl
dnRvb2xzX2pzJ10sCisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ2NvbmNh
dGVuYXRlZF9kZXZ0b29sc19qcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2NvbmNhdGVuYXRlZF9kZXZ0b29sc19jc3MnXSwKICAgICAgICAgICAgICAgICB9XSwKICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29waWVzJzogWwpAQCAtNjg0LDcgKzY4NSw3IEBA
CiAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25z
JzogWwogICAgICAgICAgICAgICAgICAgICAgICAgWydkZWJ1Z19kZXZ0b29scz09MCcsIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXMvJzogW1snZXhjbHVkZScsICdcXC5qcyQn
XV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVzLyc6IFtbJ2V4Y2x1ZGUnLCAn
XFwuKGpzfGNzc3xodG1sKSQnXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAg
ICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICB9LApAQCAtNzA0LDEzICs3MDUsMTMg
QEAKICAgICAgICAgICAgICdhY3Rpb25zJzogW3sKICAgICAgICAgICAgICAgICAnYWN0aW9uX25h
bWUnOiAnZGV2dG9vbHNfaHRtbCcsCiAgICAgICAgICAgICAgICAgJ2lucHV0cyc6IFsKLSAgICAg
ICAgICAgICAgICAgICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1aWxkL2dlbmVyYXRl
X2RldnRvb2xzX2h0bWwucHknLAorICAgICAgICAgICAgICAgICAgICAnQnVpbGQvZ2VuZXJhdGVf
ZGV2dG9vbHNfaHRtbC5weScsCiAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlzc3VlIDI5Njk1
OiBXZWJLaXQuZ3lwaSBpcyBhIHNvdXJjZSBmaWxlIGZvciBkZXZ0b29scy5odG1sLgogICAgICAg
ICAgICAgICAgICAgICAnV2ViS2l0Lmd5cGknLAogICAgICAgICAgICAgICAgICAgICAnLi4vLi4v
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sJywKICAgICAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgICAgICdvdXRwdXRzJzogWyc8KFBST0RVQ1RfRElSKS9yZXNv
dXJjZXMvaW5zcGVjdG9yL2RldnRvb2xzLmh0bWwnXSwKLSAgICAgICAgICAgICAgICAnYWN0aW9u
JzogWydweXRob24nLCAnPEAoX2lucHV0cyknLCAnPEAoX291dHB1dHMpJywgJzxAKGRldnRvb2xz
X2ZpbGVzKSddLAorICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhvbicsICc8QChfaW5w
dXRzKScsICc8QChfb3V0cHV0cyknLCAnPEAoZGVidWdfZGV2dG9vbHMpJywgJzxAKGRldnRvb2xz
X2ZpbGVzKSddLAogICAgICAgICAgICAgfV0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTcy
MywyNiArNzI0LDUxIEBACiAgICAgICAgICAgICAnc291cmNlcyc6IFsnPChQUk9EVUNUX0RJUikv
cmVzb3VyY2VzL2luc3BlY3Rvci9EZXZUb29scy5qcyddLAogICAgICAgICAgICAgJ2FjdGlvbnMn
OiBbewogICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdjb25jYXRlbmF0ZV9kZXZ0b29s
c19qcycsCi0gICAgICAgICAgICAgICAgJ3NjcmlwdF9uYW1lJzogJzwoY2hyb21pdW1fc3JjX2Rp
cikvd2Via2l0L2J1aWxkL2NvbmNhdGVuYXRlX2pzX2ZpbGVzLnB5JywKLSAgICAgICAgICAgICAg
ICAnaW5wdXRfcGFnZSc6ICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVjdG9yL2RldnRv
b2xzLmh0bWwnLAorICAgICAgICAgICAgICAgICdzY3JpcHRfbmFtZSc6ICdCdWlsZC9jb25jYXRl
bmF0ZV9qc19maWxlcy5weScsCisgICAgICAgICAgICAgICAgJ2lucHV0X3BhZ2UnOiAnLi4vLi4v
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sJywKICAgICAgICAgICAg
ICAgICAnaW5wdXRzJzogWwogICAgICAgICAgICAgICAgICAgICAnPEAoX3NjcmlwdF9uYW1lKScs
CiAgICAgICAgICAgICAgICAgICAgICc8QChfaW5wdXRfcGFnZSknLAogICAgICAgICAgICAgICAg
ICAgICAnPEAod2ViaW5zcGVjdG9yX2ZpbGVzKScsCiAgICAgICAgICAgICAgICAgICAgICc8QChk
ZXZ0b29sc19maWxlcyknLAotICAgICAgICAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJ
QVRFX0RJUikvd2ViY29yZS9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcycsCisgICAgICAgICAgICAg
ICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL0luc3BlY3RvckJhY2tl
bmRTdHViLmpzJwogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgJ3NlYXJjaF9w
YXRoJzogWwogICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kJywKICAgICAgICAgICAgICAgICAgICAgJ3NyYy9qcycsCiAgICAgICAgICAgICAgICAg
ICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlJywKLSAgICAgICAgICAgICAg
ICAgICAgJzwoY2hyb21pdW1fc3JjX2RpcikvdjgvdG9vbHMnLAogICAgICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAgICAgJ291dHB1dHMnOiBbJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9p
bnNwZWN0b3IvRGV2VG9vbHMuanMnXSwKICAgICAgICAgICAgICAgICAnYWN0aW9uJzogWydweXRo
b24nLCAnPEAoX3NjcmlwdF9uYW1lKScsICc8QChfaW5wdXRfcGFnZSknLCAnPEAoX3NlYXJjaF9w
YXRoKScsICc8QChfb3V0cHV0cyknXSwKICAgICAgICAgICAgIH1dLAogICAgICAgICB9LAogICAg
ICAgICB7CisgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnY29uY2F0ZW5hdGVkX2RldnRvb2xz
X2NzcycsCisgICAgICAgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICAgICAgICdkZXBlbmRl
bmNpZXMnOiBbCisgICAgICAgICAgICAgICAgJ2RldnRvb2xzX2h0bWwnLAorICAgICAgICAgICAg
ICAgICcuLi8uLi9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOmluc3BlY3Rvcl9wcm90
b2NvbF9zb3VyY2VzJworICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdzb3VyY2VzJzogWyc8
KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVjdG9yL2RldlRvb2xzLmNzcyddLAorICAgICAg
ICAgICAgJ2FjdGlvbnMnOiBbeworICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdjb25j
YXRlbmF0ZV9kZXZ0b29sc19jc3MnLAorICAgICAgICAgICAgICAgICdzY3JpcHRfbmFtZSc6ICdC
dWlsZC9jb25jYXRlbmF0ZV9jc3NfZmlsZXMucHknLAorICAgICAgICAgICAgICAgICdpbnB1dF9w
YWdlJzogJy4uLy4uL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCcs
CisgICAgICAgICAgICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICAgICAgICAgJzxAKF9z
Y3JpcHRfbmFtZSknLAorICAgICAgICAgICAgICAgICAgICAnPEAoX2lucHV0X3BhZ2UpJywKKyAg
ICAgICAgICAgICAgICAgICAgJzxAKHdlYmluc3BlY3Rvcl9maWxlcyknLAorICAgICAgICAgICAg
ICAgICAgICAnPEAoZGV2dG9vbHNfZmlsZXMpJworICAgICAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAgICAgJ3NlYXJjaF9wYXRoJzogWworICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kJywKKyAgICAgICAgICAgICAgICAgICAgJ3NyYy9qcycs
CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAnb3V0cHV0cyc6IFsnPChQUk9E
VUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9kZXZUb29scy5jc3MnXSwKKyAgICAgICAgICAg
ICAgICAnYWN0aW9uJzogWydweXRob24nLCAnPEAoX3NjcmlwdF9uYW1lKScsICc8QChfaW5wdXRf
cGFnZSknLCAnPEAoX3NlYXJjaF9wYXRoKScsICc8QChfb3V0cHV0cyknXSwKKyAgICAgICAgICAg
IH1dLAorICAgICAgICB9LAorICAgICAgICB7CiAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAn
d2Via2l0X3VuaXRfdGVzdHMnLAogICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCiAg
ICAgICAgICAgICAnbXN2c19ndWlkJzogJzdDRUZFODAwLTg0MDMtNDE4QS1BRDZBLTJENTJDNkZD
M0VBRCcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73984</attachid>
            <date>2010-11-16 05:22:14 -0800</date>
            <delta_ts>2010-11-16 05:30:10 -0800</delta_ts>
            <desc>[PATCH] Same with style fixes</desc>
            <filename>concat</filename>
            <type>text/plain</type>
            <size>13903</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9jc3NfZmlsZXMu
cHkgYi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MGVjOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5CkBAIC0wLDAg
KzEsODYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIHNjcmlwdCBjb25jYXRlbmF0
ZXMgaW4gcGxhY2UgSlMgZmlsZXMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZAorIyB1c2luZyA8c2Ny
aXB0PiB0YWdzIGluIGEgZ2l2ZW4gJ29yZGVyLmh0bWwnIGZpbGUuCisKK2Zyb20gSFRNTFBhcnNl
ciBpbXBvcnQgSFRNTFBhcnNlcgorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IHN5cworCitjbGFzcyBPcmRlcmVkQ1NTRmlsZXNFeHRyYWN0b3Io
SFRNTFBhcnNlcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3JkZXJfaHRtbF9uYW1lKToK
KyAgICAgICAgSFRNTFBhcnNlci5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLm9yZGVyZWRf
Y3NzX2ZpbGVzID0gW10KKyAgICAgICAgb3JkZXJfaHRtbCA9IG9wZW4ob3JkZXJfaHRtbF9uYW1l
LCAncicpCisgICAgICAgIHNlbGYuZmVlZChvcmRlcl9odG1sLnJlYWQoKSkKKyAgCisgICAgZGVm
IGhhbmRsZV9zdGFydHRhZyhzZWxmLCB0YWcsIGF0dHJzKToKKyAgICAgICAgaWYgdGFnID09ICds
aW5rJzoKKyAgICAgICAgICAgIGF0dHJzX2RpY3QgPSBkaWN0KGF0dHJzKQorICAgICAgICAgICAg
aWYgKCd0eXBlJyBpbiBhdHRyc19kaWN0IGFuZCBhdHRyc19kaWN0Wyd0eXBlJ10gPT0gJ3RleHQv
Y3NzJyBhbmQKKyAgICAgICAgICAgICAgICAnaHJlZicgaW4gYXR0cnNfZGljdCk6CisgICAgICAg
ICAgICAgICAgc2VsZi5vcmRlcmVkX2Nzc19maWxlcy5hcHBlbmQoYXR0cnNfZGljdFsnaHJlZidd
KQorCitjbGFzcyBQYXRoRXhwYW5kZXI6CisKKyAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGhzKToK
KyAgICAgIHNlbGYucGF0aHMgPSBwYXRoczsKKworICBkZWYgZXhwYW5kKHNlbGYsIGZpbGVuYW1l
KToKKyAgICAgIGxhc3RfcGF0aCA9IE5vbmUKKyAgICAgIGV4cGFuZGVkX25hbWUgPSBOb25lCisg
ICAgICBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzOgorICAgICAgICAgIGZuYW1lID0gIiVzLyVzIiAl
IChwYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgICBpZiAob3MuYWNjZXNzKGZuYW1lLCBvcy5GX09L
KSk6CisgICAgICAgICAgICAgIGlmIChsYXN0X3BhdGggIT0gTm9uZSk6CisgICAgICAgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ0FtYmlndW91cyBmaWxlICVzOiBmb3VuZCBpbiAlcyBhbmQg
JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZW5hbWUsIGxhc3Rf
cGF0aCwgcGF0aCkpCisgICAgICAgICAgICAgIGV4cGFuZGVkX25hbWUgPSBmbmFtZQorICAgICAg
ICAgICAgICBsYXN0X3BhdGggPSBwYXRoCisgICAgICByZXR1cm4gZXhwYW5kZWRfbmFtZQorCitk
ZWYgbWFpbihhcmd2KToKKworICAgIGlmIGxlbihhcmd2KSA8IDM6CisgICAgICAgIHByaW50KCd1
c2FnZTogJXMgb3JkZXIuaHRtbCBpbnB1dF9zb3VyY2VfZGlyXzEgaW5wdXRfc291cmNlX2Rpcl8y
IC4uLiAnCisgICAgICAgICAgICAgICdvdXRwdXRfZmlsZScgJSBhcmd2WzBdKQorICAgICAgICBy
ZXR1cm4gMQorICAKKyAgICBvdXRwdXRfZmlsZV9uYW1lID0gYXJndi5wb3AoKQorICAgIGlucHV0
X29yZGVyX2ZpbGVfbmFtZSA9IGFyZ3ZbMV0KKyAgICBleHRyYWN0b3IgPSBPcmRlcmVkQ1NTRmls
ZXNFeHRyYWN0b3IoaW5wdXRfb3JkZXJfZmlsZV9uYW1lKQorICAgIGV4dHJhY3Rvci5vcmRlcmVk
X2Nzc19maWxlcy5hcHBlbmQoJ2RldlRvb2xzLmNzcycpCisgIAorICAgIGV4cGFuZGVyID0gUGF0
aEV4cGFuZGVyKGFyZ3ZbMjpdKQorICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgCisgICAgZm9y
IGlucHV0X2ZpbGVfbmFtZSBpbiBleHRyYWN0b3Iub3JkZXJlZF9jc3NfZmlsZXM6CisgICAgICAg
IGZ1bGxfcGF0aCA9IGV4cGFuZGVyLmV4cGFuZChpbnB1dF9maWxlX25hbWUpCisgICAgICAgIGlm
IChmdWxsX3BhdGggaXMgTm9uZSk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ZpbGUg
JXMgcmVmZXJlbmNlZCBpbiAlcyBub3QgZm91bmQgb24gYW55IHNvdXJjZSBwYXRocywgJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVjayBzb3VyY2UgdHJlZSBmb3IgY29uc2lzdGVu
Y3knICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXRfZmlsZV9uYW1lLCBpbnB1
dF9vcmRlcl9maWxlX25hbWUpKQorICAgICAgICBvdXRwdXQud3JpdGUoJy8qICVzICovXG5cbicg
JSBpbnB1dF9maWxlX25hbWUpCisgICAgICAgIGlucHV0X2ZpbGUgPSBvcGVuKGZ1bGxfcGF0aCwg
J3InKQorICAgICAgICBvdXRwdXQud3JpdGUoaW5wdXRfZmlsZS5yZWFkKCkpCisgICAgICAgIG91
dHB1dC53cml0ZSgnXG4nKQorICAgICAgICBpbnB1dF9maWxlLmNsb3NlKCkKKyAgCisgICAgb3V0
cHV0X2ZpbGUgPSBvcGVuKG91dHB1dF9maWxlX25hbWUsICd3JykKKyAgICBvdXRwdXRfZmlsZS53
cml0ZShvdXRwdXQuZ2V0dmFsdWUoKSkKKyAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCisgICAgb3V0
cHV0LmNsb3NlKCkKKyAgCisgICAgIyBUb3VjaCBvdXRwdXQgZmlsZSBkaXJlY3RvcnkgdG8gbWFr
ZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5CisgICAgIyBtb2RpZmllZCByZXNvdXJjZSBmaWxl
cy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIG91dHB1dF9kaXJf
bmFtZSA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRfZmlsZV9uYW1lKQorICAgICAgICBvcy51dGlt
ZShvdXRwdXRfZGlyX25hbWUsIE5vbmUpCisgIAoraWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9CdWlsZC9jb25jYXRlbmF0ZV9qc19maWxlcy5weSBiL1dlYktpdC9jaHJvbWl1bS9CdWlsZC9j
b25jYXRlbmF0ZV9qc19maWxlcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li40ZTk1NWZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL0J1aWxkL2NvbmNh
dGVuYXRlX2pzX2ZpbGVzLnB5CkBAIC0wLDAgKzEsODYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
KworIyBUaGlzIHNjcmlwdCBjb25jYXRlbmF0ZXMgaW4gcGxhY2UgSlMgZmlsZXMgaW4gdGhlIG9y
ZGVyIHNwZWNpZmllZAorIyB1c2luZyA8c2NyaXB0PiB0YWdzIGluIGEgZ2l2ZW4gJ29yZGVyLmh0
bWwnIGZpbGUuCisKK2Zyb20gSFRNTFBhcnNlciBpbXBvcnQgSFRNTFBhcnNlcgorZnJvbSBjU3Ry
aW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworCitjbGFz
cyBPcmRlcmVkSlNGaWxlc0V4dHJhY3RvcihIVE1MUGFyc2VyKToKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBvcmRlcl9odG1sX25hbWUpOgorICAgICAgICBIVE1MUGFyc2VyLl9faW5pdF9fKHNl
bGYpCisgICAgICAgIHNlbGYub3JkZXJlZF9qc19maWxlcyA9IFtdCisgICAgICAgIG9yZGVyX2h0
bWwgPSBvcGVuKG9yZGVyX2h0bWxfbmFtZSwgJ3InKQorICAgICAgICBzZWxmLmZlZWQob3JkZXJf
aHRtbC5yZWFkKCkpCisKKyAgICBkZWYgaGFuZGxlX3N0YXJ0dGFnKHNlbGYsIHRhZywgYXR0cnMp
OgorICAgICAgICBpZiB0YWcgPT0gJ3NjcmlwdCc6CisgICAgICAgICAgICBhdHRyc19kaWN0ID0g
ZGljdChhdHRycykKKyAgICAgICAgICAgIGlmICgndHlwZScgaW4gYXR0cnNfZGljdCBhbmQgYXR0
cnNfZGljdFsndHlwZSddID09ICd0ZXh0L2phdmFzY3JpcHQnIGFuZCAnc3JjJyBpbiBhdHRyc19k
aWN0KToKKyAgICAgICAgICAgICAgICBzZWxmLm9yZGVyZWRfanNfZmlsZXMuYXBwZW5kKGF0dHJz
X2RpY3RbJ3NyYyddKQorCitjbGFzcyBQYXRoRXhwYW5kZXI6CisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgcGF0aHMpOgorICAgICAgICBzZWxmLnBhdGhzID0gcGF0aHM7CisKKyAgICBkZWYgZXhw
YW5kKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgbGFzdF9wYXRoID0gTm9uZQorICAgICAgICBl
eHBhbmRlZF9uYW1lID0gTm9uZQorICAgICAgICBmb3IgcGF0aCBpbiBzZWxmLnBhdGhzOgorICAg
ICAgICAgICAgZm5hbWUgPSAiJXMvJXMiICUgKHBhdGgsIGZpbGVuYW1lKQorICAgICAgICAgICAg
aWYgKG9zLmFjY2VzcyhmbmFtZSwgb3MuRl9PSykpOgorICAgICAgICAgICAgICAgIGlmIChsYXN0
X3BhdGggIT0gTm9uZSk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQW1i
aWd1b3VzIGZpbGUgJXM6IGZvdW5kIGluICVzIGFuZCAlcycgJQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLCBsYXN0X3BhdGgsIHBhdGgpKQorICAgICAgICAg
ICAgICAgIGV4cGFuZGVkX25hbWUgPSBmbmFtZQorICAgICAgICAgICAgICAgIGxhc3RfcGF0aCA9
IHBhdGgKKyAgICAgICAgcmV0dXJuIGV4cGFuZGVkX25hbWUKKworZGVmIG1haW4oYXJndik6CisK
KyAgICBpZiBsZW4oYXJndikgPCAzOgorICAgICAgICBwcmludCgndXNhZ2U6ICVzIG9yZGVyLmh0
bWwgaW5wdXRfc291cmNlX2Rpcl8xIGlucHV0X3NvdXJjZV9kaXJfMiAuLi4gJworICAgICAgICAg
ICAgICAnb3V0cHV0X2ZpbGUnICUgYXJndlswXSkKKyAgICAgICAgcmV0dXJuIDEKKworICAgIG91
dHB1dF9maWxlX25hbWUgPSBhcmd2LnBvcCgpCisgICAgaW5wdXRfb3JkZXJfZmlsZV9uYW1lID0g
YXJndlsxXQorICAgIGV4dHJhY3RvciA9IE9yZGVyZWRKU0ZpbGVzRXh0cmFjdG9yKGlucHV0X29y
ZGVyX2ZpbGVfbmFtZSkKKyAgICBleHRyYWN0b3Iub3JkZXJlZF9qc19maWxlcy5hcHBlbmQoJ0Rl
dlRvb2xzLmpzJykKKyAgICBleHRyYWN0b3Iub3JkZXJlZF9qc19maWxlcy5hcHBlbmQoJ1Rlc3Rz
LmpzJykKKworICAgIGV4cGFuZGVyID0gUGF0aEV4cGFuZGVyKGFyZ3ZbMjpdKQorICAgIG91dHB1
dCA9IFN0cmluZ0lPKCkKKworICAgIGZvciBpbnB1dF9maWxlX25hbWUgaW4gZXh0cmFjdG9yLm9y
ZGVyZWRfanNfZmlsZXM6CisgICAgICAgIGZ1bGxfcGF0aCA9IGV4cGFuZGVyLmV4cGFuZChpbnB1
dF9maWxlX25hbWUpCisgICAgICAgIGlmIChmdWxsX3BhdGggaXMgTm9uZSk6CisgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0ZpbGUgJXMgcmVmZXJlbmNlZCBpbiAlcyBub3QgZm91bmQgb24g
YW55IHNvdXJjZSBwYXRocywgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGVjayBz
b3VyY2UgdHJlZSBmb3IgY29uc2lzdGVuY3knICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaW5wdXRfZmlsZV9uYW1lLCBpbnB1dF9vcmRlcl9maWxlX25hbWUpKQorICAgICAgICBvdXRw
dXQud3JpdGUoJy8qICVzICovXG5cbicgJSBpbnB1dF9maWxlX25hbWUpCisgICAgICAgIGlucHV0
X2ZpbGUgPSBvcGVuKGZ1bGxfcGF0aCwgJ3InKQorICAgICAgICBvdXRwdXQud3JpdGUoaW5wdXRf
ZmlsZS5yZWFkKCkpCisgICAgICAgIG91dHB1dC53cml0ZSgnXG4nKQorICAgICAgICBpbnB1dF9m
aWxlLmNsb3NlKCkKKyAgCisgICAgb3V0cHV0X2ZpbGUgPSBvcGVuKG91dHB1dF9maWxlX25hbWUs
ICd3JykKKyAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRwdXQuZ2V0dmFsdWUoKSkKKyAgICBvdXRw
dXRfZmlsZS5jbG9zZSgpCisgICAgb3V0cHV0LmNsb3NlKCkKKyAgCisgICAgIyBUb3VjaCBvdXRw
dXQgZmlsZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5CisgICAg
IyBtb2RpZmllZCByZXNvdXJjZSBmaWxlcy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndp
bic6CisgICAgICAgIG91dHB1dF9kaXJfbmFtZSA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRfZmls
ZV9uYW1lKQorICAgICAgICBvcy51dGltZShvdXRwdXRfZGlyX25hbWUsIE5vbmUpCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQnVpbGQvZ2VuZXJhdGVfZGV2dG9vbHNfaHRtbC5weSBi
L1dlYktpdC9jaHJvbWl1bS9CdWlsZC9nZW5lcmF0ZV9kZXZ0b29sc19odG1sLnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOTY5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vQnVpbGQvZ2VuZXJhdGVfZGV2dG9vbHNfaHRtbC5weQpAQCAtMCwwICsx
LDU5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgQ29weXJpZ2h0IChjKSAyMDA5IFRoZSBD
aHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisj
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3lz
CisKK2RlZiBHZW5lcmF0ZUluY2x1ZGVUYWcocmVzb3VyY2VfcGF0aCk6CisgICAgKGRpcl9uYW1l
LCBmaWxlX25hbWUpID0gb3MucGF0aC5zcGxpdChyZXNvdXJjZV9wYXRoKQorICAgIGlmIChmaWxl
X25hbWUuZW5kc3dpdGgoJy5qcycpKToKKyAgICAgICAgcmV0dXJuICcgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJXMiPjwvc2NyaXB0PlxuJyAlIGZpbGVfbmFtZQorICAg
IGVsaWYgKGZpbGVfbmFtZS5lbmRzd2l0aCgnLmNzcycpKToKKyAgICAgICAgcmV0dXJuICcgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iJXMiPlxuJyAlIGZp
bGVfbmFtZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiByZXNvdXJjZV9wYXRoICNhc3NlcnQg
cmVzb3VyY2VfcGF0aAorCisKK2RlZiBtYWluKGFyZ3YpOgorCisgICAgaWYgbGVuKGFyZ3YpIDwg
NToKKyAgICAgICAgcHJpbnQoJ3VzYWdlOiAlcyBpZ25vcmVkIGluc3BlY3Rvcl9odG1sIGRldnRv
b2xzX2h0bWwgZGVidWcnCisgICAgICAgICAgICAgICcgY3NzX2FuZF9qc19maWxlc19saXN0JyAl
IGFyZ3ZbMF0pCisgICAgICAgIHJldHVybiAxCisKKyAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCBp
cyBpZ25vcmVkLiBXZSBwdXQgJ3dlYmtpdC5neXAnIGluIHRoZSBpbnB1dHMgbGlzdAorICAgICMg
Zm9yIHRoaXMgc2NyaXB0LCBzbyBldmVyeSB0aW1lIHRoZSBsaXN0IG9mIHNjcmlwdCBnZXRzIGNo
YW5nZWQsIG91ciBodG1sCisgICAgIyBmaWxlIGlzIHJlYnVpbHQuCisgICAgaW5zcGVjdG9yX2h0
bWxfbmFtZSA9IGFyZ3ZbMl0KKyAgICBkZXZ0b29sc19odG1sX25hbWUgPSBhcmd2WzNdCisgICAg
ZGVidWcgPSBhcmd2WzRdICE9ICcwJworICAgIGluc3BlY3Rvcl9odG1sID0gb3BlbihpbnNwZWN0
b3JfaHRtbF9uYW1lLCAncicpCisgICAgZGV2dG9vbHNfaHRtbCA9IG9wZW4oZGV2dG9vbHNfaHRt
bF9uYW1lLCAndycpCisKKyAgICBmb3IgbGluZSBpbiBpbnNwZWN0b3JfaHRtbDoKKyAgICAgICAg
aWYgbm90IGRlYnVnIGFuZCAnPHNjcmlwdCAnIGluIGxpbmU6CisgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICBpZiBub3QgZGVidWcgYW5kICc8bGluayAnIGluIGxpbmU6CisgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBpZiAnPC9oZWFkPicgaW4gbGluZToKKyAgICAgICAgICAgIGlm
IGRlYnVnOgorICAgICAgICAgICAgICAgIGZvciByZXNvdXJjZSBpbiBhcmd2WzU6XToKKyAgICAg
ICAgICAgICAgICAgICAgZGV2dG9vbHNfaHRtbC53cml0ZShHZW5lcmF0ZUluY2x1ZGVUYWcocmVz
b3VyY2UpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZXZ0b29sc19odG1s
LndyaXRlKEdlbmVyYXRlSW5jbHVkZVRhZygiZGV2VG9vbHMuY3NzIikpCisgICAgICAgICAgICAg
ICAgZGV2dG9vbHNfaHRtbC53cml0ZShHZW5lcmF0ZUluY2x1ZGVUYWcoIkRldlRvb2xzLmpzIikp
CisgICAgICAgIGRldnRvb2xzX2h0bWwud3JpdGUobGluZSkKKworICAgIGRldnRvb2xzX2h0bWwu
Y2xvc2UoKQorICAgIGluc3BlY3Rvcl9odG1sLmNsb3NlKCkKKworICAgICMgVG91Y2ggb3V0cHV0
IGZpbGUgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSB0aGF0IFhjb2RlIHdpbGwgY29weQorICAgICMg
bW9kaWZpZWQgcmVzb3VyY2UgZmlsZXMuCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4n
OgorICAgICAgICBvdXRwdXRfZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZGV2dG9vbHNfaHRt
bF9uYW1lKQorICAgICAgICBvcy51dGltZShvdXRwdXRfZGlyX25hbWUsIE5vbmUpCisKK2lmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CisgICAgc3lzLmV4aXQobWFpbihzeXMuYXJndikpCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwppbmRleCAyNDI2MjBiLi5hNzRhYjJhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAxMC0xMS0xNiAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaHJvbWUgRGV2
VG9vbHM6IGNvbmNhdGVuYXRlIENTUyBmaWxlcywgZG8gbm90IGxpbmsKKyAgICAgICAgbWlzc2lu
ZyBKUyBmaWxlcyBpbiByZWxlYXNlIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00OTU4NgorCisgICAgICAgICogQnVpbGQvY29uY2F0ZW5hdGVf
Y3NzX2ZpbGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBCdWlsZC9jb25jYXRlbmF0ZV9qc19maWxl
cy5weTogQWRkZWQuCisgICAgICAgICogQnVpbGQvZ2VuZXJhdGVfZGV2dG9vbHNfaHRtbC5weTog
QWRkZWQuCisgICAgICAgICogV2ViS2l0Lmd5cDoKKwogMjAxMC0xMS0xNCAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6
a292LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAppbmRleCA0ZGNjNjFhLi5lMmIyYzQ5IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApA
QCAtNjcxLDcgKzY3MSw4IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2NvbmRpdGlv
bnMnOiBbCiAgICAgICAgICAgICAgICAgWydkZWJ1Z19kZXZ0b29scz09MCcsIHsKLSAgICAgICAg
ICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsnY29uY2F0ZW5hdGVkX2RldnRvb2xzX2pzJ10s
CisgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbJ2NvbmNhdGVuYXRlZF9kZXZ0
b29sc19qcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVu
YXRlZF9kZXZ0b29sc19jc3MnXSwKICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAnY29waWVzJzogWwpAQCAtNjg0LDcgKzY4NSw3IEBACiAgICAgICAgICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwogICAgICAg
ICAgICAgICAgICAgICAgICAgWydkZWJ1Z19kZXZ0b29scz09MCcsIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZmlsZXMvJzogW1snZXhjbHVkZScsICdcXC5qcyQnXV0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVzLyc6IFtbJ2V4Y2x1ZGUnLCAnXFwuKGpzfGNzc3xo
dG1sKSQnXV0sCiAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKICAgICAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICB9LApAQCAtNzA0LDEzICs3MDUsMTMgQEAKICAgICAgICAg
ICAgICdhY3Rpb25zJzogW3sKICAgICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnZGV2dG9v
bHNfaHRtbCcsCiAgICAgICAgICAgICAgICAgJ2lucHV0cyc6IFsKLSAgICAgICAgICAgICAgICAg
ICAgJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1aWxkL2dlbmVyYXRlX2RldnRvb2xzX2h0
bWwucHknLAorICAgICAgICAgICAgICAgICAgICAnQnVpbGQvZ2VuZXJhdGVfZGV2dG9vbHNfaHRt
bC5weScsCiAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlzc3VlIDI5Njk1OiBXZWJLaXQuZ3lw
aSBpcyBhIHNvdXJjZSBmaWxlIGZvciBkZXZ0b29scy5odG1sLgogICAgICAgICAgICAgICAgICAg
ICAnV2ViS2l0Lmd5cGknLAogICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sJywKICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICdvdXRwdXRzJzogWyc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVj
dG9yL2RldnRvb2xzLmh0bWwnXSwKLSAgICAgICAgICAgICAgICAnYWN0aW9uJzogWydweXRob24n
LCAnPEAoX2lucHV0cyknLCAnPEAoX291dHB1dHMpJywgJzxAKGRldnRvb2xzX2ZpbGVzKSddLAor
ICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhvbicsICc8QChfaW5wdXRzKScsICc8QChf
b3V0cHV0cyknLCAnPEAoZGVidWdfZGV2dG9vbHMpJywgJzxAKGRldnRvb2xzX2ZpbGVzKSddLAog
ICAgICAgICAgICAgfV0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKQEAgLTcyMywyNiArNzI0LDUx
IEBACiAgICAgICAgICAgICAnc291cmNlcyc6IFsnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2lu
c3BlY3Rvci9EZXZUb29scy5qcyddLAogICAgICAgICAgICAgJ2FjdGlvbnMnOiBbewogICAgICAg
ICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdjb25jYXRlbmF0ZV9kZXZ0b29sc19qcycsCi0gICAg
ICAgICAgICAgICAgJ3NjcmlwdF9uYW1lJzogJzwoY2hyb21pdW1fc3JjX2Rpcikvd2Via2l0L2J1
aWxkL2NvbmNhdGVuYXRlX2pzX2ZpbGVzLnB5JywKLSAgICAgICAgICAgICAgICAnaW5wdXRfcGFn
ZSc6ICc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMvaW5zcGVjdG9yL2RldnRvb2xzLmh0bWwnLAor
ICAgICAgICAgICAgICAgICdzY3JpcHRfbmFtZSc6ICdCdWlsZC9jb25jYXRlbmF0ZV9qc19maWxl
cy5weScsCisgICAgICAgICAgICAgICAgJ2lucHV0X3BhZ2UnOiAnLi4vLi4vV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sJywKICAgICAgICAgICAgICAgICAnaW5wdXRz
JzogWwogICAgICAgICAgICAgICAgICAgICAnPEAoX3NjcmlwdF9uYW1lKScsCiAgICAgICAgICAg
ICAgICAgICAgICc8QChfaW5wdXRfcGFnZSknLAogICAgICAgICAgICAgICAgICAgICAnPEAod2Vi
aW5zcGVjdG9yX2ZpbGVzKScsCiAgICAgICAgICAgICAgICAgICAgICc8QChkZXZ0b29sc19maWxl
cyknLAotICAgICAgICAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Vi
Y29yZS9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcycsCisgICAgICAgICAgICAgICAgICAgICc8KFNI
QVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlL0luc3BlY3RvckJhY2tlbmRTdHViLmpzJwog
ICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgJ3NlYXJjaF9wYXRoJzogWwogICAg
ICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kJywKICAg
ICAgICAgICAgICAgICAgICAgJ3NyYy9qcycsCiAgICAgICAgICAgICAgICAgICAgICc8KFNIQVJF
RF9JTlRFUk1FRElBVEVfRElSKS93ZWJjb3JlJywKLSAgICAgICAgICAgICAgICAgICAgJzwoY2hy
b21pdW1fc3JjX2RpcikvdjgvdG9vbHMnLAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAg
ICAgICAgJ291dHB1dHMnOiBbJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9pbnNwZWN0b3IvRGV2
VG9vbHMuanMnXSwKICAgICAgICAgICAgICAgICAnYWN0aW9uJzogWydweXRob24nLCAnPEAoX3Nj
cmlwdF9uYW1lKScsICc8QChfaW5wdXRfcGFnZSknLCAnPEAoX3NlYXJjaF9wYXRoKScsICc8QChf
b3V0cHV0cyknXSwKICAgICAgICAgICAgIH1dLAogICAgICAgICB9LAogICAgICAgICB7CisgICAg
ICAgICAgICAndGFyZ2V0X25hbWUnOiAnY29uY2F0ZW5hdGVkX2RldnRvb2xzX2NzcycsCisgICAg
ICAgICAgICAndHlwZSc6ICdub25lJywKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbCisg
ICAgICAgICAgICAgICAgJ2RldnRvb2xzX2h0bWwnLAorICAgICAgICAgICAgICAgICcuLi8uLi9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOmluc3BlY3Rvcl9wcm90b2NvbF9zb3VyY2Vz
JworICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICdzb3VyY2VzJzogWyc8KFBST0RVQ1RfRElS
KS9yZXNvdXJjZXMvaW5zcGVjdG9yL2RldlRvb2xzLmNzcyddLAorICAgICAgICAgICAgJ2FjdGlv
bnMnOiBbeworICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdjb25jYXRlbmF0ZV9kZXZ0
b29sc19jc3MnLAorICAgICAgICAgICAgICAgICdzY3JpcHRfbmFtZSc6ICdCdWlsZC9jb25jYXRl
bmF0ZV9jc3NfZmlsZXMucHknLAorICAgICAgICAgICAgICAgICdpbnB1dF9wYWdlJzogJy4uLy4u
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbCcsCisgICAgICAgICAg
ICAgICAgJ2lucHV0cyc6IFsKKyAgICAgICAgICAgICAgICAgICAgJzxAKF9zY3JpcHRfbmFtZSkn
LAorICAgICAgICAgICAgICAgICAgICAnPEAoX2lucHV0X3BhZ2UpJywKKyAgICAgICAgICAgICAg
ICAgICAgJzxAKHdlYmluc3BlY3Rvcl9maWxlcyknLAorICAgICAgICAgICAgICAgICAgICAnPEAo
ZGV2dG9vbHNfZmlsZXMpJworICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgJ3Nl
YXJjaF9wYXRoJzogWworICAgICAgICAgICAgICAgICAgICAnLi4vLi4vV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kJywKKyAgICAgICAgICAgICAgICAgICAgJ3NyYy9qcycsCisgICAgICAgICAg
ICAgICAgXSwKKyAgICAgICAgICAgICAgICAnb3V0cHV0cyc6IFsnPChQUk9EVUNUX0RJUikvcmVz
b3VyY2VzL2luc3BlY3Rvci9kZXZUb29scy5jc3MnXSwKKyAgICAgICAgICAgICAgICAnYWN0aW9u
JzogWydweXRob24nLCAnPEAoX3NjcmlwdF9uYW1lKScsICc8QChfaW5wdXRfcGFnZSknLCAnPEAo
X3NlYXJjaF9wYXRoKScsICc8QChfb3V0cHV0cyknXSwKKyAgICAgICAgICAgIH1dLAorICAgICAg
ICB9LAorICAgICAgICB7CiAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnd2Via2l0X3VuaXRf
dGVzdHMnLAogICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCiAgICAgICAgICAgICAn
bXN2c19ndWlkJzogJzdDRUZFODAwLTg0MDMtNDE4QS1BRDZBLTJENTJDNkZDM0VBRCcsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73985</attachid>
            <date>2010-11-16 05:30:10 -0800</date>
            <delta_ts>2010-11-16 05:38:04 -0800</delta_ts>
            <desc>[PATCH] Same with style fixes for real.</desc>
            <filename>concat</filename>
            <type>text/plain</type>
            <size>13905</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9jc3NfZmlsZXMu
cHkgYi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYjY1MTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5CkBAIC0wLDAg
KzEsOTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIHNjcmlwdCBjb25jYXRlbmF0
ZXMgaW4gcGxhY2UgSlMgZmlsZXMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZAorIyB1c2luZyA8c2Ny
aXB0PiB0YWdzIGluIGEgZ2l2ZW4gJ29yZGVyLmh0bWwnIGZpbGUuCisKK2Zyb20gSFRNTFBhcnNl
ciBpbXBvcnQgSFRNTFBhcnNlcgorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IHN5cworCisKK2NsYXNzIE9yZGVyZWRDU1NGaWxlc0V4dHJhY3Rv
cihIVE1MUGFyc2VyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmRlcl9odG1sX25hbWUp
OgorICAgICAgICBIVE1MUGFyc2VyLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYub3JkZXJl
ZF9jc3NfZmlsZXMgPSBbXQorICAgICAgICBvcmRlcl9odG1sID0gb3BlbihvcmRlcl9odG1sX25h
bWUsICdyJykKKyAgICAgICAgc2VsZi5mZWVkKG9yZGVyX2h0bWwucmVhZCgpKQorCisgICAgZGVm
IGhhbmRsZV9zdGFydHRhZyhzZWxmLCB0YWcsIGF0dHJzKToKKyAgICAgICAgaWYgdGFnID09ICds
aW5rJzoKKyAgICAgICAgICAgIGF0dHJzX2RpY3QgPSBkaWN0KGF0dHJzKQorICAgICAgICAgICAg
aWYgKCd0eXBlJyBpbiBhdHRyc19kaWN0IGFuZCBhdHRyc19kaWN0Wyd0eXBlJ10gPT0gJ3RleHQv
Y3NzJyBhbmQKKyAgICAgICAgICAgICAgICAnaHJlZicgaW4gYXR0cnNfZGljdCk6CisgICAgICAg
ICAgICAgICAgc2VsZi5vcmRlcmVkX2Nzc19maWxlcy5hcHBlbmQoYXR0cnNfZGljdFsnaHJlZidd
KQorCisKK2NsYXNzIFBhdGhFeHBhbmRlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRo
cyk6CisgICAgICAgIHNlbGYucGF0aHMgPSBwYXRocworCisgICAgZGVmIGV4cGFuZChzZWxmLCBm
aWxlbmFtZSk6CisgICAgICAgIGxhc3RfcGF0aCA9IE5vbmUKKyAgICAgICAgZXhwYW5kZWRfbmFt
ZSA9IE5vbmUKKyAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5wYXRoczoKKyAgICAgICAgICAgIGZu
YW1lID0gIiVzLyVzIiAlIChwYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGlmIChvcy5hY2Nl
c3MoZm5hbWUsIG9zLkZfT0spKToKKyAgICAgICAgICAgICAgICBpZiAobGFzdF9wYXRoICE9IE5v
bmUpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0FtYmlndW91cyBmaWxl
ICVzOiBmb3VuZCBpbiAlcyBhbmQgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChmaWxlbmFtZSwgbGFzdF9wYXRoLCBwYXRoKSkKKyAgICAgICAgICAgICAgICBleHBh
bmRlZF9uYW1lID0gZm5hbWUKKyAgICAgICAgICAgICAgICBsYXN0X3BhdGggPSBwYXRoCisgICAg
ICAgIHJldHVybiBleHBhbmRlZF9uYW1lCisKKworZGVmIG1haW4oYXJndik6CisKKyAgICBpZiBs
ZW4oYXJndikgPCAzOgorICAgICAgICBwcmludCgndXNhZ2U6ICVzIG9yZGVyLmh0bWwgaW5wdXRf
c291cmNlX2Rpcl8xIGlucHV0X3NvdXJjZV9kaXJfMiAuLi4gJworICAgICAgICAgICAgICAnb3V0
cHV0X2ZpbGUnICUgYXJndlswXSkKKyAgICAgICAgcmV0dXJuIDEKKworICAgIG91dHB1dF9maWxl
X25hbWUgPSBhcmd2LnBvcCgpCisgICAgaW5wdXRfb3JkZXJfZmlsZV9uYW1lID0gYXJndlsxXQor
ICAgIGV4dHJhY3RvciA9IE9yZGVyZWRDU1NGaWxlc0V4dHJhY3RvcihpbnB1dF9vcmRlcl9maWxl
X25hbWUpCisgICAgZXh0cmFjdG9yLm9yZGVyZWRfY3NzX2ZpbGVzLmFwcGVuZCgnZGV2VG9vbHMu
Y3NzJykKKworICAgIGV4cGFuZGVyID0gUGF0aEV4cGFuZGVyKGFyZ3ZbMjpdKQorICAgIG91dHB1
dCA9IFN0cmluZ0lPKCkKKworICAgIGZvciBpbnB1dF9maWxlX25hbWUgaW4gZXh0cmFjdG9yLm9y
ZGVyZWRfY3NzX2ZpbGVzOgorICAgICAgICBmdWxsX3BhdGggPSBleHBhbmRlci5leHBhbmQoaW5w
dXRfZmlsZV9uYW1lKQorICAgICAgICBpZiAoZnVsbF9wYXRoIGlzIE5vbmUpOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdGaWxlICVzIHJlZmVyZW5jZWQgaW4gJXMgbm90IGZvdW5kIG9u
IGFueSBzb3VyY2UgcGF0aHMsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2sg
c291cmNlIHRyZWUgZm9yIGNvbnNpc3RlbmN5JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGlucHV0X2ZpbGVfbmFtZSwgaW5wdXRfb3JkZXJfZmlsZV9uYW1lKSkKKyAgICAgICAgb3V0
cHV0LndyaXRlKCcvKiAlcyAqL1xuXG4nICUgaW5wdXRfZmlsZV9uYW1lKQorICAgICAgICBpbnB1
dF9maWxlID0gb3BlbihmdWxsX3BhdGgsICdyJykKKyAgICAgICAgb3V0cHV0LndyaXRlKGlucHV0
X2ZpbGUucmVhZCgpKQorICAgICAgICBvdXRwdXQud3JpdGUoJ1xuJykKKyAgICAgICAgaW5wdXRf
ZmlsZS5jbG9zZSgpCisKKyAgICBvdXRwdXRfZmlsZSA9IG9wZW4ob3V0cHV0X2ZpbGVfbmFtZSwg
J3cnKQorICAgIG91dHB1dF9maWxlLndyaXRlKG91dHB1dC5nZXR2YWx1ZSgpKQorICAgIG91dHB1
dF9maWxlLmNsb3NlKCkKKyAgICBvdXRwdXQuY2xvc2UoKQorCisgICAgIyBUb3VjaCBvdXRwdXQg
ZmlsZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5CisgICAgIyBt
b2RpZmllZCByZXNvdXJjZSBmaWxlcy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6
CisgICAgICAgIG91dHB1dF9kaXJfbmFtZSA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRfZmlsZV9u
YW1lKQorICAgICAgICBvcy51dGltZShvdXRwdXRfZGlyX25hbWUsIE5vbmUpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9qc19maWxlcy5weSBiL1dl
YktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9qc19maWxlcy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTJmMTY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL0J1aWxkL2NvbmNhdGVuYXRlX2pzX2ZpbGVzLnB5CkBAIC0wLDAgKzEsODkgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9taXVt
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIHNjcmlwdCBjb25jYXRlbmF0ZXMgaW4gcGxh
Y2UgSlMgZmlsZXMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZAorIyB1c2luZyA8c2NyaXB0PiB0YWdz
IGluIGEgZ2l2ZW4gJ29yZGVyLmh0bWwnIGZpbGUuCisKK2Zyb20gSFRNTFBhcnNlciBpbXBvcnQg
SFRNTFBhcnNlcgorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgb3MucGF0
aAoraW1wb3J0IHN5cworCisKK2NsYXNzIE9yZGVyZWRKU0ZpbGVzRXh0cmFjdG9yKEhUTUxQYXJz
ZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9yZGVyX2h0bWxfbmFtZSk6CisgICAgICAg
IEhUTUxQYXJzZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5vcmRlcmVkX2pzX2ZpbGVz
ID0gW10KKyAgICAgICAgb3JkZXJfaHRtbCA9IG9wZW4ob3JkZXJfaHRtbF9uYW1lLCAncicpCisg
ICAgICAgIHNlbGYuZmVlZChvcmRlcl9odG1sLnJlYWQoKSkKKworICAgIGRlZiBoYW5kbGVfc3Rh
cnR0YWcoc2VsZiwgdGFnLCBhdHRycyk6CisgICAgICAgIGlmIHRhZyA9PSAnc2NyaXB0JzoKKyAg
ICAgICAgICAgIGF0dHJzX2RpY3QgPSBkaWN0KGF0dHJzKQorICAgICAgICAgICAgaWYgKCd0eXBl
JyBpbiBhdHRyc19kaWN0IGFuZCBhdHRyc19kaWN0Wyd0eXBlJ10gPT0gJ3RleHQvamF2YXNjcmlw
dCcgYW5kICdzcmMnIGluIGF0dHJzX2RpY3QpOgorICAgICAgICAgICAgICAgIHNlbGYub3JkZXJl
ZF9qc19maWxlcy5hcHBlbmQoYXR0cnNfZGljdFsnc3JjJ10pCisKKworY2xhc3MgUGF0aEV4cGFu
ZGVyOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGhzKToKKyAgICAgICAgc2VsZi5wYXRo
cyA9IHBhdGhzCisKKyAgICBkZWYgZXhwYW5kKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgbGFz
dF9wYXRoID0gTm9uZQorICAgICAgICBleHBhbmRlZF9uYW1lID0gTm9uZQorICAgICAgICBmb3Ig
cGF0aCBpbiBzZWxmLnBhdGhzOgorICAgICAgICAgICAgZm5hbWUgPSAiJXMvJXMiICUgKHBhdGgs
IGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgKG9zLmFjY2VzcyhmbmFtZSwgb3MuRl9PSykpOgor
ICAgICAgICAgICAgICAgIGlmIChsYXN0X3BhdGggIT0gTm9uZSk6CisgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignQW1iaWd1b3VzIGZpbGUgJXM6IGZvdW5kIGluICVzIGFuZCAl
cycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLCBsYXN0
X3BhdGgsIHBhdGgpKQorICAgICAgICAgICAgICAgIGV4cGFuZGVkX25hbWUgPSBmbmFtZQorICAg
ICAgICAgICAgICAgIGxhc3RfcGF0aCA9IHBhdGgKKyAgICAgICAgcmV0dXJuIGV4cGFuZGVkX25h
bWUKKworCitkZWYgbWFpbihhcmd2KToKKworICAgIGlmIGxlbihhcmd2KSA8IDM6CisgICAgICAg
IHByaW50KCd1c2FnZTogJXMgb3JkZXIuaHRtbCBpbnB1dF9zb3VyY2VfZGlyXzEgaW5wdXRfc291
cmNlX2Rpcl8yIC4uLiAnCisgICAgICAgICAgICAgICdvdXRwdXRfZmlsZScgJSBhcmd2WzBdKQor
ICAgICAgICByZXR1cm4gMQorCisgICAgb3V0cHV0X2ZpbGVfbmFtZSA9IGFyZ3YucG9wKCkKKyAg
ICBpbnB1dF9vcmRlcl9maWxlX25hbWUgPSBhcmd2WzFdCisgICAgZXh0cmFjdG9yID0gT3JkZXJl
ZEpTRmlsZXNFeHRyYWN0b3IoaW5wdXRfb3JkZXJfZmlsZV9uYW1lKQorICAgIGV4dHJhY3Rvci5v
cmRlcmVkX2pzX2ZpbGVzLmFwcGVuZCgnRGV2VG9vbHMuanMnKQorICAgIGV4dHJhY3Rvci5vcmRl
cmVkX2pzX2ZpbGVzLmFwcGVuZCgnVGVzdHMuanMnKQorCisgICAgZXhwYW5kZXIgPSBQYXRoRXhw
YW5kZXIoYXJndlsyOl0pCisgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorCisgICAgZm9yIGlucHV0
X2ZpbGVfbmFtZSBpbiBleHRyYWN0b3Iub3JkZXJlZF9qc19maWxlczoKKyAgICAgICAgZnVsbF9w
YXRoID0gZXhwYW5kZXIuZXhwYW5kKGlucHV0X2ZpbGVfbmFtZSkKKyAgICAgICAgaWYgKGZ1bGxf
cGF0aCBpcyBOb25lKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmlsZSAlcyByZWZl
cmVuY2VkIGluICVzIG5vdCBmb3VuZCBvbiBhbnkgc291cmNlIHBhdGhzLCAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NoZWNrIHNvdXJjZSB0cmVlIGZvciBjb25zaXN0ZW5jeScgJQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dF9maWxlX25hbWUsIGlucHV0X29yZGVy
X2ZpbGVfbmFtZSkpCisgICAgICAgIG91dHB1dC53cml0ZSgnLyogJXMgKi9cblxuJyAlIGlucHV0
X2ZpbGVfbmFtZSkKKyAgICAgICAgaW5wdXRfZmlsZSA9IG9wZW4oZnVsbF9wYXRoLCAncicpCisg
ICAgICAgIG91dHB1dC53cml0ZShpbnB1dF9maWxlLnJlYWQoKSkKKyAgICAgICAgb3V0cHV0Lndy
aXRlKCdcbicpCisgICAgICAgIGlucHV0X2ZpbGUuY2xvc2UoKQorCisgICAgb3V0cHV0X2ZpbGUg
PSBvcGVuKG91dHB1dF9maWxlX25hbWUsICd3JykKKyAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRw
dXQuZ2V0dmFsdWUoKSkKKyAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCisgICAgb3V0cHV0LmNsb3Nl
KCkKKworICAgICMgVG91Y2ggb3V0cHV0IGZpbGUgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSB0aGF0
IFhjb2RlIHdpbGwgY29weQorICAgICMgbW9kaWZpZWQgcmVzb3VyY2UgZmlsZXMuCisgICAgaWYg
c3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBvdXRwdXRfZGlyX25hbWUgPSBvcy5w
YXRoLmRpcm5hbWUob3V0cHV0X2ZpbGVfbmFtZSkKKyAgICAgICAgb3MudXRpbWUob3V0cHV0X2Rp
cl9uYW1lLCBOb25lKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0
KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0J1aWxkL2dlbmVy
YXRlX2RldnRvb2xzX2h0bWwucHkgYi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvZ2VuZXJhdGVfZGV2
dG9vbHNfaHRtbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTliNzRm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL0J1aWxkL2dlbmVyYXRlX2RldnRv
b2xzX2h0bWwucHkKQEAgLTAsMCArMSw2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENv
cHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IHN5cworCisKK2RlZiBHZW5lcmF0ZUluY2x1ZGVUYWcocmVzb3Vy
Y2VfcGF0aCk6CisgICAgKGRpcl9uYW1lLCBmaWxlX25hbWUpID0gb3MucGF0aC5zcGxpdChyZXNv
dXJjZV9wYXRoKQorICAgIGlmIChmaWxlX25hbWUuZW5kc3dpdGgoJy5qcycpKToKKyAgICAgICAg
cmV0dXJuICcgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJXMiPjwvc2Ny
aXB0PlxuJyAlIGZpbGVfbmFtZQorICAgIGVsaWYgKGZpbGVfbmFtZS5lbmRzd2l0aCgnLmNzcycp
KToKKyAgICAgICAgcmV0dXJuICcgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyIgaHJlZj0iJXMiPlxuJyAlIGZpbGVfbmFtZQorICAgIGVsc2U6CisgICAgICAgIGFzc2Vy
dCByZXNvdXJjZV9wYXRoCisKKworZGVmIG1haW4oYXJndik6CisKKyAgICBpZiBsZW4oYXJndikg
PCA1OgorICAgICAgICBwcmludCgndXNhZ2U6ICVzIGlnbm9yZWQgaW5zcGVjdG9yX2h0bWwgZGV2
dG9vbHNfaHRtbCBkZWJ1ZycKKyAgICAgICAgICAgICAgJyBjc3NfYW5kX2pzX2ZpbGVzX2xpc3Qn
ICUgYXJndlswXSkKKyAgICAgICAgcmV0dXJuIDEKKworICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50
IGlzIGlnbm9yZWQuIFdlIHB1dCAnd2Via2l0Lmd5cCcgaW4gdGhlIGlucHV0cyBsaXN0CisgICAg
IyBmb3IgdGhpcyBzY3JpcHQsIHNvIGV2ZXJ5IHRpbWUgdGhlIGxpc3Qgb2Ygc2NyaXB0IGdldHMg
Y2hhbmdlZCwgb3VyIGh0bWwKKyAgICAjIGZpbGUgaXMgcmVidWlsdC4KKyAgICBpbnNwZWN0b3Jf
aHRtbF9uYW1lID0gYXJndlsyXQorICAgIGRldnRvb2xzX2h0bWxfbmFtZSA9IGFyZ3ZbM10KKyAg
ICBkZWJ1ZyA9IGFyZ3ZbNF0gIT0gJzAnCisgICAgaW5zcGVjdG9yX2h0bWwgPSBvcGVuKGluc3Bl
Y3Rvcl9odG1sX25hbWUsICdyJykKKyAgICBkZXZ0b29sc19odG1sID0gb3BlbihkZXZ0b29sc19o
dG1sX25hbWUsICd3JykKKworICAgIGZvciBsaW5lIGluIGluc3BlY3Rvcl9odG1sOgorICAgICAg
ICBpZiBub3QgZGVidWcgYW5kICc8c2NyaXB0ICcgaW4gbGluZToKKyAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgIGlmIG5vdCBkZWJ1ZyBhbmQgJzxsaW5rICcgaW4gbGluZToKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGlmICc8L2hlYWQ+JyBpbiBsaW5lOgorICAgICAgICAgICAg
aWYgZGVidWc6CisgICAgICAgICAgICAgICAgZm9yIHJlc291cmNlIGluIGFyZ3ZbNTpdOgorICAg
ICAgICAgICAgICAgICAgICBkZXZ0b29sc19odG1sLndyaXRlKEdlbmVyYXRlSW5jbHVkZVRhZyhy
ZXNvdXJjZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRldnRvb2xzX2h0
bWwud3JpdGUoR2VuZXJhdGVJbmNsdWRlVGFnKCJkZXZUb29scy5jc3MiKSkKKyAgICAgICAgICAg
ICAgICBkZXZ0b29sc19odG1sLndyaXRlKEdlbmVyYXRlSW5jbHVkZVRhZygiRGV2VG9vbHMuanMi
KSkKKyAgICAgICAgZGV2dG9vbHNfaHRtbC53cml0ZShsaW5lKQorCisgICAgZGV2dG9vbHNfaHRt
bC5jbG9zZSgpCisgICAgaW5zcGVjdG9yX2h0bWwuY2xvc2UoKQorCisgICAgIyBUb3VjaCBvdXRw
dXQgZmlsZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5CisgICAg
IyBtb2RpZmllZCByZXNvdXJjZSBmaWxlcy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndp
bic6CisgICAgICAgIG91dHB1dF9kaXJfbmFtZSA9IG9zLnBhdGguZGlybmFtZShkZXZ0b29sc19o
dG1sX25hbWUpCisgICAgICAgIG9zLnV0aW1lKG91dHB1dF9kaXJfbmFtZSwgTm9uZSkKKworaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDI0MjYyMGIuLmE3NGFiMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9tZSBE
ZXZUb29sczogY29uY2F0ZW5hdGUgQ1NTIGZpbGVzLCBkbyBub3QgbGluaworICAgICAgICBtaXNz
aW5nIEpTIGZpbGVzIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NTg2CisKKyAgICAgICAgKiBCdWlsZC9jb25jYXRlbmF0
ZV9jc3NfZmlsZXMucHk6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkL2NvbmNhdGVuYXRlX2pzX2Zp
bGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBCdWlsZC9nZW5lcmF0ZV9kZXZ0b29sc19odG1sLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCiAyMDEwLTExLTE0ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEds
YXprb3YuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDRkY2M2MWEuLmUyYjJjNDkgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CkBAIC02NzEsNyArNjcxLDggQEAKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0
aW9ucyc6IFsKICAgICAgICAgICAgICAgICBbJ2RlYnVnX2RldnRvb2xzPT0wJywgewotICAgICAg
ICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWydjb25jYXRlbmF0ZWRfZGV2dG9vbHNfanMn
XSwKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsnY29uY2F0ZW5hdGVkX2Rl
dnRvb2xzX2pzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uY2F0
ZW5hdGVkX2RldnRvb2xzX2NzcyddLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICdjb3BpZXMnOiBbCkBAIC02ODQsNyArNjg1LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ2RlYnVnX2RldnRvb2xzPT0wJywgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdmaWxlcy8nOiBbWydleGNsdWRlJywgJ1xcLmpzJCddXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXMvJzogW1snZXhjbHVkZScsICdcXC4oanN8Y3Nz
fGh0bWwpJCddXSwKICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgICAgIH0sCkBAIC03MDQsMTMgKzcwNSwxMyBAQAogICAgICAg
ICAgICAgJ2FjdGlvbnMnOiBbewogICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdkZXZ0
b29sc19odG1sJywKICAgICAgICAgICAgICAgICAnaW5wdXRzJzogWwotICAgICAgICAgICAgICAg
ICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvYnVpbGQvZ2VuZXJhdGVfZGV2dG9vbHNf
aHRtbC5weScsCisgICAgICAgICAgICAgICAgICAgICdCdWlsZC9nZW5lcmF0ZV9kZXZ0b29sc19o
dG1sLnB5JywKICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaXNzdWUgMjk2OTU6IFdlYktpdC5n
eXBpIGlzIGEgc291cmNlIGZpbGUgZm9yIGRldnRvb2xzLmh0bWwuCiAgICAgICAgICAgICAgICAg
ICAgICdXZWJLaXQuZ3lwaScsCiAgICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwnLAogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgJ291dHB1dHMnOiBbJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9pbnNw
ZWN0b3IvZGV2dG9vbHMuaHRtbCddLAotICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhv
bicsICc8QChfaW5wdXRzKScsICc8QChfb3V0cHV0cyknLCAnPEAoZGV2dG9vbHNfZmlsZXMpJ10s
CisgICAgICAgICAgICAgICAgJ2FjdGlvbic6IFsncHl0aG9uJywgJzxAKF9pbnB1dHMpJywgJzxA
KF9vdXRwdXRzKScsICc8QChkZWJ1Z19kZXZ0b29scyknLCAnPEAoZGV2dG9vbHNfZmlsZXMpJ10s
CiAgICAgICAgICAgICB9XSwKICAgICAgICAgfSwKICAgICAgICAgewpAQCAtNzIzLDI2ICs3MjQs
NTEgQEAKICAgICAgICAgICAgICdzb3VyY2VzJzogWyc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMv
aW5zcGVjdG9yL0RldlRvb2xzLmpzJ10sCiAgICAgICAgICAgICAnYWN0aW9ucyc6IFt7CiAgICAg
ICAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2NvbmNhdGVuYXRlX2RldnRvb2xzX2pzJywKLSAg
ICAgICAgICAgICAgICAnc2NyaXB0X25hbWUnOiAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQv
YnVpbGQvY29uY2F0ZW5hdGVfanNfZmlsZXMucHknLAotICAgICAgICAgICAgICAgICdpbnB1dF9w
YWdlJzogJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9pbnNwZWN0b3IvZGV2dG9vbHMuaHRtbCcs
CisgICAgICAgICAgICAgICAgJ3NjcmlwdF9uYW1lJzogJ0J1aWxkL2NvbmNhdGVuYXRlX2pzX2Zp
bGVzLnB5JywKKyAgICAgICAgICAgICAgICAnaW5wdXRfcGFnZSc6ICcuLi8uLi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwnLAogICAgICAgICAgICAgICAgICdpbnB1
dHMnOiBbCiAgICAgICAgICAgICAgICAgICAgICc8QChfc2NyaXB0X25hbWUpJywKICAgICAgICAg
ICAgICAgICAgICAgJzxAKF9pbnB1dF9wYWdlKScsCiAgICAgICAgICAgICAgICAgICAgICc8QCh3
ZWJpbnNwZWN0b3JfZmlsZXMpJywKICAgICAgICAgICAgICAgICAgICAgJzxAKGRldnRvb2xzX2Zp
bGVzKScsCi0gICAgICAgICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJjb3JlL0luc3BlY3RvckJhY2tlbmRTdHViLmpzJywKKyAgICAgICAgICAgICAgICAgICAgJzwo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMn
CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAnc2VhcmNoX3BhdGgnOiBbCiAg
ICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQnLAog
ICAgICAgICAgICAgICAgICAgICAnc3JjL2pzJywKICAgICAgICAgICAgICAgICAgICAgJzwoU0hB
UkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUnLAotICAgICAgICAgICAgICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS92OC90b29scycsCiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAnb3V0cHV0cyc6IFsnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9E
ZXZUb29scy5qcyddLAogICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhvbicsICc8QChf
c2NyaXB0X25hbWUpJywgJzxAKF9pbnB1dF9wYWdlKScsICc8QChfc2VhcmNoX3BhdGgpJywgJzxA
KF9vdXRwdXRzKSddLAogICAgICAgICAgICAgfV0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAg
ICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdjb25jYXRlbmF0ZWRfZGV2dG9vbHNfY3NzJywKKyAg
ICAgICAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsK
KyAgICAgICAgICAgICAgICAnZGV2dG9vbHNfaHRtbCcsCisgICAgICAgICAgICAgICAgJy4uLy4u
L1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6aW5zcGVjdG9yX3Byb3RvY29sX3NvdXJj
ZXMnCisgICAgICAgICAgICBdLAorICAgICAgICAgICAgJ3NvdXJjZXMnOiBbJzwoUFJPRFVDVF9E
SVIpL3Jlc291cmNlcy9pbnNwZWN0b3IvZGV2VG9vbHMuY3NzJ10sCisgICAgICAgICAgICAnYWN0
aW9ucyc6IFt7CisgICAgICAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2NvbmNhdGVuYXRlX2Rl
dnRvb2xzX2NzcycsCisgICAgICAgICAgICAgICAgJ3NjcmlwdF9uYW1lJzogJ0J1aWxkL2NvbmNh
dGVuYXRlX2Nzc19maWxlcy5weScsCisgICAgICAgICAgICAgICAgJ2lucHV0X3BhZ2UnOiAnLi4v
Li4vV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sJywKKyAgICAgICAg
ICAgICAgICAnaW5wdXRzJzogWworICAgICAgICAgICAgICAgICAgICAnPEAoX3NjcmlwdF9uYW1l
KScsCisgICAgICAgICAgICAgICAgICAgICc8QChfaW5wdXRfcGFnZSknLAorICAgICAgICAgICAg
ICAgICAgICAnPEAod2ViaW5zcGVjdG9yX2ZpbGVzKScsCisgICAgICAgICAgICAgICAgICAgICc8
QChkZXZ0b29sc19maWxlcyknCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAn
c2VhcmNoX3BhdGgnOiBbCisgICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQnLAorICAgICAgICAgICAgICAgICAgICAnc3JjL2pzJywKKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICdvdXRwdXRzJzogWyc8KFBST0RVQ1RfRElSKS9y
ZXNvdXJjZXMvaW5zcGVjdG9yL2RldlRvb2xzLmNzcyddLAorICAgICAgICAgICAgICAgICdhY3Rp
b24nOiBbJ3B5dGhvbicsICc8QChfc2NyaXB0X25hbWUpJywgJzxAKF9pbnB1dF9wYWdlKScsICc8
QChfc2VhcmNoX3BhdGgpJywgJzxAKF9vdXRwdXRzKSddLAorICAgICAgICAgICAgfV0sCisgICAg
ICAgIH0sCisgICAgICAgIHsKICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICd3ZWJraXRfdW5p
dF90ZXN0cycsCiAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKICAgICAgICAgICAg
ICdtc3ZzX2d1aWQnOiAnN0NFRkU4MDAtODQwMy00MThBLUFENkEtMkQ1MkM2RkMzRUFEJywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>73986</attachid>
            <date>2010-11-16 05:38:04 -0800</date>
            <delta_ts>2010-11-16 08:16:56 -0800</delta_ts>
            <desc>[PATCH] Addressed Mikhail&apos;s comments.</desc>
            <filename>concat</filename>
            <type>text/plain</type>
            <size>13820</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9jc3NfZmlsZXMu
cHkgYi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYjY1MTkKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5CkBAIC0wLDAg
KzEsOTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhl
IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
KyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIHNjcmlwdCBjb25jYXRlbmF0
ZXMgaW4gcGxhY2UgSlMgZmlsZXMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZAorIyB1c2luZyA8c2Ny
aXB0PiB0YWdzIGluIGEgZ2l2ZW4gJ29yZGVyLmh0bWwnIGZpbGUuCisKK2Zyb20gSFRNTFBhcnNl
ciBpbXBvcnQgSFRNTFBhcnNlcgorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IHN5cworCisKK2NsYXNzIE9yZGVyZWRDU1NGaWxlc0V4dHJhY3Rv
cihIVE1MUGFyc2VyKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmRlcl9odG1sX25hbWUp
OgorICAgICAgICBIVE1MUGFyc2VyLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYub3JkZXJl
ZF9jc3NfZmlsZXMgPSBbXQorICAgICAgICBvcmRlcl9odG1sID0gb3BlbihvcmRlcl9odG1sX25h
bWUsICdyJykKKyAgICAgICAgc2VsZi5mZWVkKG9yZGVyX2h0bWwucmVhZCgpKQorCisgICAgZGVm
IGhhbmRsZV9zdGFydHRhZyhzZWxmLCB0YWcsIGF0dHJzKToKKyAgICAgICAgaWYgdGFnID09ICds
aW5rJzoKKyAgICAgICAgICAgIGF0dHJzX2RpY3QgPSBkaWN0KGF0dHJzKQorICAgICAgICAgICAg
aWYgKCd0eXBlJyBpbiBhdHRyc19kaWN0IGFuZCBhdHRyc19kaWN0Wyd0eXBlJ10gPT0gJ3RleHQv
Y3NzJyBhbmQKKyAgICAgICAgICAgICAgICAnaHJlZicgaW4gYXR0cnNfZGljdCk6CisgICAgICAg
ICAgICAgICAgc2VsZi5vcmRlcmVkX2Nzc19maWxlcy5hcHBlbmQoYXR0cnNfZGljdFsnaHJlZidd
KQorCisKK2NsYXNzIFBhdGhFeHBhbmRlcjoKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRo
cyk6CisgICAgICAgIHNlbGYucGF0aHMgPSBwYXRocworCisgICAgZGVmIGV4cGFuZChzZWxmLCBm
aWxlbmFtZSk6CisgICAgICAgIGxhc3RfcGF0aCA9IE5vbmUKKyAgICAgICAgZXhwYW5kZWRfbmFt
ZSA9IE5vbmUKKyAgICAgICAgZm9yIHBhdGggaW4gc2VsZi5wYXRoczoKKyAgICAgICAgICAgIGZu
YW1lID0gIiVzLyVzIiAlIChwYXRoLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGlmIChvcy5hY2Nl
c3MoZm5hbWUsIG9zLkZfT0spKToKKyAgICAgICAgICAgICAgICBpZiAobGFzdF9wYXRoICE9IE5v
bmUpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0FtYmlndW91cyBmaWxl
ICVzOiBmb3VuZCBpbiAlcyBhbmQgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChmaWxlbmFtZSwgbGFzdF9wYXRoLCBwYXRoKSkKKyAgICAgICAgICAgICAgICBleHBh
bmRlZF9uYW1lID0gZm5hbWUKKyAgICAgICAgICAgICAgICBsYXN0X3BhdGggPSBwYXRoCisgICAg
ICAgIHJldHVybiBleHBhbmRlZF9uYW1lCisKKworZGVmIG1haW4oYXJndik6CisKKyAgICBpZiBs
ZW4oYXJndikgPCAzOgorICAgICAgICBwcmludCgndXNhZ2U6ICVzIG9yZGVyLmh0bWwgaW5wdXRf
c291cmNlX2Rpcl8xIGlucHV0X3NvdXJjZV9kaXJfMiAuLi4gJworICAgICAgICAgICAgICAnb3V0
cHV0X2ZpbGUnICUgYXJndlswXSkKKyAgICAgICAgcmV0dXJuIDEKKworICAgIG91dHB1dF9maWxl
X25hbWUgPSBhcmd2LnBvcCgpCisgICAgaW5wdXRfb3JkZXJfZmlsZV9uYW1lID0gYXJndlsxXQor
ICAgIGV4dHJhY3RvciA9IE9yZGVyZWRDU1NGaWxlc0V4dHJhY3RvcihpbnB1dF9vcmRlcl9maWxl
X25hbWUpCisgICAgZXh0cmFjdG9yLm9yZGVyZWRfY3NzX2ZpbGVzLmFwcGVuZCgnZGV2VG9vbHMu
Y3NzJykKKworICAgIGV4cGFuZGVyID0gUGF0aEV4cGFuZGVyKGFyZ3ZbMjpdKQorICAgIG91dHB1
dCA9IFN0cmluZ0lPKCkKKworICAgIGZvciBpbnB1dF9maWxlX25hbWUgaW4gZXh0cmFjdG9yLm9y
ZGVyZWRfY3NzX2ZpbGVzOgorICAgICAgICBmdWxsX3BhdGggPSBleHBhbmRlci5leHBhbmQoaW5w
dXRfZmlsZV9uYW1lKQorICAgICAgICBpZiAoZnVsbF9wYXRoIGlzIE5vbmUpOgorICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdGaWxlICVzIHJlZmVyZW5jZWQgaW4gJXMgbm90IGZvdW5kIG9u
IGFueSBzb3VyY2UgcGF0aHMsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hlY2sg
c291cmNlIHRyZWUgZm9yIGNvbnNpc3RlbmN5JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGlucHV0X2ZpbGVfbmFtZSwgaW5wdXRfb3JkZXJfZmlsZV9uYW1lKSkKKyAgICAgICAgb3V0
cHV0LndyaXRlKCcvKiAlcyAqL1xuXG4nICUgaW5wdXRfZmlsZV9uYW1lKQorICAgICAgICBpbnB1
dF9maWxlID0gb3BlbihmdWxsX3BhdGgsICdyJykKKyAgICAgICAgb3V0cHV0LndyaXRlKGlucHV0
X2ZpbGUucmVhZCgpKQorICAgICAgICBvdXRwdXQud3JpdGUoJ1xuJykKKyAgICAgICAgaW5wdXRf
ZmlsZS5jbG9zZSgpCisKKyAgICBvdXRwdXRfZmlsZSA9IG9wZW4ob3V0cHV0X2ZpbGVfbmFtZSwg
J3cnKQorICAgIG91dHB1dF9maWxlLndyaXRlKG91dHB1dC5nZXR2YWx1ZSgpKQorICAgIG91dHB1
dF9maWxlLmNsb3NlKCkKKyAgICBvdXRwdXQuY2xvc2UoKQorCisgICAgIyBUb3VjaCBvdXRwdXQg
ZmlsZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5CisgICAgIyBt
b2RpZmllZCByZXNvdXJjZSBmaWxlcy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6
CisgICAgICAgIG91dHB1dF9kaXJfbmFtZSA9IG9zLnBhdGguZGlybmFtZShvdXRwdXRfZmlsZV9u
YW1lKQorICAgICAgICBvcy51dGltZShvdXRwdXRfZGlyX25hbWUsIE5vbmUpCisKKworaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9qc19maWxlcy5weSBiL1dl
YktpdC9jaHJvbWl1bS9CdWlsZC9jb25jYXRlbmF0ZV9qc19maWxlcy5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTJmMTY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL0J1aWxkL2NvbmNhdGVuYXRlX2pzX2ZpbGVzLnB5CkBAIC0wLDAgKzEsODkgQEAK
KyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKGMpIDIwMDkgVGhlIENocm9taXVt
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKworIyBUaGlzIHNjcmlwdCBjb25jYXRlbmF0ZXMgaW4gcGxh
Y2UgSlMgZmlsZXMgaW4gdGhlIG9yZGVyIHNwZWNpZmllZAorIyB1c2luZyA8c2NyaXB0PiB0YWdz
IGluIGEgZ2l2ZW4gJ29yZGVyLmh0bWwnIGZpbGUuCisKK2Zyb20gSFRNTFBhcnNlciBpbXBvcnQg
SFRNTFBhcnNlcgorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgb3MucGF0
aAoraW1wb3J0IHN5cworCisKK2NsYXNzIE9yZGVyZWRKU0ZpbGVzRXh0cmFjdG9yKEhUTUxQYXJz
ZXIpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9yZGVyX2h0bWxfbmFtZSk6CisgICAgICAg
IEhUTUxQYXJzZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5vcmRlcmVkX2pzX2ZpbGVz
ID0gW10KKyAgICAgICAgb3JkZXJfaHRtbCA9IG9wZW4ob3JkZXJfaHRtbF9uYW1lLCAncicpCisg
ICAgICAgIHNlbGYuZmVlZChvcmRlcl9odG1sLnJlYWQoKSkKKworICAgIGRlZiBoYW5kbGVfc3Rh
cnR0YWcoc2VsZiwgdGFnLCBhdHRycyk6CisgICAgICAgIGlmIHRhZyA9PSAnc2NyaXB0JzoKKyAg
ICAgICAgICAgIGF0dHJzX2RpY3QgPSBkaWN0KGF0dHJzKQorICAgICAgICAgICAgaWYgKCd0eXBl
JyBpbiBhdHRyc19kaWN0IGFuZCBhdHRyc19kaWN0Wyd0eXBlJ10gPT0gJ3RleHQvamF2YXNjcmlw
dCcgYW5kICdzcmMnIGluIGF0dHJzX2RpY3QpOgorICAgICAgICAgICAgICAgIHNlbGYub3JkZXJl
ZF9qc19maWxlcy5hcHBlbmQoYXR0cnNfZGljdFsnc3JjJ10pCisKKworY2xhc3MgUGF0aEV4cGFu
ZGVyOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGhzKToKKyAgICAgICAgc2VsZi5wYXRo
cyA9IHBhdGhzCisKKyAgICBkZWYgZXhwYW5kKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgbGFz
dF9wYXRoID0gTm9uZQorICAgICAgICBleHBhbmRlZF9uYW1lID0gTm9uZQorICAgICAgICBmb3Ig
cGF0aCBpbiBzZWxmLnBhdGhzOgorICAgICAgICAgICAgZm5hbWUgPSAiJXMvJXMiICUgKHBhdGgs
IGZpbGVuYW1lKQorICAgICAgICAgICAgaWYgKG9zLmFjY2VzcyhmbmFtZSwgb3MuRl9PSykpOgor
ICAgICAgICAgICAgICAgIGlmIChsYXN0X3BhdGggIT0gTm9uZSk6CisgICAgICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignQW1iaWd1b3VzIGZpbGUgJXM6IGZvdW5kIGluICVzIGFuZCAl
cycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lLCBsYXN0
X3BhdGgsIHBhdGgpKQorICAgICAgICAgICAgICAgIGV4cGFuZGVkX25hbWUgPSBmbmFtZQorICAg
ICAgICAgICAgICAgIGxhc3RfcGF0aCA9IHBhdGgKKyAgICAgICAgcmV0dXJuIGV4cGFuZGVkX25h
bWUKKworCitkZWYgbWFpbihhcmd2KToKKworICAgIGlmIGxlbihhcmd2KSA8IDM6CisgICAgICAg
IHByaW50KCd1c2FnZTogJXMgb3JkZXIuaHRtbCBpbnB1dF9zb3VyY2VfZGlyXzEgaW5wdXRfc291
cmNlX2Rpcl8yIC4uLiAnCisgICAgICAgICAgICAgICdvdXRwdXRfZmlsZScgJSBhcmd2WzBdKQor
ICAgICAgICByZXR1cm4gMQorCisgICAgb3V0cHV0X2ZpbGVfbmFtZSA9IGFyZ3YucG9wKCkKKyAg
ICBpbnB1dF9vcmRlcl9maWxlX25hbWUgPSBhcmd2WzFdCisgICAgZXh0cmFjdG9yID0gT3JkZXJl
ZEpTRmlsZXNFeHRyYWN0b3IoaW5wdXRfb3JkZXJfZmlsZV9uYW1lKQorICAgIGV4dHJhY3Rvci5v
cmRlcmVkX2pzX2ZpbGVzLmFwcGVuZCgnRGV2VG9vbHMuanMnKQorICAgIGV4dHJhY3Rvci5vcmRl
cmVkX2pzX2ZpbGVzLmFwcGVuZCgnVGVzdHMuanMnKQorCisgICAgZXhwYW5kZXIgPSBQYXRoRXhw
YW5kZXIoYXJndlsyOl0pCisgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorCisgICAgZm9yIGlucHV0
X2ZpbGVfbmFtZSBpbiBleHRyYWN0b3Iub3JkZXJlZF9qc19maWxlczoKKyAgICAgICAgZnVsbF9w
YXRoID0gZXhwYW5kZXIuZXhwYW5kKGlucHV0X2ZpbGVfbmFtZSkKKyAgICAgICAgaWYgKGZ1bGxf
cGF0aCBpcyBOb25lKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmlsZSAlcyByZWZl
cmVuY2VkIGluICVzIG5vdCBmb3VuZCBvbiBhbnkgc291cmNlIHBhdGhzLCAnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NoZWNrIHNvdXJjZSB0cmVlIGZvciBjb25zaXN0ZW5jeScgJQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dF9maWxlX25hbWUsIGlucHV0X29yZGVy
X2ZpbGVfbmFtZSkpCisgICAgICAgIG91dHB1dC53cml0ZSgnLyogJXMgKi9cblxuJyAlIGlucHV0
X2ZpbGVfbmFtZSkKKyAgICAgICAgaW5wdXRfZmlsZSA9IG9wZW4oZnVsbF9wYXRoLCAncicpCisg
ICAgICAgIG91dHB1dC53cml0ZShpbnB1dF9maWxlLnJlYWQoKSkKKyAgICAgICAgb3V0cHV0Lndy
aXRlKCdcbicpCisgICAgICAgIGlucHV0X2ZpbGUuY2xvc2UoKQorCisgICAgb3V0cHV0X2ZpbGUg
PSBvcGVuKG91dHB1dF9maWxlX25hbWUsICd3JykKKyAgICBvdXRwdXRfZmlsZS53cml0ZShvdXRw
dXQuZ2V0dmFsdWUoKSkKKyAgICBvdXRwdXRfZmlsZS5jbG9zZSgpCisgICAgb3V0cHV0LmNsb3Nl
KCkKKworICAgICMgVG91Y2ggb3V0cHV0IGZpbGUgZGlyZWN0b3J5IHRvIG1ha2Ugc3VyZSB0aGF0
IFhjb2RlIHdpbGwgY29weQorICAgICMgbW9kaWZpZWQgcmVzb3VyY2UgZmlsZXMuCisgICAgaWYg
c3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBvdXRwdXRfZGlyX25hbWUgPSBvcy5w
YXRoLmRpcm5hbWUob3V0cHV0X2ZpbGVfbmFtZSkKKyAgICAgICAgb3MudXRpbWUob3V0cHV0X2Rp
cl9uYW1lLCBOb25lKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0
KG1haW4oc3lzLmFyZ3YpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0J1aWxkL2dlbmVy
YXRlX2RldnRvb2xzX2h0bWwucHkgYi9XZWJLaXQvY2hyb21pdW0vQnVpbGQvZ2VuZXJhdGVfZGV2
dG9vbHNfaHRtbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTliNzRm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL0J1aWxkL2dlbmVyYXRlX2RldnRv
b2xzX2h0bWwucHkKQEAgLTAsMCArMSw2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIENv
cHlyaWdodCAoYykgMjAwOSBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCitpbXBv
cnQgb3MucGF0aAoraW1wb3J0IHN5cworCisKK2RlZiBHZW5lcmF0ZUluY2x1ZGVUYWcocmVzb3Vy
Y2VfcGF0aCk6CisgICAgKGRpcl9uYW1lLCBmaWxlX25hbWUpID0gb3MucGF0aC5zcGxpdChyZXNv
dXJjZV9wYXRoKQorICAgIGlmIChmaWxlX25hbWUuZW5kc3dpdGgoJy5qcycpKToKKyAgICAgICAg
cmV0dXJuICcgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJXMiPjwvc2Ny
aXB0PlxuJyAlIGZpbGVfbmFtZQorICAgIGVsaWYgKGZpbGVfbmFtZS5lbmRzd2l0aCgnLmNzcycp
KToKKyAgICAgICAgcmV0dXJuICcgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0
L2NzcyIgaHJlZj0iJXMiPlxuJyAlIGZpbGVfbmFtZQorICAgIGVsc2U6CisgICAgICAgIGFzc2Vy
dCByZXNvdXJjZV9wYXRoCisKKworZGVmIG1haW4oYXJndik6CisKKyAgICBpZiBsZW4oYXJndikg
PCA1OgorICAgICAgICBwcmludCgndXNhZ2U6ICVzIGlnbm9yZWQgaW5zcGVjdG9yX2h0bWwgZGV2
dG9vbHNfaHRtbCBkZWJ1ZycKKyAgICAgICAgICAgICAgJyBjc3NfYW5kX2pzX2ZpbGVzX2xpc3Qn
ICUgYXJndlswXSkKKyAgICAgICAgcmV0dXJuIDEKKworICAgICMgVGhlIGZpcnN0IGFyZ3VtZW50
IGlzIGlnbm9yZWQuIFdlIHB1dCAnd2Via2l0Lmd5cCcgaW4gdGhlIGlucHV0cyBsaXN0CisgICAg
IyBmb3IgdGhpcyBzY3JpcHQsIHNvIGV2ZXJ5IHRpbWUgdGhlIGxpc3Qgb2Ygc2NyaXB0IGdldHMg
Y2hhbmdlZCwgb3VyIGh0bWwKKyAgICAjIGZpbGUgaXMgcmVidWlsdC4KKyAgICBpbnNwZWN0b3Jf
aHRtbF9uYW1lID0gYXJndlsyXQorICAgIGRldnRvb2xzX2h0bWxfbmFtZSA9IGFyZ3ZbM10KKyAg
ICBkZWJ1ZyA9IGFyZ3ZbNF0gIT0gJzAnCisgICAgaW5zcGVjdG9yX2h0bWwgPSBvcGVuKGluc3Bl
Y3Rvcl9odG1sX25hbWUsICdyJykKKyAgICBkZXZ0b29sc19odG1sID0gb3BlbihkZXZ0b29sc19o
dG1sX25hbWUsICd3JykKKworICAgIGZvciBsaW5lIGluIGluc3BlY3Rvcl9odG1sOgorICAgICAg
ICBpZiBub3QgZGVidWcgYW5kICc8c2NyaXB0ICcgaW4gbGluZToKKyAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgIGlmIG5vdCBkZWJ1ZyBhbmQgJzxsaW5rICcgaW4gbGluZToKKyAgICAgICAg
ICAgIGNvbnRpbnVlCisgICAgICAgIGlmICc8L2hlYWQ+JyBpbiBsaW5lOgorICAgICAgICAgICAg
aWYgZGVidWc6CisgICAgICAgICAgICAgICAgZm9yIHJlc291cmNlIGluIGFyZ3ZbNTpdOgorICAg
ICAgICAgICAgICAgICAgICBkZXZ0b29sc19odG1sLndyaXRlKEdlbmVyYXRlSW5jbHVkZVRhZyhy
ZXNvdXJjZSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRldnRvb2xzX2h0
bWwud3JpdGUoR2VuZXJhdGVJbmNsdWRlVGFnKCJkZXZUb29scy5jc3MiKSkKKyAgICAgICAgICAg
ICAgICBkZXZ0b29sc19odG1sLndyaXRlKEdlbmVyYXRlSW5jbHVkZVRhZygiRGV2VG9vbHMuanMi
KSkKKyAgICAgICAgZGV2dG9vbHNfaHRtbC53cml0ZShsaW5lKQorCisgICAgZGV2dG9vbHNfaHRt
bC5jbG9zZSgpCisgICAgaW5zcGVjdG9yX2h0bWwuY2xvc2UoKQorCisgICAgIyBUb3VjaCBvdXRw
dXQgZmlsZSBkaXJlY3RvcnkgdG8gbWFrZSBzdXJlIHRoYXQgWGNvZGUgd2lsbCBjb3B5CisgICAg
IyBtb2RpZmllZCByZXNvdXJjZSBmaWxlcy4KKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndp
bic6CisgICAgICAgIG91dHB1dF9kaXJfbmFtZSA9IG9zLnBhdGguZGlybmFtZShkZXZ0b29sc19o
dG1sX25hbWUpCisgICAgICAgIG9zLnV0aW1lKG91dHB1dF9kaXJfbmFtZSwgTm9uZSkKKworaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBzeXMuZXhpdChtYWluKHN5cy5hcmd2KSkKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IDI0MjYyMGIuLmE3NGFiMmEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTExLTE2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENocm9tZSBE
ZXZUb29sczogY29uY2F0ZW5hdGUgQ1NTIGZpbGVzLCBkbyBub3QgbGluaworICAgICAgICBtaXNz
aW5nIEpTIGZpbGVzIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5NTg2CisKKyAgICAgICAgKiBCdWlsZC9jb25jYXRlbmF0
ZV9jc3NfZmlsZXMucHk6IEFkZGVkLgorICAgICAgICAqIEJ1aWxkL2NvbmNhdGVuYXRlX2pzX2Zp
bGVzLnB5OiBBZGRlZC4KKyAgICAgICAgKiBCdWlsZC9nZW5lcmF0ZV9kZXZ0b29sc19odG1sLnB5
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorCiAyMDEwLTExLTE0ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEds
YXprb3YuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDRkY2M2MWEuLjQ4YTM5ZDQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CkBAIC02NzEsNyArNjcxLDggQEAKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAnY29uZGl0
aW9ucyc6IFsKICAgICAgICAgICAgICAgICBbJ2RlYnVnX2RldnRvb2xzPT0wJywgewotICAgICAg
ICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWydjb25jYXRlbmF0ZWRfZGV2dG9vbHNfanMn
XSwKKyAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsnY29uY2F0ZW5hdGVkX2Rl
dnRvb2xzX2pzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uY2F0
ZW5hdGVkX2RldnRvb2xzX2NzcyddLAogICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAg
XSwKICAgICAgICAgICAgICdjb3BpZXMnOiBbCkBAIC02ODQsNyArNjg1LDcgQEAKICAgICAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCiAgICAg
ICAgICAgICAgICAgICAgICAgICBbJ2RlYnVnX2RldnRvb2xzPT0wJywgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdmaWxlcy8nOiBbWydleGNsdWRlJywgJ1xcLmpzJCddXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXMvJzogW1snZXhjbHVkZScsICdcXC4oanN8Y3Nz
fGh0bWwpJCddXSwKICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAogICAgICAgICAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgICAgIH0sCkBAIC03MDQsMTMgKzcwNSwxMyBAQAogICAgICAg
ICAgICAgJ2FjdGlvbnMnOiBbewogICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdkZXZ0
b29sc19odG1sJywKICAgICAgICAgICAgICAgICAnaW5wdXRzJzogWwotICAgICAgICAgICAgICAg
ICAgICAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQvYnVpbGQvZ2VuZXJhdGVfZGV2dG9vbHNf
aHRtbC5weScsCisgICAgICAgICAgICAgICAgICAgICdCdWlsZC9nZW5lcmF0ZV9kZXZ0b29sc19o
dG1sLnB5JywKICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaXNzdWUgMjk2OTU6IFdlYktpdC5n
eXBpIGlzIGEgc291cmNlIGZpbGUgZm9yIGRldnRvb2xzLmh0bWwuCiAgICAgICAgICAgICAgICAg
ICAgICdXZWJLaXQuZ3lwaScsCiAgICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwnLAogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgJ291dHB1dHMnOiBbJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9pbnNw
ZWN0b3IvZGV2dG9vbHMuaHRtbCddLAotICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhv
bicsICc8QChfaW5wdXRzKScsICc8QChfb3V0cHV0cyknLCAnPEAoZGV2dG9vbHNfZmlsZXMpJ10s
CisgICAgICAgICAgICAgICAgJ2FjdGlvbic6IFsncHl0aG9uJywgJzxAKF9pbnB1dHMpJywgJzxA
KF9vdXRwdXRzKScsICc8QChkZWJ1Z19kZXZ0b29scyknLCAnPEAoZGV2dG9vbHNfZmlsZXMpJ10s
CiAgICAgICAgICAgICB9XSwKICAgICAgICAgfSwKICAgICAgICAgewpAQCAtNzIzLDI2ICs3MjQs
NTAgQEAKICAgICAgICAgICAgICdzb3VyY2VzJzogWyc8KFBST0RVQ1RfRElSKS9yZXNvdXJjZXMv
aW5zcGVjdG9yL0RldlRvb2xzLmpzJ10sCiAgICAgICAgICAgICAnYWN0aW9ucyc6IFt7CiAgICAg
ICAgICAgICAgICAgJ2FjdGlvbl9uYW1lJzogJ2NvbmNhdGVuYXRlX2RldnRvb2xzX2pzJywKLSAg
ICAgICAgICAgICAgICAnc2NyaXB0X25hbWUnOiAnPChjaHJvbWl1bV9zcmNfZGlyKS93ZWJraXQv
YnVpbGQvY29uY2F0ZW5hdGVfanNfZmlsZXMucHknLAotICAgICAgICAgICAgICAgICdpbnB1dF9w
YWdlJzogJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9pbnNwZWN0b3IvZGV2dG9vbHMuaHRtbCcs
CisgICAgICAgICAgICAgICAgJ3NjcmlwdF9uYW1lJzogJ0J1aWxkL2NvbmNhdGVuYXRlX2pzX2Zp
bGVzLnB5JywKKyAgICAgICAgICAgICAgICAnaW5wdXRfcGFnZSc6ICcuLi8uLi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwnLAogICAgICAgICAgICAgICAgICdpbnB1
dHMnOiBbCiAgICAgICAgICAgICAgICAgICAgICc8QChfc2NyaXB0X25hbWUpJywKICAgICAgICAg
ICAgICAgICAgICAgJzxAKF9pbnB1dF9wYWdlKScsCiAgICAgICAgICAgICAgICAgICAgICc8QCh3
ZWJpbnNwZWN0b3JfZmlsZXMpJywKICAgICAgICAgICAgICAgICAgICAgJzxAKGRldnRvb2xzX2Zp
bGVzKScsCi0gICAgICAgICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93
ZWJjb3JlL0luc3BlY3RvckJhY2tlbmRTdHViLmpzJywKKyAgICAgICAgICAgICAgICAgICAgJzwo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMn
CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAnc2VhcmNoX3BhdGgnOiBbCiAg
ICAgICAgICAgICAgICAgICAgICcuLi8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQnLAog
ICAgICAgICAgICAgICAgICAgICAnc3JjL2pzJywKICAgICAgICAgICAgICAgICAgICAgJzwoU0hB
UkVEX0lOVEVSTUVESUFURV9ESVIpL3dlYmNvcmUnLAotICAgICAgICAgICAgICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS92OC90b29scycsCiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAnb3V0cHV0cyc6IFsnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9E
ZXZUb29scy5qcyddLAogICAgICAgICAgICAgICAgICdhY3Rpb24nOiBbJ3B5dGhvbicsICc8QChf
c2NyaXB0X25hbWUpJywgJzxAKF9pbnB1dF9wYWdlKScsICc8QChfc2VhcmNoX3BhdGgpJywgJzxA
KF9vdXRwdXRzKSddLAogICAgICAgICAgICAgfV0sCiAgICAgICAgIH0sCiAgICAgICAgIHsKKyAg
ICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdjb25jYXRlbmF0ZWRfZGV2dG9vbHNfY3NzJywKKyAg
ICAgICAgICAgICd0eXBlJzogJ25vbmUnLAorICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsK
KyAgICAgICAgICAgICAgICAnZGV2dG9vbHNfaHRtbCcKKyAgICAgICAgICAgIF0sCisgICAgICAg
ICAgICAnc291cmNlcyc6IFsnPChQUk9EVUNUX0RJUikvcmVzb3VyY2VzL2luc3BlY3Rvci9kZXZU
b29scy5jc3MnXSwKKyAgICAgICAgICAgICdhY3Rpb25zJzogW3sKKyAgICAgICAgICAgICAgICAn
YWN0aW9uX25hbWUnOiAnY29uY2F0ZW5hdGVfZGV2dG9vbHNfY3NzJywKKyAgICAgICAgICAgICAg
ICAnc2NyaXB0X25hbWUnOiAnQnVpbGQvY29uY2F0ZW5hdGVfY3NzX2ZpbGVzLnB5JywKKyAgICAg
ICAgICAgICAgICAnaW5wdXRfcGFnZSc6ICcuLi8uLi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwnLAorICAgICAgICAgICAgICAgICdpbnB1dHMnOiBbCisgICAgICAg
ICAgICAgICAgICAgICc8QChfc2NyaXB0X25hbWUpJywKKyAgICAgICAgICAgICAgICAgICAgJzxA
KF9pbnB1dF9wYWdlKScsCisgICAgICAgICAgICAgICAgICAgICc8QCh3ZWJpbnNwZWN0b3JfZmls
ZXMpJywKKyAgICAgICAgICAgICAgICAgICAgJzxAKGRldnRvb2xzX2ZpbGVzKScKKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICdzZWFyY2hfcGF0aCc6IFsKKyAgICAgICAgICAg
ICAgICAgICAgJy4uLy4uL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZCcsCisgICAgICAgICAg
ICAgICAgICAgICdzcmMvanMnLAorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg
J291dHB1dHMnOiBbJzwoUFJPRFVDVF9ESVIpL3Jlc291cmNlcy9pbnNwZWN0b3IvZGV2VG9vbHMu
Y3NzJ10sCisgICAgICAgICAgICAgICAgJ2FjdGlvbic6IFsncHl0aG9uJywgJzxAKF9zY3JpcHRf
bmFtZSknLCAnPEAoX2lucHV0X3BhZ2UpJywgJzxAKF9zZWFyY2hfcGF0aCknLCAnPEAoX291dHB1
dHMpJ10sCisgICAgICAgICAgICB9XSwKKyAgICAgICAgfSwKKyAgICAgICAgewogICAgICAgICAg
ICAgJ3RhcmdldF9uYW1lJzogJ3dlYmtpdF91bml0X3Rlc3RzJywKICAgICAgICAgICAgICd0eXBl
JzogJ2V4ZWN1dGFibGUnLAogICAgICAgICAgICAgJ21zdnNfZ3VpZCc6ICc3Q0VGRTgwMC04NDAz
LTQxOEEtQUQ2QS0yRDUyQzZGQzNFQUQnLAo=
</data>
<flag name="review"
          id="64518"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>