<?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>112856</bug_id>
          
          <creation_ts>2013-03-20 16:31:33 -0700</creation_ts>
          <short_desc>Objective-C API: wrapperClass holds a static JSClassRef, which causes JSGlobalObjects to leak</short_desc>
          <delta_ts>2013-03-21 12:08:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>859849</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-20 16:31:33 -0700</bug_when>
    <thetext>Through a very convoluted path that involves the caching of prototypes on the JSClassRef, we can leak JSGlobalObjects when inserting an Objective-C object into multiple independent JSContexts.

The solution is simply to divorce JSWrapperMap and JSObjCClassInfo from the C API and use JSAPIWrapperObjects directly (without going through JSCallbackObject).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859999</commentid>
    <comment_count>1</comment_count>
      <attachid>194180</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-20 21:29:48 -0700</bug_when>
    <thetext>Created attachment 194180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860001</commentid>
    <comment_count>2</comment_count>
      <attachid>194180</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-20 21:35:00 -0700</bug_when>
    <thetext>Comment on attachment 194180
Patch

Attachment 194180 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17211574</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860004</commentid>
    <comment_count>3</comment_count>
      <attachid>194180</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-20 21:37:35 -0700</bug_when>
    <thetext>Comment on attachment 194180
Patch

Attachment 194180 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17213776</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860009</commentid>
    <comment_count>4</comment_count>
      <attachid>194182</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-20 21:42:58 -0700</bug_when>
    <thetext>Created attachment 194182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860019</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-20 22:03:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/13467942&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860063</commentid>
    <comment_count>6</comment_count>
      <attachid>194182</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-20 23:27:55 -0700</bug_when>
    <thetext>Comment on attachment 194182
Patch

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

&gt; Source/JavaScriptCore/API/JSAPIWrapperObject.cpp:55
&gt; +    CFRelease(wrapperObject-&gt;wrappedObject());

CFRelease is not always the same as -[NSObject release], so this is a no-no.

Let&apos;s compile this file as Objective-C++ and call -release.

&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:360
&gt; +            constructor = objectWithCustomBrand(m_context, [NSString stringWithFormat:@&quot;%sConstructor&quot;, className], [m_class retain]);

Why are we calling -retain here? You should only call -retain when storing a reference into a data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860312</commentid>
    <comment_count>7</comment_count>
      <attachid>194182</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-21 07:17:53 -0700</bug_when>
    <thetext>Comment on attachment 194182
Patch

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

&gt;&gt; Source/JavaScriptCore/API/JSAPIWrapperObject.cpp:55
&gt;&gt; +    CFRelease(wrapperObject-&gt;wrappedObject());
&gt; 
&gt; CFRelease is not always the same as -[NSObject release], so this is a no-no.
&gt; 
&gt; Let&apos;s compile this file as Objective-C++ and call -release.

Okiedokie.

&gt;&gt; Source/JavaScriptCore/API/JSWrapperMap.mm:360
&gt;&gt; +            constructor = objectWithCustomBrand(m_context, [NSString stringWithFormat:@&quot;%sConstructor&quot;, className], [m_class retain]);
&gt; 
&gt; Why are we calling -retain here? You should only call -retain when storing a reference into a data member.

That was in the original code. I think we call retain there because we use it as our &quot;wrapped object&quot; in the JSAPIWrapperObject and which is later released during finalization. I guess I could refactor the code so that JSAPIWrapperObject does the retain when storing its wrappedObject data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860364</commentid>
    <comment_count>8</comment_count>
      <attachid>194266</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-21 08:30:24 -0700</bug_when>
    <thetext>Created attachment 194266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860379</commentid>
    <comment_count>9</comment_count>
      <attachid>194266</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-21 08:41:00 -0700</bug_when>
    <thetext>Comment on attachment 194266
Patch

Attachment 194266 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17197714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860384</commentid>
    <comment_count>10</comment_count>
      <attachid>194266</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-21 08:43:44 -0700</bug_when>
    <thetext>Comment on attachment 194266
Patch

Attachment 194266 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17225485</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860393</commentid>
    <comment_count>11</comment_count>
      <attachid>194273</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-21 08:54:51 -0700</bug_when>
    <thetext>Created attachment 194273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860540</commentid>
    <comment_count>12</comment_count>
      <attachid>194273</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-03-21 12:05:47 -0700</bug_when>
    <thetext>Comment on attachment 194273
Patch

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

r=me

&gt; Source/JavaScriptCore/API/JSAPIWrapperObject.mm:85
&gt; +    m_wrappedObject = [static_cast&lt;id&gt;(wrappedObject) retain];

Let&apos;s make m_wrappedObject a RetainPtr. This can be a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>860546</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-21 12:08:29 -0700</bug_when>
    <thetext>Committed r146494: &lt;http://trac.webkit.org/changeset/146494&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194180</attachid>
            <date>2013-03-20 21:29:48 -0700</date>
            <delta_ts>2013-03-20 21:42:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112856-20130320212537.patch</filename>
            <type>text/plain</type>
            <size>10065</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2NDM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDEzLTAzLTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiB3cmFwcGVyQ2xhc3MgaG9sZHMgYSBzdGF0aWMgSlND
bGFzc1JlZiwgd2hpY2ggY2F1c2VzIEpTR2xvYmFsT2JqZWN0cyB0byBsZWFrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI4NTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdWdoIGEgdmVyeSBjb252
b2x1dGVkIHBhdGggdGhhdCBpbnZvbHZlcyB0aGUgY2FjaGluZyBvZiBwcm90b3R5cGVzIG9uIHRo
ZSBKU0NsYXNzUmVmLCB3ZSBjYW4gbGVhayAKKyAgICAgICAgSlNHbG9iYWxPYmplY3RzIHdoZW4g
aW5zZXJ0aW5nIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnRvIG11bHRpcGxlIGluZGVwZW5kZW50
IEpTQ29udGV4dHMuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcDogQWRk
IGEgV2Vha0hhbmRsZU93bmVyIGZvciBKU0FQSVdyYXBwZXJPYmplY3RzLiBUaGlzIHdpbGwgYWxz
byBiZSB1c2VkIAorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjYwOC4KKyAgICAgICAgKEpTQVBJV3JhcHBlck9i
amVjdEhhbmRsZU93bmVyKToKKyAgICAgICAgKGpzQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVy
KToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZSk6IFRo
aXMgZmluYWxpemUgcmVwbGFjZXMgdGhlIG9sZCBmaW5hbGl6ZSB0aGF0IHdhcyBkb25lIHRocm91
Z2gKKyAgICAgICAgdGhlIEMgQVBJLgorICAgICAgICAoSlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKTogQWxsb2NhdGUgdGhlIFdlYWtJbXBsLiBCYWxhbmNlZCBpbiBmaW5h
bGl6ZS4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgIChKU0FQ
SVdyYXBwZXJPYmplY3QpOgorICAgICAgICAqIEFQSS9KU1dyYXBwZXJNYXAubW06IFJlbW92ZSB3
cmFwcGVyQ2xhc3MoKS4KKyAgICAgICAgKG9iamVjdFdpdGhDdXN0b21CcmFuZCk6IENoYW5nZSB0
byBubyBsb25nZXIgdXNlIGEgcGFyZW50IGNsYXNzLCB3aGljaCB3YXMgb25seSB1c2VkIHRvIGdp
dmUgdGhlIGFiaWxpdHkgdG8gCisgICAgICAgIGZpbmFsaXplIHdyYXBwZXIgb2JqZWN0cy4KKyAg
ICAgICAgKC1bSlNPYmpDQ2xhc3NJbmZvIGluaXRXaXRoQ29udGV4dDpmb3JDbGFzczpzdXBlckNs
YXNzSW5mbzpdKTogQ2hhbmdlIHRvIG5vIGxvbmdlciB1c2Ugd3JhcHBlckNsYXNzKCkuIAorICAg
ICAgICAoLVtKU09iakNDbGFzc0luZm8gYWxsb2NhdGVDb25zdHJ1Y3RvckFuZFByb3RvdHlwZVdp
dGhTdXBlckNsYXNzSW5mbzpdKTogRGl0dG8uCisgICAgICAgICh0cnlVbndyYXBPYmpjT2JqZWN0
KToKKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbTogQWRkZWQgYSB0ZXN0IHRoYXQgZXhw
b3J0cyBhbiBPYmplY3RpdmUtQyBvYmplY3QgdG8gdHdvIGRpZmZlcmVudCBKU0NvbnRleHRzIGFu
ZCBtYWtlcyAKKyAgICAgICAgc3VyZSB0aGF0IHRoZSBmaXJzdCBvbmUgaXMgY29sbGVjdGVkIHBy
b3Blcmx5IGJ5IHVzaW5nIGEgd2VhayBKU01hbmFnZWRWYWx1ZSBmb3IgdGhlIHdyYXBwZXIgaW4g
dGhlIGZpcnN0IEpTQ29udGV4dC4KKwogMjAxMy0wMy0yMCAgQ29zbWluIFRydXRhICA8Y3RydXRh
QGJsYWNrYmVycnkuY29tPgogCiAgICAgICAgIFtRTlhdW0FSTV0gUkVHUkVTU0lPTihyMTM1MzMw
KTogVmFyaW91cyBmYWlsdXJlcyBpbiBPY3RhbmUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAJKHJldmlzaW9uIDE0NjQwOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsOSArMzMsMzEgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitj
bGFzcyBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5k
bGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4sIHZvaWQqKTsKK307CisKK3N0YXRpYyBKU0FQSVdyYXBwZXJPYmplY3RI
YW5kbGVPd25lcioganNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIoKQoreworICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIsIGpzV3JhcHBlck9i
amVjdEhhbmRsZU93bmVyLCAoKSk7CisgICAgcmV0dXJuICZqc1dyYXBwZXJPYmplY3RIYW5kbGVP
d25lcjsKK30KKwordm9pZCBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcjo6ZmluYWxpemUo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqKQoreworICAgIEpTQzo6V2Vh
a1NldDo6ZGVhbGxvY2F0ZShKU0M6OldlYWtJbXBsOjphc1dlYWtJbXBsKGhhbmRsZS5zbG90KCkp
KTsKKyAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVjdCogd3JhcHBlck9iamVjdCA9IEpTQzo6anND
YXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAg
ICBpZiAoIXdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIENGUmVsZWFzZSh3cmFwcGVyT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpOworfQorCiBuYW1l
c3BhY2UgSlNDIHsKICAgICAKLXRlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbyA9IHsgIkVudW1lcmFibGVDYWxsYmFj
a09iamVjdCIsICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxs
YmFja09iamVjdCkgfTsKK3RlbXBsYXRlIDw+IGNvbnN0IENsYXNzSW5mbyBKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5mbyA9IHsgIkpTQVBJV3JhcHBlck9iamVjdCIs
ICZCYXNlOjpzX2luZm8sIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNDYWxsYmFja09iamVj
dCkgfTsKIAogdGVtcGxhdGU8PiBjb25zdCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pjo6bmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CiAKQEAgLTUxLDYgKzczLDEyIEBA
IEpTQVBJV3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KEoKIHsKIH0KIAordm9pZCBK
U0FQSVdyYXBwZXJPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKKyAgICBXZWFrU2V0
OjphbGxvY2F0ZSh0aGlzLCBqc0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcigpLCAwKTsgLy8g
QmFsYW5jZWQgaW4gSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6OmZpbmFsaXplLgorfQor
CiB2b2lkIEpTQVBJV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgSlNBUElXcmFwcGVyT2JqZWN0KiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNBUElXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7CkBAIC02Miwz
ICs5MCw1IEBAIHZvaWQgSlNBUElXcmFwcGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEoKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0NfT0JKQ19BUElfRU5BQkxFRApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCShy
ZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBl
ck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEpTQVBJV3Jh
cHBlck9iamVjdCA6IHB1YmxpYyBKU0Rlc3QKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2Jh
bERhdGEmKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xv
dFZpc2l0b3ImKTsKICAgICAKICAgICB2b2lkKiB3cmFwcGVkT2JqZWN0KCkgeyByZXR1cm4gbV93
cmFwcGVkT2JqZWN0OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV3JhcHBl
ck1hcC5tbQkocmV2aXNpb24gMTQ2NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1dyYXBwZXJNYXAubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5LDMxICs0OSw2IEBAIC0gKEpTT2Jq
Q0NsYXNzSW5mbyopY2xhc3NJbmZvRm9yQ2xhc3M6KEMKIAogQGVuZAogCi1zdGF0aWMgdm9pZCB3
cmFwcGVyRmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQotewotICAgIEpTQzo6SlNBUElXcmFw
cGVyT2JqZWN0KiB3cmFwcGVyT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJP
YmplY3QqPih0b0pTKG9iamVjdCkpOwotICAgIFsoaWQpd3JhcHBlck9iamVjdC0+d3JhcHBlZE9i
amVjdCgpIHJlbGVhc2VdOwotfQotCi0vLyBBbGwgd3JhcHBlciBvYmplY3RzIGFuZCBjb25zdHJ1
Y3RvciBvYmplY3RzIGRlcml2ZSBmcm9tIHRoaXMgdHlwZSwgc28gd2UgY2FuIGRldGVjdCAmIHVu
d3JhcCBPYmplY3RpdmUtQyBpbnN0YW5jZXMvQ2xhc3Nlcy4KLXN0YXRpYyBKU0NsYXNzUmVmIHdy
YXBwZXJDbGFzcygpCi17Ci0gICAgc3RhdGljIFNwaW5Mb2NrIGluaXRMb2NrID0gU1BJTkxPQ0tf
SU5JVElBTElaRVI7Ci0gICAgU3BpbkxvY2tIb2xkZXIgbG9ja0hvbGRlcigmaW5pdExvY2spOwot
Ci0gICAgc3RhdGljIEpTQ2xhc3NSZWYgY2xhc3NSZWYgPSAwOwotCi0gICAgaWYgKCFjbGFzc1Jl
ZikgewotICAgICAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0aW9uOwotICAgICAgICBkZWZp
bml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7Ci0gICAgICAgIGRlZmluaXRpb24uY2xh
c3NOYW1lID0gIm9iamNfY2xhc3MiOwotICAgICAgICBkZWZpbml0aW9uLmZpbmFsaXplID0gd3Jh
cHBlckZpbmFsaXplOwotICAgICAgICBjbGFzc1JlZiA9IEpTQ2xhc3NDcmVhdGUoJmRlZmluaXRp
b24pOwotICAgIH0KLQotICAgIHJldHVybiBjbGFzc1JlZjsKLX0KLQogLy8gRGVmYXVsdCBjb252
ZXJzaW9uIG9mIHNlbGVjdG9ycyB0byBwcm9wZXJ0eSBuYW1lcy4KIC8vIEFsbCBzZW1pY29sb25z
IGFyZSByZW1vdmVkLCBsb3dlcmNhc2UgbGV0dGVycyBmb2xsb3dpbmcgYSBzZW1pY29sb24gYXJl
IGNhcGl0YWxpemVkLgogc3RhdGljIE5TU3RyaW5nICpzZWxlY3RvclRvUHJvcGVydHlOYW1lKGNv
bnN0IGNoYXIqIHN0YXJ0KQpAQCAtMTM1LDEyICsxMTAsMTEgQEAgc3RhdGljIEpTT2JqZWN0UmVm
IG1ha2VXcmFwcGVyKEpTQ29udGV4dAogLy8gTWFrZSBhbiBvYmplY3QgdGhhdCBpcyBpbiBhbGwg
d2F5cyBhIGNvbXBsZXRlbHkgdmFuaWxsYSBKYXZhU2NyaXB0IG9iamVjdCwKIC8vIG90aGVyIHRo
YW4gdGhhdCBpdCBoYXMgYSBuYXRpdmUgYnJhbmQgc2V0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQg
YnkgdGhlIGRlZmF1bHQKIC8vIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcgY29udmVyc2lvbi4K
LXN0YXRpYyBKU1ZhbHVlICpvYmplY3RXaXRoQ3VzdG9tQnJhbmQoSlNDb250ZXh0ICpjb250ZXh0
LCBOU1N0cmluZyAqYnJhbmQsIEpTQ2xhc3NSZWYgcGFyZW50Q2xhc3MgPSAwLCBDbGFzcyBjbHMg
PSAwKQorc3RhdGljIEpTVmFsdWUgKm9iamVjdFdpdGhDdXN0b21CcmFuZChKU0NvbnRleHQgKmNv
bnRleHQsIE5TU3RyaW5nICpicmFuZCwgQ2xhc3MgY2xzID0gMCkKIHsKICAgICBKU0NsYXNzRGVm
aW5pdGlvbiBkZWZpbml0aW9uOwogICAgIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25F
bXB0eTsKICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9IFticmFuZCBVVEY4U3RyaW5nXTsKLSAg
ICBkZWZpbml0aW9uLnBhcmVudENsYXNzID0gcGFyZW50Q2xhc3M7CiAgICAgSlNDbGFzc1JlZiBj
bGFzc1JlZiA9IEpTQ2xhc3NDcmVhdGUoJmRlZmluaXRpb24pOwogICAgIEpTT2JqZWN0UmVmIHJl
c3VsdCA9IG1ha2VXcmFwcGVyKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBjbGFzc1JlZiwg
Y2xzKTsKICAgICBKU0NsYXNzUmVsZWFzZShjbGFzc1JlZik7CkBAIC0zNDIsNyArMzE2LDYgQEAg
LSAoaWQpaW5pdFdpdGhDb250ZXh0OihKU0NvbnRleHQgKiljb250ZQogICAgIEpTQ2xhc3NEZWZp
bml0aW9uIGRlZmluaXRpb247CiAgICAgZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVt
cHR5OwogICAgIGRlZmluaXRpb24uY2xhc3NOYW1lID0gY2xhc3NOYW1lOwotICAgIGRlZmluaXRp
b24ucGFyZW50Q2xhc3MgPSB3cmFwcGVyQ2xhc3MoKTsKICAgICBtX2NsYXNzUmVmID0gSlNDbGFz
c0NyZWF0ZSgmZGVmaW5pdGlvbik7CiAKICAgICBbc2VsZiBhbGxvY2F0ZUNvbnN0cnVjdG9yQW5k
UHJvdG90eXBlV2l0aFN1cGVyQ2xhc3NJbmZvOnN1cGVyQ2xhc3NJbmZvXTsKQEAgLTM4NCw3ICsz
NTcsNyBAQCAtICh2b2lkKWFsbG9jYXRlQ29uc3RydWN0b3JBbmRQcm90b3R5cGVXCiAgICAgICAg
IGlmIChtX2NvbnN0cnVjdG9yKQogICAgICAgICAgICAgY29uc3RydWN0b3IgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhWYWx1ZTp0b1JlZihtX2NvbnN0cnVjdG9yLmdldCgpKSBpbkNvbnRleHQ6bV9jb250
ZXh0XTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBvYmplY3RXaXRo
Q3VzdG9tQnJhbmQobV9jb250ZXh0LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzQ29u
c3RydWN0b3IiLCBjbGFzc05hbWVdLCB3cmFwcGVyQ2xhc3MoKSwgW21fY2xhc3MgcmV0YWluXSk7
CisgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IG9iamVjdFdpdGhDdXN0b21CcmFuZChtX2NvbnRl
eHQsIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXNDb25zdHJ1Y3RvciIsIGNsYXNzTmFt
ZV0sIFttX2NsYXNzIHJldGFpbl0pOwogCiAgICAgICAgIEpTQ29udGV4dFJlZiBjQ29udGV4dCA9
IFttX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl07CiAgICAgICAgIG1fcHJvdG90eXBlID0gdG9K
UyhKU1ZhbHVlVG9PYmplY3QoY0NvbnRleHQsIHZhbHVlSW50ZXJuYWxWYWx1ZShwcm90b3R5cGUp
LCAwKSk7CkBAIC01MjUsNyArNDk4LDcgQEAgaWQgdHJ5VW53cmFwT2JqY09iamVjdChKU0dsb2Jh
bENvbnRleHRSZQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU09iamVjdFJl
ZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsICZleGNlcHRpb24pOwog
ICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKLSAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhj
b250ZXh0LCBvYmplY3QsIHdyYXBwZXJDbGFzcygpKSkKKyAgICBpZiAodG9KUyhvYmplY3QpLT5p
bmhlcml0cygmSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6
c19pbmZvKSkKICAgICAgICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBl
ck9iamVjdCo+KHRvSlMob2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAoaWQgdGFy
Z2V0ID0gdHJ5VW53cmFwQmxvY2sob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlzaW9u
IDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTIzLDcgKzUyMyw2IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEko
KQogICAgICAgICBUZXN0T2JqZWN0ICp0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVj
dF07CiAgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OwogICAgICAg
ICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIkZ1bmN0aW9uLnBy
b3RvdHlwZS50b1N0cmluZy5jYWxsKHRlc3RPYmplY3QuY2FsbGJhY2spIl07Ci0gICAgICAgIE5T
TG9nKEAidG9TdHJpbmcgPSAlQCIsIFtyZXN1bHQgdG9TdHJpbmddKTsKICAgICAgICAgY2hlY2tS
ZXN1bHQoQCJGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmciLCAhY29udGV4dC5leGNlcHRpb24g
JiYgIVtyZXN1bHQgaXNVbmRlZmluZWRdKTsKICAgICB9CiAKQEAgLTYyOSw2ICs2MjgsMjYgQEAg
dm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50
IGhhbmRsZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jvb2xdKTsKICAgICAg
ICAgfQogICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU1ZpcnR1YWxN
YWNoaW5lICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFRl
c3RPYmplY3QgKnRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKKyAgICAgICAg
SlNNYW5hZ2VkVmFsdWUgKndlYWtWYWx1ZTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdp
dGhWaXJ0dWFsTWFjaGluZTp2bV07CisgICAgICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJd
ID0gdGVzdE9iamVjdDsKKyAgICAgICAgICAgIHdlYWtWYWx1ZSA9IFtbSlNNYW5hZ2VkVmFsdWUg
YWxsb2NdIGluaXRXaXRoVmFsdWU6Y29udGV4dFtAInRlc3RPYmplY3QiXV07CisgICAgICAgIH0K
KworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTQ29udGV4dCAqY29u
dGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOnZtXTsKKyAg
ICAgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OworICAgICAgICAg
ICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IGdsb2Jh
bENvbnRleHRSZWZdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2VhayB2YWx1ZSA9PSBu
aWwiLCAhW3dlYWtWYWx1ZSB2YWx1ZV0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJyb290
IGlzIHN0aWxsIGFsaXZlIiwgIVtjb250ZXh0W0AidGVzdE9iamVjdCJdIGlzVW5kZWZpbmVkXSk7
CisgICAgICAgIH0KKyAgICB9CisKIH0KIAogI2Vsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194182</attachid>
            <date>2013-03-20 21:42:58 -0700</date>
            <delta_ts>2013-03-21 08:30:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112856-20130320213847.patch</filename>
            <type>text/plain</type>
            <size>17405</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2NDM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBA
CisyMDEzLTAzLTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiB3cmFwcGVyQ2xhc3MgaG9sZHMgYSBzdGF0aWMgSlND
bGFzc1JlZiwgd2hpY2ggY2F1c2VzIEpTR2xvYmFsT2JqZWN0cyB0byBsZWFrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI4NTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdWdoIGEgdmVyeSBjb252
b2x1dGVkIHBhdGggdGhhdCBpbnZvbHZlcyB0aGUgY2FjaGluZyBvZiBwcm90b3R5cGVzIG9uIHRo
ZSBKU0NsYXNzUmVmLCB3ZSBjYW4gbGVhayAKKyAgICAgICAgSlNHbG9iYWxPYmplY3RzIHdoZW4g
aW5zZXJ0aW5nIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnRvIG11bHRpcGxlIGluZGVwZW5kZW50
IEpTQ29udGV4dHMuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcDogQWRk
IGEgV2Vha0hhbmRsZU93bmVyIGZvciBKU0FQSVdyYXBwZXJPYmplY3RzLiBUaGlzIHdpbGwgYWxz
byBiZSB1c2VkIAorICAgICAgICBpbiBhIGZ1dHVyZSBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjYwOC4KKyAgICAgICAgKEpTQVBJV3JhcHBlck9i
amVjdEhhbmRsZU93bmVyKToKKyAgICAgICAgKGpzQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVy
KToKKyAgICAgICAgKEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZSk6IFRo
aXMgZmluYWxpemUgcmVwbGFjZXMgdGhlIG9sZCBmaW5hbGl6ZSB0aGF0IHdhcyBkb25lIHRocm91
Z2gKKyAgICAgICAgdGhlIEMgQVBJLgorICAgICAgICAoSlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q6
OmZpbmlzaENyZWF0aW9uKTogQWxsb2NhdGUgdGhlIFdlYWtJbXBsLiBCYWxhbmNlZCBpbiBmaW5h
bGl6ZS4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgIChKU0FQ
SVdyYXBwZXJPYmplY3QpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZi5jcHA6IEFkZGVkIHNv
bWUgaWZkZWZzIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZSBPYmotQyBBUEku
CisgICAgICAgIChKU09iamVjdEdldFByaXZhdGUpOiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0
U2V0UHJpdmF0ZSk6IERpdHRvLgorICAgICAgICAoSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkp
OiBEaXR0by4KKyAgICAgICAgKEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KTogRGl0dG8uCisg
ICAgICAgIChKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAq
IEFQSS9KU1ZhbHVlUmVmLmNwcDogRGl0dG8uCisgICAgICAgIChKU1ZhbHVlSXNPYmplY3RPZkNs
YXNzKTogRGl0dG8uCisgICAgICAgICogQVBJL0pTV3JhcHBlck1hcC5tbTogUmVtb3ZlIHdyYXBw
ZXJDbGFzcygpLgorICAgICAgICAob2JqZWN0V2l0aEN1c3RvbUJyYW5kKTogQ2hhbmdlIHRvIG5v
IGxvbmdlciB1c2UgYSBwYXJlbnQgY2xhc3MsIHdoaWNoIHdhcyBvbmx5IHVzZWQgdG8gZ2l2ZSB0
aGUgYWJpbGl0eSB0byAKKyAgICAgICAgZmluYWxpemUgd3JhcHBlciBvYmplY3RzLgorICAgICAg
ICAoLVtKU09iakNDbGFzc0luZm8gaW5pdFdpdGhDb250ZXh0OmZvckNsYXNzOnN1cGVyQ2xhc3NJ
bmZvOl0pOiBDaGFuZ2UgdG8gbm8gbG9uZ2VyIHVzZSB3cmFwcGVyQ2xhc3MoKS4gCisgICAgICAg
ICgtW0pTT2JqQ0NsYXNzSW5mbyBhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kUHJvdG90eXBlV2l0aFN1
cGVyQ2xhc3NJbmZvOl0pOiBEaXR0by4KKyAgICAgICAgKHRyeVVud3JhcE9iamNPYmplY3QpOiBX
ZSBub3cgY2hlY2sgaWYgdGhlIG9iamVjdCBpbmhlcml0cyBmcm9tIEpTQVBJV3JhcHBlck9iamVj
dC4KKyAgICAgICAgKiBBUEkvdGVzdHMvdGVzdGFwaS5tbTogQWRkZWQgYSB0ZXN0IHRoYXQgZXhw
b3J0cyBhbiBPYmplY3RpdmUtQyBvYmplY3QgdG8gdHdvIGRpZmZlcmVudCBKU0NvbnRleHRzIGFu
ZCBtYWtlcyAKKyAgICAgICAgc3VyZSB0aGF0IHRoZSBmaXJzdCBvbmUgaXMgY29sbGVjdGVkIHBy
b3Blcmx5IGJ5IHVzaW5nIGEgd2VhayBKU01hbmFnZWRWYWx1ZSBmb3IgdGhlIHdyYXBwZXIgaW4g
dGhlIGZpcnN0IEpTQ29udGV4dC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cDogTW9yZSBpZmRlZnMgZm9yIHVuc3VwcG9ydGVkIHBsYXRmb3Jtcy4KKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxPYmplY3Q6OnJlc2V0KTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOiBEaXR0by4KKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KTogRGl0dG8uCisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpvYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk6IERp
dHRvLgorCiAyMDEzLTAzLTIwICBDb3NtaW4gVHJ1dGEgIDxjdHJ1dGFAYmxhY2tiZXJyeS5jb20+
CiAKICAgICAgICAgW1FOWF1bQVJNXSBSRUdSRVNTSU9OKHIxMzUzMzApOiBWYXJpb3VzIGZhaWx1
cmVzIGluIE9jdGFuZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBw
ZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElXcmFwcGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTQ2NDA4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5
ICszMywzMSBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKIAorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKK2NsYXNzIEpTQVBJV3JhcHBl
ck9iamVjdEhhbmRsZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKK3B1Ymxp
YzoKKyAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwg
dm9pZCopOworfTsKKworc3RhdGljIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKiBqc0FQ
SVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChK
U0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lciwganNXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIs
ICgpKTsKKyAgICByZXR1cm4gJmpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOworfQorCit2b2lk
IEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCopCit7CisgICAgSlNDOjpXZWFrU2V0OjpkZWFsbG9jYXRl
KEpTQzo6V2Vha0ltcGw6OmFzV2Vha0ltcGwoaGFuZGxlLnNsb3QoKSkpOworICAgIEpTQzo6SlNB
UElXcmFwcGVyT2JqZWN0KiB3cmFwcGVyT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdy
YXBwZXJPYmplY3QqPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAgIGlmICghd3JhcHBlck9i
amVjdC0+d3JhcHBlZE9iamVjdCgpKQorICAgICAgICByZXR1cm47CisgICAgQ0ZSZWxlYXNlKHdy
YXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSk7Cit9CisKIG5hbWVzcGFjZSBKU0MgewogICAg
IAotdGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFw
cGVyT2JqZWN0Pjo6c19pbmZvID0geyAiRW51bWVyYWJsZUNhbGxiYWNrT2JqZWN0IiwgJkJhc2U6
OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrT2JqZWN0KSB9Owor
dGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVy
T2JqZWN0Pjo6c19pbmZvID0geyAiSlNBUElXcmFwcGVyT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywg
MCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrT2JqZWN0KSB9OwogCiB0ZW1wbGF0
ZTw+IGNvbnN0IGJvb2wgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKIApAQCAtNTEsNiArNzMsMTIgQEAgSlNBUElXcmFwcGVyT2Jq
ZWN0OjpKU0FQSVdyYXBwZXJPYmplY3QoSgogewogfQogCit2b2lkIEpTQVBJV3JhcHBlck9iamVj
dDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgIFdlYWtTZXQ6OmFsbG9jYXRlKHRoaXMs
IGpzQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyKCksIDApOyAvLyBCYWxhbmNlZCBpbiBKU0FQ
SVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcjo6ZmluYWxpemUuCit9CisKIHZvaWQgSlNBUElXcmFw
cGVyT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKIHsKICAgICBKU0FQSVdyYXBwZXJPYmplY3QqIHRoaXNPYmplY3QgPSBKU0M6Ompz
Q2FzdDxKU0FQSVdyYXBwZXJPYmplY3QqPihjZWxsKTsKQEAgLTYyLDMgKzkwLDUgQEAgdm9pZCBK
U0FQSVdyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSgogfQogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIEpTQ19PQkpDX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJKHJldmlzaW9uIDE0NjQwOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDEyICszMCwxNSBAQAogI2luY2x1ZGUgIkpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIgogCisjaWYgSlNDX09C
SkNfQVBJX0VOQUJMRUQKKwogbmFtZXNwYWNlIEpTQyB7CiAgICAgCiBjbGFzcyBKU0FQSVdyYXBw
ZXJPYmplY3QgOiBwdWJsaWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5
cGVkZWYgSlNEZXN0cnVjdGlibGVPYmplY3QgQmFzZTsKICAgICAKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTR2xvYmFsRGF0YSYpOwogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogICAgIAogICAgIHZvaWQqIHdyYXBwZWRPYmplY3Qo
KSB7IHJldHVybiBtX3dyYXBwZWRPYmplY3Q7IH0KQEAgLTUyLDQgKzU1LDYgQEAgcHJpdmF0ZToK
IAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKKyNlbmRpZgorCiAjZW5kaWYgLy8gSlNBUElXcmFwcGVy
T2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3Bw
CShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDggKzM0NiwxMCBAQCB2b2lkKiBKU09iamVj
dEdldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxs
YmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKICAg
ICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOworI2lmIEpT
Q19PQkpDX0FQSV9FTkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFj
a09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICByZXR1cm4ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0
UHJpdmF0ZSgpOworI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zNjQsMTAgKzM2
NiwxMiBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplCiAgICAgICAg
IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0
KS0+c2V0UHJpdmF0ZShkYXRhKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2lmIEpT
Q19PQkpDX0FQSV9FTkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFj
a09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7CiAgICAgICAgIGpzQ2FzdDxK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZh
dGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgogICAgICAgICAK
ICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zODMsOCArMzg3LDEwIEBAIEpTVmFsdWVSZWYgSlNP
YmplY3RHZXRQcml2YXRlUHJvcGVydHkoSlMKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVy
dHkobmFtZSk7CiAgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2Jq
ZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5n
ZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBl
bHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVy
T2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5h
bWUpOworI2VuZGlmCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHJlc3VsdCk7CiB9CiAKQEAgLTQw
MywxMCArNDA5LDEyIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250ZXgK
ICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4o
anNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBq
c1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2lmIEpTQ19PQkpDX0FQSV9F
TkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQ
SVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShl
eGVjLT5nbG9iYWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQyNCwxMCArNDMyLDEy
IEBAIGJvb2wgSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlNDb24KICAgICAgICAganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5k
ZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpT
Q2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkgewogICAgICAgICBq
c0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5k
ZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOCArMTQ5
LDEwIEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYKICAgICAgICAg
ICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihvKS0+
aW5oZXJpdHMoanNDbGFzcyk7CiAgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNDYWxsYmFja09i
amVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgICAgICByZXR1cm4g
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4obyktPmluaGVy
aXRzKGpzQ2xhc3MpOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgICAgIGlmIChvLT5p
bmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKQog
ICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9i
amVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFzcyk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAu
bW0JKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFw
cGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSwzMSArNDksNiBAQCAtIChKU09iakNDbGFz
c0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihDCiAKIEBlbmQKIAotc3RhdGljIHZvaWQgd3JhcHBl
ckZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKLXsKLSAgICBKU0M6OkpTQVBJV3JhcHBlck9i
amVjdCogd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0
Kj4odG9KUyhvYmplY3QpKTsKLSAgICBbKGlkKXdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3Qo
KSByZWxlYXNlXTsKLX0KLQotLy8gQWxsIHdyYXBwZXIgb2JqZWN0cyBhbmQgY29uc3RydWN0b3Ig
b2JqZWN0cyBkZXJpdmUgZnJvbSB0aGlzIHR5cGUsIHNvIHdlIGNhbiBkZXRlY3QgJiB1bndyYXAg
T2JqZWN0aXZlLUMgaW5zdGFuY2VzL0NsYXNzZXMuCi1zdGF0aWMgSlNDbGFzc1JlZiB3cmFwcGVy
Q2xhc3MoKQotewotICAgIHN0YXRpYyBTcGluTG9jayBpbml0TG9jayA9IFNQSU5MT0NLX0lOSVRJ
QUxJWkVSOwotICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tIb2xkZXIoJmluaXRMb2NrKTsKLQotICAg
IHN0YXRpYyBKU0NsYXNzUmVmIGNsYXNzUmVmID0gMDsKLQotICAgIGlmICghY2xhc3NSZWYpIHsK
LSAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbjsKLSAgICAgICAgZGVmaW5pdGlv
biA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFt
ZSA9ICJvYmpjX2NsYXNzIjsKLSAgICAgICAgZGVmaW5pdGlvbi5maW5hbGl6ZSA9IHdyYXBwZXJG
aW5hbGl6ZTsKLSAgICAgICAgY2xhc3NSZWYgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gY2xhc3NSZWY7Ci19Ci0KIC8vIERlZmF1bHQgY29udmVyc2lv
biBvZiBzZWxlY3RvcnMgdG8gcHJvcGVydHkgbmFtZXMuCiAvLyBBbGwgc2VtaWNvbG9ucyBhcmUg
cmVtb3ZlZCwgbG93ZXJjYXNlIGxldHRlcnMgZm9sbG93aW5nIGEgc2VtaWNvbG9uIGFyZSBjYXBp
dGFsaXplZC4KIHN0YXRpYyBOU1N0cmluZyAqc2VsZWN0b3JUb1Byb3BlcnR5TmFtZShjb25zdCBj
aGFyKiBzdGFydCkKQEAgLTEzNSwxMiArMTEwLDExIEBAIHN0YXRpYyBKU09iamVjdFJlZiBtYWtl
V3JhcHBlcihKU0NvbnRleHQKIC8vIE1ha2UgYW4gb2JqZWN0IHRoYXQgaXMgaW4gYWxsIHdheXMg
YSBjb21wbGV0ZWx5IHZhbmlsbGEgSmF2YVNjcmlwdCBvYmplY3QsCiAvLyBvdGhlciB0aGFuIHRo
YXQgaXQgaGFzIGEgbmF0aXZlIGJyYW5kIHNldCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJ5IHRo
ZSBkZWZhdWx0CiAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIGNvbnZlcnNpb24uCi1zdGF0
aWMgSlNWYWx1ZSAqb2JqZWN0V2l0aEN1c3RvbUJyYW5kKEpTQ29udGV4dCAqY29udGV4dCwgTlNT
dHJpbmcgKmJyYW5kLCBKU0NsYXNzUmVmIHBhcmVudENsYXNzID0gMCwgQ2xhc3MgY2xzID0gMCkK
K3N0YXRpYyBKU1ZhbHVlICpvYmplY3RXaXRoQ3VzdG9tQnJhbmQoSlNDb250ZXh0ICpjb250ZXh0
LCBOU1N0cmluZyAqYnJhbmQsIENsYXNzIGNscyA9IDApCiB7CiAgICAgSlNDbGFzc0RlZmluaXRp
b24gZGVmaW5pdGlvbjsKICAgICBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7
CiAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSBbYnJhbmQgVVRGOFN0cmluZ107Ci0gICAgZGVm
aW5pdGlvbi5wYXJlbnRDbGFzcyA9IHBhcmVudENsYXNzOwogICAgIEpTQ2xhc3NSZWYgY2xhc3NS
ZWYgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKICAgICBKU09iamVjdFJlZiByZXN1bHQg
PSBtYWtlV3JhcHBlcihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgY2xhc3NSZWYsIGNscyk7
CiAgICAgSlNDbGFzc1JlbGVhc2UoY2xhc3NSZWYpOwpAQCAtMzQyLDcgKzMxNiw2IEBAIC0gKGlk
KWluaXRXaXRoQ29udGV4dDooSlNDb250ZXh0ICopY29udGUKICAgICBKU0NsYXNzRGVmaW5pdGlv
biBkZWZpbml0aW9uOwogICAgIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsK
ICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgICBkZWZpbml0aW9uLnBh
cmVudENsYXNzID0gd3JhcHBlckNsYXNzKCk7CiAgICAgbV9jbGFzc1JlZiA9IEpTQ2xhc3NDcmVh
dGUoJmRlZmluaXRpb24pOwogCiAgICAgW3NlbGYgYWxsb2NhdGVDb25zdHJ1Y3RvckFuZFByb3Rv
dHlwZVdpdGhTdXBlckNsYXNzSW5mbzpzdXBlckNsYXNzSW5mb107CkBAIC0zODQsNyArMzU3LDcg
QEAgLSAodm9pZClhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kUHJvdG90eXBlVwogICAgICAgICBpZiAo
bV9jb25zdHJ1Y3RvcikKICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gW0pTVmFsdWUgdmFsdWVX
aXRoVmFsdWU6dG9SZWYobV9jb25zdHJ1Y3Rvci5nZXQoKSkgaW5Db250ZXh0Om1fY29udGV4dF07
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gb2JqZWN0V2l0aEN1c3Rv
bUJyYW5kKG1fY29udGV4dCwgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlc0NvbnN0cnVj
dG9yIiwgY2xhc3NOYW1lXSwgd3JhcHBlckNsYXNzKCksIFttX2NsYXNzIHJldGFpbl0pOworICAg
ICAgICAgICAgY29uc3RydWN0b3IgPSBvYmplY3RXaXRoQ3VzdG9tQnJhbmQobV9jb250ZXh0LCBb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzQ29uc3RydWN0b3IiLCBjbGFzc05hbWVdLCBb
bV9jbGFzcyByZXRhaW5dKTsKIAogICAgICAgICBKU0NvbnRleHRSZWYgY0NvbnRleHQgPSBbbV9j
b250ZXh0IGdsb2JhbENvbnRleHRSZWZdOwogICAgICAgICBtX3Byb3RvdHlwZSA9IHRvSlMoSlNW
YWx1ZVRvT2JqZWN0KGNDb250ZXh0LCB2YWx1ZUludGVybmFsVmFsdWUocHJvdG90eXBlKSwgMCkp
OwpAQCAtNTI1LDcgKzQ5OCw3IEBAIGlkIHRyeVVud3JhcE9iamNPYmplY3QoSlNHbG9iYWxDb250
ZXh0UmUKICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgSlNPYmplY3RSZWYgb2Jq
ZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KGNvbnRleHQsIHZhbHVlLCAmZXhjZXB0aW9uKTsKICAgICBB
U1NFUlQoIWV4Y2VwdGlvbik7Ci0gICAgaWYgKEpTVmFsdWVJc09iamVjdE9mQ2xhc3MoY29udGV4
dCwgb2JqZWN0LCB3cmFwcGVyQ2xhc3MoKSkpCisgICAgaWYgKHRvSlMob2JqZWN0KS0+aW5oZXJp
dHMoJkpTQzo6SlNDYWxsYmFja09iamVjdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdD46OnNfaW5m
bykpCiAgICAgICAgIHJldHVybiAoaWQpSlNDOjpqc0Nhc3Q8SlNDOjpKU0FQSVdyYXBwZXJPYmpl
Y3QqPih0b0pTKG9iamVjdCkpLT53cmFwcGVkT2JqZWN0KCk7CiAgICAgaWYgKGlkIHRhcmdldCA9
IHRyeVVud3JhcEJsb2NrKG9iamVjdCkpCiAgICAgICAgIHJldHVybiB0YXJnZXQ7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLm1tCShyZXZpc2lvbiAxNDY0
MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUyMyw3ICs1MjMsNiBAQCB2b2lkIHRlc3RPYmplY3RpdmVDQVBJKCkKICAg
ICAgICAgVGVzdE9iamVjdCAqdGVzdE9iamVjdCA9IFtUZXN0T2JqZWN0IHRlc3RPYmplY3RdOwog
ICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJdID0gdGVzdE9iamVjdDsKICAgICAgICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW2NvbnRleHQgZXZhbHVhdGVTY3JpcHQ6QCJGdW5jdGlvbi5wcm90b3R5
cGUudG9TdHJpbmcuY2FsbCh0ZXN0T2JqZWN0LmNhbGxiYWNrKSJdOwotICAgICAgICBOU0xvZyhA
InRvU3RyaW5nID0gJUAiLCBbcmVzdWx0IHRvU3RyaW5nXSk7CiAgICAgICAgIGNoZWNrUmVzdWx0
KEAiRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nIiwgIWNvbnRleHQuZXhjZXB0aW9uICYmICFb
cmVzdWx0IGlzVW5kZWZpbmVkXSk7CiAgICAgfQogCkBAIC02MjksNiArNjI4LDI2IEBAIHZvaWQg
dGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJFdmVudCBoYW5k
bGVyIG9uY2xpY2sgZG9lc24ndCBmaXJlIiwgIVtyZXN1bHQgdG9Cb29sXSk7CiAgICAgICAgIH0K
ICAgICB9CisKKyAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgSlNWaXJ0dWFsTWFjaGlu
ZSAqdm0gPSBbW0pTVmlydHVhbE1hY2hpbmUgYWxsb2NdIGluaXRdOworICAgICAgICBUZXN0T2Jq
ZWN0ICp0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07CisgICAgICAgIEpTTWFu
YWdlZFZhbHVlICp3ZWFrVmFsdWU7CisgICAgICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAg
ICAgICAgSlNDb250ZXh0ICpjb250ZXh0ID0gW1tKU0NvbnRleHQgYWxsb2NdIGluaXRXaXRoVmly
dHVhbE1hY2hpbmU6dm1dOworICAgICAgICAgICAgY29udGV4dFtAInRlc3RPYmplY3QiXSA9IHRl
c3RPYmplY3Q7CisgICAgICAgICAgICB3ZWFrVmFsdWUgPSBbW0pTTWFuYWdlZFZhbHVlIGFsbG9j
XSBpbml0V2l0aFZhbHVlOmNvbnRleHRbQCJ0ZXN0T2JqZWN0Il1dOworICAgICAgICB9CisKKyAg
ICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQg
PSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTp2bV07CisgICAgICAg
ICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJdID0gdGVzdE9iamVjdDsKKyAgICAgICAgICAgIEpT
U3luY2hyb25vdXNHYXJiYWdlQ29sbGVjdEZvckRlYnVnZ2luZyhbY29udGV4dCBnbG9iYWxDb250
ZXh0UmVmXSk7CisgICAgICAgICAgICBjaGVja1Jlc3VsdChAIndlYWsgdmFsdWUgPT0gbmlsIiwg
IVt3ZWFrVmFsdWUgdmFsdWVdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAicm9vdCBpcyBz
dGlsbCBhbGl2ZSIsICFbY29udGV4dFtAInRlc3RPYmplY3QiXSBpc1VuZGVmaW5lZF0pOworICAg
ICAgICB9CisgICAgfQorCiB9CiAKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAxNDY0MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMyw4ICsyMzMsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1Zh
bHVlIHByb3RvCiAgICAgbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIG1fb2JqY0NhbGxiYWNrRnVu
Y3Rpb25TdHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgT2JqQ0NhbGxiYWNr
RnVuY3Rpb246OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKLSNlbmRpZgogICAgIG1fb2JqY1dyYXBwZXJPYmplY3RT
dHJ1Y3R1cmUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOworI2VuZGlmCiAKICAgICBtX2FycmF5UHJv
dG90eXBlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEFycmF5UHJvdG90eXBlOjpjcmVh
dGUoZXhlYywgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9i
YWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIApAQCAtNTE5
LDggKzUxOSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9jYWxsYmFja09iamVjdFN0cnVjdHVyZSk7
CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk7Ci0jZW5kaWYKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSk7CisjZW5k
aWYKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kYXRlU3RydWN0dXJlKTsKICAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0
dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9lcnJvclN0cnVjdHVyZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgJKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBAQCBwcm90ZWN0
ZWQ6CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVy
ZTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmU7Ci0jZW5kaWYKICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlOworI2VuZGlmCiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9kYXRlU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2Vycm9yU3RydWN0dXJlOwpAQCAtMzA3LDggKzMwNyw4IEBAIHB1
YmxpYzoKICAgICBTdHJ1Y3R1cmUqIGNhbGxiYWNrT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsYmFja09iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECiAgICAgU3RydWN0dXJlKiBvYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fb2JqY0NhbGxiYWNrRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0K
LSNlbmRpZgogICAgIFN0cnVjdHVyZSogb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUoKSBjb25z
dCB7IHJldHVybiBtX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisjZW5kaWYK
ICAgICBTdHJ1Y3R1cmUqIGRhdGVTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2RhdGVTdHJ1
Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIG51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1
cmUoKSBjb25zdCB7IHJldHVybiBtX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7
IH0KICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9lcnJv
clN0cnVjdHVyZS5nZXQoKTsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194266</attachid>
            <date>2013-03-21 08:30:24 -0700</date>
            <delta_ts>2013-03-21 08:54:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112856-20130321082612.patch</filename>
            <type>text/plain</type>
            <size>33103</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2NDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBA
CisyMDEzLTAzLTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiB3cmFwcGVyQ2xhc3MgaG9sZHMgYSBzdGF0aWMgSlND
bGFzc1JlZiwgd2hpY2ggY2F1c2VzIEpTR2xvYmFsT2JqZWN0cyB0byBsZWFrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI4NTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdWdoIGEgdmVyeSBjb252
b2x1dGVkIHBhdGggdGhhdCBpbnZvbHZlcyB0aGUgY2FjaGluZyBvZiBwcm90b3R5cGVzIG9uIHRo
ZSBKU0NsYXNzUmVmLCB3ZSBjYW4gbGVhayAKKyAgICAgICAgSlNHbG9iYWxPYmplY3RzIHdoZW4g
aW5zZXJ0aW5nIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnRvIG11bHRpcGxlIGluZGVwZW5kZW50
IEpTQ29udGV4dHMuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgIChKU0FQ
SVdyYXBwZXJPYmplY3QpOgorICAgICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNw
cC4gTWFkZSB0aGlzIGFuCisgICAgICAgIE9iamVjdGl2ZS1DKysgZmlsZSBzbyB0aGF0IHdlIGNh
biBjYWxsIHJlbGVhc2Ugb24gdGhlIHdyYXBwZWRPYmplY3QuIEFsc28gYWRkZWQgYSBXZWFrSGFu
ZGxlT3duZXIgZm9yIAorICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RzLiBUaGlzIHdpbGwgYWxz
byBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEyNjA4LgorICAgICAgICAoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxl
T3duZXIpOgorICAgICAgICAoanNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIpOgorICAgICAg
ICAoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6OmZpbmFsaXplKTogVGhpcyBmaW5hbGl6
ZSByZXBsYWNlcyB0aGUgb2xkIGZpbmFsaXplIHRoYXQgd2FzIGRvbmUgdGhyb3VnaAorICAgICAg
ICB0aGUgQyBBUEkuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOiBBbGxvY2F0ZSB0aGUgV2Vha0ltcGwuIEJhbGFuY2VkIGluIGZpbmFsaXplLgorICAg
ICAgICAoSlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q6OnNldFdyYXBwZWRPYmplY3QpOiBXZSBub3cg
ZG8gdGhlIHJldGFpbiBvZiB0aGUgd3JhcHBlZE9iamVjdCBoZXJlIHJhdGhlciB0aGFuIGluIHJh
bmRvbQorICAgICAgICBwbGFjZXMgc2NhdHRlcmVkIGFyb3VuZCBKU1dyYXBwZXJNYXAubW0KKyAg
ICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOiBBZGRlZCBzb21lIGlmZGVmcyBmb3IgcGxhdGZv
cm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgT2JqLUMgQVBJLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKTogRGl0dG8uCisgICAgICAgIChKU09iamVjdFNldFByaXZhdGUpOiBEaXR0by4K
KyAgICAgICAgKEpTT2JqZWN0R2V0UHJpdmF0ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChK
U09iamVjdFNldFByaXZhdGVQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoSlNPYmplY3REZWxl
dGVQcml2YXRlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6
IERpdHRvLgorICAgICAgICAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyk6IERpdHRvLgorICAgICAg
ICAqIEFQSS9KU1dyYXBwZXJNYXAubW06IFJlbW92ZSB3cmFwcGVyQ2xhc3MoKS4KKyAgICAgICAg
KG9iamVjdFdpdGhDdXN0b21CcmFuZCk6IENoYW5nZSB0byBubyBsb25nZXIgdXNlIGEgcGFyZW50
IGNsYXNzLCB3aGljaCB3YXMgb25seSB1c2VkIHRvIGdpdmUgdGhlIGFiaWxpdHkgdG8gCisgICAg
ICAgIGZpbmFsaXplIHdyYXBwZXIgb2JqZWN0cy4KKyAgICAgICAgKC1bSlNPYmpDQ2xhc3NJbmZv
IGluaXRXaXRoQ29udGV4dDpmb3JDbGFzczpzdXBlckNsYXNzSW5mbzpdKTogQ2hhbmdlIHRvIG5v
IGxvbmdlciB1c2Ugd3JhcHBlckNsYXNzKCkuIAorICAgICAgICAoLVtKU09iakNDbGFzc0luZm8g
YWxsb2NhdGVDb25zdHJ1Y3RvckFuZFByb3RvdHlwZVdpdGhTdXBlckNsYXNzSW5mbzpdKTogRGl0
dG8uCisgICAgICAgICh0cnlVbndyYXBPYmpjT2JqZWN0KTogV2Ugbm93IGNoZWNrIGlmIHRoZSBv
YmplY3QgaW5oZXJpdHMgZnJvbSBKU0FQSVdyYXBwZXJPYmplY3QuCisgICAgICAgICogQVBJL3Rl
c3RzL3Rlc3RhcGkubW06IEFkZGVkIGEgdGVzdCB0aGF0IGV4cG9ydHMgYW4gT2JqZWN0aXZlLUMg
b2JqZWN0IHRvIHR3byBkaWZmZXJlbnQgSlNDb250ZXh0cyBhbmQgbWFrZXMgCisgICAgICAgIHN1
cmUgdGhhdCB0aGUgZmlyc3Qgb25lIGlzIGNvbGxlY3RlZCBwcm9wZXJseSBieSB1c2luZyBhIHdl
YWsgSlNNYW5hZ2VkVmFsdWUgZm9yIHRoZSB3cmFwcGVyIGluIHRoZSBmaXJzdCBKU0NvbnRleHQu
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEJ1aWxkIGZpbGUgbW9kaWZpY2F0aW9ucy4KKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6IERpdHRvLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOiBE
aXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogTW9yZSBpZmRl
ZnMgZm9yIHVuc3VwcG9ydGVkIHBsYXRmb3Jtcy4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOiBEaXR0
by4KKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk6IERpdHRvLgorCiAyMDEz
LTAzLTIxICBHYWJvciBSYXBjc2FueWkgIDxyZ2Fib3JAd2Via2l0Lm9yZz4KIAogICAgICAgICBJ
bXBsZW1lbnQgTExJbnQgZm9yIENQVShBUk1fVFJBRElUSU9OQUwpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAogc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKLSAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAogICAgIEFQSS9K
U0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKICAgICBBUEkvSlND
YWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBAIGphdmFz
Y3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKLSAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmggXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDE0
NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAgICAgICAgICAgICAnQVBJL0FQSVNoaW1zLmgn
LAogICAgICAgICAgICAgJ0FQSS9KYXZhU2NyaXB0Q29yZS5oJywKICAgICAgICAgICAgICdBUEkv
SmF2YVNjcmlwdC5oJywKLSAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcCcs
CiAgICAgICAgICAgICAnQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oJywKICAgICAgICAgICAgICdB
UEkvSlNCYXNlLmNwcCcsCiAgICAgICAgICAgICAnQVBJL0pTQmFzZS5oJywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHAJKHJldmlz
aW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2Jq
ZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkpTQVBJV3JhcHBlck9iamVjdC5oIgotCi0jaW5j
bHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5l
cy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMu
aCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0gICAgCi10ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8g
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8gPSB7ICJFbnVtZXJh
YmxlQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07Ci0KLXRlbXBsYXRlPD4gY29uc3QgYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46Om5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwot
Ci10ZW1wbGF0ZSA8PgotU3RydWN0dXJlKiBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9i
amVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8pCi17Ci0gICAgcmV0dXJuIFN0cnVj
dHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgJnNfaW5mbyk7Ci19Ci0KLUpTQVBJV3JhcHBlck9i
amVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAs
IG1fd3JhcHBlZE9iamVjdCgwKQotewotfQotCi12b2lkIEpTQVBJV3JhcHBlck9iamVjdDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0g
ICAgSlNBUElXcmFwcGVyT2JqZWN0KiB0aGlzT2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNBUElXcmFw
cGVyT2JqZWN0Kj4oY2VsbCk7Ci0gICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBP
dmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRp
bmdGbGFnKTsKLSAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOwotCi0gICAg
aWYgKHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKLSAgICAgICAgdmlzaXRvci5hZGRPcGFx
dWVSb290KHRoaXNPYmplY3QtPndyYXBwZWRPYmplY3QoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9i
amVjdC5oCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
QVBJV3JhcHBlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNiArMzAsMTkgQEAKICNp
bmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVjdC5oIgogI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIuaCIKIAorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECisKIG5hbWVzcGFjZSBKU0Mg
ewogICAgIAogY2xhc3MgSlNBUElXcmFwcGVyT2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7
CiAgICAgCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmKTsKICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAK
ICAgICB2b2lkKiB3cmFwcGVkT2JqZWN0KCkgeyByZXR1cm4gbV93cmFwcGVkT2JqZWN0OyB9Ci0g
ICAgdm9pZCBzZXRXcmFwcGVkT2JqZWN0KHZvaWQqIHdyYXBwZWRPYmplY3QpIHsgbV93cmFwcGVk
T2JqZWN0ID0gd3JhcHBlZE9iamVjdDsgfQorICAgIHZvaWQgc2V0V3JhcHBlZE9iamVjdCh2b2lk
Kik7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CkBAIC01
Miw0ICs1NSw2IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCisjZW5kaWYKKwog
I2VuZGlmIC8vIEpTQVBJV3JhcHBlck9iamVjdF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5tbQkocmV2aXNpb24gMTQ2NDA4KQkoZnJv
bSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5jcHA6MTQ2NDA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBwZXJPYmplY3QuaCIKKworI2luY2x1ZGUgIkpTQ0pT
VmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDYWxsYmFja09iamVjdC5oIgorI2luY2x1ZGUg
IkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworICAgIAordGVtcGxhdGUgPD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvID0geyAiRW51bWVyYWJsZUNhbGxiYWNr
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxi
YWNrT2JqZWN0KSB9OworCit0ZW1wbGF0ZTw+IGNvbnN0IGJvb2wgSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+OjpuZWVkc0Rlc3RydWN0aW9uID0gdHJ1ZTsKKwordGVtcGxhdGUg
PD4KK1N0cnVjdHVyZSogSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVh
dGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOworfQorCitKU0FQSVdyYXBwZXJPYmplY3Q6OkpTQVBJ
V3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogQmFzZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3dyYXBwZWRP
YmplY3QoMCkKK3sKK30KKwordm9pZCBKU0FQSVdyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTQVBJV3Jh
cHBlck9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTQVBJV3JhcHBlck9iamVjdCo+
KGNlbGwpOworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7Cisg
ICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2Jq
ZWN0LT53cmFwcGVkT2JqZWN0KCkpCisgICAgICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlz
T2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tCSh3
b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9i
amVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsOSArMzMsMzEgQEAKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCiAKKyNpZiBKU0NfT0JKQ19B
UElfRU5BQkxFRAorCitjbGFzcyBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lciA6IHB1Ymxp
YyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGZpbmFs
aXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqKTsKK307CisKK3N0YXRpYyBKU0FQ
SVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcioganNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIo
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3du
ZXIsIGpzV3JhcHBlck9iamVjdEhhbmRsZU93bmVyLCAoKSk7CisgICAgcmV0dXJuICZqc1dyYXBw
ZXJPYmplY3RIYW5kbGVPd25lcjsKK30KKwordm9pZCBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVP
d25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqKQor
eworICAgIEpTQzo6V2Vha1NldDo6ZGVhbGxvY2F0ZShKU0M6OldlYWtJbXBsOjphc1dlYWtJbXBs
KGhhbmRsZS5zbG90KCkpKTsKKyAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVjdCogd3JhcHBlck9i
amVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4oaGFuZGxlLmdldCgp
LmFzQ2VsbCgpKTsKKyAgICBpZiAoIXdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIFtzdGF0aWNfY2FzdDxpZD4od3JhcHBlck9iamVjdC0+d3JhcHBl
ZE9iamVjdCgpKSByZWxlYXNlXTsKK30KKwogbmFtZXNwYWNlIEpTQyB7CiAgICAgCi10ZW1wbGF0
ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+
OjpzX2luZm8gPSB7ICJFbnVtZXJhYmxlQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAw
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07Cit0ZW1wbGF0ZSA8
PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Ojpz
X2luZm8gPSB7ICJKU0FQSVdyYXBwZXJPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07CiAKIHRlbXBsYXRlPD4gY29uc3Qg
Ym9vbCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46Om5lZWRzRGVzdHJ1Y3Rp
b24gPSB0cnVlOwogCkBAIC01MSw2ICs3MywxOCBAQCBKU0FQSVdyYXBwZXJPYmplY3Q6OkpTQVBJ
V3JhcHBlck9iamVjdChKCiB7CiB9CiAKK3ZvaWQgSlNBUElXcmFwcGVyT2JqZWN0OjpmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CisgICAgV2Vha1NldDo6YWxsb2NhdGUodGhpcywganNBUElXcmFw
cGVyT2JqZWN0SGFuZGxlT3duZXIoKSwgMCk7IC8vIEJhbGFuY2VkIGluIEpTQVBJV3JhcHBlck9i
amVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZS4KK30KKyAgICAKK3ZvaWQgSlNBUElXcmFwcGVyT2Jq
ZWN0OjpzZXRXcmFwcGVkT2JqZWN0KHZvaWQqIHdyYXBwZWRPYmplY3QpCit7CisgICAgQVNTRVJU
KCFtX3dyYXBwZWRPYmplY3QpOworICAgIG1fd3JhcHBlZE9iamVjdCA9IFtzdGF0aWNfY2FzdDxp
ZD4od3JhcHBlZE9iamVjdCkgcmV0YWluXTsKK30KKwogdm9pZCBKU0FQSVdyYXBwZXJPYmplY3Q6
OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQog
ewogICAgIEpTQVBJV3JhcHBlck9iamVjdCogdGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTQVBJ
V3JhcHBlck9iamVjdCo+KGNlbGwpOwpAQCAtNjIsMyArOTYsNSBAQCB2b2lkIEpTQVBJV3JhcHBl
ck9iamVjdDo6dmlzaXRDaGlsZHJlbihKCiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ2LDggKzM0Niwx
MCBAQCB2b2lkKiBKU09iamVjdEdldFByaXZhdGUoSlNPYmplY3RSZWYgb2JqCiAgICAgICAgIHJl
dHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCkt
PmdldFByaXZhdGUoKTsKICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2Jq
ZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIGpzQ2Fz
dDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0
UHJpdmF0ZSgpOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5p
bmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKQog
ICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0
Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOworI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIDA7
CiB9CkBAIC0zNjQsMTAgKzM2NiwxMiBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZShKU09iamVj
dFJlZiBvYmplCiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxl
T2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0ZShkYXRhKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5p
bmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7
CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihq
c09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
KyNlbmRpZgogICAgICAgICAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0zODMsOCArMzg3LDEw
IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkoSlMKICAgICAgICAgcmVz
dWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3Qp
LT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVy
aXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAg
ICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmpl
Y3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CisjaWYgSlNDX09CSkNf
QVBJX0VOQUJMRUQKICAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganND
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0
UHJpdmF0ZVByb3BlcnR5KG5hbWUpOworI2VuZGlmCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHJl
c3VsdCk7CiB9CiAKQEAgLTQwMywxMCArNDA5LDEyIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRl
UHJvcGVydHkoSlNDb250ZXgKICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0
cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQor
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7CiAgICAgICAgIGpz
Q2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPnNl
dFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
QEAgLTQyNCwxMCArNDMyLDEyIEBAIGJvb2wgSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHko
SlNDb24KICAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmpl
Y3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIGlmIChqc09i
amVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19p
bmZvKSkgewogICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmpl
Y3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxNDY0MDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDksOCArMTQ5LDEwIEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0Nv
bnRleHRSZWYKICAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0ds
b2JhbE9iamVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFzcyk7CiAgICAgICAgIGlmIChvLT5pbmhl
cml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rlc3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAg
ICAgICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVP
YmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xhc3MpOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
CiAgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+OjpzX2luZm8pKQogICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2Jq
ZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFzcyk7CisjZW5kaWYK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSwzMSArNDks
NiBAQCAtIChKU09iakNDbGFzc0luZm8qKWNsYXNzSW5mb0ZvckNsYXNzOihDCiAKIEBlbmQKIAot
c3RhdGljIHZvaWQgd3JhcHBlckZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKLXsKLSAgICBK
U0M6OkpTQVBJV3JhcHBlck9iamVjdCogd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6
SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhvYmplY3QpKTsKLSAgICBbKGlkKXdyYXBwZXJPYmpl
Y3QtPndyYXBwZWRPYmplY3QoKSByZWxlYXNlXTsKLX0KLQotLy8gQWxsIHdyYXBwZXIgb2JqZWN0
cyBhbmQgY29uc3RydWN0b3Igb2JqZWN0cyBkZXJpdmUgZnJvbSB0aGlzIHR5cGUsIHNvIHdlIGNh
biBkZXRlY3QgJiB1bndyYXAgT2JqZWN0aXZlLUMgaW5zdGFuY2VzL0NsYXNzZXMuCi1zdGF0aWMg
SlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKQotewotICAgIHN0YXRpYyBTcGluTG9jayBpbml0TG9j
ayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwotICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tIb2xkZXIo
JmluaXRMb2NrKTsKLQotICAgIHN0YXRpYyBKU0NsYXNzUmVmIGNsYXNzUmVmID0gMDsKLQotICAg
IGlmICghY2xhc3NSZWYpIHsKLSAgICAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbjsK
LSAgICAgICAgZGVmaW5pdGlvbiA9IGtKU0NsYXNzRGVmaW5pdGlvbkVtcHR5OwotICAgICAgICBk
ZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJvYmpjX2NsYXNzIjsKLSAgICAgICAgZGVmaW5pdGlvbi5m
aW5hbGl6ZSA9IHdyYXBwZXJGaW5hbGl6ZTsKLSAgICAgICAgY2xhc3NSZWYgPSBKU0NsYXNzQ3Jl
YXRlKCZkZWZpbml0aW9uKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gY2xhc3NSZWY7Ci19Ci0KIC8v
IERlZmF1bHQgY29udmVyc2lvbiBvZiBzZWxlY3RvcnMgdG8gcHJvcGVydHkgbmFtZXMuCiAvLyBB
bGwgc2VtaWNvbG9ucyBhcmUgcmVtb3ZlZCwgbG93ZXJjYXNlIGxldHRlcnMgZm9sbG93aW5nIGEg
c2VtaWNvbG9uIGFyZSBjYXBpdGFsaXplZC4KIHN0YXRpYyBOU1N0cmluZyAqc2VsZWN0b3JUb1By
b3BlcnR5TmFtZShjb25zdCBjaGFyKiBzdGFydCkKQEAgLTEzNSwxMiArMTEwLDExIEBAIHN0YXRp
YyBKU09iamVjdFJlZiBtYWtlV3JhcHBlcihKU0NvbnRleHQKIC8vIE1ha2UgYW4gb2JqZWN0IHRo
YXQgaXMgaW4gYWxsIHdheXMgYSBjb21wbGV0ZWx5IHZhbmlsbGEgSmF2YVNjcmlwdCBvYmplY3Qs
CiAvLyBvdGhlciB0aGFuIHRoYXQgaXQgaGFzIGEgbmF0aXZlIGJyYW5kIHNldCB0aGF0IHdpbGwg
YmUgZGlzcGxheWVkIGJ5IHRoZSBkZWZhdWx0CiAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5n
IGNvbnZlcnNpb24uCi1zdGF0aWMgSlNWYWx1ZSAqb2JqZWN0V2l0aEN1c3RvbUJyYW5kKEpTQ29u
dGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmJyYW5kLCBKU0NsYXNzUmVmIHBhcmVudENsYXNzID0g
MCwgQ2xhc3MgY2xzID0gMCkKK3N0YXRpYyBKU1ZhbHVlICpvYmplY3RXaXRoQ3VzdG9tQnJhbmQo
SlNDb250ZXh0ICpjb250ZXh0LCBOU1N0cmluZyAqYnJhbmQsIENsYXNzIGNscyA9IDApCiB7CiAg
ICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbjsKICAgICBkZWZpbml0aW9uID0ga0pTQ2xh
c3NEZWZpbml0aW9uRW1wdHk7CiAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSBbYnJhbmQgVVRG
OFN0cmluZ107Ci0gICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFzcyA9IHBhcmVudENsYXNzOwogICAg
IEpTQ2xhc3NSZWYgY2xhc3NSZWYgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKICAgICBK
U09iamVjdFJlZiByZXN1bHQgPSBtYWtlV3JhcHBlcihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVm
XSwgY2xhc3NSZWYsIGNscyk7CiAgICAgSlNDbGFzc1JlbGVhc2UoY2xhc3NSZWYpOwpAQCAtMzQy
LDcgKzMxNiw2IEBAIC0gKGlkKWluaXRXaXRoQ29udGV4dDooSlNDb250ZXh0ICopY29udGUKICAg
ICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0aW9uOwogICAgIGRlZmluaXRpb24gPSBrSlNDbGFz
c0RlZmluaXRpb25FbXB0eTsKICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsK
LSAgICBkZWZpbml0aW9uLnBhcmVudENsYXNzID0gd3JhcHBlckNsYXNzKCk7CiAgICAgbV9jbGFz
c1JlZiA9IEpTQ2xhc3NDcmVhdGUoJmRlZmluaXRpb24pOwogCiAgICAgW3NlbGYgYWxsb2NhdGVD
b25zdHJ1Y3RvckFuZFByb3RvdHlwZVdpdGhTdXBlckNsYXNzSW5mbzpzdXBlckNsYXNzSW5mb107
CkBAIC0zODQsNyArMzU3LDcgQEAgLSAodm9pZClhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kUHJvdG90
eXBlVwogICAgICAgICBpZiAobV9jb25zdHJ1Y3RvcikKICAgICAgICAgICAgIGNvbnN0cnVjdG9y
ID0gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6dG9SZWYobV9jb25zdHJ1Y3Rvci5nZXQoKSkgaW5D
b250ZXh0Om1fY29udGV4dF07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnN0cnVjdG9y
ID0gb2JqZWN0V2l0aEN1c3RvbUJyYW5kKG1fY29udGV4dCwgW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xhc3NOYW1lXSwgd3JhcHBlckNsYXNzKCksIFttX2Ns
YXNzIHJldGFpbl0pOworICAgICAgICAgICAgY29uc3RydWN0b3IgPSBvYmplY3RXaXRoQ3VzdG9t
QnJhbmQobV9jb250ZXh0LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzQ29uc3RydWN0
b3IiLCBjbGFzc05hbWVdLCBtX2NsYXNzKTsKIAogICAgICAgICBKU0NvbnRleHRSZWYgY0NvbnRl
eHQgPSBbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdOwogICAgICAgICBtX3Byb3RvdHlwZSA9
IHRvSlMoSlNWYWx1ZVRvT2JqZWN0KGNDb250ZXh0LCB2YWx1ZUludGVybmFsVmFsdWUocHJvdG90
eXBlKSwgMCkpOwpAQCAtNDIyLDcgKzM5NSw3IEBAIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9yT2Jq
ZWN0OihpZClvYmplY3QKICAgICAgICAgW3NlbGYgcmVhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kT3JQ
cm90b3R5cGVdOwogICAgIEFTU0VSVCghIW1fcHJvdG90eXBlKTsKIAotICAgIEpTT2JqZWN0UmVm
IHdyYXBwZXIgPSBtYWtlV3JhcHBlcihbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2Ns
YXNzUmVmLCBbb2JqZWN0IHJldGFpbl0pOworICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBtYWtl
V3JhcHBlcihbbV9jb250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2NsYXNzUmVmLCBvYmplY3Qp
OwogICAgIEpTT2JqZWN0U2V0UHJvdG90eXBlKFttX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0s
IHdyYXBwZXIsIHRvUmVmKG1fcHJvdG90eXBlLmdldCgpKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aFZhbHVlOndyYXBwZXIgaW5Db250ZXh0Om1fY29udGV4dF07CiB9CkBAIC01MjUs
NyArNDk4LDcgQEAgaWQgdHJ5VW53cmFwT2JqY09iamVjdChKU0dsb2JhbENvbnRleHRSZQogICAg
IEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1Zh
bHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUsICZleGNlcHRpb24pOwogICAgIEFTU0VSVCghZXhj
ZXB0aW9uKTsKLSAgICBpZiAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhjb250ZXh0LCBvYmplY3Qs
IHdyYXBwZXJDbGFzcygpKSkKKyAgICBpZiAodG9KUyhvYmplY3QpLT5pbmhlcml0cygmSlNDOjpK
U0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKICAgICAg
ICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxKU0M6OkpTQVBJV3JhcHBlck9iamVjdCo+KHRvSlMo
b2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsKICAgICBpZiAoaWQgdGFyZ2V0ID0gdHJ5VW53cmFw
QmxvY2sob2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRhcmdldDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkubW0JKHJldmlzaW9uIDE0NjQwOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNTIzLDcgKzUyMyw2IEBAIHZvaWQgdGVzdE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBUZXN0
T2JqZWN0ICp0ZXN0T2JqZWN0ID0gW1Rlc3RPYmplY3QgdGVzdE9iamVjdF07CiAgICAgICAgIGNv
bnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OwogICAgICAgICBKU1ZhbHVlICpyZXN1
bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAIkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmlu
Zy5jYWxsKHRlc3RPYmplY3QuY2FsbGJhY2spIl07Ci0gICAgICAgIE5TTG9nKEAidG9TdHJpbmcg
PSAlQCIsIFtyZXN1bHQgdG9TdHJpbmddKTsKICAgICAgICAgY2hlY2tSZXN1bHQoQCJGdW5jdGlv
bi5wcm90b3R5cGUudG9TdHJpbmciLCAhY29udGV4dC5leGNlcHRpb24gJiYgIVtyZXN1bHQgaXNV
bmRlZmluZWRdKTsKICAgICB9CiAKQEAgLTYyOSw2ICs2MjgsMjYgQEAgdm9pZCB0ZXN0T2JqZWN0
aXZlQ0FQSSgpCiAgICAgICAgICAgICBjaGVja1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGlj
ayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0b0Jvb2xdKTsKICAgICAgICAgfQogICAgIH0KKwor
ICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAgICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2bSA9IFtb
SlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5pdF07CisgICAgICAgIFRlc3RPYmplY3QgKnRlc3RP
YmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2JqZWN0XTsKKyAgICAgICAgSlNNYW5hZ2VkVmFsdWUg
KndlYWtWYWx1ZTsKKyAgICAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU0Nv
bnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4dCBhbGxvY10gaW5pdFdpdGhWaXJ0dWFsTWFjaGlu
ZTp2bV07CisgICAgICAgICAgICBjb250ZXh0W0AidGVzdE9iamVjdCJdID0gdGVzdE9iamVjdDsK
KyAgICAgICAgICAgIHdlYWtWYWx1ZSA9IFtbSlNNYW5hZ2VkVmFsdWUgYWxsb2NdIGluaXRXaXRo
VmFsdWU6Y29udGV4dFtAInRlc3RPYmplY3QiXV07CisgICAgICAgIH0KKworICAgICAgICBAYXV0
b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250
ZXh0IGFsbG9jXSBpbml0V2l0aFZpcnR1YWxNYWNoaW5lOnZtXTsKKyAgICAgICAgICAgIGNvbnRl
eHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2JqZWN0OworICAgICAgICAgICAgSlNTeW5jaHJvbm91
c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5nKFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdKTsK
KyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAid2VhayB2YWx1ZSA9PSBuaWwiLCAhW3dlYWtWYWx1
ZSB2YWx1ZV0pOworICAgICAgICAgICAgY2hlY2tSZXN1bHQoQCJyb290IGlzIHN0aWxsIGFsaXZl
IiwgIVtjb250ZXh0W0AidGVzdE9iamVjdCJdIGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0KKyAg
ICB9CisKIH0KIAogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQxOCwxMCArMTQxOCw2IEBA
CiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEFQ
SVxKU0FQSVdyYXBwZXJPYmplY3QuY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmgiCiAJCQkJPgog
CQkJPC9GaWxlPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShy
ZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyAr
MTQ0LDYgQEAKICAgICA8TGluayAvPg0KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KICAgPEl0
ZW1Hcm91cD4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNBUElXcmFwcGVyT2Jq
ZWN0LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNCYXNlLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNDYWxsYmFja0NvbnN0cnVjdG9y
LmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNDYWxsYmFja0Z1bmN0
aW9uLmNwcCIgLz4NCkBAIC03ODUsNCArNzg0LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZD
VGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCiAgIDxJbXBvcnRHcm91cCBM
YWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQogICA8L0ltcG9ydEdyb3VwPg0KLTwvUHJvamVjdD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+DQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTQ2
NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2
YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC03NTAsOSArNzUw
LDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcUHJvcGVydHlUYWJsZS5j
cHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4N
Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmNwcCI+
DQotICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRlcj4NCi0gICAgPC9DbENvbXBpbGU+DQogICA8L0l0
ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJ
XEFQSUNhc3QuaCI+DQpAQCAtMTkxOCw0ICsxOTE1LDQgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSJK
YXZhU2NyaXB0Q29yZVByZUJ1aWxkLmNtZCIgLz4NCiAgICAgPE5vbmUgSW5jbHVkZT0iY29weS1m
aWxlcy5jbWQiIC8+DQogICA8L0l0ZW1Hcm91cD4NCi08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0Pg0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtODQzLDcg
Kzg0Myw3IEBACiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGlu
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhE
MDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkM4RDAzMDE0QTNDRUZDMDA1
NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRBM0NFRkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMx
MTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxv
Y2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlD
MkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0YzOUJGMTZFMTVBODEw
MERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovOyB9OworCQlDMkNGMzlDMTE2RTE1
QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5tbSAqLzsgfTsKIAkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8q
IEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVj
dC5oICovOyB9OwogCQlDMkQ1OEMzNDE1OTEyRkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
RDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9Owog
CQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4
RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OwpAQCAtMTc0NSw3ICsxNzQ1LDcgQEAKIAkJQzJDOEQw
MkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFjZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkUxNEEzQ0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcGllZEJsb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhEMDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxv
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGVhcEJsb2NrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQ
SVdyYXBwZXJPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNBUElXcmFwcGVyT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJD
RjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEpTQVBJV3JhcHBlck9iamVjdC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FQ
SVdyYXBwZXJPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJENThDMzMx
NTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBUaW1lci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjIyLDcgKzIyMjIsNyBAQAogCQkJCTVE
RTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKIAkJCQlD
MjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2VkVmFsdWUubW0gKi8sCiAJCQkJQzI1
RDcwOUExNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8sCi0JCQkJQzJDRjM5
QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgKi8sCisJCQkJQzJD
RjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLywKIAkJCQlD
MkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8sCiAJCQkp
OwogCQkJcGF0aCA9IEFQSTsKQEAgLTM4MTIsNyArMzgxMiw3IEBACiAJCQkJMEZEM0M4MjYxNDEx
NUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5
RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJD
MEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZHRXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
Ci0JCQkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFw
cGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEw
IC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4
MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5RENCMTMy
OERGODIwMDJCMkFENyAvKiBERkdKSVRDb21waWxlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJ
KHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDggKzIzMyw4IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG8KICAgICBtX2NhbGxiYWNrT2JqZWN0U3Ry
dWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNE
ZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVE
CiAgICAgbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0
YSgpLCB0aGlzLCBPYmpDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmds
b2JhbERhdGEoKSwgdGhpcywgbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSkpOwotI2VuZGlmCiAg
ICAgbV9vYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0
aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVy
ZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7Cisj
ZW5kaWYKIAogICAgIG1fYXJyYXlQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
cywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShleGVjLCB0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUu
Z2V0KCkpKSk7CiAgICAgCkBAIC01MTksOCArNTE5LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Nh
bGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKICNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJl
KTsKLSNlbmRpZgogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX29iamNXcmFwcGVy
T2JqZWN0U3RydWN0dXJlKTsKKyNlbmRpZgogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0
LT5tX2RhdGVTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251
bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTQ2NDA4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MTQ0LDggKzE0NCw4IEBAIHByb3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsK
LSNlbmRpZgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RT
dHJ1Y3R1cmU7CisjZW5kaWYKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RhdGVTdHJ1
Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9udWxsUHJvdG90eXBlT2JqZWN0
U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7
CkBAIC0zMDcsOCArMzA3LDggQEAgcHVibGljOgogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmpl
Y3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdl
dCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxs
YmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5j
dGlvblN0cnVjdHVyZS5nZXQoKTsgfQotI2VuZGlmCiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBl
ck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KKyNlbmRpZgogICAgIFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbnVs
bFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVsbFByb3RvdHlw
ZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194273</attachid>
            <date>2013-03-21 08:54:51 -0700</date>
            <delta_ts>2013-03-21 12:05:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112856-20130321085039.patch</filename>
            <type>text/plain</type>
            <size>33589</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ2NDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBA
CisyMDEzLTAzLTIxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgT2JqZWN0aXZlLUMgQVBJOiB3cmFwcGVyQ2xhc3MgaG9sZHMgYSBzdGF0aWMgSlND
bGFzc1JlZiwgd2hpY2ggY2F1c2VzIEpTR2xvYmFsT2JqZWN0cyB0byBsZWFrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTI4NTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJvdWdoIGEgdmVyeSBjb252
b2x1dGVkIHBhdGggdGhhdCBpbnZvbHZlcyB0aGUgY2FjaGluZyBvZiBwcm90b3R5cGVzIG9uIHRo
ZSBKU0NsYXNzUmVmLCB3ZSBjYW4gbGVhayAKKyAgICAgICAgSlNHbG9iYWxPYmplY3RzIHdoZW4g
aW5zZXJ0aW5nIGFuIE9iamVjdGl2ZS1DIG9iamVjdCBpbnRvIG11bHRpcGxlIGluZGVwZW5kZW50
IEpTQ29udGV4dHMuCisKKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcDogUmVt
b3ZlZC4KKyAgICAgICAgKiBBUEkvSlNBUElXcmFwcGVyT2JqZWN0Lmg6CisgICAgICAgIChKU0FQ
SVdyYXBwZXJPYmplY3QpOgorICAgICAgICAqIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QubW06IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNw
cC4gTWFkZSB0aGlzIGFuCisgICAgICAgIE9iamVjdGl2ZS1DKysgZmlsZSBzbyB0aGF0IHdlIGNh
biBjYWxsIHJlbGVhc2Ugb24gdGhlIHdyYXBwZWRPYmplY3QuIEFsc28gYWRkZWQgYSBXZWFrSGFu
ZGxlT3duZXIgZm9yIAorICAgICAgICBKU0FQSVdyYXBwZXJPYmplY3RzLiBUaGlzIHdpbGwgYWxz
byBiZSB1c2VkIGluIGEgZnV0dXJlIHBhdGNoIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTEyNjA4LgorICAgICAgICAoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxl
T3duZXIpOgorICAgICAgICAoanNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIpOgorICAgICAg
ICAoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXI6OmZpbmFsaXplKTogVGhpcyBmaW5hbGl6
ZSByZXBsYWNlcyB0aGUgb2xkIGZpbmFsaXplIHRoYXQgd2FzIGRvbmUgdGhyb3VnaAorICAgICAg
ICB0aGUgQyBBUEkuCisgICAgICAgIChKU0M6OkpTQVBJV3JhcHBlck9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOiBBbGxvY2F0ZSB0aGUgV2Vha0ltcGwuIEJhbGFuY2VkIGluIGZpbmFsaXplLgorICAg
ICAgICAoSlNDOjpKU0FQSVdyYXBwZXJPYmplY3Q6OnNldFdyYXBwZWRPYmplY3QpOiBXZSBub3cg
ZG8gdGhlIHJldGFpbiBvZiB0aGUgd3JhcHBlZE9iamVjdCBoZXJlIHJhdGhlciB0aGFuIGluIHJh
bmRvbQorICAgICAgICBwbGFjZXMgc2NhdHRlcmVkIGFyb3VuZCBKU1dyYXBwZXJNYXAubW0KKyAg
ICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOiBBZGRlZCBzb21lIGlmZGVmcyBmb3IgcGxhdGZv
cm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0aGUgT2JqLUMgQVBJLgorICAgICAgICAoSlNPYmplY3RH
ZXRQcml2YXRlKTogRGl0dG8uCisgICAgICAgIChKU09iamVjdFNldFByaXZhdGUpOiBEaXR0by4K
KyAgICAgICAgKEpTT2JqZWN0R2V0UHJpdmF0ZVByb3BlcnR5KTogRGl0dG8uCisgICAgICAgIChK
U09iamVjdFNldFByaXZhdGVQcm9wZXJ0eSk6IERpdHRvLgorICAgICAgICAoSlNPYmplY3REZWxl
dGVQcml2YXRlUHJvcGVydHkpOiBEaXR0by4KKyAgICAgICAgKiBBUEkvSlNWYWx1ZVJlZi5jcHA6
IERpdHRvLgorICAgICAgICAoSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyk6IERpdHRvLgorICAgICAg
ICAqIEFQSS9KU1dyYXBwZXJNYXAubW06IFJlbW92ZSB3cmFwcGVyQ2xhc3MoKS4KKyAgICAgICAg
KG9iamVjdFdpdGhDdXN0b21CcmFuZCk6IENoYW5nZSB0byBubyBsb25nZXIgdXNlIGEgcGFyZW50
IGNsYXNzLCB3aGljaCB3YXMgb25seSB1c2VkIHRvIGdpdmUgdGhlIGFiaWxpdHkgdG8gCisgICAg
ICAgIGZpbmFsaXplIHdyYXBwZXIgb2JqZWN0cy4KKyAgICAgICAgKC1bSlNPYmpDQ2xhc3NJbmZv
IGluaXRXaXRoQ29udGV4dDpmb3JDbGFzczpzdXBlckNsYXNzSW5mbzpdKTogQ2hhbmdlIHRvIG5v
IGxvbmdlciB1c2Ugd3JhcHBlckNsYXNzKCkuIAorICAgICAgICAoLVtKU09iakNDbGFzc0luZm8g
YWxsb2NhdGVDb25zdHJ1Y3RvckFuZFByb3RvdHlwZVdpdGhTdXBlckNsYXNzSW5mbzpdKTogRGl0
dG8uCisgICAgICAgICh0cnlVbndyYXBPYmpjT2JqZWN0KTogV2Ugbm93IGNoZWNrIGlmIHRoZSBv
YmplY3QgaW5oZXJpdHMgZnJvbSBKU0FQSVdyYXBwZXJPYmplY3QuCisgICAgICAgICogQVBJL3Rl
c3RzL3Rlc3RhcGkubW06IEFkZGVkIGEgdGVzdCB0aGF0IGV4cG9ydHMgYW4gT2JqZWN0aXZlLUMg
b2JqZWN0IHRvIHR3byBkaWZmZXJlbnQgSlNDb250ZXh0cyBhbmQgbWFrZXMgCisgICAgICAgIHN1
cmUgdGhhdCB0aGUgZmlyc3Qgb25lIGlzIGNvbGxlY3RlZCBwcm9wZXJseSBieSB1c2luZyBhIHdl
YWsgSlNNYW5hZ2VkVmFsdWUgZm9yIHRoZSB3cmFwcGVyIGluIHRoZSBmaXJzdCBKU0NvbnRleHQu
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEJ1aWxkIGZpbGUgbW9kaWZpY2F0aW9ucy4KKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6IERpdHRvLgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOiBE
aXR0by4KKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDogTW9yZSBpZmRl
ZnMgZm9yIHVuc3VwcG9ydGVkIHBsYXRmb3Jtcy4KKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0KTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOiBEaXR0
by4KKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTR2xv
YmFsT2JqZWN0OjpvYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZSk6IERpdHRvLgorCiAyMDEz
LTAzLTIxICBHYWJvciBSYXBjc2FueWkgIDxyZ2Fib3JAd2Via2l0Lm9yZz4KIAogICAgICAgICBJ
bXBsZW1lbnQgTExJbnQgZm9yIENQVShBUk1fVFJBRElUSU9OQUwpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDYgQEAg
c2V0KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICkKIAogc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKLSAgICBBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAogICAgIEFQSS9K
U0Jhc2UuY3BwCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKICAgICBBUEkvSlND
YWxsYmFja0Z1bmN0aW9uLmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw2IEBAIGphdmFz
Y3JpcHRjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9BUElTaGltcy5oIFwKLSAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJV3JhcHBlck9iamVjdC5jcHAgXAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0Jhc2VQcml2YXRlLmggXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDE0
NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAgICAgICAgICAgICAnQVBJL0FQSVNoaW1zLmgn
LAogICAgICAgICAgICAgJ0FQSS9KYXZhU2NyaXB0Q29yZS5oJywKICAgICAgICAgICAgICdBUEkv
SmF2YVNjcmlwdC5oJywKLSAgICAgICAgICAgICdBUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcCcs
CiAgICAgICAgICAgICAnQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oJywKICAgICAgICAgICAgICdB
UEkvSlNCYXNlLmNwcCcsCiAgICAgICAgICAgICAnQVBJL0pTQmFzZS5oJywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBJTlNUQUxM
REVQUyArPSBhbGwKIGRlYnVnX2FuZF9yZWxlYXNlOiBJTkNMVURFUEFUSCArPSAkJEpBVkFTQ1JJ
UFRDT1JFX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUi8kJHRhcmdldFN1YkRpcigpCiAKIFNPVVJDRVMg
Kz0gXAotICAgIEFQSS9KU0FQSVdyYXBwZXJPYmplY3QuY3BwIFwKICAgICBBUEkvSlNCYXNlLmNw
cCBcCiAgICAgQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAgXAogICAgIEFQSS9KU0NhbGxi
YWNrRnVuY3Rpb24uY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElX
cmFwcGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJV3JhcHBlck9iamVjdC5jcHAJKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkpTQVBJV3JhcHBlck9iamVjdC5oIgotCi0jaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIK
LSNpbmNsdWRlICJKU0NhbGxiYWNrT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgotI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgotI2luY2x1ZGUgIlN0cnVjdHVyZS5o
IgotI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0gICAg
Ci10ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBw
ZXJPYmplY3Q+OjpzX2luZm8gPSB7ICJFbnVtZXJhYmxlQ2FsbGJhY2tPYmplY3QiLCAmQmFzZTo6
c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tPYmplY3QpIH07Ci0K
LXRlbXBsYXRlPD4gY29uc3QgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVj
dD46Om5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwotCi10ZW1wbGF0ZSA8PgotU3RydWN0dXJlKiBK
U0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG8pCi17Ci0gICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGds
b2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
JnNfaW5mbyk7Ci19Ci0KLUpTQVBJV3JhcHBlck9iamVjdDo6SlNBUElXcmFwcGVyT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBCYXNl
KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkKLSAgICAsIG1fd3JhcHBlZE9iamVjdCgwKQotewotfQot
Ci12b2lkIEpTQVBJV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgSlNBUElXcmFwcGVyT2JqZWN0KiB0aGlz
T2JqZWN0ID0gSlNDOjpqc0Nhc3Q8SlNBUElXcmFwcGVyT2JqZWN0Kj4oY2VsbCk7Ci0gICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKGNlbGwsIHZpc2l0b3IpOwotCi0gICAgaWYgKHRoaXNPYmplY3QtPndyYXBwZWRPYmpl
Y3QoKSkKLSAgICAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KHRoaXNPYmplY3QtPndyYXBwZWRP
YmplY3QoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0FQSVdyYXBwZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCShyZXZpc2lvbiAxNDY0MDgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxNiArMzAsMTkgQEAKICNpbmNsdWRlICJKU0Rlc3RydWN0aWJsZU9iamVj
dC5oIgogI2luY2x1ZGUgIldlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCIKIAorI2lmIEpTQ19PQkpD
X0FQSV9FTkFCTEVECisKIG5hbWVzcGFjZSBKU0MgewogICAgIAogY2xhc3MgSlNBUElXcmFwcGVy
T2JqZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7CiAgICAgCisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0dsb2JhbERhdGEmKTsKICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKICAgICAKICAgICB2b2lkKiB3cmFwcGVkT2JqZWN0KCkg
eyByZXR1cm4gbV93cmFwcGVkT2JqZWN0OyB9Ci0gICAgdm9pZCBzZXRXcmFwcGVkT2JqZWN0KHZv
aWQqIHdyYXBwZWRPYmplY3QpIHsgbV93cmFwcGVkT2JqZWN0ID0gd3JhcHBlZE9iamVjdDsgfQor
ICAgIHZvaWQgc2V0V3JhcHBlZE9iamVjdCh2b2lkKik7CiAKIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVu
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CkBAIC01Miw0ICs1NSw2IEBAIHByaXZhdGU6CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCisjZW5kaWYKKwogI2VuZGlmIC8vIEpTQVBJV3JhcHBlck9iamVj
dF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9i
amVjdC5tbQkocmV2aXNpb24gMTQ2NDA4KQkoZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQVBJV3JhcHBlck9iamVjdC5jcHA6MTQ2NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0FQSVdyYXBwZXJPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0FQSVdyYXBw
ZXJPYmplY3QuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAi
SlNDYWxsYmFja09iamVjdC5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJTbG90VmlzaXRvcklubGluZXMuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworICAgIAordGVtcGxhdGUg
PD4gY29uc3QgQ2xhc3NJbmZvIEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6
c19pbmZvID0geyAiRW51bWVyYWJsZUNhbGxiYWNrT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0NhbGxiYWNrT2JqZWN0KSB9OworCit0ZW1wbGF0ZTw+
IGNvbnN0IGJvb2wgSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpuZWVkc0Rl
c3RydWN0aW9uID0gdHJ1ZTsKKwordGVtcGxhdGUgPD4KK1N0cnVjdHVyZSogSlNDYWxsYmFja09i
amVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvKQor
eworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3Qs
IHByb3RvLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksICZzX2luZm8pOwor
fQorCitKU0FQSVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpCisgICAgLCBtX3dyYXBwZWRPYmplY3QoMCkKK3sKK30KKwordm9pZCBKU0FQ
SVdyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBKU0M6OlNsb3RWaXNp
dG9yJiB2aXNpdG9yKQoreworICAgIEpTQVBJV3JhcHBlck9iamVjdCogdGhpc09iamVjdCA9IEpT
Qzo6anNDYXN0PEpTQVBJV3JhcHBlck9iamVjdCo+KGNlbGwpOworICAgIENPTVBJTEVfQVNTRVJU
KFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxs
LCB2aXNpdG9yKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpCisgICAg
ICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdCh0aGlzT2JqZWN0LT53cmFwcGVkT2JqZWN0KCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElXcmFwcGVyT2JqZWN0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNBUElXcmFwcGVyT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJV3JhcHBlck9iamVjdC5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzMsOSArMzMsMzEgQEAKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCiAKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorCitjbGFzcyBKU0FQSVdy
YXBwZXJPYmplY3RIYW5kbGVPd25lciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93
bj4sIHZvaWQqKTsKK307CisKK3N0YXRpYyBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lciog
anNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIoKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoSlNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIsIGpzV3JhcHBlck9iamVjdEhhbmRsZU93
bmVyLCAoKSk7CisgICAgcmV0dXJuICZqc1dyYXBwZXJPYmplY3RIYW5kbGVPd25lcjsKK30KKwor
dm9pZCBKU0FQSVdyYXBwZXJPYmplY3RIYW5kbGVPd25lcjo6ZmluYWxpemUoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqKQoreworICAgIEpTQzo6V2Vha1NldDo6ZGVhbGxv
Y2F0ZShKU0M6OldlYWtJbXBsOjphc1dlYWtJbXBsKGhhbmRsZS5zbG90KCkpKTsKKyAgICBKU0M6
OkpTQVBJV3JhcHBlck9iamVjdCogd3JhcHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNB
UElXcmFwcGVyT2JqZWN0Kj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBpZiAoIXdyYXBw
ZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFtzdGF0aWNf
Y2FzdDxpZD4od3JhcHBlck9iamVjdC0+d3JhcHBlZE9iamVjdCgpKSByZWxlYXNlXTsKK30KKwog
bmFtZXNwYWNlIEpTQyB7CiAgICAgCi10ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxs
YmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8gPSB7ICJFbnVtZXJhYmxlQ2Fs
bGJhY2tPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
Q2FsbGJhY2tPYmplY3QpIH07Cit0ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFj
a09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8gPSB7ICJKU0FQSVdyYXBwZXJPYmpl
Y3QiLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTQ2FsbGJhY2tP
YmplY3QpIH07CiAKIHRlbXBsYXRlPD4gY29uc3QgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJ
V3JhcHBlck9iamVjdD46Om5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCkBAIC01MSw2ICs3Mywx
OCBAQCBKU0FQSVdyYXBwZXJPYmplY3Q6OkpTQVBJV3JhcHBlck9iamVjdChKCiB7CiB9CiAKK3Zv
aWQgSlNBUElXcmFwcGVyT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAgV2Vh
a1NldDo6YWxsb2NhdGUodGhpcywganNBUElXcmFwcGVyT2JqZWN0SGFuZGxlT3duZXIoKSwgMCk7
IC8vIEJhbGFuY2VkIGluIEpTQVBJV3JhcHBlck9iamVjdEhhbmRsZU93bmVyOjpmaW5hbGl6ZS4K
K30KKyAgICAKK3ZvaWQgSlNBUElXcmFwcGVyT2JqZWN0OjpzZXRXcmFwcGVkT2JqZWN0KHZvaWQq
IHdyYXBwZWRPYmplY3QpCit7CisgICAgQVNTRVJUKCFtX3dyYXBwZWRPYmplY3QpOworICAgIG1f
d3JhcHBlZE9iamVjdCA9IFtzdGF0aWNfY2FzdDxpZD4od3JhcHBlZE9iamVjdCkgcmV0YWluXTsK
K30KKwogdm9pZCBKU0FQSVdyYXBwZXJPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxs
LCBKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIEpTQVBJV3JhcHBlck9iamVjdCog
dGhpc09iamVjdCA9IEpTQzo6anNDYXN0PEpTQVBJV3JhcHBlck9iamVjdCo+KGNlbGwpOwpAQCAt
NjIsMyArOTYsNSBAQCB2b2lkIEpTQVBJV3JhcHBlck9iamVjdDo6dmlzaXRDaGlsZHJlbihKCiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gSlNDX09CSkNfQVBJX0VOQUJMRUQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCShyZXZpc2lv
biAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQ2LDggKzM0NiwxMCBAQCB2b2lkKiBKU09iamVjdEdldFByaXZh
dGUoSlNPYmplY3RSZWYgb2JqCiAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKICAgICBpZiAoanNP
YmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pjo6
c19pbmZvKSkKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1
Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOworI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgp
OworI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0zNjQsMTAgKzM2NiwxMiBAQCBi
b29sIEpTT2JqZWN0U2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmplCiAgICAgICAgIGpzQ2FzdDxK
U0NhbGxiYWNrT2JqZWN0PEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJp
dmF0ZShkYXRhKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2lmIEpTQ19PQkpDX0FQ
SV9FTkFCTEVECiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxK
U0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKSB7CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNr
T2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgogICAgICAgICAKICAgICByZXR1
cm4gZmFsc2U7CiB9CkBAIC0zODMsOCArMzg3LDEwIEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQ
cml2YXRlUHJvcGVydHkoSlMKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmpl
Y3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7
CiAgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTRGVz
dHJ1Y3RpYmxlT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRl
UHJvcGVydHkobmFtZSk7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKICAgICBlbHNlIGlmIChq
c09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6
c19pbmZvKSkKICAgICAgICAgcmVzdWx0ID0ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNBUElX
cmFwcGVyT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5KG5hbWUpOworI2Vu
ZGlmCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHJlc3VsdCk7CiB9CiAKQEAgLTQwMywxMCArNDA5
LDEyIEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkoSlNDb250ZXgKICAgICAgICAg
anNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3Qp
LT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAg
ICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJP
YmplY3Q+OjpzX2luZm8pKSB7CiAgICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJ
V3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9i
YWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Cisj
ZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQyNCwxMCArNDMyLDEyIEBAIGJvb2wg
SlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlNDb24KICAgICAgICAganNDYXN0PEpTQ2Fs
bGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2
YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNpZiBKU0Nf
T0JKQ19BUElfRU5BQkxFRAogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tP
YmplY3Q8SlNBUElXcmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkgewogICAgICAgICBqc0Nhc3Q8SlND
YWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2
YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KKyNlbmRpZgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1ZhbHVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTVmFsdWVSZWYuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksOCArMTQ5LDEwIEBAIGJv
b2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYKICAgICAgICAgICAgIHJldHVy
biBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4qPihvKS0+aW5oZXJpdHMo
anNDbGFzcyk7CiAgICAgICAgIGlmIChvLT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0Rl
c3RydWN0aWJsZU9iamVjdD46OnNfaW5mbykpCiAgICAgICAgICAgICByZXR1cm4ganNDYXN0PEpT
Q2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+Kj4obyktPmluaGVyaXRzKGpzQ2xh
c3MpOworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgICAgIGlmIChvLT5pbmhlcml0cygm
SlNDYWxsYmFja09iamVjdDxKU0FQSVdyYXBwZXJPYmplY3Q+OjpzX2luZm8pKQogICAgICAgICAg
ICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3JhcHBlck9iamVjdD4qPihv
KS0+aW5oZXJpdHMoanNDbGFzcyk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dyYXBwZXJNYXAubW0JKHJldmlz
aW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXcmFwcGVyTWFwLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00OSwzMSArNDksNiBAQCAtIChKU09iakNDbGFzc0luZm8qKWNs
YXNzSW5mb0ZvckNsYXNzOihDCiAKIEBlbmQKIAotc3RhdGljIHZvaWQgd3JhcHBlckZpbmFsaXpl
KEpTT2JqZWN0UmVmIG9iamVjdCkKLXsKLSAgICBKU0M6OkpTQVBJV3JhcHBlck9iamVjdCogd3Jh
cHBlck9iamVjdCA9IEpTQzo6anNDYXN0PEpTQzo6SlNBUElXcmFwcGVyT2JqZWN0Kj4odG9KUyhv
YmplY3QpKTsKLSAgICBbKGlkKXdyYXBwZXJPYmplY3QtPndyYXBwZWRPYmplY3QoKSByZWxlYXNl
XTsKLX0KLQotLy8gQWxsIHdyYXBwZXIgb2JqZWN0cyBhbmQgY29uc3RydWN0b3Igb2JqZWN0cyBk
ZXJpdmUgZnJvbSB0aGlzIHR5cGUsIHNvIHdlIGNhbiBkZXRlY3QgJiB1bndyYXAgT2JqZWN0aXZl
LUMgaW5zdGFuY2VzL0NsYXNzZXMuCi1zdGF0aWMgSlNDbGFzc1JlZiB3cmFwcGVyQ2xhc3MoKQot
ewotICAgIHN0YXRpYyBTcGluTG9jayBpbml0TG9jayA9IFNQSU5MT0NLX0lOSVRJQUxJWkVSOwot
ICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tIb2xkZXIoJmluaXRMb2NrKTsKLQotICAgIHN0YXRpYyBK
U0NsYXNzUmVmIGNsYXNzUmVmID0gMDsKLQotICAgIGlmICghY2xhc3NSZWYpIHsKLSAgICAgICAg
SlNDbGFzc0RlZmluaXRpb24gZGVmaW5pdGlvbjsKLSAgICAgICAgZGVmaW5pdGlvbiA9IGtKU0Ns
YXNzRGVmaW5pdGlvbkVtcHR5OwotICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJvYmpj
X2NsYXNzIjsKLSAgICAgICAgZGVmaW5pdGlvbi5maW5hbGl6ZSA9IHdyYXBwZXJGaW5hbGl6ZTsK
LSAgICAgICAgY2xhc3NSZWYgPSBKU0NsYXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gY2xhc3NSZWY7Ci19Ci0KIC8vIERlZmF1bHQgY29udmVyc2lvbiBvZiBzZWxl
Y3RvcnMgdG8gcHJvcGVydHkgbmFtZXMuCiAvLyBBbGwgc2VtaWNvbG9ucyBhcmUgcmVtb3ZlZCwg
bG93ZXJjYXNlIGxldHRlcnMgZm9sbG93aW5nIGEgc2VtaWNvbG9uIGFyZSBjYXBpdGFsaXplZC4K
IHN0YXRpYyBOU1N0cmluZyAqc2VsZWN0b3JUb1Byb3BlcnR5TmFtZShjb25zdCBjaGFyKiBzdGFy
dCkKQEAgLTEzNSwxMiArMTEwLDExIEBAIHN0YXRpYyBKU09iamVjdFJlZiBtYWtlV3JhcHBlcihK
U0NvbnRleHQKIC8vIE1ha2UgYW4gb2JqZWN0IHRoYXQgaXMgaW4gYWxsIHdheXMgYSBjb21wbGV0
ZWx5IHZhbmlsbGEgSmF2YVNjcmlwdCBvYmplY3QsCiAvLyBvdGhlciB0aGFuIHRoYXQgaXQgaGFz
IGEgbmF0aXZlIGJyYW5kIHNldCB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJ5IHRoZSBkZWZhdWx0
CiAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIGNvbnZlcnNpb24uCi1zdGF0aWMgSlNWYWx1
ZSAqb2JqZWN0V2l0aEN1c3RvbUJyYW5kKEpTQ29udGV4dCAqY29udGV4dCwgTlNTdHJpbmcgKmJy
YW5kLCBKU0NsYXNzUmVmIHBhcmVudENsYXNzID0gMCwgQ2xhc3MgY2xzID0gMCkKK3N0YXRpYyBK
U1ZhbHVlICpvYmplY3RXaXRoQ3VzdG9tQnJhbmQoSlNDb250ZXh0ICpjb250ZXh0LCBOU1N0cmlu
ZyAqYnJhbmQsIENsYXNzIGNscyA9IDApCiB7CiAgICAgSlNDbGFzc0RlZmluaXRpb24gZGVmaW5p
dGlvbjsKICAgICBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7CiAgICAgZGVm
aW5pdGlvbi5jbGFzc05hbWUgPSBbYnJhbmQgVVRGOFN0cmluZ107Ci0gICAgZGVmaW5pdGlvbi5w
YXJlbnRDbGFzcyA9IHBhcmVudENsYXNzOwogICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYgPSBKU0Ns
YXNzQ3JlYXRlKCZkZWZpbml0aW9uKTsKICAgICBKU09iamVjdFJlZiByZXN1bHQgPSBtYWtlV3Jh
cHBlcihbY29udGV4dCBnbG9iYWxDb250ZXh0UmVmXSwgY2xhc3NSZWYsIGNscyk7CiAgICAgSlND
bGFzc1JlbGVhc2UoY2xhc3NSZWYpOwpAQCAtMzQyLDcgKzMxNiw2IEBAIC0gKGlkKWluaXRXaXRo
Q29udGV4dDooSlNDb250ZXh0ICopY29udGUKICAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0
aW9uOwogICAgIGRlZmluaXRpb24gPSBrSlNDbGFzc0RlZmluaXRpb25FbXB0eTsKICAgICBkZWZp
bml0aW9uLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgICBkZWZpbml0aW9uLnBhcmVudENsYXNz
ID0gd3JhcHBlckNsYXNzKCk7CiAgICAgbV9jbGFzc1JlZiA9IEpTQ2xhc3NDcmVhdGUoJmRlZmlu
aXRpb24pOwogCiAgICAgW3NlbGYgYWxsb2NhdGVDb25zdHJ1Y3RvckFuZFByb3RvdHlwZVdpdGhT
dXBlckNsYXNzSW5mbzpzdXBlckNsYXNzSW5mb107CkBAIC0zODQsNyArMzU3LDcgQEAgLSAodm9p
ZClhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kUHJvdG90eXBlVwogICAgICAgICBpZiAobV9jb25zdHJ1
Y3RvcikKICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gW0pTVmFsdWUgdmFsdWVXaXRoVmFsdWU6
dG9SZWYobV9jb25zdHJ1Y3Rvci5nZXQoKSkgaW5Db250ZXh0Om1fY29udGV4dF07CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gb2JqZWN0V2l0aEN1c3RvbUJyYW5kKG1f
Y29udGV4dCwgW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlc0NvbnN0cnVjdG9yIiwgY2xh
c3NOYW1lXSwgd3JhcHBlckNsYXNzKCksIFttX2NsYXNzIHJldGFpbl0pOworICAgICAgICAgICAg
Y29uc3RydWN0b3IgPSBvYmplY3RXaXRoQ3VzdG9tQnJhbmQobV9jb250ZXh0LCBbTlNTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAIiVzQ29uc3RydWN0b3IiLCBjbGFzc05hbWVdLCBtX2NsYXNzKTsK
IAogICAgICAgICBKU0NvbnRleHRSZWYgY0NvbnRleHQgPSBbbV9jb250ZXh0IGdsb2JhbENvbnRl
eHRSZWZdOwogICAgICAgICBtX3Byb3RvdHlwZSA9IHRvSlMoSlNWYWx1ZVRvT2JqZWN0KGNDb250
ZXh0LCB2YWx1ZUludGVybmFsVmFsdWUocHJvdG90eXBlKSwgMCkpOwpAQCAtNDIyLDcgKzM5NSw3
IEBAIC0gKEpTVmFsdWUgKil3cmFwcGVyRm9yT2JqZWN0OihpZClvYmplY3QKICAgICAgICAgW3Nl
bGYgcmVhbGxvY2F0ZUNvbnN0cnVjdG9yQW5kT3JQcm90b3R5cGVdOwogICAgIEFTU0VSVCghIW1f
cHJvdG90eXBlKTsKIAotICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBtYWtlV3JhcHBlcihbbV9j
b250ZXh0IGdsb2JhbENvbnRleHRSZWZdLCBtX2NsYXNzUmVmLCBbb2JqZWN0IHJldGFpbl0pOwor
ICAgIEpTT2JqZWN0UmVmIHdyYXBwZXIgPSBtYWtlV3JhcHBlcihbbV9jb250ZXh0IGdsb2JhbENv
bnRleHRSZWZdLCBtX2NsYXNzUmVmLCBvYmplY3QpOwogICAgIEpTT2JqZWN0U2V0UHJvdG90eXBl
KFttX2NvbnRleHQgZ2xvYmFsQ29udGV4dFJlZl0sIHdyYXBwZXIsIHRvUmVmKG1fcHJvdG90eXBl
LmdldCgpKSk7CiAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFZhbHVlOndyYXBwZXIgaW5D
b250ZXh0Om1fY29udGV4dF07CiB9CkBAIC01MjUsNyArNDk4LDcgQEAgaWQgdHJ5VW53cmFwT2Jq
Y09iamVjdChKU0dsb2JhbENvbnRleHRSZQogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsK
ICAgICBKU09iamVjdFJlZiBvYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgdmFsdWUs
ICZleGNlcHRpb24pOwogICAgIEFTU0VSVCghZXhjZXB0aW9uKTsKLSAgICBpZiAoSlNWYWx1ZUlz
T2JqZWN0T2ZDbGFzcyhjb250ZXh0LCBvYmplY3QsIHdyYXBwZXJDbGFzcygpKSkKKyAgICBpZiAo
dG9KUyhvYmplY3QpLT5pbmhlcml0cygmSlNDOjpKU0NhbGxiYWNrT2JqZWN0PEpTQzo6SlNBUElX
cmFwcGVyT2JqZWN0Pjo6c19pbmZvKSkKICAgICAgICAgcmV0dXJuIChpZClKU0M6OmpzQ2FzdDxK
U0M6OkpTQVBJV3JhcHBlck9iamVjdCo+KHRvSlMob2JqZWN0KSktPndyYXBwZWRPYmplY3QoKTsK
ICAgICBpZiAoaWQgdGFyZ2V0ID0gdHJ5VW53cmFwQmxvY2sob2JqZWN0KSkKICAgICAgICAgcmV0
dXJuIHRhcmdldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFw
aS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3Rh
cGkubW0JKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVz
dHMvdGVzdGFwaS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTIzLDcgKzUyMyw2IEBAIHZvaWQgdGVz
dE9iamVjdGl2ZUNBUEkoKQogICAgICAgICBUZXN0T2JqZWN0ICp0ZXN0T2JqZWN0ID0gW1Rlc3RP
YmplY3QgdGVzdE9iamVjdF07CiAgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0
T2JqZWN0OwogICAgICAgICBKU1ZhbHVlICpyZXN1bHQgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlw
dDpAIkZ1bmN0aW9uLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHRlc3RPYmplY3QuY2FsbGJhY2sp
Il07Ci0gICAgICAgIE5TTG9nKEAidG9TdHJpbmcgPSAlQCIsIFtyZXN1bHQgdG9TdHJpbmddKTsK
ICAgICAgICAgY2hlY2tSZXN1bHQoQCJGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmciLCAhY29u
dGV4dC5leGNlcHRpb24gJiYgIVtyZXN1bHQgaXNVbmRlZmluZWRdKTsKICAgICB9CiAKQEAgLTYy
OSw2ICs2MjgsMjYgQEAgdm9pZCB0ZXN0T2JqZWN0aXZlQ0FQSSgpCiAgICAgICAgICAgICBjaGVj
a1Jlc3VsdChAIkV2ZW50IGhhbmRsZXIgb25jbGljayBkb2Vzbid0IGZpcmUiLCAhW3Jlc3VsdCB0
b0Jvb2xdKTsKICAgICAgICAgfQogICAgIH0KKworICAgIEBhdXRvcmVsZWFzZXBvb2wgeworICAg
ICAgICBKU1ZpcnR1YWxNYWNoaW5lICp2bSA9IFtbSlNWaXJ0dWFsTWFjaGluZSBhbGxvY10gaW5p
dF07CisgICAgICAgIFRlc3RPYmplY3QgKnRlc3RPYmplY3QgPSBbVGVzdE9iamVjdCB0ZXN0T2Jq
ZWN0XTsKKyAgICAgICAgSlNNYW5hZ2VkVmFsdWUgKndlYWtWYWx1ZTsKKyAgICAgICAgQGF1dG9y
ZWxlYXNlcG9vbCB7CisgICAgICAgICAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbW0pTQ29udGV4
dCBhbGxvY10gaW5pdFdpdGhWaXJ0dWFsTWFjaGluZTp2bV07CisgICAgICAgICAgICBjb250ZXh0
W0AidGVzdE9iamVjdCJdID0gdGVzdE9iamVjdDsKKyAgICAgICAgICAgIHdlYWtWYWx1ZSA9IFtb
SlNNYW5hZ2VkVmFsdWUgYWxsb2NdIGluaXRXaXRoVmFsdWU6Y29udGV4dFtAInRlc3RPYmplY3Qi
XV07CisgICAgICAgIH0KKworICAgICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKKyAgICAgICAgICAg
IEpTQ29udGV4dCAqY29udGV4dCA9IFtbSlNDb250ZXh0IGFsbG9jXSBpbml0V2l0aFZpcnR1YWxN
YWNoaW5lOnZtXTsKKyAgICAgICAgICAgIGNvbnRleHRbQCJ0ZXN0T2JqZWN0Il0gPSB0ZXN0T2Jq
ZWN0OworICAgICAgICAgICAgSlNTeW5jaHJvbm91c0dhcmJhZ2VDb2xsZWN0Rm9yRGVidWdnaW5n
KFtjb250ZXh0IGdsb2JhbENvbnRleHRSZWZdKTsKKyAgICAgICAgICAgIGNoZWNrUmVzdWx0KEAi
d2VhayB2YWx1ZSA9PSBuaWwiLCAhW3dlYWtWYWx1ZSB2YWx1ZV0pOworICAgICAgICAgICAgY2hl
Y2tSZXN1bHQoQCJyb290IGlzIHN0aWxsIGFsaXZlIiwgIVtjb250ZXh0W0AidGVzdE9iamVjdCJd
IGlzVW5kZWZpbmVkXSk7CisgICAgICAgIH0KKyAgICB9CisKIH0KIAogI2Vsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxOCwxMCArMTQxOCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEFQSVxKU0FQSVdyYXBwZXJPYmplY3QuY3BwIgot
CQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxBUElc
SlNBUElXcmFwcGVyT2JqZWN0LmgiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNDY0MDgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsNyArMTQ0LDYgQEAKICAgICA8TGluayAvPg0KICAg
PC9JdGVtRGVmaW5pdGlvbkdyb3VwPg0KICAgPEl0ZW1Hcm91cD4NCi0gICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmNwcCIgLz4NCiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxBUElcSlNCYXNlLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxBUElcSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcCIgLz4NCiAgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxBUElcSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCIgLz4NCkBAIC03ODUsNCArNzg0
LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAu
dGFyZ2V0cyIgLz4NCiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQog
ICA8L0ltcG9ydEdyb3VwPg0KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
Cis8L1Byb2plY3Q+DQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTQ2NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJz
CSh3b3JraW5nIGNvcHkpCkBAIC03NTAsOSArNzUwLDYgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcUHJvcGVydHlUYWJsZS5jcHAiPg0KICAgICAgIDxGaWx0ZXI+cnVudGlt
ZTwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCi0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxBUElcSlNBUElXcmFwcGVyT2JqZWN0LmNwcCI+DQotICAgICAgPEZpbHRlcj5BUEk8L0ZpbHRl
cj4NCi0gICAgPC9DbENvbXBpbGU+DQogICA8L0l0ZW1Hcm91cD4NCiAgIDxJdGVtR3JvdXA+DQog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cQVBJXEFQSUNhc3QuaCI+DQpAQCAtMTkxOCw0ICsx
OTE1LDQgQEAKICAgICA8Tm9uZSBJbmNsdWRlPSJKYXZhU2NyaXB0Q29yZVByZUJ1aWxkLmNtZCIg
Lz4NCiAgICAgPE5vbmUgSW5jbHVkZT0iY29weS1maWxlcy5jbWQiIC8+DQogICA8L0l0ZW1Hcm91
cD4NCi08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0Pg0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNDY0MDgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtODQzLDcgKzg0Myw3IEBACiAJCUMyQzhEMDJEMTRBM0M2
RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3Bp
ZWRTcGFjZUlubGluZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMkM4RDAzMDE0QTNDRUZDMDA1NzhFNjUgLyogQ29waWVkQmxvY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJFMTRBM0NF
RkMwMDU3OEU2NSAvKiBDb3BpZWRCbG9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUMyQzhEMDMxMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxv
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhE
MDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyog
SlNBUElXcmFwcGVyT2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmpl
Y3QuY3BwICovOyB9OworCQlDMkNGMzlDMTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVy
T2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5tbSAqLzsgfTsK
IAkJQzJDRjM5QzIxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJDRjM5QzAxNkUxNUE4
MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovOyB9OwogCQlDMkQ1OEMzNDE1OTEy
RkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwICovOyB9OwogCQlDMkU1MjZCRDE1OTBFRjAwMDA1NEU0OEQg
LyogSGVhcFRpbWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGltZXIuY3BwICovOyB9OwpA
QCAtMTc0NSw3ICsxNzQ1LDcgQEAKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGll
ZFNwYWNlSW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRT
cGFjZUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkUxNEEz
Q0VGQzAwNTc4RTY1IC8qIENvcGllZEJsb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvcGllZEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQzhE
MDJGMTRBM0NFRkMwMDU3OEU2NSAvKiBIZWFwQmxvY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGVhcEJsb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUMy
Q0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEpTQVBJV3JhcHBlck9iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJENThDMzMxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZp
dHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ0Fj
dGl2aXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkU1MjZC
QjE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhlYXBUaW1lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMjIyLDcgKzIyMjIsNyBAQAogCQkJCTVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBX
ZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKIAkJCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyog
SlNNYW5hZ2VkVmFsdWUubW0gKi8sCiAJCQkJQzI1RDcwOUExNkRFOTlGNDAwRkNBNkJDIC8qIEpT
TWFuYWdlZFZhbHVlLmggKi8sCi0JCQkJQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJ
V3JhcHBlck9iamVjdC5jcHAgKi8sCisJCQkJQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5tbSAqLywKIAkJCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyog
SlNBUElXcmFwcGVyT2JqZWN0LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFQSTsKQEAgLTM4MTIs
NyArMzgxMiw3IEBACiAJCQkJMEZEM0M4MjYxNDExNUQ0MDAwRkQ4MUNCIC8qIERGR0RyaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkYwRjE5RTE2QjcyQTBCMDA1REY5NUIgLyogREZHRWRn
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkJDMEFFNzE0OTZDN0M0MDBENEZCREQgLyogREZH
RXhpdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQzJDRjM5QzExNkUxNUE4MTAwREQ2
OUJFIC8qIEpTQVBJV3JhcHBlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkNGMzlD
MTE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg2RUM5RENCMTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb21w
aWxlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDE0NjQwOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjMzLDggKzIzMyw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUg
cHJvdG8KICAgICBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLnNldChleGVjLT5nbG9iYWxEYXRh
KCksIHRoaXMsIEpTQ2FsbGJhY2tPYmplY3Q8SlNEZXN0cnVjdGlibGVPYmplY3Q+OjpjcmVhdGVT
dHJ1Y3R1cmUoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQo
KSkpOwogI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgbV9vYmpjQ2FsbGJhY2tGdW5jdGlv
blN0cnVjdHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBPYmpDQ2FsbGJhY2tGdW5j
dGlvbjo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSkpOwotI2VuZGlmCiAgICAgbV9vYmpjV3JhcHBlck9iamVjdFN0cnVj
dHVyZS5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBKU0NhbGxiYWNrT2JqZWN0PEpTQVBJ
V3JhcHBlck9iamVjdD46OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIHRoaXMs
IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CisjZW5kaWYKIAogICAgIG1fYXJyYXlQcm90b3R5
cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpcywgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShl
eGVjLCB0aGlzLCBBcnJheVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgCkBAIC01MTksOCAr
NTE5LDggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlKTsKICNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X29iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKTsKLSNlbmRpZgogICAgIHZpc2l0b3IuYXBw
ZW5kKCZ0aGlzT2JqZWN0LT5tX29iamNXcmFwcGVyT2JqZWN0U3RydWN0dXJlKTsKKyNlbmRpZgog
ICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2RhdGVTdHJ1Y3R1cmUpOwogICAgIHZp
c2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX251bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUp
OwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2Vycm9yU3RydWN0dXJlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
cmV2aXNpb24gMTQ2NDA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDggKzE0NCw4IEBAIHByb3RlY3RlZDoK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlOwog
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9v
YmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZTsKLSNlbmRpZgogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmU7CisjZW5kaWYKICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2RhdGVTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fZXJyb3JTdHJ1Y3R1cmU7CkBAIC0zMDcsOCArMzA3LDggQEAgcHVibGlj
OgogICAgIFN0cnVjdHVyZSogY2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVy
biBtX2NhbGxiYWNrT2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CiAjaWYgSlNDX09CSkNfQVBJX0VO
QUJMRUQKICAgICBTdHJ1Y3R1cmUqIG9iamNDYWxsYmFja0Z1bmN0aW9uU3RydWN0dXJlKCkgY29u
c3QgeyByZXR1cm4gbV9vYmpjQ2FsbGJhY2tGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQotI2Vu
ZGlmCiAgICAgU3RydWN0dXJlKiBvYmpjV3JhcHBlck9iamVjdFN0cnVjdHVyZSgpIGNvbnN0IHsg
cmV0dXJuIG1fb2JqY1dyYXBwZXJPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7IH0KKyNlbmRpZgogICAg
IFN0cnVjdHVyZSogZGF0ZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0ZVN0cnVjdHVy
ZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQog
ICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yU3Ry
dWN0dXJlLmdldCgpOyB9Cg==
</data>
<flag name="review"
          id="216017"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>