<?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>22049</bug_id>
          
          <creation_ts>2008-11-03 11:31:23 -0800</creation_ts>
          <short_desc>WebKit should have a cryptographic RNG</short_desc>
          <delta_ts>2011-02-12 04:33:12 -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>JavaScriptCore</component>
          <version>525.x (Safari 3.1)</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>P4</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>54083</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="webkit@shiftleft.org">webkit</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>bzbarsky</cc>
    
    <cc>collinj</cc>
    
    <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>krasin</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>97479</commentid>
    <comment_count>0</comment_count>
    <who name="webkit@shiftleft.org">webkit</who>
    <bug_when>2008-11-03 11:31:23 -0800</bug_when>
    <thetext>Several Javascript cryptographic toolkits have emerged on the web, most notably Clipperz.  Unfortunately, most forms of encryption require high-quality random numbers to work securely, and collecting entropy from Javascript is difficult and brittle.  Therefore, Safari should have a cryptographic random number generator (RNG).  I propose that it be called window.crypto.random, since this is where Mozilla claims the Firefox RNG will be when they implement it.

WebKit doesn&apos;t link any cryptographic libraries that I know of, so the underlying RNG should probably be arc4random() (perhaps repeated a few times because RC4 is fast but has known flaws) on BSD-like platforms and rand_s() on Windows.  Linux is somewhat trickier because it doesn&apos;t have a cryptographic RNG in libc.

WebKit for Windows already has Math.random() implemented by rand_s().  That&apos;s well and good, but it should still implement window.crypto.random(), because we don&apos;t want developers to rely on cryptographic properties of Math.random().

This is related to Mozilla bug 440046:
https://bugzilla.mozilla.org/show_bug.cgi?id=440046

Cheers,
Mike</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>97555</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-04 03:48:40 -0800</bug_when>
    <thetext>Implementing this functionality on Window object alone is not ideal, because workers (http://whatwg.org/ww) won&apos;t have access to it then.

As it was already mentioned in Mozilla bugzilla, it would be best to discuss the API on WHATWG and/or W3C HTML5 mailing lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104084</commentid>
    <comment_count>2</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-01-02 07:24:23 -0800</bug_when>
    <thetext>I agree with Alexey putting a secure rng on window object is not helpful for workers.

That said i feel dubious as to the value of this API -- if it doesn&apos;t exist people are going to have to use Math.random anyway, and having a predictable random() is something i consider a bug anyway.

Happily as of r39510 Math.random() is cryptographically secure on mac and windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>104151</commentid>
    <comment_count>3</comment_count>
    <who name="webkit@shiftleft.org">webkit</who>
    <bug_when>2009-01-02 12:43:00 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; That said i feel dubious as to the value of this API -- if it doesn&apos;t exist
&gt; people are going to have to use Math.random anyway, and having a predictable
&gt; random() is something i consider a bug anyway.
&gt; 
&gt; Happily as of r39510 Math.random() is cryptographically secure on mac and
&gt; windows.

Yay!

I agree that a predictable Math.random() is a bug.  However, Adam Barth convinced me that we need a crypto.random() of some sort too.  The reason is that Math.random() isn&apos;t guaranteed to be cryptographically strong on all browsers, so relying on it for cryptographic randomness would be a mistake... at the very least, you&apos;d have to do browser version sniffing, which is brittle.  What&apos;s more, are we sure that Math.random() will even stay cryptographically strong in webkit?  Someone might revert it, citing a performance regression.

We don&apos;t actually need to write crypto.random() in C... it could be implemented in Javascript on top of Math.random() (except that Math.random() still isn&apos;t strong on Linux, right?), but there should still be a separate API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345806</commentid>
    <comment_count>4</comment_count>
      <attachid>81287</attachid>
    <who name="Ivan Krasin">krasin</who>
    <bug_when>2011-02-04 14:42:08 -0800</bug_when>
    <thetext>Created attachment 81287
The first version of crypto.getRandom{Float32,Uint8}Array().

This is a patch that adds window.crypto.getRandomFloat32Array(length) and window.crypto.getUint8Array(length)

Currently, it misses two important parts:

1. The intent to make window.crypto === undefined on the platforms where WTF::randomNumber is not secure
2. Make WTF::randomNumber secure on Linux if /dev/random or /dev/urandom available for initial seed

Ivan Krasin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345810</commentid>
    <comment_count>5</comment_count>
      <attachid>81287</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-04 14:45:40 -0800</bug_when>
    <thetext>Comment on attachment 81287
The first version of crypto.getRandom{Float32,Uint8}Array().

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

&gt; page/DOMWindow.h:345
&gt; +        Crypto* optionalCrypto() const { return m_crypto.get(); }

What is optionalCrypto ?  Looks mysterious to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346025</commentid>
    <comment_count>6</comment_count>
    <who name="Boris Zbarsky">bzbarsky</who>
    <bug_when>2011-02-04 19:47:12 -0800</bug_when>
    <thetext>Should there also be null-checks? Or if the allocation is fatal-on-failure, isn&apos;t this a DoS vector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346026</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-04 19:55:23 -0800</bug_when>
    <thetext>See also this thread: http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-February/030241.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346027</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-04 19:56:40 -0800</bug_when>
    <thetext>&gt; Should there also be null-checks? Or if the allocation is fatal-on-failure, isn&apos;t this a DoS vector?

Allocation in WebKit is fatal-on-failure.  It probably make sense to cap the number of random bytes you can request in one go.  In general, we don&apos;t protect against memory exhaustion DoS though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347730</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-08 15:08:48 -0800</bug_when>
    <thetext>@Ivan, are you still working on this bug?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348628</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-09 15:13:30 -0800</bug_when>
    <thetext>I just landed a cryptographically strong source of randomness.  Now we just need to plumb it to the API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>348867</commentid>
    <comment_count>11</comment_count>
      <attachid>81935</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-10 00:50:59 -0800</bug_when>
    <thetext>Created attachment 81935
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349663</commentid>
    <comment_count>12</comment_count>
      <attachid>82109</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-10 23:36:19 -0800</bug_when>
    <thetext>Created attachment 82109
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349665</commentid>
    <comment_count>13</comment_count>
      <attachid>82109</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-10 23:41:28 -0800</bug_when>
    <thetext>Comment on attachment 82109
Patch

:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349666</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-02-10 23:41:49 -0800</bug_when>
    <thetext>Does this need any ENABLE()? for WEBGL or whatever gives us these byte arrays?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349679</commentid>
    <comment_count>15</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-11 00:37:55 -0800</bug_when>
    <thetext>Committed r78321: &lt;http://trac.webkit.org/changeset/78321&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349682</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-02-11 00:45:33 -0800</bug_when>
    <thetext>Attachment 82109 did not build on win:
Build output: http://queues.webkit.org/results/7867603</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349685</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-11 01:03:14 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/78321 might have broken Qt Linux Release minimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349773</commentid>
    <comment_count>18</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2011-02-11 07:43:13 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Committed r78321: &lt;http://trac.webkit.org/changeset/78321&gt;

This broke 4 tests on the Windows 7 Release test bots:
https://bugs.webkit.org/show_bug.cgi?id=54285</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349788</commentid>
    <comment_count>19</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-02-11 08:42:40 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #15)
&gt; &gt; Committed r78321: &lt;http://trac.webkit.org/changeset/78321&gt;
&gt; 
&gt; This broke 4 tests on the Windows 7 Release test bots:
&gt; https://bugs.webkit.org/show_bug.cgi?id=54285

I&apos;m really not happy with the API -- it doesn&apos;t provide a way to get meaningful random doubles/floats, and yet the api would imply that it should.  The only way to get sensible random floats with this API would be to pull the value out as a uint32 and do value/uint32_max.

Anyone using random floats from this will get &quot;random&quot; floats but with a very uneven distribution.

Adding new web APIs should be discussed more widely prior -- there wasn&apos;t any clear consensus on the whatwg list, nor any discussion on webkit-dev.

And it broke tests ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>349998</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-02-11 14:01:27 -0800</bug_when>
    <thetext>&gt; This broke 4 tests on the Windows 7 Release test bots:

Apologies.  These global enumeration tests are difficult to maintain.  I managed to update all the expected results on the core builders.

&gt; I&apos;m really not happy with the API -- it doesn&apos;t provide a way to get meaningful random doubles/floats, and yet the api would imply that it should.  The only way to get sensible random floats with this API would be to pull the value out as a uint32 and do value/uint32_max.

The discussion on the whatwg list indicated that folks weren&apos;t sure what a suitable notion of a random float would be.  We can certainly add support for random floats later if folks can agree on what that would mean.

&gt; Anyone using random floats from this will get &quot;random&quot; floats but with a very uneven distribution.

I&apos;m not sure I follow.  This API does not provide a mechanism for getting random floats.  In any case, this is an API for cryptographic randomness.  In cryptography, you almost always want random integers, not random floats.  In fact, I can&apos;t think of a single use for random floats in cryptography.

&gt; Adding new web APIs should be discussed more widely prior -- there wasn&apos;t any clear consensus on the whatwg list, nor any discussion on webkit-dev.

There seemed to be a clear consensus to me.  Folks from Firefox agreed to implement the API.  Some folks suggested some nice improvements.  The discussion settled down.  What more could you want for a one-function API?

&gt; And it broke tests ;)

Indeed.  However, that&apos;s easily fixable.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81287</attachid>
            <date>2011-02-04 14:42:08 -0800</date>
            <delta_ts>2011-02-10 00:50:56 -0800</delta_ts>
            <desc>The first version of crypto.getRandom{Float32,Uint8}Array().</desc>
            <filename>CryptoRandom.patch</filename>
            <type>text/plain</type>
            <size>13477</size>
            <attacher name="Ivan Krasin">krasin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUucHJpCShyZXZpc2lvbiA3
NzI4MSkKKysrIFdlYkNvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNiArMzIyLDcgQEAK
ICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmlkbCBcCiAgICAgcGFnZS9Qb3NpdGlvbkVycm9y
LmlkbCBcCiAgICAgcGFnZS9TY3JlZW4uaWRsIFwKKyAgICBwYWdlL0NyeXB0by5pZGwgXAogICAg
IHBhZ2UvU3BlZWNoSW5wdXRFdmVudC5pZGwgXAogICAgIHBhZ2UvU3BlZWNoSW5wdXRSZXN1bHQu
aWRsIFwKICAgICBwYWdlL1NwZWVjaElucHV0UmVzdWx0TGlzdC5pZGwgXApJbmRleDogV2ViQ29y
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS5wcm8JKHJldmlzaW9uIDc3MjgxKQorKysgV2Vi
Q29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTExNjAsNiArMTE2MCw3IEBACiAgICAgcGFnZS9Q
cmludENvbnRleHQuY3BwIFwKICAgICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCiAgICAgcGFn
ZS9TY3JlZW4uY3BwIFwKKyAgICBwYWdlL0NyeXB0by5jcHAgXAogICAgIHBhZ2UvU2V0dGluZ3Mu
Y3BwIFwKICAgICBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBcCiAgICAgcGFnZS9TdXNwZW5k
YWJsZVRpbWVyLmNwcCBcCkluZGV4OiBwYWdlL0NyeXB0by5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFn
ZS9DcnlwdG8uaWRsCShyZXZpc2lvbiAwKQorKysgcGFnZS9DcnlwdG8uaWRsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHdpbmRvdyB7CisKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICBdIENyeXB0byB7CisgICAgICAgIEZsb2F0
MzJBcnJheSBnZXRSYW5kb21GbG9hdDMyQXJyYXkoaW4gbG9uZyBsZW5ndGgpOworCisgICAgICAg
IFVpbnQ4QXJyYXkgZ2V0UmFuZG9tVWludDhBcnJheShpbiBsb25nIGxlbmd0aCk7CisgICAgfTsK
KworfQpJbmRleDogcGFnZS9DcnlwdG8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvQ3J5cHRvLmNw
cAkocmV2aXNpb24gMCkKKysrIHBhZ2UvQ3J5cHRvLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0by5oIgor
CisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJLVVJM
LmgiCisjaW5jbHVkZSA8d3RmL1JhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgPHd0Zi9SYW5kb21O
dW1iZXJTZWVkLmg+CisjaW5jbHVkZSAiRmxvYXQzMkFycmF5LmgiCisjaW5jbHVkZSAiVWludDhB
cnJheS5oIgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQ3J5cHRvOjpDcnlwdG8oKQorewor
fQorCitQYXNzUmVmUHRyPEZsb2F0MzJBcnJheT4gQ3J5cHRvOjpnZXRSYW5kb21GbG9hdDMyQXJy
YXkobG9uZyBsZW5ndGgpCit7CisgICAgUGFzc1JlZlB0cjxGbG9hdDMyQXJyYXk+IGFycmF5ID0g
RmxvYXQzMkFycmF5OjpjcmVhdGUobGVuZ3RoKTsKKyAgICBmbG9hdCogZGF0YSA9IGFycmF5LT5k
YXRhKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBk
YXRhW2ldID0gV1RGOjpyYW5kb21OdW1iZXIoKTsKKyAgICB9CisgICAgcmV0dXJuIGFycmF5Owor
fQorCitQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IENyeXB0bzo6Z2V0UmFuZG9tVWludDhBcnJheShs
b25nIGxlbmd0aCkKK3sKKyAgICBQYXNzUmVmUHRyPFVpbnQ4QXJyYXk+IGFycmF5ID0gVWludDhB
cnJheTo6Y3JlYXRlKGxlbmd0aCk7CisgICAgdWludDhfdCogZGF0YSA9IGFycmF5LT5kYXRhKCk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBkYXRhW2ld
ID0gKChpbnQpKFdURjo6cmFuZG9tTnVtYmVyKCkqMjU2KSkgJiAweEZGOworICAgIH0KKyAgICBy
ZXR1cm4gYXJyYXk7Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogcGFnZS9E
T01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA3NzI4
MSkKKysrIHBhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICAgICBjbGFzcyBDU1NSdWxlTGlzdDsKICAgICBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwog
ICAgIGNsYXNzIENvbnNvbGU7CisgICAgY2xhc3MgQ3J5cHRvOwogICAgIGNsYXNzIERPTUFwcGxp
Y2F0aW9uQ2FjaGU7CiAgICAgY2xhc3MgRE9NU2VsZWN0aW9uOwogICAgIGNsYXNzIERPTVVSTDsK
QEAgLTExNCw2ICsxMTUsNyBAQAogCiAgICAgICAgIFNjcmVlbiogc2NyZWVuKCkgY29uc3Q7CiAg
ICAgICAgIEhpc3RvcnkqIGhpc3RvcnkoKSBjb25zdDsKKyAgICAgICAgQ3J5cHRvKiBjcnlwdG8o
KSBjb25zdDsKICAgICAgICAgQmFySW5mbyogbG9jYXRpb25iYXIoKSBjb25zdDsKICAgICAgICAg
QmFySW5mbyogbWVudWJhcigpIGNvbnN0OwogICAgICAgICBCYXJJbmZvKiBwZXJzb25hbGJhcigp
IGNvbnN0OwpAQCAtMzQwLDYgKzM0Miw3IEBACiAgICAgICAgIFNjcmVlbiogb3B0aW9uYWxTY3Jl
ZW4oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbi5nZXQoKTsgfQogICAgICAgICBET01TZWxlY3Rp
b24qIG9wdGlvbmFsU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7
IH0KICAgICAgICAgSGlzdG9yeSogb3B0aW9uYWxIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9o
aXN0b3J5LmdldCgpOyB9CisgICAgICAgIENyeXB0byogb3B0aW9uYWxDcnlwdG8oKSBjb25zdCB7
IHJldHVybiBtX2NyeXB0by5nZXQoKTsgfQogICAgICAgICBCYXJJbmZvKiBvcHRpb25hbExvY2F0
aW9uYmFyKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhdGlvbmJhci5nZXQoKTsgfQogICAgICAgICBC
YXJJbmZvKiBvcHRpb25hbE1lbnViYXIoKSBjb25zdCB7IHJldHVybiBtX21lbnViYXIuZ2V0KCk7
IH0KICAgICAgICAgQmFySW5mbyogb3B0aW9uYWxQZXJzb25hbGJhcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGVyc29uYWxiYXIuZ2V0KCk7IH0KQEAgLTQ0MSw2ICs0NDQsNyBAQAogICAgICAgICBtdXRh
YmxlIFJlZlB0cjxTY3JlZW4+IG1fc2NyZWVuOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxET01T
ZWxlY3Rpb24+IG1fc2VsZWN0aW9uOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxIaXN0b3J5PiBt
X2hpc3Rvcnk7CisgICAgICAgIG11dGFibGUgUmVmUHRyPENyeXB0bz4gIG1fY3J5cHRvOwogICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxCYXJJbmZvPiBtX2xvY2F0aW9uYmFyOwogICAgICAgICBtdXRh
YmxlIFJlZlB0cjxCYXJJbmZvPiBtX21lbnViYXI7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPEJh
ckluZm8+IG1fcGVyc29uYWxiYXI7CkluZGV4OiBwYWdlL0RPTVdpbmRvdy5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGFnZS9ET01XaW5kb3cuaWRsCShyZXZpc2lvbiA3NzI4MSkKKysrIHBhZ2UvRE9NV2lu
ZG93LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQAogCiAgICAgICAgIGF0dHJp
YnV0ZSBbUmVwbGFjZWFibGUsIEN1c3RvbUdldHRlciwgVjhDdXN0b21TZXR0ZXJdIEV2ZW50IGV2
ZW50OwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBDcnlwdG8gY3J5cHRv
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ3J5cHRvIGNyeXB0bzsKIAogICAgICAgICBE
T01TZWxlY3Rpb24gZ2V0U2VsZWN0aW9uKCk7CiAKSW5kZXg6IHBhZ2UvRE9NV2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBwYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDc3MjgxKQorKysgcGFn
ZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVk
ZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNv
bnNvbGUuaCIKKyNpbmNsdWRlICJDcnlwdG8uaCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNh
Y2hlLmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRE9NU2V0dGFibGVU
b2tlbkxpc3QuaCIKQEAgLTQzMyw2ICs0MzQsOCBAQAogICAgICAgICBtX2hpc3RvcnktPmRpc2Nv
bm5lY3RGcmFtZSgpOwogICAgIG1faGlzdG9yeSA9IDA7CiAKKyAgICBtX2NyeXB0byA9IDA7CisK
ICAgICBpZiAobV9sb2NhdGlvbmJhcikKICAgICAgICAgbV9sb2NhdGlvbmJhci0+ZGlzY29ubmVj
dEZyYW1lKCk7CiAgICAgbV9sb2NhdGlvbmJhciA9IDA7CkBAIC01MzAsNiArNTMzLDEzIEBACiAg
ICAgcmV0dXJuIG1faGlzdG9yeS5nZXQoKTsKIH0KIAorQ3J5cHRvKiBET01XaW5kb3c6OmNyeXB0
bygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NyeXB0bykKKyAgICAgICAgbV9jcnlwdG8gPSBDcnlw
dG86OmNyZWF0ZSgpOworICAgIHJldHVybiBtX2NyeXB0by5nZXQoKTsKK30KKwogQmFySW5mbyog
RE9NV2luZG93Ojpsb2NhdGlvbmJhcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2xvY2F0aW9uYmFy
KQpJbmRleDogcGFnZS9DcnlwdG8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0NyeXB0by5oCShyZXZp
c2lvbiAwKQorKysgcGFnZS9DcnlwdG8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBDcnlwdG9faAorI2RlZmluZSBDcnlwdG9faAorCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXQzMkFy
cmF5OworY2xhc3MgVWludDhBcnJheTsKKworY2xhc3MgQ3J5cHRvIDogcHVibGljIFJlZkNvdW50
ZWQ8Q3J5cHRvPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q3J5cHRvPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQ3J5cHRvKCkpOyB9CisKKyAgICBQYXNzUmVmUHRy
PEZsb2F0MzJBcnJheT4gZ2V0UmFuZG9tRmxvYXQzMkFycmF5KGxvbmcgbGVuZ3RoKTsKKworICAg
IFBhc3NSZWZQdHI8VWludDhBcnJheT4gZ2V0UmFuZG9tVWludDhBcnJheShsb25nIGxlbmd0aCk7
CisKK3ByaXZhdGU6CisgICAgQ3J5cHRvKCk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBDcnlwdG9faApJbmRleDogR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDc3MjgxKQorKysgR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTIyNjEsNiArMjI2MSw4IEBACiAJU291cmNlL1dlYkNvcmUvcGFnZS9Q
cmludENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5IYXNoLmggXApJbmRl
eDogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA3NzI4
MSkKKysrIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgogCiAjaW5j
bHVkZSAiQ2hyb21lLmgiCisjaW5jbHVkZSAiQ3J5cHRvLmgiCiAjaW5jbHVkZSAiRE9NVGltZXIu
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBA
IC0xODMsMTIgKzE4NCw2IEBACiAgICAgY29udGV4dC0+R2xvYmFsKCktPlNldEhpZGRlblZhbHVl
KGV2ZW50U3ltYm9sLCB2YWx1ZSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdp
bmRvdzo6Y3J5cHRvQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCBt
ZS4KLSAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotfQotCiB2b2lkIFY4RE9NV2luZG93Ojps
b2NhdGlvbkFjY2Vzc29yU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBET01XaW5kb3cqIGltcCA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
SW5kZXg6IFdlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLmd5cGkJKHJldmlzaW9u
IDc3MjgxKQorKysgV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yNTksNiArMjU5LDcg
QEAKICAgICAgICAgICAgICdwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmlkbCcsCiAgICAgICAgICAg
ICAncGFnZS9Qb3NpdGlvbkVycm9yLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uaWRs
JywKKyAgICAgICAgICAgICdwYWdlL0NyeXB0by5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvU3Bl
ZWNoSW5wdXRFdmVudC5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvU3BlZWNoSW5wdXRSZXN1bHQu
aWRsJywKICAgICAgICAgICAgICdwYWdlL1NwZWVjaElucHV0UmVzdWx0TGlzdC5pZGwnLApAQCAt
MjM1Miw2ICsyMzUzLDggQEAKICAgICAgICAgICAgICdwYWdlL1ByaW50Q29udGV4dC5oJywKICAg
ICAgICAgICAgICdwYWdlL1NjcmVlbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVuLmgn
LAorICAgICAgICAgICAgJ3BhZ2UvQ3J5cHRvLmNwcCcsCisgICAgICAgICAgICAncGFnZS9Dcnlw
dG8uaCcsCiAgICAgICAgICAgICAncGFnZS9TZWN1cml0eU9yaWdpbi5jcHAnLAogICAgICAgICAg
ICAgJ3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCcsCiAgICAgICAgICAgICAncGFnZS9TZWN1cml0eU9y
aWdpbkhhc2guaCcsCkluZGV4OiBDTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gNzcyODEpCisrKyBDTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMzMzLDYgKzMzMyw3IEBACiAgICAgcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5pZGwKICAg
ICBwYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCiAgICAgcGFnZS9TY3JlZW4uaWRsCisgICAgcGFnZS9D
cnlwdG8uaWRsCiAgICAgcGFnZS9TcGVlY2hJbnB1dEV2ZW50LmlkbAogICAgIHBhZ2UvU3BlZWNo
SW5wdXRSZXN1bHQuaWRsCiAgICAgcGFnZS9TcGVlY2hJbnB1dFJlc3VsdExpc3QuaWRsCkBAIC0x
Mjc5LDYgKzEyODAsNyBAQAogICAgIHBhZ2UvUGx1Z2luSGFsdGVyLmNwcAogICAgIHBhZ2UvUHJp
bnRDb250ZXh0LmNwcAogICAgIHBhZ2UvU2NyZWVuLmNwcAorICAgIHBhZ2UvQ3J5cHRvLmNwcAog
ICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCiAgICAgcGFnZS9TZXR0aW5ncy5jcHAKICAgICBw
YWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcApJbmRleDogQW5kcm9pZC5tawo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBBbmRyb2lkLm1rCShyZXZpc2lvbiA3NzI4MSkKKysrIEFuZHJvaWQubWsJKHdvcmtpbmcgY29w
eSkKQEAgLTQzNSw2ICs0MzUsNyBAQAogCXBhZ2UvUGx1Z2luSGFsdGVyLmNwcCBcCiAJcGFnZS9Q
cmludENvbnRleHQuY3BwIFwKIAlwYWdlL1NjcmVlbi5jcHAgXAorCXBhZ2UvQ3J5cHRvLmNwcCBc
CiAJcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgXAogCXBhZ2UvU2V0dGluZ3MuY3BwIFwKIAlwYWdl
L1NwYXRpYWxOYXZpZ2F0aW9uLmNwcCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81935</attachid>
            <date>2011-02-10 00:50:59 -0800</date>
            <delta_ts>2011-02-10 23:36:16 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-22049-20110210005058.patch</filename>
            <type>text/plain</type>
            <size>27333</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQW5kcm9pZC5tawkocmV2aXNpb24gNzgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9BbmRy
b2lkLm1rCSh3b3JraW5nIGNvcHkpCkBAIC00MDksNiArNDA5LDcgQEAgTE9DQUxfU1JDX0ZJTEVT
IDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9Db25zb2xlLmNwcCBcCiAJcGFnZS9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwIFwKIAlwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAg
XAorCXBhZ2UvQ3J5cHRvLmNwcCBcCiAJcGFnZS9ET01TZWxlY3Rpb24uY3BwIFwKIAlwYWdlL0RP
TVRpbWVyLmNwcCBcCiAJcGFnZS9ET01XaW5kb3cuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CShyZXZpc2lvbiA3ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zMTksNiArMzE5LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAg
ICAgcGFnZS9CYXJJbmZvLmlkbAogICAgIHBhZ2UvQ29uc29sZS5pZGwKICAgICBwYWdlL0Nvb3Jk
aW5hdGVzLmlkbAorICAgIHBhZ2UvQ3J5cHRvLmlkbAogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmlk
bAogICAgIHBhZ2UvRE9NV2luZG93LmlkbAogICAgIHBhZ2UvRXZlbnRTb3VyY2UuaWRsCkBAIC0x
MTExLDYgKzExMTIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9Db25zb2xlLmNw
cAogICAgIHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAogICAgIHBhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcAorICAgIHBhZ2UvQ3J5cHRvLmNwcAogICAgIHBhZ2UvRE9NU2VsZWN0
aW9uLmNwcAogICAgIHBhZ2UvRE9NVGltZXIuY3BwCiAgICAgcGFnZS9ET01XaW5kb3cuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA3ODE1MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
NyBAQAogI2luY2x1ZGUgIkpTQ29uc29sZS5jcHAiCiAjaW5jbHVkZSAiSlNDb29yZGluYXRlcy5j
cHAiCiAjaW5jbHVkZSAiSlNDb3VudGVyLmNwcCIKKyNpbmNsdWRlICJKU0NyeXB0by5jcHAiCiAj
aW5jbHVkZSAiSlNDU1NDaGFyc2V0UnVsZS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NGb250RmFjZVJ1
bGUuY3BwIgogI2luY2x1ZGUgIkpTQ1NTSW1wb3J0UnVsZS5jcHAiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDc4MTUxKQorKysgU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw3IEBAIERPTV9D
TEFTU0VTID0gXAogICAgIENvbnNvbGUgXAogICAgIENvb3JkaW5hdGVzIFwKICAgICBDb3VudGVy
IFwKKyAgICBDcnlwdG8gXAogICAgIEN1c3RvbUV2ZW50IFwKICAgICBEYXRhR3JpZENvbHVtbiBc
CiAgICAgRGF0YUdyaWRDb2x1bW5MaXN0IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiA3ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjIsNiArMTYyLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTQ29vcmRpbmF0ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0NvdW50ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ291bnRlci5o
IFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ3J5cHRvLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU0NyeXB0by5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTQ2hh
cnNldFJ1bGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTQ2hhcnNldFJ1bGUu
aCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NTU0ZvbnRGYWNlUnVsZS5jcHAgXApAQCAt
MjE3NSw5ICsyMTc3LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdl
L0JhckluZm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaCBcCi0JU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFn
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIFwKQEAgLTIxODcsNiArMjE4OSw4IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudVByb3ZpZGVyLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29vcmRpbmF0ZXMuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9D
cnlwdG8uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIFwKQEAgLTIyMTUs
OSArMjIxOSw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNsaWVudC5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uRXJyb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2Nh
dGlvbkNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29u
dHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uRXJyb3IuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCBcCkBAIC0yMjM0LDMwICsyMjM4LDMwIEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvckJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ckJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
R3JvdXAuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBcCiAJU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWlu
Zy5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlckNsaWVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGx1Z2luSGFsdGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oIFwKLQlTb3VyY2Uv
V2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL1Bvc2l0aW9uRXJyb3IuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL1ByaW50Q29udGV4dC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDc4MTUx
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUs
NiArMjQ1LDcgQEAKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaWRsJywKICAgICAgICAgICAg
ICdwYWdlL0NvbnNvbGUuaWRsJywKICAgICAgICAgICAgICdwYWdlL0Nvb3JkaW5hdGVzLmlkbCcs
CisgICAgICAgICAgICAncGFnZS9DcnlwdG8uaWRsJywKICAgICAgICAgICAgICdwYWdlL0RPTVNl
bGVjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmlkbCcsCiAgICAgICAg
ICAgICAncGFnZS9FdmVudFNvdXJjZS5pZGwnLApAQCAtMjI4MSw2ICsyMjgyLDggQEAKICAgICAg
ICAgICAgICdwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ29udGV4dE1l
bnVQcm92aWRlci5oJywKKyAgICAgICAgICAgICdwYWdlL0NyeXB0by5jcHAnLAorICAgICAgICAg
ICAgJ3BhZ2UvQ3J5cHRvLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCcs
CiAgICAgICAgICAgICAncGFnZS9ET01TZWxlY3Rpb24uaCcsCiAgICAgICAgICAgICAncGFnZS9E
T01UaW1lci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9uIDc4MTUxKQorKysgU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsNyBA
QCBJRExfQklORElOR1MgKz0gXAogICAgIHBhZ2UvQmFySW5mby5pZGwgXAogICAgIHBhZ2UvQ29u
c29sZS5pZGwgXAogICAgIHBhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKKyAgICBwYWdlL0NyeXB0by5p
ZGwgXAogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmlkbCBcCiAgICAgcGFnZS9ET01XaW5kb3cuaWRs
IFwKICAgICBwYWdlL0V2ZW50U291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNp
b24gNzgxNTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpA
QCAtMTEzMSwxMSArMTEzMSwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL0NvbnNvbGUuY3Bw
IFwKICAgICBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgXAogICAgIHBhZ2UvQ29udGV4
dE1lbnVDb250cm9sbGVyLmNwcCBcCisgICAgcGFnZS9DcnlwdG8uY3BwIFwKICAgICBwYWdlL0RP
TVNlbGVjdGlvbi5jcHAgXAogICAgIHBhZ2UvRE9NVGltZXIuY3BwIFwKICAgICBwYWdlL0RPTVdp
bmRvdy5jcHAgXAotICAgIHBhZ2UvTmF2aWdhdG9yLmNwcCBcCi0gICAgcGFnZS9OYXZpZ2F0b3JC
YXNlLmNwcCBcCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgXAogICAgIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcCBcCiAgICAgcGFnZS9FdmVudFNvdXJjZS5jcHAgXApAQCAtMTE1MSw2ICsxMTUw
LDggQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9Mb2NhdGlvbi5jcHAgXAogICAgIHBhZ2UvTWVt
b3J5SW5mby5jcHAgXAogICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAg
XAorICAgIHBhZ2UvTmF2aWdhdG9yLmNwcCBcCisgICAgcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBc
CiAgICAgcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAgXAogICAgIHBhZ2UvUGFnZS5jcHAgXAog
ICAgIHBhZ2UvUGFnZUdyb3VwLmNwcCBcCkBAIC0xMTYwLDggKzExNjEsOCBAQCBTT1VSQ0VTICs9
IFwKICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBcCiAgICAgcGFnZS9QbHVnaW5IYWx0
ZXIuY3BwIFwKICAgICBwYWdlL1ByaW50Q29udGV4dC5jcHAgXAotICAgIHBhZ2UvU2VjdXJpdHlP
cmlnaW4uY3BwIFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAorICAgIHBhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwIFwKICAgICBwYWdlL1NldHRpbmdzLmNwcCBcCiAgICAgcGFnZS9TcGF0aWFsTmF2aWdh
dGlvbi5jcHAgXAogICAgIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgXApJbmRleDogU291cmNl
L1dlYkNvcmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29uZmlnLmgJ
KHJldmlzaW9uIDc4MTUxKQorKysgU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE3MSw2ICsxNzEsMTAgQEAKICNkZWZpbmUgVVNFX1NZU1RFTV9NQUxMT0MgMQogI2Vu
ZGlmCiAKKyNpZiBPUyhEQVJXSU4pIHx8IE9TKFVOSVgpIHx8IENPTVBJTEVSKE1TVkMpCisjZGVm
aW5lIFdURl9VU0VfT1NfUkFORE9NTkVTUyAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQogCiAjaWYgIU9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA3ODE1MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU0LDYg
KzE3NTQsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0NyeXB0by5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
UmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJ
CQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVi
dWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4K
KwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlO
YW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlX0xUQ0d8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NyeXB0by5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQ1NTQ2hhcnNldFJ1bGUuY3BwIgogCQkJCT4K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc4MTUxKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0zMDM0LDYgKzMwMzQsMTAgQEAKIAkJOTczODg5QTExMTZFQTlEQzAwQURGMzEzIC8qIERv
Y3VtZW50V3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzM4ODk5RjExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzNFMzI1NjEwODgz
QjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczRTMyNTQxMDg4M0I3QzAwNUJDNDkzIC8q
IFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLzsgfTsKIAkJOTczRTMyNTcxMDg4M0I3QzAwNUJD
NDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzNFMzI1NTEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VM
b2FkTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5NzVDQTI4QTEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NUNBMjg3MTMwMzY1RjgwMEU5
OUFEOSAvKiBDcnlwdG8uY3BwICovOyB9OworCQk5NzVDQTI4QjEzMDM2NUY4MDBFOTlBRDkgLyog
Q3J5cHRvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzVDQTI4ODEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggKi87IH07CisJCTk3NUNBMkExMTMw
MzY3OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NzVDQTI5RjEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8u
Y3BwICovOyB9OworCQk5NzVDQTJBMjEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NUNBMkEwMTMwMzY3
OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5oICovOyB9OwogCQk5NzZENkM3NzEyMkI4QTNEMDAxRkQx
RjcgLyogQXN5bmNGaWxlV3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzZENkM1ODEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVy
LmggKi87IH07CiAJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzU5MTIyQjhBM0Qw
MDFGRDFGNyAvKiBCbG9iLmNwcCAqLzsgfTsKIAkJOTc2RDZDNzkxMjJCOEEzRDAwMUZEMUY3IC8q
IEJsb2IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
NkQ2QzVBMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggKi87IH07CkBAIC05NDE3LDYgKzk0MjEs
MTEgQEAKIAkJOTczODg5OUYxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJj
ZUxvYWROb3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZXNvdXJjZUxvYWROb3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3
M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5NzVDQTI4NzEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRv
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0by5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NUNBMjg4MTMwMzY1RjgwMEU5OUFEOSAvKiBD
cnlwdG8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NUNBMjg5MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlw
dG8uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENyeXB0by5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk3NUNBMjlGMTMwMzY3OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0by5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk3NUNBMkEwMTMwMzY3OUQwMEU5OUFEOSAvKiBKU0Ny
eXB0by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0by5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM1ODEyMkI4QTNEMDAxRkQxRjcgLyogQXN5
bmNGaWxlV3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFzeW5jRmls
ZVdyaXRlci5oOyBwYXRoID0gZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNTkxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYi5jcHA7IHBhdGggPSBmaWxl
YXBpL0Jsb2IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM1QTEyMkI4
QTNEMDAxRkQxRjcgLyogQmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBC
bG9iLmg7IHBhdGggPSBmaWxlYXBpL0Jsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTEzOTU2LDYgKzEzOTY1LDkgQEAKIAkJCQk3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyog
Q29udGV4dE1lbnVQcm92aWRlci5oICovLAogCQkJCUZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAv
KiBDb29yZGluYXRlcy5oICovLAogCQkJCUZFNkZENDg2MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29y
ZGluYXRlcy5pZGwgKi8sCisJCQkJOTc1Q0EyODcxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5j
cHAgKi8sCisJCQkJOTc1Q0EyODgxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5oICovLAorCQkJ
CTk3NUNBMjg5MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uaWRsICovLAogCQkJCUJDNUE4Njgx
MEMzMzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uY3BwICovLAogCQkJCUJDNUE4NjgyMEMz
MzY3NjAwMEVFQTY0OSAvKiBET01TZWxlY3Rpb24uaCAqLywKIAkJCQlCQzVBODY4MzBDMzM2NzYw
MDBFRUE2NDkgLyogRE9NU2VsZWN0aW9uLmlkbCAqLywKQEAgLTE4MDMwLDYgKzE4MDQyLDggQEAK
IAkJCQlCQzEyNEVGRTBDMjY0NDdBMDA5RTIzNDkgLyogSlNCYXJJbmZvLmggKi8sCiAJCQkJQkM5
ODU0M0IwQ0QzRDk4QjAwMDY5QkMxIC8qIEpTQ29uc29sZS5jcHAgKi8sCiAJCQkJQkM5ODU0M0Mw
Q0QzRDk4QjAwMDY5QkMxIC8qIEpTQ29uc29sZS5oICovLAorCQkJCTk3NUNBMjlGMTMwMzY3OUQw
MEU5OUFEOSAvKiBKU0NyeXB0by5jcHAgKi8sCisJCQkJOTc1Q0EyQTAxMzAzNjc5RDAwRTk5QUQ5
IC8qIEpTQ3J5cHRvLmggKi8sCiAJCQkJQkM1QTg2QjMwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9N
U2VsZWN0aW9uLmNwcCAqLywKIAkJCQlCQzVBODZCNDBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01T
ZWxlY3Rpb24uaCAqLywKIAkJCQkxNDAzQkEwQjA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01XaW5k
b3cuY3BwICovLApAQCAtMjI0NDIsNiArMjI0NTYsOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIw
MDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDNDQjgy
MTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQk5
NzdFMkUwRjEyRjBGQzlDMDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5NzVDQTI4QjEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5NzVDQTJBMjEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjUxMjYsNiArMjUxNDIsOCBAQAogCQkJCTkzNDNDQjgxMTJGMjVFNTEwMDMzQzVFRSAvKiBU
ZXh0Q29kZWNVVEY4LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMx
MzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyOUMxNkUxMzAwQzJF
MjAwMkQ3OTRFIC8qIEFjY2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5NzVDQTI4QTEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTk3NUNBMkExMTMwMzY3OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAJKHJldmlzaW9uIDc4MTUxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODksMTEgKzQ4OSw2IEBA
IHZvaWQgSlNET01XaW5kb3c6OnNldExvY2F0aW9uKEV4ZWNTdGF0ZSoKICAgICBpbXBsKCktPnNl
dExvY2F0aW9uKHVzdHJpbmdUb1N0cmluZyhsb2NhdGlvblN0cmluZyksIGFjdGl2ZURPTVdpbmRv
dyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCi1KU1ZhbHVlIEpTRE9NV2luZG93
OjpjcnlwdG8oRXhlY1N0YXRlKikgY29uc3QKLXsKLSAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
LX0KLQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6ZXZlbnQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
ewogICAgIEV2ZW50KiBldmVudCA9IGN1cnJlbnRFdmVudCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CShyZXZpc2lvbiA3ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MywxMiArMTgzLDYgQEAg
dm9pZCBWOERPTVdpbmRvdzo6ZXZlbnRBY2Nlc3NvclNldHRlcih2OAogICAgIGNvbnRleHQtPkds
b2JhbCgpLT5TZXRIaWRkZW5WYWx1ZShldmVudFN5bWJvbCwgdmFsdWUpOwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmNyeXB0b0FjY2Vzc29yR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQotewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgbWUuCi0gICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLX0K
LQogdm9pZCBWOERPTVdpbmRvdzo6bG9jYXRpb25BY2Nlc3NvclNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgRE9NV2luZG93KiBpbXAgPSBWOERPTVdpbmRvdzo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUsIEluYy4gKCJHb29nbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNyeXB0by5oIgor
CisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGlj
YWxseVJhbmRvbU51bWJlci5oPgorI2luY2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK0NyeXB0bzo6Q3J5cHRvKCkKK3sKK30KKwordm9pZCBDcnlwdG86Omdl
dFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcqIGFycmF5LCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyNpZiBVU0UoT1NfUkFORE9NTkVTUykKKyAgICBpZiAoIWFycmF5IHx8ICFhcnJheS0+aXNV
bnNpZ25lZEJ5dGVBcnJheSgpKSB7CisgICAgICAgIGVjID0gVkFMSURBVElPTl9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXMoYXJy
YXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3RoKCkpOworI2Vsc2UKKyAgICBBU1NF
UlRfVU5VU0VEKGFycmF5LCBhcnJheSk7CisgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKKyNl
bmRpZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwg
SW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBDcnlwdG9faAorI2RlZmluZSBDcnlwdG9faAorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCit0
eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBDcnlwdG8gOiBwdWJsaWMgUmVmQ291
bnRlZDxDcnlwdG8+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG8+IGNy
ZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG8oKSk7IH0KKworICAgIHZvaWQgZ2V0
UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyogYXJyYXksIEV4Y2VwdGlvbkNvZGUmKTsKKwor
cHJpdmF0ZToKKyAgICBDcnlwdG8oKTsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9DcnlwdG8uaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8u
aWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbCwgSW5jLiAoIkdvb2dsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIHdpbmRvdyB7CisKKyAgICBp
bnRlcmZhY2UgWworICAgICAgICBPbWl0Q29uc3RydWN0b3IKKyAgICBdIENyeXB0byB7CisgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQganVzdCBlbmFibGUgQXJyYXlCdWZmZXIgc3VwcG9ydCBh
bGwgdGhlIHRpbWUuCisgICAgICAgIFtDb25kaXRpb25hbD1XRUJHTHxCTE9CXSB2b2lkIGdldFJh
bmRvbVZhbHVlcyhpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXkpIHJhaXNlcyhET01FeGNlcHRpb24p
OworICAgIH07CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9u
IDc4MTUxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDcnlwdG8u
aCIKICNpbmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiRE9NU2V0dGFibGVUb2tlbkxpc3QuaCIKQEAgLTQzMyw2ICs0MzQs
OCBAQCB2b2lkIERPTVdpbmRvdzo6Y2xlYXIoKQogICAgICAgICBtX2hpc3RvcnktPmRpc2Nvbm5l
Y3RGcmFtZSgpOwogICAgIG1faGlzdG9yeSA9IDA7CiAKKyAgICBtX2NyeXB0byA9IDA7CisKICAg
ICBpZiAobV9sb2NhdGlvbmJhcikKICAgICAgICAgbV9sb2NhdGlvbmJhci0+ZGlzY29ubmVjdEZy
YW1lKCk7CiAgICAgbV9sb2NhdGlvbmJhciA9IDA7CkBAIC01MzAsNiArNTMzLDEzIEBAIEhpc3Rv
cnkqIERPTVdpbmRvdzo6aGlzdG9yeSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faGlzdG9yeS5nZXQo
KTsKIH0KIAorQ3J5cHRvKiBET01XaW5kb3c6OmNyeXB0bygpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2NyeXB0bykKKyAgICAgICAgbV9jcnlwdG8gPSBDcnlwdG86OmNyZWF0ZSgpOworICAgIHJldHVy
biBtX2NyeXB0by5nZXQoKTsKK30KKwogQmFySW5mbyogRE9NV2luZG93Ojpsb2NhdGlvbmJhcigp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2xvY2F0aW9uYmFyKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5oCShyZXZpc2lvbiA3ODE1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIENTU1J1bGVMaXN0OwogICAgIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CiAg
ICAgY2xhc3MgQ29uc29sZTsKKyAgICBjbGFzcyBDcnlwdG87CiAgICAgY2xhc3MgRE9NQXBwbGlj
YXRpb25DYWNoZTsKICAgICBjbGFzcyBET01TZWxlY3Rpb247CiAgICAgY2xhc3MgRE9NVVJMOwpA
QCAtMTE0LDYgKzExNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBTY3JlZW4q
IHNjcmVlbigpIGNvbnN0OwogICAgICAgICBIaXN0b3J5KiBoaXN0b3J5KCkgY29uc3Q7CisgICAg
ICAgIENyeXB0byogY3J5cHRvKCkgY29uc3Q7CiAgICAgICAgIEJhckluZm8qIGxvY2F0aW9uYmFy
KCkgY29uc3Q7CiAgICAgICAgIEJhckluZm8qIG1lbnViYXIoKSBjb25zdDsKICAgICAgICAgQmFy
SW5mbyogcGVyc29uYWxiYXIoKSBjb25zdDsKQEAgLTM0MCw2ICszNDIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFNjcmVlbiogb3B0aW9uYWxTY3JlZW4oKSBjb25zdCB7IHJldHVy
biBtX3NjcmVlbi5nZXQoKTsgfQogICAgICAgICBET01TZWxlY3Rpb24qIG9wdGlvbmFsU2VsZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7IH0KICAgICAgICAgSGlzdG9y
eSogb3B0aW9uYWxIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9oaXN0b3J5LmdldCgpOyB9Cisg
ICAgICAgIENyeXB0byogb3B0aW9uYWxDcnlwdG8oKSBjb25zdCB7IHJldHVybiBtX2NyeXB0by5n
ZXQoKTsgfQogICAgICAgICBCYXJJbmZvKiBvcHRpb25hbExvY2F0aW9uYmFyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NhdGlvbmJhci5nZXQoKTsgfQogICAgICAgICBCYXJJbmZvKiBvcHRpb25hbE1l
bnViYXIoKSBjb25zdCB7IHJldHVybiBtX21lbnViYXIuZ2V0KCk7IH0KICAgICAgICAgQmFySW5m
byogb3B0aW9uYWxQZXJzb25hbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fcGVyc29uYWxiYXIuZ2V0
KCk7IH0KQEAgLTQ0MSw2ICs0NDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIG11
dGFibGUgUmVmUHRyPFNjcmVlbj4gbV9zY3JlZW47CiAgICAgICAgIG11dGFibGUgUmVmUHRyPERP
TVNlbGVjdGlvbj4gbV9zZWxlY3Rpb247CiAgICAgICAgIG11dGFibGUgUmVmUHRyPEhpc3Rvcnk+
IG1faGlzdG9yeTsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8Q3J5cHRvPiAgbV9jcnlwdG87CiAg
ICAgICAgIG11dGFibGUgUmVmUHRyPEJhckluZm8+IG1fbG9jYXRpb25iYXI7CiAgICAgICAgIG11
dGFibGUgUmVmUHRyPEJhckluZm8+IG1fbWVudWJhcjsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8
QmFySW5mbz4gbV9wZXJzb25hbGJhcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwJ
KHJldmlzaW9uIDc4MTUxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIG1vZHVsZSB3aW5kb3cgewogCiAgICAgICAg
IGF0dHJpYnV0ZSBbUmVwbGFjZWFibGUsIEN1c3RvbUdldHRlciwgVjhDdXN0b21TZXR0ZXJdIEV2
ZW50IGV2ZW50OwogCi0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tXSBDcnlwdG8g
Y3J5cHRvOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgQ3J5cHRvIGNyeXB0bzsKIAogICAg
ICAgICBET01TZWxlY3Rpb24gZ2V0U2VsZWN0aW9uKCk7CiAKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2RyYXdJbWFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
Y2FudmFzL2RyYXdJbWFnZS5odG1sCShyZXZpc2lvbiA3ODE1MSkKKysrIExheW91dFRlc3RzL2Zh
c3QvY2FudmFzL2RyYXdJbWFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICsxIEBACi1J
ZiB0aGlzIHJlbmRlcnMgY29ycmVjdGx5IHlvdSBzaG91bGQgc2VlIG9uZSBiaWcgZnJpZW5kbHkg
Z3JlZW4gc3F1YXJlLgotPGNhbnZhcyBpZD0iY2FudmFzIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIw
MCIgPjwvY2FudmFzPgotPGNhbnZhcyBpZD0iY2FudmFzMiIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIy
MDAiIHN0eWxlPSJkaXNwbGF5Om5vbmUiID48L2NhbnZhcz4KLTxzY3JpcHQ+Ci12YXIgY2FudmFz
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpOwotdmFyIGNhbnZhczIgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzMiIpOwotdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0
Q29udGV4dCgiMmQiKTsKLXZhciBjb250ZXh0MiA9IGNhbnZhczIuZ2V0Q29udGV4dCgiMmQiKTsK
LWNvbnRleHQyLmZpbGxTdHlsZSA9ICdyZWQnOwotY29udGV4dDIuZmlsbFJlY3QoMCwwLDIwMCwy
MDApOwotY29udGV4dDIuZmlsbFN0eWxlID0gJ2dyZWVuJzsKLWNvbnRleHQyLmZpbGxSZWN0KDUw
LDUwLDEwMCwxMDApOwotY29udGV4dC5kcmF3SW1hZ2UoY2FudmFzMiwgNTAsIDUwLCAxMDAsIDEw
MCwgMCwgMCwgMjAwLCAyMDApOwotPC9zY3JpcHQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQorPGltZyBzcmM9InNjcmVlbnNob3Quc3ZnIj4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82109</attachid>
            <date>2011-02-10 23:36:19 -0800</date>
            <delta_ts>2011-02-10 23:42:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-22049-20110210233618.patch</filename>
            <type>text/plain</type>
            <size>34479</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzgzMTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMDItMTAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQgc2hvdWxkIGhhdmUg
YSBjcnlwdG9ncmFwaGljIFJORworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjIwNDkKKworICAgICAgICBUZWFjaCBKYXZhU2NyaXB0Q29yZSBob3cgdG8g
ZXhwb3J0IHRoaXMgZnVuY3Rpb24uCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5leHA6Cisg
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAx
MS0wMi0xMCAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5leHAJKHJldmlzaW9uIDc4MzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAkod29ya2luZyBjb3B5KQpAQCAtNDMzLDYgKzQzMyw3IEBAIF9fWk4z
V1RGMjNkYXlJbk1vbnRoRnJvbURheUluWWVhckVpYgogX19aTjNXVEYyM3dhaXRGb3JUaHJlYWRD
b21wbGV0aW9uRWpQUHYKIF9fWk4zV1RGMjdyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnlFdgog
X19aTjNXVEYyOHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWRFYgorX19aTjNXVEYyOWNyeXB0
b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzRVB2bQogX19aTjNXVEYzNmxvY2tBdG9taWNhbGx5SW5p
dGlhbGl6ZWRTdGF0aWNNdXRleEV2CiBfX1pOM1dURjM3cGFyc2VEYXRlRnJvbU51bGxUZXJtaW5h
dGVkQ2hhcmFjdGVyc0VQS2MKIF9fWk4zV1RGMzh1bmxvY2tBdG9taWNhbGx5SW5pdGlhbGl6ZWRT
dGF0aWNNdXRleEV2CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
NzgzMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzM2LDcgKzMzNiw3IEBACiAJCTk3
OTQxQTU3MTMwMjlBQUIwMDRBMzQ0NyAvKiBPU1JhbmRvbVNvdXJjZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzk0MUEzRjEzMDI5OURCMDA0QTM0
NDcgLyogT1NSYW5kb21Tb3VyY2UuY3BwICovOyB9OwogCQk5Nzk0MUE1QTEzMDI5QUNDMDA0QTM0
NDcgLyogT1NSYW5kb21Tb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3OTQxQTQwMTMwMjk5REIwMDRBMzQ0NyAvKiBPU1JhbmRvbVNvdXJjZS5o
ICovOyB9OwogCQk5Nzk0MUE3RTEzMDJBMDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlS
YW5kb21OdW1iZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTc5NDFBN0MxMzAyQTA5ODAwNEEzNDQ3IC8qIENyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
TnVtYmVyLmNwcCAqLzsgfTsKLQkJOTc5NDFBN0YxMzAyQTA5ODAwNEEzNDQ3IC8qIENyeXB0b2dy
YXBoaWNhbGx5UmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5Nzk0MUE3RDEzMDJBMDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21OdW1iZXIuaCAqLzsgfTsKKwkJOTc5NDFBN0YxMzAyQTA5ODAwNEEzNDQ3IC8qIENy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5Nzk0MUE3RDEzMDJBMDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3Jh
cGhpY2FsbHlSYW5kb21OdW1iZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBMTcxMkIzQjExQzdCMjEyMDA3QTUzMTUgLyogUmVnRXhwQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3MTJC
M0ExMUM3QjIxMjAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmNwcCAqLzsgfTsKIAkJQTE3MTJCM0Yx
MUM3QjIyODAwN0E1MzE1IC8qIFJlZ0V4cENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkIzRTExQzdCMjI4MDA3QTUzMTUgLyogUmVnRXhw
Q2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlBMTcxMkI0MTExQzdCMjM1MDA3QTUzMTUgLyogUmVnRXhwS2V5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTcxMkI0MDExQzdCMjM1MDA3QTUzMTUg
LyogUmVnRXhwS2V5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4MzE3KQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDItMTAgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQgc2hvdWxkIGhhdmUgYSBjcnlwdG9ncmFwaGlj
IFJORworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
NDkKKworICAgICAgICBBZGQgY3J5cHRvLmdldFJhbmRvbVZhbHVlcy4gIFllcywgYWxsIHRoZXNl
IGRpZmZzIGFyZSByZXF1aXJlZCB0bworICAgICAgICBleHBvc2UgYSBzaW5nbGUgZnVuY3Rpb24g
dG8gdGhlIERPTS4KKworICAgICAgICBUZXN0OiBzZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVl
cy5odG1sCisKKyAgICAgICAgKiBBbmRyb2lkLm1rOgorICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL3d0Zi9DcnlwdG9ncmFwaGljYWxs
eVJhbmRvbU51bWJlci5oOiBBZGRlZC4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcmk6CisgICAgICAgICogV2Vi
Q29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAqIGNvbmZpZy5oOgorICAgICAgICAq
IHBhZ2UvQ3J5cHRvLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG86OkNyeXB0
byk6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAg
ICogcGFnZS9DcnlwdG8uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDcnlwdG86OmNyZWF0
ZSk6CisgICAgICAgICogcGFnZS9DcnlwdG8uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0RP
TVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNsZWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Y3J5cHRvKToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpvcHRpb25hbENyeXB0byk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuaWRsOgorCiAyMDExLTAyLTEwICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
QW5kcm9pZC5tawkocmV2aXNpb24gNzgzMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9BbmRyb2lkLm1r
CSh3b3JraW5nIGNvcHkpCkBAIC00MDksNiArNDA5LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9ICQo
TE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGFnZS9Db25zb2xlLmNwcCBcCiAJcGFnZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwIFwKIAlwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgXAorCXBh
Z2UvQ3J5cHRvLmNwcCBcCiAJcGFnZS9ET01TZWxlY3Rpb24uY3BwIFwKIAlwYWdlL0RPTVRpbWVy
LmNwcCBcCiAJcGFnZS9ET01XaW5kb3cuY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiA3ODMxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0zMTksNiArMzE5LDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgcGFn
ZS9CYXJJbmZvLmlkbAogICAgIHBhZ2UvQ29uc29sZS5pZGwKICAgICBwYWdlL0Nvb3JkaW5hdGVz
LmlkbAorICAgIHBhZ2UvQ3J5cHRvLmlkbAogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmlkbAogICAg
IHBhZ2UvRE9NV2luZG93LmlkbAogICAgIHBhZ2UvRXZlbnRTb3VyY2UuaWRsCkBAIC0xMTEwLDYg
KzExMTEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGFnZS9Db25zb2xlLmNwcAogICAg
IHBhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAogICAgIHBhZ2UvQ29udGV4dE1lbnVDb250
cm9sbGVyLmNwcAorICAgIHBhZ2UvQ3J5cHRvLmNwcAogICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmNw
cAogICAgIHBhZ2UvRE9NVGltZXIuY3BwCiAgICAgcGFnZS9ET01XaW5kb3cuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiA3ODMxMykKKysrIFNvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAog
I2luY2x1ZGUgIkpTQ29uc29sZS5jcHAiCiAjaW5jbHVkZSAiSlNDb29yZGluYXRlcy5jcHAiCiAj
aW5jbHVkZSAiSlNDb3VudGVyLmNwcCIKKyNpbmNsdWRlICJKU0NyeXB0by5jcHAiCiAjaW5jbHVk
ZSAiSlNDU1NDaGFyc2V0UnVsZS5jcHAiCiAjaW5jbHVkZSAiSlNDU1NGb250RmFjZVJ1bGUuY3Bw
IgogI2luY2x1ZGUgIkpTQ1NTSW1wb3J0UnVsZS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UJKHJldmlzaW9uIDc4MzEzKQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw3IEBAIERPTV9DTEFTU0VT
ID0gXAogICAgIENvbnNvbGUgXAogICAgIENvb3JkaW5hdGVzIFwKICAgICBDb3VudGVyIFwKKyAg
ICBDcnlwdG8gXAogICAgIEN1c3RvbUV2ZW50IFwKICAgICBEYXRhR3JpZENvbHVtbiBcCiAgICAg
RGF0YUdyaWRDb2x1bW5MaXN0IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA3
ODMxMykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjIsNiArMTYyLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTQ29vcmRpbmF0ZXMuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0NvdW50ZXIuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ291bnRlci5oIFwKKwlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ3J5cHRvLmNwcCBcCisJRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0NyeXB0by5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTQ2hhcnNldFJ1
bGUuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTQ1NTQ2hhcnNldFJ1bGUuaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0NTU0ZvbnRGYWNlUnVsZS5jcHAgXApAQCAtMjE3Myw5
ICsyMTc1LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Jhcklu
Zm8uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0JhckluZm8uaCBcCi0JU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Db250
ZW50U2VjdXJpdHlQb2xpY3kuY3BwIFwKQEAgLTIxODUsNiArMjE4Nyw4IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudVByb3ZpZGVyLmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29vcmRpbmF0ZXMuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVNlbGVjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIFwKQEAgLTIyMTMsOSArMjIx
Nyw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2Nh
dGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNsaWVudC5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uRXJyb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbkNv
bnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxl
ci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uRXJyb3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9HZW9sb2NhdGlvblBvc2l0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb25Qb3NpdGlvbkNhY2hlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9H
ZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUuaCBcCkBAIC0yMjMyLDMwICsyMjM2LDMwIEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlJbmZvLmggXAogCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2UuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvckJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvckJhc2UuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvckJhc2Uu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BhZ2UvT3JpZ2luQWNjZXNzRW50cnkuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5oIFwKLQlTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2UuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTmF2aWdhdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
VGltaW5nLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdpbkhhbHRlckNsaWVudC5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BsdWdpbkhhbHRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2lu
SGFsdGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVyQ2xpZW50LmggXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uRXJyb3IuaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaCBcCiAJU291cmNl
L1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1By
aW50Q29udGV4dC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDc4MzEzKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1
LDcgQEAKICAgICAgICAgICAgICdwYWdlL0JhckluZm8uaWRsJywKICAgICAgICAgICAgICdwYWdl
L0NvbnNvbGUuaWRsJywKICAgICAgICAgICAgICdwYWdlL0Nvb3JkaW5hdGVzLmlkbCcsCisgICAg
ICAgICAgICAncGFnZS9DcnlwdG8uaWRsJywKICAgICAgICAgICAgICdwYWdlL0RPTVNlbGVjdGlv
bi5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmlkbCcsCiAgICAgICAgICAgICAn
cGFnZS9FdmVudFNvdXJjZS5pZGwnLApAQCAtMjI3OSw2ICsyMjgwLDggQEAKICAgICAgICAgICAg
ICdwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvQ29udGV4dE1lbnVQcm92
aWRlci5oJywKKyAgICAgICAgICAgICdwYWdlL0NyeXB0by5jcHAnLAorICAgICAgICAgICAgJ3Bh
Z2UvQ3J5cHRvLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCcsCiAgICAg
ICAgICAgICAncGFnZS9ET01TZWxlY3Rpb24uaCcsCiAgICAgICAgICAgICAncGFnZS9ET01UaW1l
ci5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcmkJKHJldmlzaW9uIDc4MzEzKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTMwOCw2ICszMDgsNyBAQCBJRExf
QklORElOR1MgKz0gXAogICAgIHBhZ2UvQmFySW5mby5pZGwgXAogICAgIHBhZ2UvQ29uc29sZS5p
ZGwgXAogICAgIHBhZ2UvQ29vcmRpbmF0ZXMuaWRsIFwKKyAgICBwYWdlL0NyeXB0by5pZGwgXAog
ICAgIHBhZ2UvRE9NU2VsZWN0aW9uLmlkbCBcCiAgICAgcGFnZS9ET01XaW5kb3cuaWRsIFwKICAg
ICBwYWdlL0V2ZW50U291cmNlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBy
bwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNzgz
MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTEy
OCwxMSArMTEyOCwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL0NvbnNvbGUuY3BwIFwKICAg
ICBwYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgXAogICAgIHBhZ2UvQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcCBcCisgICAgcGFnZS9DcnlwdG8uY3BwIFwKICAgICBwYWdlL0RPTVNlbGVj
dGlvbi5jcHAgXAogICAgIHBhZ2UvRE9NVGltZXIuY3BwIFwKICAgICBwYWdlL0RPTVdpbmRvdy5j
cHAgXAotICAgIHBhZ2UvTmF2aWdhdG9yLmNwcCBcCi0gICAgcGFnZS9OYXZpZ2F0b3JCYXNlLmNw
cCBcCiAgICAgcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgXAogICAgIHBhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBcCiAgICAgcGFnZS9FdmVudFNvdXJjZS5jcHAgXApAQCAtMTE0OCw2ICsxMTQ3LDggQEAg
U09VUkNFUyArPSBcCiAgICAgcGFnZS9Mb2NhdGlvbi5jcHAgXAogICAgIHBhZ2UvTWVtb3J5SW5m
by5jcHAgXAogICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXAorICAg
IHBhZ2UvTmF2aWdhdG9yLmNwcCBcCisgICAgcGFnZS9OYXZpZ2F0b3JCYXNlLmNwcCBcCiAgICAg
cGFnZS9PcmlnaW5BY2Nlc3NFbnRyeS5jcHAgXAogICAgIHBhZ2UvUGFnZS5jcHAgXAogICAgIHBh
Z2UvUGFnZUdyb3VwLmNwcCBcCkBAIC0xMTU3LDggKzExNTgsOCBAQCBTT1VSQ0VTICs9IFwKICAg
ICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBcCiAgICAgcGFnZS9QbHVnaW5IYWx0ZXIuY3Bw
IFwKICAgICBwYWdlL1ByaW50Q29udGV4dC5jcHAgXAotICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4u
Y3BwIFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAorICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
IFwKICAgICBwYWdlL1NldHRpbmdzLmNwcCBcCiAgICAgcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5j
cHAgXAogICAgIHBhZ2UvU3VzcGVuZGFibGVUaW1lci5jcHAgXApJbmRleDogU291cmNlL1dlYkNv
cmUvY29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHJldmlz
aW9uIDc4MzEzKQorKysgU291cmNlL1dlYkNvcmUvY29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE3MSw2ICsxNzEsMTAgQEAKICNkZWZpbmUgVVNFX1NZU1RFTV9NQUxMT0MgMQogI2VuZGlmCiAK
KyNpZiBPUyhEQVJXSU4pIHx8IE9TKFVOSVgpIHx8IE9TKFdJTkRPV1MpCisjZGVmaW5lIFdURl9V
U0VfT1NfUkFORE9NTkVTUyAxCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogCiAj
aWYgIU9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0
Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3Rm
L0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NSBAQAorI2lmbmRlZiBXZWJDb3JlX0ZXRF9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcl9o
CisjZGVmaW5lIFdlYkNvcmVfRldEX0NyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyX2gKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9DcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlci5oPgor
I2VuZGlmCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCShyZXZpc2lvbiA3ODMxMykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU0LDYgKzE3NTQsNjIgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0NyeXB0by5j
cHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0Nh
aXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
RGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgor
CQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJS
ZWxlYXNlX0xUQ0d8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZl
UGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0NyeXB0by5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVs
YXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTQ1NTQ2hhcnNldFJ1bGUuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDc4MzEzKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMyLDYgKzMw
MzIsMTAgQEAKIAkJOTczODg5QTExMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzM4ODk5RjEx
NkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzNFMzI1NjEwODgzQjdDMDA1QkM0OTMgLyog
UmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTczRTMyNTQxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5v
dGlmaWVyLmNwcCAqLzsgfTsKIAkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNl
TG9hZE5vdGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzNFMzI1NTEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NzVDQTI4
QTEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NUNBMjg3MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8u
Y3BwICovOyB9OworCQk5NzVDQTI4QjEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzVDQTI4ODEzMDM2NUY4
MDBFOTlBRDkgLyogQ3J5cHRvLmggKi87IH07CisJCTk3NUNBMkExMTMwMzY3OUQwMEU5OUFEOSAv
KiBKU0NyeXB0by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzVDQTI5RjEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uY3BwICovOyB9OworCQk5
NzVDQTJBMjEzMDM2NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NUNBMkEwMTMwMzY3OUQwMEU5OUFEOSAvKiBK
U0NyeXB0by5oICovOyB9OwogCQk5NzZENkM3NzEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxl
V3JpdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzZENkM1ODEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVyLmggKi87IH07CiAJCTk3
NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzU5MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9i
LmNwcCAqLzsgfTsKIAkJOTc2RDZDNzkxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzVBMTIyQjhBM0Qw
MDFGRDFGNyAvKiBCbG9iLmggKi87IH07CkBAIC05NDE2LDYgKzk0MjAsMTEgQEAKIAkJOTczODg5
OUYxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERvY3VtZW50V3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUxvYWROb3Rp
Zmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3M0UzMjU1MTA4ODNCN0Mw
MDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5NzVDQTI4NzEzMDM2NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk3NUNBMjg4MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3J5cHRvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk3NUNBMjg5MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IENyeXB0by5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk3NUNBMjlGMTMwMzY3OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0by5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk3NUNBMkEwMTMwMzY3OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NyeXB0by5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NzZENkM1ODEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFzeW5jRmlsZVdyaXRlci5oOyBwYXRo
ID0gZmlsZWFwaS9Bc3luY0ZpbGVXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTc2RDZDNTkxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQmxvYi5jcHA7IHBhdGggPSBmaWxlYXBpL0Jsb2IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM1QTEyMkI4QTNEMDAxRkQxRjcgLyog
QmxvYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCbG9iLmg7IHBhdGggPSBm
aWxlYXBpL0Jsb2IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzOTU2LDYgKzEz
OTY1LDkgQEAKIAkJCQk3QURFNzIyNTEwQ0JCQjlCMDA2QjNCM0EgLyogQ29udGV4dE1lbnVQcm92
aWRlci5oICovLAogCQkJCUZFNkZENDg1MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5o
ICovLAogCQkJCUZFNkZENDg2MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGluYXRlcy5pZGwgKi8s
CisJCQkJOTc1Q0EyODcxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5jcHAgKi8sCisJCQkJOTc1
Q0EyODgxMzAzNjVGODAwRTk5QUQ5IC8qIENyeXB0by5oICovLAorCQkJCTk3NUNBMjg5MTMwMzY1
RjgwMEU5OUFEOSAvKiBDcnlwdG8uaWRsICovLAogCQkJCUJDNUE4NjgxMEMzMzY3NjAwMEVFQTY0
OSAvKiBET01TZWxlY3Rpb24uY3BwICovLAogCQkJCUJDNUE4NjgyMEMzMzY3NjAwMEVFQTY0OSAv
KiBET01TZWxlY3Rpb24uaCAqLywKIAkJCQlCQzVBODY4MzBDMzM2NzYwMDBFRUE2NDkgLyogRE9N
U2VsZWN0aW9uLmlkbCAqLywKQEAgLTE4MDMzLDYgKzE4MDQ1LDggQEAKIAkJCQlCQzEyNEVGRTBD
MjY0NDdBMDA5RTIzNDkgLyogSlNCYXJJbmZvLmggKi8sCiAJCQkJQkM5ODU0M0IwQ0QzRDk4QjAw
MDY5QkMxIC8qIEpTQ29uc29sZS5jcHAgKi8sCiAJCQkJQkM5ODU0M0MwQ0QzRDk4QjAwMDY5QkMx
IC8qIEpTQ29uc29sZS5oICovLAorCQkJCTk3NUNBMjlGMTMwMzY3OUQwMEU5OUFEOSAvKiBKU0Ny
eXB0by5jcHAgKi8sCisJCQkJOTc1Q0EyQTAxMzAzNjc5RDAwRTk5QUQ5IC8qIEpTQ3J5cHRvLmgg
Ki8sCiAJCQkJQkM1QTg2QjMwQzMzNjdFODAwRUVBNjQ5IC8qIEpTRE9NU2VsZWN0aW9uLmNwcCAq
LywKIAkJCQlCQzVBODZCNDBDMzM2N0U4MDBFRUE2NDkgLyogSlNET01TZWxlY3Rpb24uaCAqLywK
IAkJCQkxNDAzQkEwQjA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01XaW5kb3cuY3BwICovLApAQCAt
MjI0NDQsNiArMjI0NTgsOCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xU
VW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNDNDQjgyMTJGMjVFNTEwMDMzQzVF
RSAvKiBUZXh0Q29kZWNVVEY4LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdFMkUwRjEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTRmlsdGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzVDQTI4QjEzMDM2
NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NzVDQTJBMjEzMDM2
NzlEMDBFOTlBRDkgLyogSlNDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUxMjcsNiArMjUx
NDMsOCBAQAogCQkJCTkzNDNDQjgxMTJGMjVFNTEwMDMzQzVFRSAvKiBUZXh0Q29kZWNVVEY4LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyOUMxNkUxMzAwQzJFMjAwMkQ3OTRFIC8qIEFj
Y2Vzc2liaWxpdHlBbGxJbk9uZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5NzVDQTI4QTEzMDM2
NUY4MDBFOTlBRDkgLyogQ3J5cHRvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3NUNBMkExMTMw
MzY3OUQwMEU5OUFEOSAvKiBKU0NyeXB0by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBMUUxMTU0
NDEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUExRTExNTQ2MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUExRTExNTQ4MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRT
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiA3ODMxMykKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDg5LDExICs0ODksNiBAQCB2b2lkIEpTRE9NV2luZG93OjpzZXRMb2NhdGlvbihFeGVj
U3RhdGUqCiAgICAgaW1wbCgpLT5zZXRMb2NhdGlvbih1c3RyaW5nVG9TdHJpbmcobG9jYXRpb25T
dHJpbmcpLCBhY3RpdmVET01XaW5kb3coZXhlYyksIGZpcnN0RE9NV2luZG93KGV4ZWMpKTsKIH0K
IAotSlNWYWx1ZSBKU0RPTVdpbmRvdzo6Y3J5cHRvKEV4ZWNTdGF0ZSopIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci19Ci0KIEpTVmFsdWUgSlNET01XaW5kb3c6OmV2ZW50KEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBFdmVudCogZXZlbnQgPSBjdXJyZW50RXZlbnQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcAkocmV2aXNpb24gNzgzMTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODMsMTIgKzE4Myw2IEBAIHZvaWQgVjhET01XaW5kb3c6OmV2ZW50QWNjZXNzb3JTZXR0
ZXIodjgKICAgICBjb250ZXh0LT5HbG9iYWwoKS0+U2V0SGlkZGVuVmFsdWUoZXZlbnRTeW1ib2ws
IHZhbHVlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpjcnlwdG9B
Y2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKLXsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1lLgotICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Ci19Ci0KIHZvaWQgVjhET01XaW5kb3c6OmxvY2F0aW9uQWNjZXNz
b3JTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIERPTVdpbmRvdyog
aW1wID0gVjhET01XaW5kb3c6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ3J5cHRvLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRv
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUsIEluYy4gKCJHb29nbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkNyeXB0by5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21O
dW1iZXIuaD4KKworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NyeXB0bzo6Q3J5cHRvKCkKK3sK
K30KKwordm9pZCBDcnlwdG86OmdldFJhbmRvbVZhbHVlcyhBcnJheUJ1ZmZlclZpZXcqIGFycmF5
LCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyNpZiBVU0UoT1NfUkFORE9NTkVTUykKKyAgICBpZiAo
IWFycmF5IHx8ICFhcnJheS0+aXNVbnNpZ25lZEJ5dGVBcnJheSgpKSB7CisgICAgICAgIGVjID0g
VkFMSURBVElPTl9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21WYWx1ZXMoYXJyYXktPmJhc2VBZGRyZXNzKCksIGFycmF5LT5ieXRlTGVuZ3Ro
KCkpOworI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VEKGFycmF5LCBhcnJheSk7CisgICAgZWMgPSBO
T1RfU1VQUE9SVEVEX0VSUjsKKyNlbmRpZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0NyeXB0by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEdPT0dMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDcnlwdG9faAorI2RlZmluZSBDcnlwdG9faAorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
QXJyYXlCdWZmZXJWaWV3OworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBD
cnlwdG8gOiBwdWJsaWMgUmVmQ291bnRlZDxDcnlwdG8+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDcnlwdG8+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG8o
KSk7IH0KKworICAgIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyosIEV4Y2Vw
dGlvbkNvZGUmKTsKKworcHJpdmF0ZToKKyAgICBDcnlwdG8oKTsKK307CisKK30KKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DcnlwdG8uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsLCBJbmMuICgi
R29vZ2xlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
IAorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgR09PR0xFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgd2lu
ZG93IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIE9taXRDb25zdHJ1Y3RvcgorICAgIF0g
Q3J5cHRvIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBqdXN0IGVuYWJsZSBBcnJheUJ1
ZmZlciBzdXBwb3J0IGFsbCB0aGUgdGltZS4KKyAgICAgICAgW0NvbmRpdGlvbmFsPVdFQkdMfEJM
T0JdIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKGluIEFycmF5QnVmZmVyVmlldyBhcnJheSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAkocmV2aXNpb24gNzgzMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJDU1NTdHlsZVNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ29uc29sZS5oIgorI2lu
Y2x1ZGUgIkNyeXB0by5oIgogI2luY2x1ZGUgIkRPTUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNs
dWRlICJET01TZWxlY3Rpb24uaCIKICNpbmNsdWRlICJET01TZXR0YWJsZVRva2VuTGlzdC5oIgpA
QCAtNDMzLDYgKzQzNCw4IEBAIHZvaWQgRE9NV2luZG93OjpjbGVhcigpCiAgICAgICAgIG1faGlz
dG9yeS0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgbV9oaXN0b3J5ID0gMDsKIAorICAgIG1fY3J5
cHRvID0gMDsKKwogICAgIGlmIChtX2xvY2F0aW9uYmFyKQogICAgICAgICBtX2xvY2F0aW9uYmFy
LT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICBtX2xvY2F0aW9uYmFyID0gMDsKQEAgLTUzMCw2ICs1
MzMsMTMgQEAgSGlzdG9yeSogRE9NV2luZG93OjpoaXN0b3J5KCkgY29uc3QKICAgICByZXR1cm4g
bV9oaXN0b3J5LmdldCgpOwogfQogCitDcnlwdG8qIERPTVdpbmRvdzo6Y3J5cHRvKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fY3J5cHRvKQorICAgICAgICBtX2NyeXB0byA9IENyeXB0bzo6Y3JlYXRl
KCk7CisgICAgcmV0dXJuIG1fY3J5cHRvLmdldCgpOworfQorCiBCYXJJbmZvKiBET01XaW5kb3c6
OmxvY2F0aW9uYmFyKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbG9jYXRpb25iYXIpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmgJKHJldmlzaW9uIDc4MzEzKQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ1NTUnVsZUxpc3Q7CiAgICAgY2xhc3MgQ1NTU3R5bGVE
ZWNsYXJhdGlvbjsKICAgICBjbGFzcyBDb25zb2xlOworICAgIGNsYXNzIENyeXB0bzsKICAgICBj
bGFzcyBET01BcHBsaWNhdGlvbkNhY2hlOwogICAgIGNsYXNzIERPTVNlbGVjdGlvbjsKICAgICBj
bGFzcyBET01VUkw7CkBAIC0xMTQsNiArMTE1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAg
ICAgICAgIFNjcmVlbiogc2NyZWVuKCkgY29uc3Q7CiAgICAgICAgIEhpc3RvcnkqIGhpc3Rvcnko
KSBjb25zdDsKKyAgICAgICAgQ3J5cHRvKiBjcnlwdG8oKSBjb25zdDsKICAgICAgICAgQmFySW5m
byogbG9jYXRpb25iYXIoKSBjb25zdDsKICAgICAgICAgQmFySW5mbyogbWVudWJhcigpIGNvbnN0
OwogICAgICAgICBCYXJJbmZvKiBwZXJzb25hbGJhcigpIGNvbnN0OwpAQCAtMzQwLDYgKzM0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU2NyZWVuKiBvcHRpb25hbFNjcmVlbigp
IGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuLmdldCgpOyB9CiAgICAgICAgIERPTVNlbGVjdGlvbiog
b3B0aW9uYWxTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbi5nZXQoKTsgfQog
ICAgICAgICBIaXN0b3J5KiBvcHRpb25hbEhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2hpc3Rv
cnkuZ2V0KCk7IH0KKyAgICAgICAgQ3J5cHRvKiBvcHRpb25hbENyeXB0bygpIGNvbnN0IHsgcmV0
dXJuIG1fY3J5cHRvLmdldCgpOyB9CiAgICAgICAgIEJhckluZm8qIG9wdGlvbmFsTG9jYXRpb25i
YXIoKSBjb25zdCB7IHJldHVybiBtX2xvY2F0aW9uYmFyLmdldCgpOyB9CiAgICAgICAgIEJhcklu
Zm8qIG9wdGlvbmFsTWVudWJhcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVudWJhci5nZXQoKTsgfQog
ICAgICAgICBCYXJJbmZvKiBvcHRpb25hbFBlcnNvbmFsYmFyKCkgY29uc3QgeyByZXR1cm4gbV9w
ZXJzb25hbGJhci5nZXQoKTsgfQpAQCAtNDQxLDYgKzQ0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8U2NyZWVuPiBtX3NjcmVlbjsKICAgICAgICAgbXV0
YWJsZSBSZWZQdHI8RE9NU2VsZWN0aW9uPiBtX3NlbGVjdGlvbjsKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8SGlzdG9yeT4gbV9oaXN0b3J5OworICAgICAgICBtdXRhYmxlIFJlZlB0cjxDcnlwdG8+
ICBtX2NyeXB0bzsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8QmFySW5mbz4gbV9sb2NhdGlvbmJh
cjsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8QmFySW5mbz4gbV9tZW51YmFyOwogICAgICAgICBt
dXRhYmxlIFJlZlB0cjxCYXJJbmZvPiBtX3BlcnNvbmFsYmFyOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmlkbAkocmV2aXNpb24gNzgzMTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgbW9kdWxlIHdpbmRv
dyB7CiAKICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZSwgQ3VzdG9tR2V0dGVyLCBWOEN1
c3RvbVNldHRlcl0gRXZlbnQgZXZlbnQ7CiAKLSAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtD
dXN0b21dIENyeXB0byBjcnlwdG87CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBDcnlwdG8g
Y3J5cHRvOwogCiAgICAgICAgIERPTVNlbGVjdGlvbiBnZXRTZWxlY3Rpb24oKTsKIApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzgzMTcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMi0xMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlYktpdCBzaG91bGQgaGF2ZSBhIGNyeXB0b2dyYXBoaWMgUk5HCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA0OQorCisgICAgICAgIFRlc3QgY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyBBUEkuICBJdCdzIHByZXR0eSBoYXJkIHRvIHdyaXRlIGEKKyAg
ICAgICAgZGV0ZXJtaW5pc3RpYyBBUEkgZm9yIGEgcmFuZG9taXplZCBBUEksIGJ1dCB0aGlzIHRl
c3Qgc2hvdWxkIGNhdGNoIHNvbWUKKyAgICAgICAgcmVncmVzc2lvbnMuCisKKyAgICAgICAgKiBz
ZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHNlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLmh0bWw6IEFkZGVkLgorCiAyMDExLTAy
LTEwICBNYWRzIEFnZXIgIDxhZ2VyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBOYXRlIENoYXBpbi4KSW5kZXg6IExheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20t
dmFsdWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zZWN1cml0eS9j
cnlwdG8tcmFuZG9tLXZhbHVlcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3RzIGNyeXB0by5yYW5kb21WYWx1ZXMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdjcnlwdG8nIGluIHdpbmRvdyBpcyB0cnVl
CitQQVNTICdnZXRSYW5kb21WYWx1ZXMnIGluIHdpbmRvdy5jcnlwdG8gaXMgdHJ1ZQorUEFTUyBt
YXRjaGluZ0J5dGVzIDwgMTAwIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8t
cmFuZG9tLXZhbHVlcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3NlY3VyaXR5L2Ny
eXB0by1yYW5kb20tdmFsdWVzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zZWN1
cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIGNyeXB0by5yYW5kb21WYWx1ZXMuIik7CisK
K2lmICghd2luZG93LkFycmF5QnVmZmVyKQorICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdXJlcyBB
cnJheUJ1ZmZlcnMgdG8gcnVuISIpOworCitzaG91bGRCZSgiJ2NyeXB0bycgaW4gd2luZG93Iiwg
InRydWUiKTsKK3Nob3VsZEJlKCInZ2V0UmFuZG9tVmFsdWVzJyBpbiB3aW5kb3cuY3J5cHRvIiwg
InRydWUiKTsKKwordHJ5IHsKKyAgICAvLyBGSVhNRTogVGhpcyB0ZXN0IGlzIGZsYWt5LiAgSWYg
d2UgcmFuIHRoaXMgdGVzdCBldmVyeSBzZWNvbmQgc2luY2UgdGhlCisgICAgLy8gICAgICAgIGJl
Z2lubmluZyBvZiB0aGUgdW5pdmVyc2UsIG9uIGF2ZXJhZ2UsIGl0IHdvdWxkIGhhdmUgZmFpbGVk
CisgICAgLy8gICAgICAgIDJeey03NDh9IHRpbWVzLgorCisgICAgdmFyIHJlZmVyZW5jZSA9IG5l
dyBVaW50OEFycmF5KDEwMCk7CisgICAgdmFyIHNhbXBsZSA9IG5ldyBVaW50OEFycmF5KDEwMCk7
CisKKyAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHJlZmVyZW5jZSk7CisgICAgY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyhzYW1wbGUpOworCisgICAgdmFyIG1hdGNoaW5nQnl0ZXMgPSAwOworCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZWZlcmVuY2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAg
aWYgKHJlZmVyZW5jZVtpXSA9PSBzYW1wbGVbaV0pCisgICAgICAgICAgICBtYXRjaGluZ0J5dGVz
Kys7CisgICAgfQorCisgICAgc2hvdWxkQmUoIm1hdGNoaW5nQnl0ZXMgPCAxMDAiLCAidHJ1ZSIp
OworfSBjYXRjaChleCkgeworICAgIGRlYnVnKGV4KTsKK30KKwordmFyIHN1Y2Nlc3NmdWxseVBh
cnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgorCisK
</data>
<flag name="review"
          id="73749"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>