<?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>155576</bug_id>
          
          <creation_ts>2016-03-16 19:46:26 -0700</creation_ts>
          <short_desc>Improve update-webkit-dependency script</short_desc>
          <delta_ts>2016-03-24 17:59:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=153876</see_also>
          <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="Jeremy Zerfas">WebKit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1175615</commentid>
    <comment_count>0</comment_count>
    <who name="Jeremy Zerfas">WebKit</who>
    <bug_when>2016-03-16 19:46:26 -0700</bug_when>
    <thetext>The update-webkit-dependency script could use several improvements.

First, every time it is ran it tries to download the entire dependency just in order to get the Last-Modified header so that it can check to see if the dependency is up to date. This could be improved by instead doing a request for just the first byte of the dependency if the server supports range requests and also setting a size limit for the request so the entire dependency is not downloaded in order to get the headers. This can save a decent amount of time and bandwidth for people.

Second, it tries to use the Last-Modified header to determine whether the dependency is up to date and if the server doesn&apos;t emit Last-Modified headers (like Dropbox&apos;s server which is currently used to store the WinCairoRequirements.zip file and also GitHub as well) it then tries to get the Last-Modified header from a separate *.headers file that is also placed on the server. This could be improved by also using ETag headers (which Dropbox and GitHub both support) to see if the dependency is up to date. When using Dropbox this would generally eliminate the need to maintain those separate *.headers file which seems to cause problems from time to time (see https://lists.webkit.org/pipermail/webkit-help/2015-November/003987.html and bug 153876).

Third, it would also be nice if before installing a dependency, it first checked the zip file to make sure it contains the expected directories. This would help in preventing problems like those in bug 153876.

The patch that I&apos;ll be attaching in a moment makes these improvements to the script plus makes a few other minor improvements (more error checking and better error messages mainly).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175617</commentid>
    <comment_count>1</comment_count>
      <attachid>274258</attachid>
    <who name="Jeremy Zerfas">WebKit</who>
    <bug_when>2016-03-16 19:49:42 -0700</bug_when>
    <thetext>Created attachment 274258
Patch to improve update-webkit-dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1175618</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-16 19:52:16 -0700</bug_when>
    <thetext>Attachment 274258 did not pass style-queue:


ERROR: Tools/ChangeLog:17:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Tools/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 2 in 3 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>1175620</commentid>
    <comment_count>3</comment_count>
      <attachid>274259</attachid>
    <who name="Jeremy Zerfas">WebKit</who>
    <bug_when>2016-03-16 19:55:36 -0700</bug_when>
    <thetext>Created attachment 274259
Patch to improve update-webkit-dependency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177702</commentid>
    <comment_count>4</comment_count>
      <attachid>274259</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-03-24 10:23:52 -0700</bug_when>
    <thetext>Comment on attachment 274259
Patch to improve update-webkit-dependency.

This seems ok to me.  Brent, could you double check this?  I&apos;m not sure if this will break the ews bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177704</commentid>
    <comment_count>5</comment_count>
      <attachid>274259</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-03-24 10:54:13 -0700</bug_when>
    <thetext>Comment on attachment 274259
Patch to improve update-webkit-dependency.

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

This looks fine to me. We can roll it out if we encounter problems. r=me.

&gt; Tools/Scripts/update-webkit-dependency:197
&gt; +my $prefixDirectoryPathInZipFile = &quot;$file/&quot;.(($prefixInZip eq &quot;.&quot;) ? &quot;&quot; : &quot;$prefixInZip/&quot;);

The use of the UNIX-style slash here *might* be a problem on Windows, but I&apos;m not sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177728</commentid>
    <comment_count>6</comment_count>
      <attachid>274259</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-24 11:42:58 -0700</bug_when>
    <thetext>Comment on attachment 274259
Patch to improve update-webkit-dependency.

Clearing flags on attachment: 274259

Committed r198638: &lt;http://trac.webkit.org/changeset/198638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177729</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-24 11:43:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1177826</commentid>
    <comment_count>8</comment_count>
    <who name="Jeremy Zerfas">WebKit</who>
    <bug_when>2016-03-24 17:59:22 -0700</bug_when>
    <thetext>(In reply to comment #5)

&gt; &gt; Tools/Scripts/update-webkit-dependency:197
&gt; &gt; +my $prefixDirectoryPathInZipFile = &quot;$file/&quot;.(($prefixInZip eq &quot;.&quot;) ? &quot;&quot; : &quot;$prefixInZip/&quot;);
&gt; 
&gt; The use of the UNIX-style slash here *might* be a problem on Windows, but
&gt; I&apos;m not sure.

I was concerned about that too but it turns out that the documentation for the Archive::Zip module says &quot;Regardless of what your local file system uses for file naming, names in a Zip file are in Unix format (forward slashes (/) separating directory names, etc.).&quot; So the use of the forward slashes should work fine and might even be required.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274258</attachid>
            <date>2016-03-16 19:49:42 -0700</date>
            <delta_ts>2016-03-16 19:55:36 -0700</delta_ts>
            <desc>Patch to improve update-webkit-dependency.</desc>
            <filename>Improve update-webkit-dependency script.patch</filename>
            <type>text/plain</type>
            <size>15263</size>
            <attacher name="Jeremy Zerfas">WebKit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5ODMxMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE2LTAzLTE2ICBKZXJlbXkgWmVyZmFzICA8V2ViS2l0QEplcmVteVplcmZh
cy5jb20+CisKKyAgICAgICAgSW1wcm92ZSB1cGRhdGUtd2Via2l0LWRlcGVuZGVuY3kgc2NyaXB0
LgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXQtZGVw
ZW5kZW5jeToKKyAgICAgICAgLVVwZGF0ZWQgc2NyaXB0IHRvIGFsc28gdXNlIEVUYWdzIGZvciBo
ZWxwaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIGRlcGVuZGVuY3kgaXMgdXAgdG8gZGF0ZS4KKyAg
ICAgICAgLVVwZGF0ZWQgc2NyaXB0IHNvIGl0IHVzdWFsbHkgd29uJ3QgbmVlZCB0byBkb3dubG9h
ZCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgZWFjaCB0aW1lIGl0IGlzCisgICAgICAgICByYW4uCisg
ICAgICAgIC1VcGRhdGVkIHNjcmlwdCB0byBlbnN1cmUgemlwIGZpbGUgY29udGFpbnMgZXhwZWN0
ZWQgZGlyZWN0b3JpZXMgYmVmb3JlIHRyeWluZyB0byBpbnN0YWxsLgorICAgICAgICAtQWRkZWQg
c29tZSBtb3JlIGVycm9yIGNoZWNraW5nIGFuZCBpbXByb3ZlZCBlcnJvciBtZXNzYWdlcy4KKyAg
ICAgICAgKGxhc3RNb2RpZmllZFRvVW5peFRpbWUpOiBEZWxldGVkLgorCisgICAgICAgICogU2Ny
aXB0cy91cGRhdGUtd2Via2l0LXdpbmNhaXJvLWxpYnM6CisJCS1Db3JyZWN0ZWQgY29tbWVudCBh
Ym91dCB3aGF0IHNjcmlwdCBkb2VzLgorCiAyMDE2LTAzLTE2ICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTk4MTg3LgpJbmRleDogVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LWRlcGVuZGVuY3kKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LWRlcGVuZGVuY3kJKHJldmlz
aW9uIDE5ODMxMykKKysrIFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1kZXBlbmRlbmN5CSh3
b3JraW5nIGNvcHkpCkBAIC0yLDE5ICsyLDIwIEBACiAKICMgQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAo
QykgMjAxMSBDYXJsIExvYm8uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTYgSmVyZW15IFplcmZhcy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKICMgYXJlIG1ldDoKICMKICMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgogIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogIyAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLiAKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KICMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICMgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRApAQCAtMjcsNyArMjgsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICMgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAot
IyBVcGRhdGVzIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gdGhlIG5ldyBXZWJLaXRBdXhp
bGlhcnlMaWJyYXJ5CisjIFVwZGF0ZXMgYSBkZXBlbmRlbmN5IGZvciB0aGUgZGV2ZWxvcG1lbnQg
ZW52aXJvbm1lbnQuCiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CkBAIC01MSwxMyArNTIs
MTIgQEAgaWYgKCQjQVJHViAhPSAxKSB7CiBVc2FnZToKICAgICAgICAgdXBkYXRlLXdlYmtpdC1k
ZXBlbmRhbmN5IDxVUkwgd2l0aCB0aGUgZGVwZW5kYW5jeSB6aXAgZmlsZT4gPCpwcmVmaXggZGly
IGluc2lkZSB6aXAgd2l0aG91dCBmaWxlbmFtZT4KIAotICAgICAgICAqIElmIGZpbGVuYW1lIGlz
IHJlcXVpcmVtZW50cy56aXAgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUgemlwZmlsZSBhcmUgInJl
cXVpcmVtZW50cy94IiB0aGVuIHByZWZpeCA9ICIuIgotICAgICAgICAqIElmIGZpbGVuYW1lIGlz
IHh5ei56aXAgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUgemlwZmlsZSBhcmUgeHl6L2FiYy94IiB0
aGVuIHByZWZpeCA9ICJhYmMiCisgICAgICAgICogSWYgZmlsZW5hbWUgaXMgcmVxdWlyZW1lbnRz
LnppcCBhbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSB6aXAgZmlsZSBhcmUgInJlcXVpcmVtZW50cy94
IiB0aGVuIHByZWZpeCA9ICIuIgorICAgICAgICAqIElmIGZpbGVuYW1lIGlzIHh5ei56aXAgYW5k
IHRoZSBjb250ZW50cyBvZiB0aGUgemlwIGZpbGUgYXJlIHh5ei9hYmMveCIgdGhlbiBwcmVmaXgg
PSAiYWJjIgogICAgICAgICAqIHggaXMgbGliIG9yIGluY2x1ZGUgb3IgYmluLgogRU9GCiB9CiAK
LXN1YiBsYXN0TW9kaWZpZWRUb1VuaXhUaW1lKCQpOwogc3ViIGdldExpYnJhcnlOYW1lKCQpOwog
CiAjIFRpbWUgaW4gc2Vjb25kcyB0aGF0IHRoZSBuZXcgemlwIGZpbGUgbXVzdCBiZSBuZXdlciB0
aGFuIHRoZSBvbGQgZm9yIHVzIHRvCkBAIC03MSw2OCArNzEsMTE4IEBAIG15ICRsaWJzVVJMID0g
c2hpZnQ7CiBteSAkcHJlZml4SW5aaXAgPSBzaGlmdDsKIG15ICRzb3VyY2VEaXIgPSBzb3VyY2VE
aXIoKTsKIG15ICRmaWxlID0gZ2V0TGlicmFyeU5hbWUoJGxpYnNVUkwpOwotbXkgJHppcEZpbGUg
PSAiJGZpbGUuemlwIjsgCitteSAkemlwRmlsZSA9ICIkZmlsZS56aXAiOwogbXkgJHdlYmtpdExp
YnJhcmllc0RpciA9ICRFTlZ7J1dFQktJVF9MSUJSQVJJRVMnfSB8fCBGaWxlOjpTcGVjLT5jYXRk
aXIoJHNvdXJjZURpciwgIldlYktpdExpYnJhcmllcyIsICJ3aW4iKTsKIG15ICR0bXBSZWxhdGl2
ZURpciA9IEZpbGU6OlRlbXA6OnRlbXBkaXIoIndlYmtpdGxpYnNYWFhYWFhYIiwgVE1QRElSID0+
IDEsIENMRUFOVVAgPT4gMSk7CiBteSAkdG1wQWJzRGlyID0gRmlsZTo6U3BlYy0+cmVsMmFicygk
dG1wUmVsYXRpdmVEaXIpOwogbXkgJHVhID0gTFdQOjpVc2VyQWdlbnQtPm5ldygpOwogJHVhLT5l
bnZfcHJveHk7CiAKLXByaW50ICJDaGVja2luZyBMYXN0LU1vZGlmaWVkIGRhdGUgb2YgJHppcEZp
bGUuLi5cbiI7CitwcmludCAiQ2hlY2tpbmcgZm9yIG5ld2VyIHZlcnNpb24gb2YgJHppcEZpbGUu
Li5cbiI7CiAKLW15ICRyZXNwb25zZSA9ICR1YS0+Z2V0KCRsaWJzVVJMKTsKKyMgSWRlYWxseSB3
ZSBjb3VsZCBqdXN0IHVzZSBhIHByZXZpb3VzIG1vZGlmaWNhdGlvbiB0aW1lIGFuZC9vciBFVGFn
IHRvIGRvIGEgc2luZ2xlIGNvbmRpdGlvbmFsIHJlcXVlc3QgZm9yIHRoZSBmaWxlLAorIyBob3dl
dmVyIHRoZXJlIGFyZSBzb21lIHByb2JsZW1zIHdpdGggdGhpcyBhcHByb2FjaC4gU29tZSBzZXJ2
ZXJzIG1heSBub3Qgc3VwcG9ydCBjb25kaXRpb25hbCByZXF1ZXN0cyAoRHJvcGJveCBhbmQKKyMg
R2l0SHViIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0IGNvbmRpdGlvbmFsIHJlcXVlc3RzIHVzaW5n
IElmLU1vZGlmaWVkLVNpbmNlIGhlYWRlcnMgcGx1cyB0aGV5IGFsc28gZG9uJ3QgZW1pdAorIyBM
YXN0LU1vZGlmaWVkIGhlYWRlcnMgZWl0aGVyKS4gSWYgbWlycm9ycyBhcmUgYmVpbmcgdXNlZCwg
c29tZSBzZXJ2ZXJzIG1heSBoYXZlIGRpZmZlcmVudCBFVGFncyBmb3IgdGhlIHNhbWUgZmlsZS4K
KyMgU29tZSBzZXJ2ZXJzIG1heSBub3QgaW1wbGVtZW50IGNvbmRpdGlvbmFsIHJlcXVlc3RzIHBy
b3Blcmx5LiBFdGMuLi4KKyMKKyMgSW5zdGVhZCB3ZSB3aWxsIGFzc3VtZSB0aGF0IHdlIG5lZWQg
dG8gZG93bmxvYWQgYSBuZXcgdmVyc2lvbiBvZiB0aGUgZmlsZSB1bmxlc3Mgd2UgY2FuIGJlIHJl
YXNvbmFibHkgY2VydGFpbiB0aGF0IHdlCisjIGFscmVhZHkgcHJldmlvdXNseSBnb3QgYW4gdXAg
dG8gZGF0ZSBjb3B5IG9mIHRoZSBmaWxlLiBXZSBjYW4gZG8gdGhpcyBieSBtYWtpbmcgYSBxdWlj
aywgc21hbGwgcmVxdWVzdCB0byBjaGVjayBmb3IKKyMgdGhlIHByZXNlbmNlIG9mIExhc3QtTW9k
aWZpZWQgYW5kL29yIEVUYWcgaGVhZGVycyAob3IgYWx0ZXJuYXRpdmVseSBhIHNlcGFyYXRlICou
aGVhZGVycyBmaWxlIHRoYXQgY29udGFpbnMgYQorIyBMYXN0LU1vZGlmaWVkIGhlYWRlcikgYW5k
IHNlZSBpZiB0aGV5IG1hdGNoIHZhbHVlcyB0aGF0IHdlIG1heSBoYXZlIGdvdHRlbiBwcmV2aW91
c2x5LgorCisjIEl0IHdvdWxkIGJlIG5pY2UgdG8gYmUgYWJsZSB0byBqdXN0IHVzZSBhIEhFQUQg
cmVxdWVzdCBmb3IgdGhpcyBpbml0aWFsIGNoZWNrIGJ1dCBkZXZlbG9wZXIuYXBwbGUuY29tIHJl
dHVybnMgNDAxCisjIGVycm9ycyBmb3IgdGhvc2UgcmVxdWVzdHMuIEluc3RlYWQgd2UgY2FuIGp1
c3Qgc2V0IGEgc2l6ZSBsaW1pdCBmb3IgYSBHRVQgcmVxdWVzdCAod2hpY2ggd2UgY2FuIGFsc28g
c2V0IHRoZSByYW5nZSBmb3IKKyMgdG8gcmVxdWVzdCBqdXN0IHRoZSBmaXJzdCBieXRlKSBzbyB0
aGF0IHdlIGRvbid0IGhhdmUgdG8gcmV0cmlldmUgdGhlIGVudGlyZSBmaWxlLgorJHVhLT5tYXhf
c2l6ZSgwKTsKK215ICRyZXNwb25zZSA9ICR1YS0+Z2V0KCRsaWJzVVJMLCAiUmFuZ2UiLCAiYnl0
ZXM9MC0wIik7CiskdWEtPm1heF9zaXplKHVuZGVmKTsKKworaWYgKCEgJHJlc3BvbnNlLT5pc19z
dWNjZXNzKSB7CisgICAgcHJpbnQgU1RERVJSICJDb3VsZCBub3QgYWNjZXNzICRsaWJzVVJMOlxu
IiwgJHJlc3BvbnNlLT5oZWFkZXJzX2FzX3N0cmluZywgIlxuIjsKKyAgICBwcmludCBTVERFUlIg
IlBsZWFzZSBlbnN1cmUgdGhhdCAkbGlic1VSTCBpcyByZWFjaGFibGUiOworICAgIGlmICgkbGli
c1VSTCA9fiAvXmh0dHBzL2kpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICIgYW5kIHRoYXQgUGVy
bCBjYW4gdXNlIExXUDo6U2ltcGxlIHRvIGNvbm5lY3QgdG8gSFRUUFMgVVJMcy5cbiI7CisgICAg
ICAgIHByaW50IFNUREVSUiAiWW91IG1heSBoYXZlIHRvIHJ1biBcIlwkIGNwYW4gTFdQOjpQcm90
b2NvbDo6aHR0cHNcIiI7CisgICAgfQorICAgIHByaW50IFNUREVSUiAiLlxuIjsKKworICAgIGlm
ICgtZiBGaWxlOjpTcGVjLT5jYXRmaWxlKCR3ZWJraXRMaWJyYXJpZXNEaXIsICIkZmlsZS5oZWFk
ZXJzIikpIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICJGYWxsaW5nIGJhY2sgdG8gZXhpc3Rpbmcg
dmVyc2lvbiBvZiAkZmlsZS5cbiI7CisgICAgICAgIGV4aXQgMDsKKyAgICB9IGVsc2UgeworICAg
ICAgICBwcmludCBTVERFUlIgIk5vIGV4aXN0aW5nIHZlcnNpb24gb2YgJGZpbGUgdG8gZmFsbCBi
YWNrIHRvLlxuIjsKKyAgICAgICAgZXhpdCAxOworICAgIH0KK30KIAotdW5sZXNzICgkcmVzcG9u
c2UtPmlzX3N1Y2Nlc3MpIHsKLSAgICBwcmludCAiQ291bGQgbm90IGFjY2VzcyAkbGlic1VSTDpc
biIgLiAkcmVzcG9uc2UtPmhlYWRlcnNfYXNfc3RyaW5nIC4gIlxuIjsKLSAgICBwcmludCAiWW91
IG1heSBub3QgYmUgY29ubmVjdGVkIHRvIHRoZSBpbnRlcm5ldC4gQXR0ZW1wdGluZyB0byBidWls
ZCB3aXRob3V0IHVwZGF0aW5nLlxuIjsKK215ICRjb250ZW50VHlwZSA9ICRyZXNwb25zZS0+aGVh
ZGVyKCdDb250ZW50LVR5cGUnKTsKKyMgVHJ5IHRvIGRldGVybWluZSB0aGUgZmlsZSBzaXplIGJh
c2VkIG9uIHRoZSBDb250ZW50LVJhbmdlIG9yIENvbnRlbnQtTGVuZ3RoIGhlYWRlcnMuIE5vcm1h
bGx5IHdlIHdpbGwgbmVlZCB0byB1c2UgdGhlCisjIENvbnRlbnQtUmFuZ2UgaGVhZGVyIHNpbmNl
IHdlIGFyZSBqdXN0IHJlcXVlc3RpbmcgYSByYW5nZSBidXQgaWYgdGhlIHNlcnZlciBkb2Vzbid0
IHN1cHBvcnQgcmFuZ2VzIHRoZW4gd2Ugd2lsbCB0cnkKKyMgdXNpbmcgdGhlIENvbnRlbnQtTGVu
Z3RoIGhlYWRlciBpbnN0ZWFkLiBBbHNvIG5vdGUgdGhhdCBuZWl0aGVyIGhlYWRlciBpcyBhZmZl
Y3RlZCBieSB1c2luZyBtYXhfc2l6ZSgpIHRvIGxpbWl0IHRoZQorIyByZXNwb25zZSBzaXplIGFu
ZCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGFsc28gc2hvdWxkbid0IGJlIGFmZmVjdGVkIGZy
b20gdGhlIHVzZSBvZiBIVFRQIGNvbXByZXNzaW9uIHNpbmNlIExXUAorIyBkb2Vzbid0IHVzZSBp
dCBieSBkZWZhdWx0LgorbXkgJGNvbnRlbnRMZW5ndGggPSAkcmVzcG9uc2UtPmhlYWRlcignQ29u
dGVudC1MZW5ndGgnKTsKKyMgSWYgdGhlIENvbnRlbnQtUmFuZ2UgaGVhZGVyIGlzIGRlZmluZWQg
YW5kIGhhcyBhIG51bWJlciBhZnRlciB0aGUgc2xhc2gsIHRoZW4gdGhhdCdzIHRoZSBmaWxlIHNp
emUgd2Ugd2FudC4KK2lmIChkZWZpbmVkICRyZXNwb25zZS0+aGVhZGVyKCdDb250ZW50LVJhbmdl
JykgJiYgJHJlc3BvbnNlLT5oZWFkZXIoJ0NvbnRlbnQtUmFuZ2UnKSA9fiAvXi4rXC8oXGQrKS8p
IHsKKyAgICAkY29udGVudExlbmd0aD0kMTsKK30KK215ICRsYXN0TW9kaWZpZWQgPSAkcmVzcG9u
c2UtPmhlYWRlcignTGFzdC1Nb2RpZmllZCcpOworbXkgJGV0YWcgPSAkcmVzcG9uc2UtPmhlYWRl
cignRVRhZycpOworCitwcmludCAiTG9jYXRlZCBhIGZpbGUiOworcHJpbnQgIiBvZiB0eXBlICRj
b250ZW50VHlwZSIgaWYgZGVmaW5lZCAkY29udGVudFR5cGU7CitwcmludCAiIG9mIHNpemUgJGNv
bnRlbnRMZW5ndGgiIGlmIGRlZmluZWQgJGNvbnRlbnRMZW5ndGg7CitwcmludCAiLlxuIjsKKwor
IyBHZXQgYW55IG9sZCBoZWFkZXJzIHRoYXQgYXJlIGF2YWlsYWJsZS4KK215ICRvbGRMYXN0TW9k
aWZpZWQ7CitteSAkb2xkRVRhZzsKK2lmIChvcGVuIE9MREhFQURFUlNGSUxFLCAiPCIsIEZpbGU6
OlNwZWMtPmNhdGZpbGUoJHdlYmtpdExpYnJhcmllc0RpciwgIiRmaWxlLmhlYWRlcnMiKSkgewor
ICAgIGxvY2FsICQvID0gdW5kZWY7CisgICAgbXkgJG9sZEhlYWRlcnMgPSA8T0xESEVBREVSU0ZJ
TEU+OworICAgIGNsb3NlIE9MREhFQURFUlNGSUxFOworCisgICAgKCRvbGRMYXN0TW9kaWZpZWQp
ID0gJG9sZEhlYWRlcnMgPX4gL15MYXN0LU1vZGlmaWVkOiAoLispJC9taTsKKyAgICAoJG9sZEVU
YWcpID0gJG9sZEhlYWRlcnMgPX4gL15FVGFnOiAoLispJC9taTsKK30KKworIyBJZiB3ZSBoYXZl
IG1hdGNoaW5nIG9sZCBhbmQgbmV3IEVUYWdzLCB0aGVuIHRoYXQgaXMgYSB2ZXJ5IGdvb2QgaW5k
aWNhdGlvbiB0aGF0IHdlIGFscmVhZHkgaGFkIGdvdHRlbiBhbiB1cCB0byBkYXRlCisjIGNvcHkg
b2YgdGhlIGZpbGUgcHJldmlvdXNseS4gT24gdGhlIG90aGVyIGhhbmQgaWYgd2UgaGF2ZSBFVGFn
cyB0aGF0IGRvbid0IG1hdGNoLCB0aGF0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgaW5kaWNhdGUKKyMg
dGhhdCB0aGUgZmlsZXMgYXJlIGRpZmZlcmVudCBzaW5jZSBkaWZmZXJlbnQgc2VydmVycyBtYXkg
Y29tcHV0ZSBkaWZmZXJlbnQgRVRhZ3MgZm9yIHRoZSBzYW1lIGZpbGUuIElmIHRoZXkgZG9uJ3QK
KyMgbWF0Y2ggd2Ugd2lsbCBjb250aW51ZSB0byBzZWUgaWYgd2UgY2FuIHNraXAgZG93bmxvYWRp
bmcgdGhlIGZpbGUgdmlhIG90aGVyIHRlc3RzLgoraWYgKGRlZmluZWQgJGV0YWcgJiYgZGVmaW5l
ZCAkb2xkRVRhZyAmJiAkZXRhZyBlcSAkb2xkRVRhZykgeworICAgIHByaW50ICJDdXJyZW50ICRm
aWxlIGlzIHVwIHRvIGRhdGUuXG4iOwogICAgIGV4aXQgMDsKIH0KIAotbXkgJGNvbnRlbnRfdHlw
ZSA9ICRyZXNwb25zZS0+aGVhZGVyKCdDb250ZW50LVR5cGUnKTsKLW15ICRkb2N1bWVudF9sZW5n
dGggPSAkcmVzcG9uc2UtPmhlYWRlcignQ29udGVudC1MZW5ndGgnKTsKLW15ICRtb2RpZmllZF90
aW1lID0gc3RyMnRpbWUoJHJlc3BvbnNlLT5oZWFkZXIoJ0xhc3QtTW9kaWZpZWQnKSk7IAotCi1p
ZiAoZGVmaW5lZCAkbW9kaWZpZWRfdGltZSkgewotICAgIHByaW50IFNUREVSUiAiTG9jYXRlZCBh
IGZpbGUgb2YgdHlwZSAkY29udGVudF90eXBlLCBvZiBzaXplICRkb2N1bWVudF9sZW5ndGguXG4i
OwotICAgIG9wZW4gTkVXLCAiPiIsIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcEFic0RpciwgIiRm
aWxlLmhlYWRlcnMiKTsKLSAgICBwcmludCBORVcgIkxhc3QtTW9kaWZpZWQ6ICIgLiB0aW1lMnN0
cigkbW9kaWZpZWRfdGltZSkgLiAiXG4iOwotICAgIGNsb3NlIE5FVzsKLX0gZWxzZSB7Ci0gICAg
I05vdGU6IE5laXRoZXIgR2l0SHViIG5vciBEcm9wQm94IGVtaXQgdGhlIExhc3QtTW9kaWZpZWQg
SFRUUCBoZWFkZXIsIHNvIGZhbGwgYmFjayB0byBhIGZpbGUKLQkjY29udGFpbmluZyB0aGUgbmVj
ZXNzYXJ5IGluZm9ybWF0aW9uIGlmIHdlIGRvIG5vdCByZWNlaXZlIHRoZSBpbmZvcm1hdGlvbiBp
biBvdXIgaW5pdGlhbCBxdWVyeS4KKyMgSWYgb24gdGhlIGluaXRpYWwgcmVxdWVzdCB3ZSBkaWRu
J3QgZ2V0IGEgTGFzdC1Nb2RpZmllZCBoZWFkZXIsIHRoZW4gd2Ugd2lsbCB0cnkgZ2V0dGluZyB0
aGUgTGFzdC1Nb2RpZmllZCBoZWFkZXIgZnJvbQorIyBhIHNlcGFyYXRlICouaGVhZGVycyBmaWxl
IHRoYXQgbWF5IGhhdmUgYmVlbiBwdXQgb24gdGhlIHNlcnZlci4KK2lmICghIGRlZmluZWQgJGxh
c3RNb2RpZmllZCkgewogICAgIG15ICRoZWFkZXJVUkwgPSAkbGlic1VSTDsKICAgICAkaGVhZGVy
VVJMID1+IHMvXC56aXAkL1wuaGVhZGVycy87CiAKLSAgICBteSAkcmVzdWx0ID0gZ2V0c3RvcmUo
JGhlYWRlclVSTCwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdG1wQWJzRGlyLCAiJGZpbGUuaGVhZGVy
cyIpKTsKKyAgICAkcmVzcG9uc2UgPSAkdWEtPmdldCgkaGVhZGVyVVJMKTsKIAotICAgIGlmICgh
aXNfc3VjY2VzcygkcmVzdWx0KSkgewotICAgICAgICBwcmludCBTVERFUlIgIkNvdWxkbid0IGNo
ZWNrIExhc3QtTW9kaWZpZWQgZGF0ZSBvZiBuZXcgJHppcEZpbGUuXG4iOwotICAgICAgICBwcmlu
dCBTVERFUlIgIlJlc3BvbnNlIHdhczogJHJlc3VsdC5cbiI7Ci0gICAgICAgIHByaW50IFNUREVS
UiAiUGxlYXNlIGVuc3VyZSB0aGF0IFBlcmwgY2FuIHVzZSBMV1A6OlNpbXBsZSB0byBjb25uZWN0
IHRvIEhUVFBTIHVybHMsIGFuZCB0aGF0ICRsaWJzVVJMIGlzIHJlYWNoYWJsZS5cbiI7Ci0gICAg
ICAgIHByaW50IFNUREVSUiAiWW91IG1heSBoYXZlIHRvIHJ1biBcJCBjcGFuIExXUDo6UHJvdG9j
b2w6Omh0dHBzXG4iOwotCi0gICAgICAgIGlmICghIC1mIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHdl
YmtpdExpYnJhcmllc0RpciwgIiRmaWxlLmhlYWRlcnMiKSkgewotICAgICAgICAgICAgcHJpbnQg
U1RERVJSICJVbmFibGUgdG8gY2hlY2sgTGFzdC1Nb2RpZmllZCBkYXRlIGFuZCBubyB2ZXJzaW9u
IG9mICRmaWxlIHRvIGZhbGwgYmFjayB0by5cbiI7Ci0gICAgICAgICAgICBleGl0IDE7CisgICAg
aWYgKCEgJHJlc3BvbnNlLT5pc19zdWNjZXNzKSB7CisgICAgICAgIHByaW50IFNUREVSUiAiQ291
bGQgbm90IGFjY2VzcyAkaGVhZGVyVVJMOlxuIiwgJHJlc3BvbnNlLT5oZWFkZXJzX2FzX3N0cmlu
ZywgIlxuIjsKKyAgICAgICAgcHJpbnQgU1RERVJSICJQbGVhc2UgZW5zdXJlIHRoYXQgJGhlYWRl
clVSTCBpcyByZWFjaGFibGUiOworICAgICAgICBpZiAoJGhlYWRlclVSTCA9fiAvXmh0dHBzL2kp
IHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiIGFuZCB0aGF0IFBlcmwgY2FuIHVzZSBMV1A6
OlNpbXBsZSB0byBjb25uZWN0IHRvIEhUVFBTIFVSTHMuXG4iOworICAgICAgICAgICAgcHJpbnQg
U1RERVJSICJZb3UgbWF5IGhhdmUgdG8gcnVuIFwiXCQgY3BhbiBMV1A6OlByb3RvY29sOjpodHRw
c1wiIjsKICAgICAgICAgfQotCi0gICAgICAgIHByaW50IFNUREVSUiAiRmFsbGluZyBiYWNrIHRv
IGV4aXN0aW5nIHZlcnNpb24gb2YgJGZpbGUuXG4iOwotICAgICAgICBleGl0IDA7CisgICAgICAg
IHByaW50IFNUREVSUiAiLlxuIjsKICAgICB9CisKKyAgICAoJGxhc3RNb2RpZmllZCkgPSAkcmVz
cG9uc2UtPmNvbnRlbnQgPX4gL15MYXN0LU1vZGlmaWVkOiAoLispJC9taTsKIH0KIAotaWYgKG9w
ZW4gTkVXLCBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0bXBBYnNEaXIsICIkZmlsZS5oZWFkZXJzIikp
IHsKLSAgICBteSAkbmV3ID0gbGFzdE1vZGlmaWVkVG9Vbml4VGltZSg8TkVXPik7Ci0gICAgY2xv
c2UgTkVXOwotCi0gICAgaWYgKGRlZmluZWQgJG5ldyAmJiBvcGVuIE9MRCwgRmlsZTo6U3BlYy0+
Y2F0ZmlsZSgkd2Via2l0TGlicmFyaWVzRGlyLCAiJGZpbGUuaGVhZGVycyIpKSB7Ci0gICAgICAg
IG15ICRvbGQgPSBsYXN0TW9kaWZpZWRUb1VuaXhUaW1lKDxPTEQ+KTsKLSAgICAgICAgY2xvc2Ug
T0xEOwotICAgICAgICBpZiAoZGVmaW5lZCAkb2xkICYmIGFicygkbmV3IC0gJG9sZCkgPCAkbmV3
bmVzc1RocmVzaG9sZCkgewotICAgICAgICAgICAgcHJpbnQgIkN1cnJlbnQgJGZpbGUgaXMgdXAg
dG8gZGF0ZVxuIjsKLSAgICAgICAgICAgIGV4aXQgMDsKLSAgICAgICAgfQotICAgIH0KK215ICRs
YXN0TW9kaWZpZWRUaW1lID0gc3RyMnRpbWUoJGxhc3RNb2RpZmllZCk7CitteSAkb2xkTGFzdE1v
ZGlmaWVkVGltZSA9IHN0cjJ0aW1lKCRvbGRMYXN0TW9kaWZpZWQpOworaWYgKGRlZmluZWQgJGxh
c3RNb2RpZmllZFRpbWUgJiYgZGVmaW5lZCAkb2xkTGFzdE1vZGlmaWVkVGltZQorICAgICYmIGFi
cygkbGFzdE1vZGlmaWVkVGltZS0kb2xkTGFzdE1vZGlmaWVkVGltZSkgPCAkbmV3bmVzc1RocmVz
aG9sZCkgeworICAgIHByaW50ICJDdXJyZW50ICRmaWxlIGlzIHVwIHRvIGRhdGUuXG4iOworICAg
IGV4aXQgMDsKIH0KIAogcHJpbnQgIkRvd25sb2FkaW5nICR6aXBGaWxlLi4uXG5cbiI7CkBAIC0x
NDEsNiArMTkxLDIyIEBAIG15ICRyZXN1bHQgPSBnZXRzdG9yZSgkbGlic1VSTCwgRmlsZTo6U3AK
IGRpZSAiQ291bGRuJ3QgZG93bmxvYWQgJHppcEZpbGUhIiBpZiBpc19lcnJvcigkcmVzdWx0KTsK
IAogbXkgJHppcCA9IEFyY2hpdmU6OlppcC0+bmV3KEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcEFi
c0RpciwgJHppcEZpbGUpKTsKKworIyBNYWtlIHN1cmUgdGhlIHppcCBmaWxlIGNvbnRhaW5zIGEg
ZGlyZWN0b3J5IHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgemlwIGZpbGUgKG1pbnVzIHRoZSBl
eHRlbnNpb24pIGFuZCBhIHByZWZpeAorIyBkaXJlY3RvcnkgaWYgYXBwbGljYWJsZS4KK215ICRw
cmVmaXhEaXJlY3RvcnlQYXRoSW5aaXBGaWxlID0gIiRmaWxlLyIuKCgkcHJlZml4SW5aaXAgZXEg
Ii4iKSA/ICIiIDogIiRwcmVmaXhJblppcC8iKTsKK2lmICghICR6aXAtPm1lbWJlck5hbWVkKCRw
cmVmaXhEaXJlY3RvcnlQYXRoSW5aaXBGaWxlKSkgeworICAgIHByaW50IFNUREVSUiAiQ291bGRu
J3QgZmluZCAkcHJlZml4RGlyZWN0b3J5UGF0aEluWmlwRmlsZSBkaXJlY3RvcnkgaW4gemlwIGZp
bGUuXG4iOworCisgICAgaWYgKC1mIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHdlYmtpdExpYnJhcmll
c0RpciwgIiRmaWxlLmhlYWRlcnMiKSkgeworICAgICAgICBwcmludCBTVERFUlIgIkZhbGxpbmcg
YmFjayB0byBleGlzdGluZyB2ZXJzaW9uIG9mICRmaWxlLlxuIjsKKyAgICAgICAgZXhpdCAwOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50IFNUREVSUiAiTm8gZXhpc3RpbmcgdmVyc2lvbiBv
ZiAkZmlsZSB0byBmYWxsIGJhY2sgdG8uXG4iOworICAgICAgICBleGl0IDE7CisgICAgfQorfQor
CiAkcmVzdWx0ID0gJHppcC0+ZXh0cmFjdFRyZWUoIiIsICR0bXBBYnNEaXIpOwogZGllICJDb3Vs
ZG4ndCB1bnppcCAkemlwRmlsZS4iIGlmICRyZXN1bHQgIT0gQVpfT0s7CiAKQEAgLTE2MSwyNCAr
MjI3LDIwIEBAIHN1YiB3YW50ZWQKIAogRmlsZTo6RmluZDo6ZmluZChcJndhbnRlZCwgRmlsZTo6
U3BlYy0+Y2F0ZmlsZSgkdG1wQWJzRGlyLCAkZmlsZSkpOwogCi0kcmVzdWx0ID0gbW92ZShGaWxl
OjpTcGVjLT5jYXRmaWxlKCR0bXBBYnNEaXIsICIkZmlsZS5oZWFkZXJzIiksICR3ZWJraXRMaWJy
YXJpZXNEaXIpOwotcHJpbnQgU1RERVJSICJDb3VsZG4ndCBtb3ZlICRmaWxlLmhlYWRlcnMgdG8g
JHdlYmtpdExpYnJhcmllc0RpciIgLiAiLlxuIiBpZiAkcmVzdWx0ID09IDA7CitpZiAob3BlbiBI
RUFERVJTRklMRSwgIj4iLCBGaWxlOjpTcGVjLT5jYXRmaWxlKCR3ZWJraXRMaWJyYXJpZXNEaXIs
ICIkZmlsZS5oZWFkZXJzIikpIHsKKyAgICBwcmludCBIRUFERVJTRklMRSAiTGFzdC1Nb2RpZmll
ZDogJGxhc3RNb2RpZmllZFxuIiBpZiBkZWZpbmVkICRsYXN0TW9kaWZpZWQ7CisgICAgcHJpbnQg
SEVBREVSU0ZJTEUgIkVUYWc6ICRldGFnXG4iIGlmIGRlZmluZWQgJGV0YWc7CisgICAgY2xvc2Ug
SEVBREVSU0ZJTEU7Cit9IGVsc2UgeworICAgIHByaW50IFNUREVSUiAiQ291bGRuJ3Qgd3JpdGUg
JGZpbGUuaGVhZGVycyB0byAkd2Via2l0TGlicmFyaWVzRGlyLlxuIgorfQogCiBwcmludCAiVGhl
ICRmaWxlIGhhcyBiZWVuIHN1Y2Vzc2Z1bGx5IGluc3RhbGxlZCBpblxuICR3ZWJraXRMaWJyYXJp
ZXNEaXJcbiI7CiBleGl0OwogCi1zdWIgbGFzdE1vZGlmaWVkVG9Vbml4VGltZSgkKQotewotICAg
IG15ICgkc3RyKSA9IEBfOwotCi0gICAgJHN0ciA9fiAvXkxhc3QtTW9kaWZpZWQ6ICguKikkLyBv
ciByZXR1cm47Ci0gICAgcmV0dXJuIHN0cjJ0aW1lKCQxKTsKLX0KLQogc3ViIGdldExpYnJhcnlO
YW1lKCQpCiB7CiAgICAgbXkgJHVybCA9IHNoaWZ0OwogICAgICR1cmwgPX4gbSMvKFteL10rKVwu
emlwJCM7CiAgICAgcmV0dXJuICQxOwogfQotCkluZGV4OiBUb29scy9TY3JpcHRzL3VwZGF0ZS13
ZWJraXQtd2luY2Fpcm8tbGlicwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3VwZGF0ZS13
ZWJraXQtd2luY2Fpcm8tbGlicwkocmV2aXNpb24gMTk4MzEzKQorKysgVG9vbHMvU2NyaXB0cy91
cGRhdGUtd2Via2l0LXdpbmNhaXJvLWxpYnMJKHdvcmtpbmcgY29weSkKQEAgLTgsMTMgKzgsMTMg
QEAKICMgYXJlIG1ldDoKICMKICMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgog
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKICMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KICMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgogIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMg
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KICMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMjcs
NyArMjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIyBVcGRhdGVzIGEg
ZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gdGhlIG5ldyBXZWJLaXRBdXhpbGlhcnlMaWJyYXJ5
CisjIFVwZGF0ZXMgYSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0byB0aGUgbmV3IFdpbkNhaXJv
UmVxdWlyZW1lbnRzLgogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274259</attachid>
            <date>2016-03-16 19:55:36 -0700</date>
            <delta_ts>2016-03-24 11:42:58 -0700</delta_ts>
            <desc>Patch to improve update-webkit-dependency.</desc>
            <filename>Improve update-webkit-dependency script.patch</filename>
            <type>text/plain</type>
            <size>15290</size>
            <attacher name="Jeremy Zerfas">WebKit</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE5ODMxMykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIxIEBACisyMDE2LTAzLTE2ICBKZXJlbXkgWmVyZmFzICA8V2ViS2l0QEplcmVteVplcmZh
cy5jb20+CisKKyAgICAgICAgSW1wcm92ZSB1cGRhdGUtd2Via2l0LWRlcGVuZGVuY3kgc2NyaXB0
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1NTc2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3VwZGF0ZS13ZWJraXQtZGVwZW5kZW5jeToKKyAgICAgICAgLVVwZGF0ZWQgc2NyaXB0IHRv
IGFsc28gdXNlIEVUYWdzIGZvciBoZWxwaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIGRlcGVuZGVu
Y3kgaXMgdXAgdG8gZGF0ZS4KKyAgICAgICAgLVVwZGF0ZWQgc2NyaXB0IHNvIGl0IHVzdWFsbHkg
d29uJ3QgbmVlZCB0byBkb3dubG9hZCB0aGUgZW50aXJlIGRlcGVuZGVuY3kgZWFjaCB0aW1lIGl0
IGlzCisgICAgICAgICByYW4uCisgICAgICAgIC1VcGRhdGVkIHNjcmlwdCB0byBlbnN1cmUgemlw
IGZpbGUgY29udGFpbnMgZXhwZWN0ZWQgZGlyZWN0b3JpZXMgYmVmb3JlIHRyeWluZyB0byBpbnN0
YWxsLgorICAgICAgICAtQWRkZWQgc29tZSBtb3JlIGVycm9yIGNoZWNraW5nIGFuZCBpbXByb3Zl
ZCBlcnJvciBtZXNzYWdlcy4KKyAgICAgICAgKGxhc3RNb2RpZmllZFRvVW5peFRpbWUpOiBEZWxl
dGVkLgorCisgICAgICAgICogU2NyaXB0cy91cGRhdGUtd2Via2l0LXdpbmNhaXJvLWxpYnM6Cisg
ICAgICAgIC1Db3JyZWN0ZWQgY29tbWVudCBhYm91dCB3aGF0IHNjcmlwdCBkb2VzLgorCiAyMDE2
LTAzLTE2ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTk4MTg3LgpJbmRleDogVG9vbHMvU2NyaXB0cy91
cGRhdGUtd2Via2l0LWRlcGVuZGVuY3kKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy91cGRh
dGUtd2Via2l0LWRlcGVuZGVuY3kJKHJldmlzaW9uIDE5ODMxMykKKysrIFRvb2xzL1NjcmlwdHMv
dXBkYXRlLXdlYmtpdC1kZXBlbmRlbmN5CSh3b3JraW5nIGNvcHkpCkBAIC0yLDE5ICsyLDIwIEBA
CiAKICMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMSBDYXJsIExvYm8uICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTYgSmVyZW15IFplcmZhcy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKICMgYXJlIG1ldDoKICMK
ICMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICMg
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgogIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMgICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICMKICMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKICMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMjcsNyArMjgsNyBAQAogIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIyBVcGRhdGVzIGEgZGV2ZWxvcG1lbnQgZW52aXJv
bm1lbnQgdG8gdGhlIG5ldyBXZWJLaXRBdXhpbGlhcnlMaWJyYXJ5CisjIFVwZGF0ZXMgYSBkZXBl
bmRlbmN5IGZvciB0aGUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCiAKIHVzZSBzdHJpY3Q7CiB1
c2Ugd2FybmluZ3M7CkBAIC01MSwxMyArNTIsMTIgQEAgaWYgKCQjQVJHViAhPSAxKSB7CiBVc2Fn
ZToKICAgICAgICAgdXBkYXRlLXdlYmtpdC1kZXBlbmRhbmN5IDxVUkwgd2l0aCB0aGUgZGVwZW5k
YW5jeSB6aXAgZmlsZT4gPCpwcmVmaXggZGlyIGluc2lkZSB6aXAgd2l0aG91dCBmaWxlbmFtZT4K
IAotICAgICAgICAqIElmIGZpbGVuYW1lIGlzIHJlcXVpcmVtZW50cy56aXAgYW5kIHRoZSBjb250
ZW50cyBvZiB0aGUgemlwZmlsZSBhcmUgInJlcXVpcmVtZW50cy94IiB0aGVuIHByZWZpeCA9ICIu
IgotICAgICAgICAqIElmIGZpbGVuYW1lIGlzIHh5ei56aXAgYW5kIHRoZSBjb250ZW50cyBvZiB0
aGUgemlwZmlsZSBhcmUgeHl6L2FiYy94IiB0aGVuIHByZWZpeCA9ICJhYmMiCisgICAgICAgICog
SWYgZmlsZW5hbWUgaXMgcmVxdWlyZW1lbnRzLnppcCBhbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSB6
aXAgZmlsZSBhcmUgInJlcXVpcmVtZW50cy94IiB0aGVuIHByZWZpeCA9ICIuIgorICAgICAgICAq
IElmIGZpbGVuYW1lIGlzIHh5ei56aXAgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUgemlwIGZpbGUg
YXJlIHh5ei9hYmMveCIgdGhlbiBwcmVmaXggPSAiYWJjIgogICAgICAgICAqIHggaXMgbGliIG9y
IGluY2x1ZGUgb3IgYmluLgogRU9GCiB9CiAKLXN1YiBsYXN0TW9kaWZpZWRUb1VuaXhUaW1lKCQp
Owogc3ViIGdldExpYnJhcnlOYW1lKCQpOwogCiAjIFRpbWUgaW4gc2Vjb25kcyB0aGF0IHRoZSBu
ZXcgemlwIGZpbGUgbXVzdCBiZSBuZXdlciB0aGFuIHRoZSBvbGQgZm9yIHVzIHRvCkBAIC03MSw2
OCArNzEsMTE4IEBAIG15ICRsaWJzVVJMID0gc2hpZnQ7CiBteSAkcHJlZml4SW5aaXAgPSBzaGlm
dDsKIG15ICRzb3VyY2VEaXIgPSBzb3VyY2VEaXIoKTsKIG15ICRmaWxlID0gZ2V0TGlicmFyeU5h
bWUoJGxpYnNVUkwpOwotbXkgJHppcEZpbGUgPSAiJGZpbGUuemlwIjsgCitteSAkemlwRmlsZSA9
ICIkZmlsZS56aXAiOwogbXkgJHdlYmtpdExpYnJhcmllc0RpciA9ICRFTlZ7J1dFQktJVF9MSUJS
QVJJRVMnfSB8fCBGaWxlOjpTcGVjLT5jYXRkaXIoJHNvdXJjZURpciwgIldlYktpdExpYnJhcmll
cyIsICJ3aW4iKTsKIG15ICR0bXBSZWxhdGl2ZURpciA9IEZpbGU6OlRlbXA6OnRlbXBkaXIoIndl
YmtpdGxpYnNYWFhYWFhYIiwgVE1QRElSID0+IDEsIENMRUFOVVAgPT4gMSk7CiBteSAkdG1wQWJz
RGlyID0gRmlsZTo6U3BlYy0+cmVsMmFicygkdG1wUmVsYXRpdmVEaXIpOwogbXkgJHVhID0gTFdQ
OjpVc2VyQWdlbnQtPm5ldygpOwogJHVhLT5lbnZfcHJveHk7CiAKLXByaW50ICJDaGVja2luZyBM
YXN0LU1vZGlmaWVkIGRhdGUgb2YgJHppcEZpbGUuLi5cbiI7CitwcmludCAiQ2hlY2tpbmcgZm9y
IG5ld2VyIHZlcnNpb24gb2YgJHppcEZpbGUuLi5cbiI7CiAKLW15ICRyZXNwb25zZSA9ICR1YS0+
Z2V0KCRsaWJzVVJMKTsKKyMgSWRlYWxseSB3ZSBjb3VsZCBqdXN0IHVzZSBhIHByZXZpb3VzIG1v
ZGlmaWNhdGlvbiB0aW1lIGFuZC9vciBFVGFnIHRvIGRvIGEgc2luZ2xlIGNvbmRpdGlvbmFsIHJl
cXVlc3QgZm9yIHRoZSBmaWxlLAorIyBob3dldmVyIHRoZXJlIGFyZSBzb21lIHByb2JsZW1zIHdp
dGggdGhpcyBhcHByb2FjaC4gU29tZSBzZXJ2ZXJzIG1heSBub3Qgc3VwcG9ydCBjb25kaXRpb25h
bCByZXF1ZXN0cyAoRHJvcGJveCBhbmQKKyMgR2l0SHViIGRvbid0IGN1cnJlbnRseSBzdXBwb3J0
IGNvbmRpdGlvbmFsIHJlcXVlc3RzIHVzaW5nIElmLU1vZGlmaWVkLVNpbmNlIGhlYWRlcnMgcGx1
cyB0aGV5IGFsc28gZG9uJ3QgZW1pdAorIyBMYXN0LU1vZGlmaWVkIGhlYWRlcnMgZWl0aGVyKS4g
SWYgbWlycm9ycyBhcmUgYmVpbmcgdXNlZCwgc29tZSBzZXJ2ZXJzIG1heSBoYXZlIGRpZmZlcmVu
dCBFVGFncyBmb3IgdGhlIHNhbWUgZmlsZS4KKyMgU29tZSBzZXJ2ZXJzIG1heSBub3QgaW1wbGVt
ZW50IGNvbmRpdGlvbmFsIHJlcXVlc3RzIHByb3Blcmx5LiBFdGMuLi4KKyMKKyMgSW5zdGVhZCB3
ZSB3aWxsIGFzc3VtZSB0aGF0IHdlIG5lZWQgdG8gZG93bmxvYWQgYSBuZXcgdmVyc2lvbiBvZiB0
aGUgZmlsZSB1bmxlc3Mgd2UgY2FuIGJlIHJlYXNvbmFibHkgY2VydGFpbiB0aGF0IHdlCisjIGFs
cmVhZHkgcHJldmlvdXNseSBnb3QgYW4gdXAgdG8gZGF0ZSBjb3B5IG9mIHRoZSBmaWxlLiBXZSBj
YW4gZG8gdGhpcyBieSBtYWtpbmcgYSBxdWljaywgc21hbGwgcmVxdWVzdCB0byBjaGVjayBmb3IK
KyMgdGhlIHByZXNlbmNlIG9mIExhc3QtTW9kaWZpZWQgYW5kL29yIEVUYWcgaGVhZGVycyAob3Ig
YWx0ZXJuYXRpdmVseSBhIHNlcGFyYXRlICouaGVhZGVycyBmaWxlIHRoYXQgY29udGFpbnMgYQor
IyBMYXN0LU1vZGlmaWVkIGhlYWRlcikgYW5kIHNlZSBpZiB0aGV5IG1hdGNoIHZhbHVlcyB0aGF0
IHdlIG1heSBoYXZlIGdvdHRlbiBwcmV2aW91c2x5LgorCisjIEl0IHdvdWxkIGJlIG5pY2UgdG8g
YmUgYWJsZSB0byBqdXN0IHVzZSBhIEhFQUQgcmVxdWVzdCBmb3IgdGhpcyBpbml0aWFsIGNoZWNr
IGJ1dCBkZXZlbG9wZXIuYXBwbGUuY29tIHJldHVybnMgNDAxCisjIGVycm9ycyBmb3IgdGhvc2Ug
cmVxdWVzdHMuIEluc3RlYWQgd2UgY2FuIGp1c3Qgc2V0IGEgc2l6ZSBsaW1pdCBmb3IgYSBHRVQg
cmVxdWVzdCAod2hpY2ggd2UgY2FuIGFsc28gc2V0IHRoZSByYW5nZSBmb3IKKyMgdG8gcmVxdWVz
dCBqdXN0IHRoZSBmaXJzdCBieXRlKSBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcmV0cmlldmUg
dGhlIGVudGlyZSBmaWxlLgorJHVhLT5tYXhfc2l6ZSgwKTsKK215ICRyZXNwb25zZSA9ICR1YS0+
Z2V0KCRsaWJzVVJMLCAiUmFuZ2UiLCAiYnl0ZXM9MC0wIik7CiskdWEtPm1heF9zaXplKHVuZGVm
KTsKKworaWYgKCEgJHJlc3BvbnNlLT5pc19zdWNjZXNzKSB7CisgICAgcHJpbnQgU1RERVJSICJD
b3VsZCBub3QgYWNjZXNzICRsaWJzVVJMOlxuIiwgJHJlc3BvbnNlLT5oZWFkZXJzX2FzX3N0cmlu
ZywgIlxuIjsKKyAgICBwcmludCBTVERFUlIgIlBsZWFzZSBlbnN1cmUgdGhhdCAkbGlic1VSTCBp
cyByZWFjaGFibGUiOworICAgIGlmICgkbGlic1VSTCA9fiAvXmh0dHBzL2kpIHsKKyAgICAgICAg
cHJpbnQgU1RERVJSICIgYW5kIHRoYXQgUGVybCBjYW4gdXNlIExXUDo6U2ltcGxlIHRvIGNvbm5l
Y3QgdG8gSFRUUFMgVVJMcy5cbiI7CisgICAgICAgIHByaW50IFNUREVSUiAiWW91IG1heSBoYXZl
IHRvIHJ1biBcIlwkIGNwYW4gTFdQOjpQcm90b2NvbDo6aHR0cHNcIiI7CisgICAgfQorICAgIHBy
aW50IFNUREVSUiAiLlxuIjsKKworICAgIGlmICgtZiBGaWxlOjpTcGVjLT5jYXRmaWxlKCR3ZWJr
aXRMaWJyYXJpZXNEaXIsICIkZmlsZS5oZWFkZXJzIikpIHsKKyAgICAgICAgcHJpbnQgU1RERVJS
ICJGYWxsaW5nIGJhY2sgdG8gZXhpc3RpbmcgdmVyc2lvbiBvZiAkZmlsZS5cbiI7CisgICAgICAg
IGV4aXQgMDsKKyAgICB9IGVsc2UgeworICAgICAgICBwcmludCBTVERFUlIgIk5vIGV4aXN0aW5n
IHZlcnNpb24gb2YgJGZpbGUgdG8gZmFsbCBiYWNrIHRvLlxuIjsKKyAgICAgICAgZXhpdCAxOwor
ICAgIH0KK30KIAotdW5sZXNzICgkcmVzcG9uc2UtPmlzX3N1Y2Nlc3MpIHsKLSAgICBwcmludCAi
Q291bGQgbm90IGFjY2VzcyAkbGlic1VSTDpcbiIgLiAkcmVzcG9uc2UtPmhlYWRlcnNfYXNfc3Ry
aW5nIC4gIlxuIjsKLSAgICBwcmludCAiWW91IG1heSBub3QgYmUgY29ubmVjdGVkIHRvIHRoZSBp
bnRlcm5ldC4gQXR0ZW1wdGluZyB0byBidWlsZCB3aXRob3V0IHVwZGF0aW5nLlxuIjsKK215ICRj
b250ZW50VHlwZSA9ICRyZXNwb25zZS0+aGVhZGVyKCdDb250ZW50LVR5cGUnKTsKKyMgVHJ5IHRv
IGRldGVybWluZSB0aGUgZmlsZSBzaXplIGJhc2VkIG9uIHRoZSBDb250ZW50LVJhbmdlIG9yIENv
bnRlbnQtTGVuZ3RoIGhlYWRlcnMuIE5vcm1hbGx5IHdlIHdpbGwgbmVlZCB0byB1c2UgdGhlCisj
IENvbnRlbnQtUmFuZ2UgaGVhZGVyIHNpbmNlIHdlIGFyZSBqdXN0IHJlcXVlc3RpbmcgYSByYW5n
ZSBidXQgaWYgdGhlIHNlcnZlciBkb2Vzbid0IHN1cHBvcnQgcmFuZ2VzIHRoZW4gd2Ugd2lsbCB0
cnkKKyMgdXNpbmcgdGhlIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBpbnN0ZWFkLiBBbHNvIG5vdGUg
dGhhdCBuZWl0aGVyIGhlYWRlciBpcyBhZmZlY3RlZCBieSB1c2luZyBtYXhfc2l6ZSgpIHRvIGxp
bWl0IHRoZQorIyByZXNwb25zZSBzaXplIGFuZCB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyIGFs
c28gc2hvdWxkbid0IGJlIGFmZmVjdGVkIGZyb20gdGhlIHVzZSBvZiBIVFRQIGNvbXByZXNzaW9u
IHNpbmNlIExXUAorIyBkb2Vzbid0IHVzZSBpdCBieSBkZWZhdWx0LgorbXkgJGNvbnRlbnRMZW5n
dGggPSAkcmVzcG9uc2UtPmhlYWRlcignQ29udGVudC1MZW5ndGgnKTsKKyMgSWYgdGhlIENvbnRl
bnQtUmFuZ2UgaGVhZGVyIGlzIGRlZmluZWQgYW5kIGhhcyBhIG51bWJlciBhZnRlciB0aGUgc2xh
c2gsIHRoZW4gdGhhdCdzIHRoZSBmaWxlIHNpemUgd2Ugd2FudC4KK2lmIChkZWZpbmVkICRyZXNw
b25zZS0+aGVhZGVyKCdDb250ZW50LVJhbmdlJykgJiYgJHJlc3BvbnNlLT5oZWFkZXIoJ0NvbnRl
bnQtUmFuZ2UnKSA9fiAvXi4rXC8oXGQrKS8pIHsKKyAgICAkY29udGVudExlbmd0aD0kMTsKK30K
K215ICRsYXN0TW9kaWZpZWQgPSAkcmVzcG9uc2UtPmhlYWRlcignTGFzdC1Nb2RpZmllZCcpOwor
bXkgJGV0YWcgPSAkcmVzcG9uc2UtPmhlYWRlcignRVRhZycpOworCitwcmludCAiTG9jYXRlZCBh
IGZpbGUiOworcHJpbnQgIiBvZiB0eXBlICRjb250ZW50VHlwZSIgaWYgZGVmaW5lZCAkY29udGVu
dFR5cGU7CitwcmludCAiIG9mIHNpemUgJGNvbnRlbnRMZW5ndGgiIGlmIGRlZmluZWQgJGNvbnRl
bnRMZW5ndGg7CitwcmludCAiLlxuIjsKKworIyBHZXQgYW55IG9sZCBoZWFkZXJzIHRoYXQgYXJl
IGF2YWlsYWJsZS4KK215ICRvbGRMYXN0TW9kaWZpZWQ7CitteSAkb2xkRVRhZzsKK2lmIChvcGVu
IE9MREhFQURFUlNGSUxFLCAiPCIsIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHdlYmtpdExpYnJhcmll
c0RpciwgIiRmaWxlLmhlYWRlcnMiKSkgeworICAgIGxvY2FsICQvID0gdW5kZWY7CisgICAgbXkg
JG9sZEhlYWRlcnMgPSA8T0xESEVBREVSU0ZJTEU+OworICAgIGNsb3NlIE9MREhFQURFUlNGSUxF
OworCisgICAgKCRvbGRMYXN0TW9kaWZpZWQpID0gJG9sZEhlYWRlcnMgPX4gL15MYXN0LU1vZGlm
aWVkOiAoLispJC9taTsKKyAgICAoJG9sZEVUYWcpID0gJG9sZEhlYWRlcnMgPX4gL15FVGFnOiAo
LispJC9taTsKK30KKworIyBJZiB3ZSBoYXZlIG1hdGNoaW5nIG9sZCBhbmQgbmV3IEVUYWdzLCB0
aGVuIHRoYXQgaXMgYSB2ZXJ5IGdvb2QgaW5kaWNhdGlvbiB0aGF0IHdlIGFscmVhZHkgaGFkIGdv
dHRlbiBhbiB1cCB0byBkYXRlCisjIGNvcHkgb2YgdGhlIGZpbGUgcHJldmlvdXNseS4gT24gdGhl
IG90aGVyIGhhbmQgaWYgd2UgaGF2ZSBFVGFncyB0aGF0IGRvbid0IG1hdGNoLCB0aGF0IGRvZXNu
J3QgbmVjZXNzYXJpbHkgaW5kaWNhdGUKKyMgdGhhdCB0aGUgZmlsZXMgYXJlIGRpZmZlcmVudCBz
aW5jZSBkaWZmZXJlbnQgc2VydmVycyBtYXkgY29tcHV0ZSBkaWZmZXJlbnQgRVRhZ3MgZm9yIHRo
ZSBzYW1lIGZpbGUuIElmIHRoZXkgZG9uJ3QKKyMgbWF0Y2ggd2Ugd2lsbCBjb250aW51ZSB0byBz
ZWUgaWYgd2UgY2FuIHNraXAgZG93bmxvYWRpbmcgdGhlIGZpbGUgdmlhIG90aGVyIHRlc3RzLgor
aWYgKGRlZmluZWQgJGV0YWcgJiYgZGVmaW5lZCAkb2xkRVRhZyAmJiAkZXRhZyBlcSAkb2xkRVRh
ZykgeworICAgIHByaW50ICJDdXJyZW50ICRmaWxlIGlzIHVwIHRvIGRhdGUuXG4iOwogICAgIGV4
aXQgMDsKIH0KIAotbXkgJGNvbnRlbnRfdHlwZSA9ICRyZXNwb25zZS0+aGVhZGVyKCdDb250ZW50
LVR5cGUnKTsKLW15ICRkb2N1bWVudF9sZW5ndGggPSAkcmVzcG9uc2UtPmhlYWRlcignQ29udGVu
dC1MZW5ndGgnKTsKLW15ICRtb2RpZmllZF90aW1lID0gc3RyMnRpbWUoJHJlc3BvbnNlLT5oZWFk
ZXIoJ0xhc3QtTW9kaWZpZWQnKSk7IAotCi1pZiAoZGVmaW5lZCAkbW9kaWZpZWRfdGltZSkgewot
ICAgIHByaW50IFNUREVSUiAiTG9jYXRlZCBhIGZpbGUgb2YgdHlwZSAkY29udGVudF90eXBlLCBv
ZiBzaXplICRkb2N1bWVudF9sZW5ndGguXG4iOwotICAgIG9wZW4gTkVXLCAiPiIsIEZpbGU6OlNw
ZWMtPmNhdGZpbGUoJHRtcEFic0RpciwgIiRmaWxlLmhlYWRlcnMiKTsKLSAgICBwcmludCBORVcg
Ikxhc3QtTW9kaWZpZWQ6ICIgLiB0aW1lMnN0cigkbW9kaWZpZWRfdGltZSkgLiAiXG4iOwotICAg
IGNsb3NlIE5FVzsKLX0gZWxzZSB7Ci0gICAgI05vdGU6IE5laXRoZXIgR2l0SHViIG5vciBEcm9w
Qm94IGVtaXQgdGhlIExhc3QtTW9kaWZpZWQgSFRUUCBoZWFkZXIsIHNvIGZhbGwgYmFjayB0byBh
IGZpbGUKLQkjY29udGFpbmluZyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGlmIHdlIGRvIG5v
dCByZWNlaXZlIHRoZSBpbmZvcm1hdGlvbiBpbiBvdXIgaW5pdGlhbCBxdWVyeS4KKyMgSWYgb24g
dGhlIGluaXRpYWwgcmVxdWVzdCB3ZSBkaWRuJ3QgZ2V0IGEgTGFzdC1Nb2RpZmllZCBoZWFkZXIs
IHRoZW4gd2Ugd2lsbCB0cnkgZ2V0dGluZyB0aGUgTGFzdC1Nb2RpZmllZCBoZWFkZXIgZnJvbQor
IyBhIHNlcGFyYXRlICouaGVhZGVycyBmaWxlIHRoYXQgbWF5IGhhdmUgYmVlbiBwdXQgb24gdGhl
IHNlcnZlci4KK2lmICghIGRlZmluZWQgJGxhc3RNb2RpZmllZCkgewogICAgIG15ICRoZWFkZXJV
UkwgPSAkbGlic1VSTDsKICAgICAkaGVhZGVyVVJMID1+IHMvXC56aXAkL1wuaGVhZGVycy87CiAK
LSAgICBteSAkcmVzdWx0ID0gZ2V0c3RvcmUoJGhlYWRlclVSTCwgRmlsZTo6U3BlYy0+Y2F0Zmls
ZSgkdG1wQWJzRGlyLCAiJGZpbGUuaGVhZGVycyIpKTsKKyAgICAkcmVzcG9uc2UgPSAkdWEtPmdl
dCgkaGVhZGVyVVJMKTsKIAotICAgIGlmICghaXNfc3VjY2VzcygkcmVzdWx0KSkgewotICAgICAg
ICBwcmludCBTVERFUlIgIkNvdWxkbid0IGNoZWNrIExhc3QtTW9kaWZpZWQgZGF0ZSBvZiBuZXcg
JHppcEZpbGUuXG4iOwotICAgICAgICBwcmludCBTVERFUlIgIlJlc3BvbnNlIHdhczogJHJlc3Vs
dC5cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiUGxlYXNlIGVuc3VyZSB0aGF0IFBlcmwgY2Fu
IHVzZSBMV1A6OlNpbXBsZSB0byBjb25uZWN0IHRvIEhUVFBTIHVybHMsIGFuZCB0aGF0ICRsaWJz
VVJMIGlzIHJlYWNoYWJsZS5cbiI7Ci0gICAgICAgIHByaW50IFNUREVSUiAiWW91IG1heSBoYXZl
IHRvIHJ1biBcJCBjcGFuIExXUDo6UHJvdG9jb2w6Omh0dHBzXG4iOwotCi0gICAgICAgIGlmICgh
IC1mIEZpbGU6OlNwZWMtPmNhdGZpbGUoJHdlYmtpdExpYnJhcmllc0RpciwgIiRmaWxlLmhlYWRl
cnMiKSkgewotICAgICAgICAgICAgcHJpbnQgU1RERVJSICJVbmFibGUgdG8gY2hlY2sgTGFzdC1N
b2RpZmllZCBkYXRlIGFuZCBubyB2ZXJzaW9uIG9mICRmaWxlIHRvIGZhbGwgYmFjayB0by5cbiI7
Ci0gICAgICAgICAgICBleGl0IDE7CisgICAgaWYgKCEgJHJlc3BvbnNlLT5pc19zdWNjZXNzKSB7
CisgICAgICAgIHByaW50IFNUREVSUiAiQ291bGQgbm90IGFjY2VzcyAkaGVhZGVyVVJMOlxuIiwg
JHJlc3BvbnNlLT5oZWFkZXJzX2FzX3N0cmluZywgIlxuIjsKKyAgICAgICAgcHJpbnQgU1RERVJS
ICJQbGVhc2UgZW5zdXJlIHRoYXQgJGhlYWRlclVSTCBpcyByZWFjaGFibGUiOworICAgICAgICBp
ZiAoJGhlYWRlclVSTCA9fiAvXmh0dHBzL2kpIHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAi
IGFuZCB0aGF0IFBlcmwgY2FuIHVzZSBMV1A6OlNpbXBsZSB0byBjb25uZWN0IHRvIEhUVFBTIFVS
THMuXG4iOworICAgICAgICAgICAgcHJpbnQgU1RERVJSICJZb3UgbWF5IGhhdmUgdG8gcnVuIFwi
XCQgY3BhbiBMV1A6OlByb3RvY29sOjpodHRwc1wiIjsKICAgICAgICAgfQotCi0gICAgICAgIHBy
aW50IFNUREVSUiAiRmFsbGluZyBiYWNrIHRvIGV4aXN0aW5nIHZlcnNpb24gb2YgJGZpbGUuXG4i
OwotICAgICAgICBleGl0IDA7CisgICAgICAgIHByaW50IFNUREVSUiAiLlxuIjsKICAgICB9CisK
KyAgICAoJGxhc3RNb2RpZmllZCkgPSAkcmVzcG9uc2UtPmNvbnRlbnQgPX4gL15MYXN0LU1vZGlm
aWVkOiAoLispJC9taTsKIH0KIAotaWYgKG9wZW4gTkVXLCBGaWxlOjpTcGVjLT5jYXRmaWxlKCR0
bXBBYnNEaXIsICIkZmlsZS5oZWFkZXJzIikpIHsKLSAgICBteSAkbmV3ID0gbGFzdE1vZGlmaWVk
VG9Vbml4VGltZSg8TkVXPik7Ci0gICAgY2xvc2UgTkVXOwotCi0gICAgaWYgKGRlZmluZWQgJG5l
dyAmJiBvcGVuIE9MRCwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkd2Via2l0TGlicmFyaWVzRGlyLCAi
JGZpbGUuaGVhZGVycyIpKSB7Ci0gICAgICAgIG15ICRvbGQgPSBsYXN0TW9kaWZpZWRUb1VuaXhU
aW1lKDxPTEQ+KTsKLSAgICAgICAgY2xvc2UgT0xEOwotICAgICAgICBpZiAoZGVmaW5lZCAkb2xk
ICYmIGFicygkbmV3IC0gJG9sZCkgPCAkbmV3bmVzc1RocmVzaG9sZCkgewotICAgICAgICAgICAg
cHJpbnQgIkN1cnJlbnQgJGZpbGUgaXMgdXAgdG8gZGF0ZVxuIjsKLSAgICAgICAgICAgIGV4aXQg
MDsKLSAgICAgICAgfQotICAgIH0KK215ICRsYXN0TW9kaWZpZWRUaW1lID0gc3RyMnRpbWUoJGxh
c3RNb2RpZmllZCk7CitteSAkb2xkTGFzdE1vZGlmaWVkVGltZSA9IHN0cjJ0aW1lKCRvbGRMYXN0
TW9kaWZpZWQpOworaWYgKGRlZmluZWQgJGxhc3RNb2RpZmllZFRpbWUgJiYgZGVmaW5lZCAkb2xk
TGFzdE1vZGlmaWVkVGltZQorICAgICYmIGFicygkbGFzdE1vZGlmaWVkVGltZS0kb2xkTGFzdE1v
ZGlmaWVkVGltZSkgPCAkbmV3bmVzc1RocmVzaG9sZCkgeworICAgIHByaW50ICJDdXJyZW50ICRm
aWxlIGlzIHVwIHRvIGRhdGUuXG4iOworICAgIGV4aXQgMDsKIH0KIAogcHJpbnQgIkRvd25sb2Fk
aW5nICR6aXBGaWxlLi4uXG5cbiI7CkBAIC0xNDEsNiArMTkxLDIyIEBAIG15ICRyZXN1bHQgPSBn
ZXRzdG9yZSgkbGlic1VSTCwgRmlsZTo6U3AKIGRpZSAiQ291bGRuJ3QgZG93bmxvYWQgJHppcEZp
bGUhIiBpZiBpc19lcnJvcigkcmVzdWx0KTsKIAogbXkgJHppcCA9IEFyY2hpdmU6OlppcC0+bmV3
KEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcEFic0RpciwgJHppcEZpbGUpKTsKKworIyBNYWtlIHN1
cmUgdGhlIHppcCBmaWxlIGNvbnRhaW5zIGEgZGlyZWN0b3J5IHdpdGggdGhlIHNhbWUgbmFtZSBh
cyB0aGUgemlwIGZpbGUgKG1pbnVzIHRoZSBleHRlbnNpb24pIGFuZCBhIHByZWZpeAorIyBkaXJl
Y3RvcnkgaWYgYXBwbGljYWJsZS4KK215ICRwcmVmaXhEaXJlY3RvcnlQYXRoSW5aaXBGaWxlID0g
IiRmaWxlLyIuKCgkcHJlZml4SW5aaXAgZXEgIi4iKSA/ICIiIDogIiRwcmVmaXhJblppcC8iKTsK
K2lmICghICR6aXAtPm1lbWJlck5hbWVkKCRwcmVmaXhEaXJlY3RvcnlQYXRoSW5aaXBGaWxlKSkg
eworICAgIHByaW50IFNUREVSUiAiQ291bGRuJ3QgZmluZCAkcHJlZml4RGlyZWN0b3J5UGF0aElu
WmlwRmlsZSBkaXJlY3RvcnkgaW4gemlwIGZpbGUuXG4iOworCisgICAgaWYgKC1mIEZpbGU6OlNw
ZWMtPmNhdGZpbGUoJHdlYmtpdExpYnJhcmllc0RpciwgIiRmaWxlLmhlYWRlcnMiKSkgeworICAg
ICAgICBwcmludCBTVERFUlIgIkZhbGxpbmcgYmFjayB0byBleGlzdGluZyB2ZXJzaW9uIG9mICRm
aWxlLlxuIjsKKyAgICAgICAgZXhpdCAwOworICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50IFNU
REVSUiAiTm8gZXhpc3RpbmcgdmVyc2lvbiBvZiAkZmlsZSB0byBmYWxsIGJhY2sgdG8uXG4iOwor
ICAgICAgICBleGl0IDE7CisgICAgfQorfQorCiAkcmVzdWx0ID0gJHppcC0+ZXh0cmFjdFRyZWUo
IiIsICR0bXBBYnNEaXIpOwogZGllICJDb3VsZG4ndCB1bnppcCAkemlwRmlsZS4iIGlmICRyZXN1
bHQgIT0gQVpfT0s7CiAKQEAgLTE2MSwyNCArMjI3LDIwIEBAIHN1YiB3YW50ZWQKIAogRmlsZTo6
RmluZDo6ZmluZChcJndhbnRlZCwgRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkdG1wQWJzRGlyLCAkZmls
ZSkpOwogCi0kcmVzdWx0ID0gbW92ZShGaWxlOjpTcGVjLT5jYXRmaWxlKCR0bXBBYnNEaXIsICIk
ZmlsZS5oZWFkZXJzIiksICR3ZWJraXRMaWJyYXJpZXNEaXIpOwotcHJpbnQgU1RERVJSICJDb3Vs
ZG4ndCBtb3ZlICRmaWxlLmhlYWRlcnMgdG8gJHdlYmtpdExpYnJhcmllc0RpciIgLiAiLlxuIiBp
ZiAkcmVzdWx0ID09IDA7CitpZiAob3BlbiBIRUFERVJTRklMRSwgIj4iLCBGaWxlOjpTcGVjLT5j
YXRmaWxlKCR3ZWJraXRMaWJyYXJpZXNEaXIsICIkZmlsZS5oZWFkZXJzIikpIHsKKyAgICBwcmlu
dCBIRUFERVJTRklMRSAiTGFzdC1Nb2RpZmllZDogJGxhc3RNb2RpZmllZFxuIiBpZiBkZWZpbmVk
ICRsYXN0TW9kaWZpZWQ7CisgICAgcHJpbnQgSEVBREVSU0ZJTEUgIkVUYWc6ICRldGFnXG4iIGlm
IGRlZmluZWQgJGV0YWc7CisgICAgY2xvc2UgSEVBREVSU0ZJTEU7Cit9IGVsc2UgeworICAgIHBy
aW50IFNUREVSUiAiQ291bGRuJ3Qgd3JpdGUgJGZpbGUuaGVhZGVycyB0byAkd2Via2l0TGlicmFy
aWVzRGlyLlxuIgorfQogCiBwcmludCAiVGhlICRmaWxlIGhhcyBiZWVuIHN1Y2Vzc2Z1bGx5IGlu
c3RhbGxlZCBpblxuICR3ZWJraXRMaWJyYXJpZXNEaXJcbiI7CiBleGl0OwogCi1zdWIgbGFzdE1v
ZGlmaWVkVG9Vbml4VGltZSgkKQotewotICAgIG15ICgkc3RyKSA9IEBfOwotCi0gICAgJHN0ciA9
fiAvXkxhc3QtTW9kaWZpZWQ6ICguKikkLyBvciByZXR1cm47Ci0gICAgcmV0dXJuIHN0cjJ0aW1l
KCQxKTsKLX0KLQogc3ViIGdldExpYnJhcnlOYW1lKCQpCiB7CiAgICAgbXkgJHVybCA9IHNoaWZ0
OwogICAgICR1cmwgPX4gbSMvKFteL10rKVwuemlwJCM7CiAgICAgcmV0dXJuICQxOwogfQotCklu
ZGV4OiBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtd2luY2Fpcm8tbGlicwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtd2luY2Fpcm8tbGlicwkocmV2aXNpb24g
MTk4MzEzKQorKysgVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LXdpbmNhaXJvLWxpYnMJKHdv
cmtpbmcgY29weSkKQEAgLTgsMTMgKzgsMTMgQEAKICMgYXJlIG1ldDoKICMKICMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuIAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICMgMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgogIyAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICMKICMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
ICMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMjcsNyArMjcsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
ICMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAotIyBVcGRhdGVzIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgdG8gdGhl
IG5ldyBXZWJLaXRBdXhpbGlhcnlMaWJyYXJ5CisjIFVwZGF0ZXMgYSBkZXZlbG9wbWVudCBlbnZp
cm9ubWVudCB0byB0aGUgbmV3IFdpbkNhaXJvUmVxdWlyZW1lbnRzLgogCiB1c2Ugc3RyaWN0Owog
dXNlIHdhcm5pbmdzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>