<?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>113662</bug_id>
          
          <creation_ts>2013-03-31 09:20:03 -0700</creation_ts>
          <short_desc>Regions should be allocated from the same contiguous segment of virtual memory</short_desc>
          <delta_ts>2013-04-01 11:45:58 -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>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>866783</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-31 09:20:03 -0700</bug_when>
    <thetext>Instead of letting the OS spread our Regions all over the place, we should allocate them all within some range of each other. This change will open the door to some other optimizations, e.g. doing simple range checks for our write barriers and compressing JSCell pointers to 32-bits.

We can do this by having a SuperRegion for each BlockAllocator (i.e. per-VM) which subclasses MetaAllocator along the lines of the FixedVMPoolExecutableAllocator we use for the JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866885</commentid>
    <comment_count>1</comment_count>
      <attachid>195921</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-31 20:49:43 -0700</bug_when>
    <thetext>Created attachment 195921
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866886</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-31 20:51:47 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=195921) [details]
&gt; Patch

This patch is actually a slight speedup on some benchmarks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866888</commentid>
    <comment_count>3</comment_count>
      <attachid>195922</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-31 21:13:39 -0700</bug_when>
    <thetext>Created attachment 195922
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866889</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-31 21:14:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=195922) [details]
&gt; Patch

Had to add more ifdefs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866890</commentid>
    <comment_count>5</comment_count>
      <attachid>195922</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-03-31 21:16:59 -0700</bug_when>
    <thetext>Comment on attachment 195922
Patch

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

Other than the one comment, looks good!

&gt; Source/WTF/wtf/MetaAllocator.h:67
&gt; +    WTF_EXPORT_PRIVATE MetaAllocator(size_t allocationGranule, size_t pageSize = 0);

Why not say pageSize = WTF::pageSize() and then get rid of the pageSize initialization conditional inside MetaAllocator::MetaAllocator?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866892</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-03-31 21:19:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 195922 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=195922&amp;action=review
&gt; 
&gt; Other than the one comment, looks good!
&gt; 
&gt; &gt; Source/WTF/wtf/MetaAllocator.h:67
&gt; &gt; +    WTF_EXPORT_PRIVATE MetaAllocator(size_t allocationGranule, size_t pageSize = 0);
&gt; 
&gt; Why not say pageSize = WTF::pageSize() and then get rid of the pageSize initialization conditional inside MetaAllocator::MetaAllocator?

Good call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>866900</commentid>
    <comment_count>7</comment_count>
      <attachid>195922</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-31 21:57:45 -0700</bug_when>
    <thetext>Comment on attachment 195922
Patch

Attachment 195922 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17392062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867126</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-04-01 08:22:11 -0700</bug_when>
    <thetext>Committed r147324: &lt;http://trac.webkit.org/changeset/147324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867215</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-04-01 10:46:10 -0700</bug_when>
    <thetext>So much build carnage...

http://trac.webkit.org/changeset/147328
http://trac.webkit.org/changeset/147329
http://trac.webkit.org/changeset/147330
http://trac.webkit.org/changeset/147332
http://trac.webkit.org/changeset/147334
http://trac.webkit.org/changeset/147335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>867253</commentid>
    <comment_count>10</comment_count>
      <attachid>195922</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-01 11:45:58 -0700</bug_when>
    <thetext>Comment on attachment 195922
Patch

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

&gt; Source/JavaScriptCore/heap/SuperRegion.cpp:34
&gt; +const size_t SuperRegion::s_fixedHeapMemoryPoolSize = 4 * 1024 * MB;

This seems a bit excessive, compared to most heaps. If the only cost of going over is a bit of performance, maybe we should make this smaller, like 1GB or 2GB.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195921</attachid>
            <date>2013-03-31 20:49:43 -0700</date>
            <delta_ts>2013-03-31 21:13:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113662-20130331204936.patch</filename>
            <type>text/plain</type>
            <size>34834</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3Mjk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDEzLTAzLTMxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVnaW9ucyBzaG91bGQgYmUgYWxsb2NhdGVkIGZyb20gdGhlIHNhbWUgY29udGln
dW91cyBzZWdtZW50IG9mIHZpcnR1YWwgbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGxldHRpbmcgdGhlIE9TIHNwcmVhZCBv
dXIgUmVnaW9ucyBhbGwgb3ZlciB0aGUgcGxhY2UsIHdlIHNob3VsZCBhbGxvY2F0ZSB0aGVtIGFs
bCB3aXRoaW4gCisgICAgICAgIHNvbWUgcmFuZ2Ugb2YgZWFjaCBvdGhlci4gVGhpcyBjaGFuZ2Ug
d2lsbCBvcGVuIHRoZSBkb29yIHRvIHNvbWUgb3RoZXIgb3B0aW1pemF0aW9ucywgZS5nLiBkb2lu
ZyBzaW1wbGUgCisgICAgICAgIHJhbmdlIGNoZWNrcyBmb3Igb3VyIHdyaXRlIGJhcnJpZXJzIGFu
ZCBjb21wcmVzc2luZyBKU0NlbGwgcG9pbnRlcnMgdG8gMzItYml0cy4KKworICAgICAgICBBZGRl
ZCBuZXcgU3VwZXJSZWdpb24gY2xhc3MgdGhhdCBlbmNhcHN1bGF0ZXMgYWxsb2NhdGluZyBSZWdp
b25zIGZyb20gYSBjb250aWd1b3VzIHJlc2VydmVkIGNodW5rIG9mIAorICAgICAgICB2aXJ0dWFs
IGFkZHJlc3Mgc3BhY2UuIEl0IGZ1bmN0aW9ucyB2ZXJ5IHNpbWlsYXJseSB0byB0aGUgRml4ZWRW
TVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yIGNsYXNzIHVzZWQgYnkgdGhlIEpJVC4KKworICAgICAg
ICBBbHNvIGFkZGVkIHR3byBuZXcgc3ViY2xhc3NlcyBvZiBSZWdpb24sIE5vcm1hbFJlZ2lvbiBh
bmQgRXhjZXNzUmVnaW9uLiAKKyAgICAgICAgCisgICAgICAgIE5vcm1hbFJlZ2lvbiBpcyB0aGUg
dHlwZSBvZiBSZWdpb24gdGhhdCBpcyBub3JtYWxseSBhbGxvY2F0ZWQgd2hlbiB0aGVyZSBpcyBh
dmFpbGFibGUgc3BhY2UgcmVtYWluaW5nIAorICAgICAgICBpbiB0aGUgU3VwZXJSZWdpb24uIElm
IHdlIGV2ZXIgcnVuIG91dCBvZiBzcGFjZSBpbiB0aGUgU3VwZXJSZWdpb24sIHdlIGZhbGwgYmFj
ayB0byBhbGxvY2F0aW5nIAorICAgICAgICBFeGNlc3NSZWdpb25zLCB3aGljaCBhcmUgaWRlbnRp
Y2FsIHRvIGhvdyBSZWdpb25zIGhhdmUgYmVoYXZlZCB1cCB1bnRpbCBub3csIGkuZS4gdGhleSBj
b250YWluIGEgCisgICAgICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC4KKworICAgICAgICBXZSBv
bmx5IHVzZSB0aGUgU3VwZXJSZWdpb24gKGFuZCBOb3JtYWxSZWdpb25zKSBvbiA2NC1iaXQgc3lz
dGVtcywgc2luY2UgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHJlc2VydmUgdGhlIAorICAgICAg
ICBlbnRpcmUgNCBHQiBhZGRyZXNzIHNwYWNlIG9uIDMyLWJpdCBzeXN0ZW1zIGp1c3QgZm9yIHRo
ZSBKUyBoZWFwLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
QmxvY2tBbGxvY2F0b3I6OkJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQmxvY2tBbGxvY2F0b3IpOgorICAg
ICAgICAoSlNDOjpCbG9ja0FsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpCbG9j
a0FsbG9jYXRvcjo6YWxsb2NhdGVDdXN0b21TaXplKToKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxv
Y2F0b3I6OmRlYWxsb2NhdGVDdXN0b21TaXplKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgor
ICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OkhlYXA6OmRpZEV4Y2VlZEZpeGVkSGVhcFNpemVMaW1pdCk6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgICogaGVhcC9SZWdpb24u
aDoKKyAgICAgICAgKFJlZ2lvbik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoTm9ybWFsUmVn
aW9uKToKKyAgICAgICAgKEpTQzo6Tm9ybWFsUmVnaW9uOjpiYXNlKToKKyAgICAgICAgKEpTQzo6
Tm9ybWFsUmVnaW9uOjpzaXplKToKKyAgICAgICAgKEV4Y2Vzc1JlZ2lvbik6CisgICAgICAgIChK
U0M6OkV4Y2Vzc1JlZ2lvbjo6YmFzZSk6CisgICAgICAgIChKU0M6OkV4Y2Vzc1JlZ2lvbjo6c2l6
ZSk6CisgICAgICAgIChKU0M6Ok5vcm1hbFJlZ2lvbjo6Tm9ybWFsUmVnaW9uKToKKyAgICAgICAg
KEpTQzo6Tm9ybWFsUmVnaW9uOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpOb3JtYWxSZWdp
b246OnRyeUNyZWF0ZUN1c3RvbVNpemUpOgorICAgICAgICAoSlNDOjpOb3JtYWxSZWdpb246OnJl
c2V0KToKKyAgICAgICAgKEpTQzo6RXhjZXNzUmVnaW9uOjpFeGNlc3NSZWdpb24pOgorICAgICAg
ICAoSlNDOjpFeGNlc3NSZWdpb246On5FeGNlc3NSZWdpb24pOgorICAgICAgICAoSlNDOjpFeGNl
c3NSZWdpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV4Y2Vzc1JlZ2lvbjo6Y3JlYXRlQ3Vz
dG9tU2l6ZSk6CisgICAgICAgIChKU0M6OkV4Y2Vzc1JlZ2lvbjo6cmVzZXQpOgorICAgICAgICAo
SlNDOjpSZWdpb246OlJlZ2lvbik6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6aW5pdGlhbGl6ZUJs
b2NrTGlzdCk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
UmVnaW9uOjpjcmVhdGVDdXN0b21TaXplKToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjp+UmVnaW9u
KToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6UmVnaW9u
OjpyZXNldCk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6ZGVhbGxvY2F0ZSk6CisgICAgICAgIChK
U0M6OlJlZ2lvbjo6YmFzZSk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6c2l6ZSk6CisgICAgICAg
ICogaGVhcC9TdXBlclJlZ2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6U3VwZXJSZWdpb246OlN1cGVyUmVnaW9uKToKKyAgICAgICAgKEpTQzo6U3VwZXJSZWdp
b246OmdldEFsaWduZWRCYXNlKToKKyAgICAgICAgKEpTQzo6U3VwZXJSZWdpb246OmFsbG9jYXRl
TmV3U3BhY2UpOgorICAgICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6bm90aWZ5TmVlZFBhZ2UpOgor
ICAgICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6bm90aWZ5UGFnZUlzRnJlZSk6CisgICAgICAgICog
aGVhcC9TdXBlclJlZ2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdXBl
clJlZ2lvbik6CisKIDIwMTMtMDMtMzEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIFlhcnIgc2hvdWxkIGJ1aWxkIHVzaW5nIGEgc2VwYXJhdGUg
R1lQIGZpbGUgZnJvbSBKYXZhU2NyaXB0Q29yZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNiArMzU5
LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvUmVnaW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmdJbmxpbmVzLmggXAorICAgIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmNwcCBcCisgICAgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvVW5jb25kaXRpb25hbEZpbmFsaXplci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9WVGFibGVTcGVjdHJ1bS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJs
ZVNwZWN0cnVtLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zOTksNiArMzk5LDggQEAKICAgICAgICAg
ICAgICdoZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oJywKICAgICAgICAgICAgICdoZWFwL1N0cm9u
Zy5oJywKICAgICAgICAgICAgICdoZWFwL1N0cm9uZ0lubGluZXMuaCcsCisgICAgICAgICAgICAn
aGVhcC9TdXBlclJlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ2hlYXAvU3VwZXJSZWdpb24uaCcs
CiAgICAgICAgICAgICAnaGVhcC9UaW55Qmxvb21GaWx0ZXIuaCcsCiAgICAgICAgICAgICAnaGVh
cC9VbmNvbmRpdGlvbmFsRmluYWxpemVyLmgnLAogICAgICAgICAgICAgJ2hlYXAvVlRhYmxlU3Bl
Y3RydW0uY3BwJywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDcy
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtMTA1LDYgKzEwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhlYXAvTWFya2VkQmxvY2suY3Bw
IFwKICAgICBoZWFwL01hcmtlZFNwYWNlLmNwcCBcCiAgICAgaGVhcC9TbG90VmlzaXRvci5jcHAg
XAorICAgIGhlYXAvU3VwZXJSZWdpb24uY3BwIFwKICAgICBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNw
cCBcCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBcCiAgICAgZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTQ3Mjg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3OTQsNiArMjc5NCwx
NCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxoZWFwXFN1cGVyUmVnaW9uLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxTdXBlclJlZ2lvbi5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFZUYWJsZVNwZWN0cnVt
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMSw2ICsyMTEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxN
YXJrZWRTcGFjZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxNYXJr
U3RhY2suY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcU2xvdFZpc2l0
b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcU3VwZXJSZWdpb24u
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcVlRhYmxlU3BlY3RydW0u
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha0Jsb2NrLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWtIYW5kbGVPd25lci5jcHAi
IC8+DQpAQCAtNTM1LDYgKzUzNiw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFw
XFNsb3RWaXNpdG9ySW5saW5lcy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcU3Ryb25nLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTdHJvbmdJ
bmxpbmVzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTdXBlclJlZ2lv
bi5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcVGlueUJsb29tRmlsdGVy
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxWVGFibGVTcGVj
dHJ1bS5oIiAvPg0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwko
d29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxoZWFwXFNsb3RWaXNpdG9yLmNwcCI+DQogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+
DQogICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcU3Vw
ZXJSZWdpb24uY3BwIj4NCisgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxWVGFibGVTcGVjdHJ1bS5j
cHAiPg0KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCkBA
IC0xMTU0LDYgKzExNTcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTdHJv
bmdJbmxpbmVzLmgiPg0KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KICAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFN1cGVyUmVnaW9uLmgiPg0K
KyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFRpbnlCbG9vbUZpbHRlci5oIj4NCiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC04NDksNiArODQ5LDggQEAKIAkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJ
V3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QubW0g
Ki87IH07CiAJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0YzOUMw
MTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLzsgfTsKIAkJQzJENThD
MzQxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQ1OEMzMzE1OTEyRkVFMDAyMUE4
NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJQzJERjQ0MkYxNzA3QUMwMTAw
QTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyREY0NDJEMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5j
cHAgKi87IH07CisJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJERjQ0MkUxNzA3
QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJFNTI2QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBU
aW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCAqLzsgfTsKIAkJQzJFNTI2
QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBU
aW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTExMiAvKiBDb3BpZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFQUEzRjgxNDlBODMwODAwRkNFMTEy
IC8qIENvcGllZFNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTE3NTQsNiArMTc1Niw4IEBACiAJCUMyQ0YzOUJGMTZFMTVBODEwMERENjlC
RSAvKiBKU0FQSVdyYXBwZXJPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzJERjQ0MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cGVyUmVnaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cGVyUmVnaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGlt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFRpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhE
IC8qIEhlYXBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFQUEzRjgxNDlBODMwODAwRkNF
MTEyIC8qIENvcGllZFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
cGllZFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTY2LDYgKzIxNzAs
OCBAQAogCQkJCUMyODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovLAog
CQkJCUMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCAqLywK
IAkJCQlDMjBCMjU5ODE3MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggKi8sCisJCQkJQzJERjQ0
MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAqLywKKwkJCQlDMkRGNDQyRTE3
MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVh
cDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTY1LDYgKzI5NzEsNyBAQAogCQkJ
CTBGQjdGMzk1MTVFRDhFNDYwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIwQjI1OTkxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI4MzE5MDAxNkZFNEI3RDAwMTU3QkZEIC8q
IEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRDBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNDbGFzc1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODUxLDYgKzM4NTgsNyBAQAog
CQkJCTBGMkJEQzRGMTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5
MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkRGNDQyRjE3
MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
QkRDNEExNTIyODA5QTAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUYxNEVGOTBCQjAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdp
c3RlckFsbG9jYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM3MDE2NURC
QjkwMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MTQ3Mjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1C
bG9ja0FsbG9jYXRvcjo6QmxvY2tBbGxvY2F0b3IoKQotICAgIDogbV9jb3BpZWRSZWdpb25TZXQo
Q29waWVkQmxvY2s6OmJsb2NrU2l6ZSkKK0Jsb2NrQWxsb2NhdG9yOjpCbG9ja0FsbG9jYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX3N1cGVyUmVnaW9uKGdsb2JhbERhdGEp
CisgICAgLCBtX2NvcGllZFJlZ2lvblNldChDb3BpZWRCbG9jazo6YmxvY2tTaXplKQogICAgICwg
bV9tYXJrZWRSZWdpb25TZXQoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSkKICAgICAsIG1fZm91cktC
QmxvY2tSZWdpb25TZXQoV2Vha0Jsb2NrOjpibG9ja1NpemUpCiAgICAgLCBtX3dvcmtMaXN0UmVn
aW9uU2V0KENvcHlXb3JrTGlzdFNlZ21lbnQ6OmJsb2NrU2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkocmV2aXNpb24gMTQ3Mjg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBCbG9ja0FsbG9jYXRvcjsKIGNsYXNzIENvcGllZEJs
b2NrOwogY2xhc3MgQ29weVdvcmtMaXN0U2VnbWVudDsKIGNsYXNzIEhhbmRsZUJsb2NrOworY2xh
c3MgSlNHbG9iYWxEYXRhOwogY2xhc3MgTWFya1N0YWNrU2VnbWVudDsKIGNsYXNzIE1hcmtlZEJs
b2NrOwogY2xhc3MgV2Vha0Jsb2NrOwpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBXZWFrQmxvY2s7
CiAKIGNsYXNzIEJsb2NrQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAgICBCbG9ja0FsbG9jYXRvcigp
OworICAgIEJsb2NrQWxsb2NhdG9yKEpTR2xvYmFsRGF0YSopOwogICAgIH5CbG9ja0FsbG9jYXRv
cigpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IERlYWRCbG9jayogYWxsb2NhdGUoKTsK
QEAgLTgyLDYgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBS
ZWdpb25TZXQmIHJlZ2lvblNldEZvcigpOwogCisgICAgU3VwZXJSZWdpb24gbV9zdXBlclJlZ2lv
bjsKICAgICBSZWdpb25TZXQgbV9jb3BpZWRSZWdpb25TZXQ7CiAgICAgUmVnaW9uU2V0IG1fbWFy
a2VkUmVnaW9uU2V0OwogICAgIC8vIFdlYWtCbG9ja3MgYW5kIE1hcmtTdGFja1NlZ21lbnRzIHVz
ZSB0aGUgc2FtZSBSZWdpb25TZXQgc2luY2UgdGhleSdyZSB0aGUgc2FtZSBzaXplLgpAQCAtMTQw
LDcgKzE0Miw3IEBAIGlubGluZSBEZWFkQmxvY2sqIEJsb2NrQWxsb2NhdG9yOjphbGxvY2EKICAg
ICAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKLSAgICBSZWdpb24qIG5ld1JlZ2lvbiA9
IFJlZ2lvbjo6Y3JlYXRlKFQ6OmJsb2NrU2l6ZSk7CisgICAgUmVnaW9uKiBuZXdSZWdpb24gPSBS
ZWdpb246OmNyZWF0ZSgmbV9zdXBlclJlZ2lvbiwgVDo6YmxvY2tTaXplKTsKIAogICAgIFNwaW5M
b2NrSG9sZGVyIGxvY2tlcigmbV9yZWdpb25Mb2NrKTsKICAgICBtX2VtcHR5UmVnaW9ucy5wdXNo
KG5ld1JlZ2lvbik7CkBAIC0xNTMsNyArMTU1LDcgQEAgaW5saW5lIERlYWRCbG9jayogQmxvY2tB
bGxvY2F0b3I6OmFsbG9jYQogaW5saW5lIERlYWRCbG9jayogQmxvY2tBbGxvY2F0b3I6OmFsbG9j
YXRlQ3VzdG9tU2l6ZShzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpCiB7
CiAgICAgc2l6ZV90IHJlYWxTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKGJsb2NrQWxp
Z25tZW50LCBibG9ja1NpemUpOwotICAgIFJlZ2lvbiogbmV3UmVnaW9uID0gUmVnaW9uOjpjcmVh
dGVDdXN0b21TaXplKHJlYWxTaXplLCBibG9ja0FsaWdubWVudCk7CisgICAgUmVnaW9uKiBuZXdS
ZWdpb24gPSBSZWdpb246OmNyZWF0ZUN1c3RvbVNpemUoJm1fc3VwZXJSZWdpb24sIHJlYWxTaXpl
LCBibG9ja0FsaWdubWVudCk7CiAgICAgRGVhZEJsb2NrKiBibG9jayA9IG5ld1JlZ2lvbi0+YWxs
b2NhdGUoKTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIHJldHVybiBibG9jazsKQEAgLTE5OSw3
ICsyMDEsNyBAQCBpbmxpbmUgdm9pZCBCbG9ja0FsbG9jYXRvcjo6ZGVhbGxvY2F0ZUN1CiAgICAg
UmVnaW9uKiByZWdpb24gPSBibG9jay0+cmVnaW9uKCk7CiAgICAgQVNTRVJUKHJlZ2lvbi0+aXND
dXN0b21TaXplKCkpOwogICAgIHJlZ2lvbi0+ZGVhbGxvY2F0ZShibG9jayk7Ci0gICAgZGVsZXRl
IHJlZ2lvbjsKKyAgICByZWdpb24tPmRlc3Ryb3koKTsKIH0KIAogdGVtcGxhdGUgPD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNDcyODUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUwLDYg
KzI1MCw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWEKICAgICAs
IG1fYnl0ZXNBbGxvY2F0ZWQoMCkKICAgICAsIG1fYnl0ZXNBYmFuZG9uZWQoMCkKICAgICAsIG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKKyAgICAsIG1fYmxvY2tBbGxvY2F0b3Io
Z2xvYmFsRGF0YSkKICAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fc3RvcmFnZVNw
YWNlKHRoaXMpCiAgICAgLCBtX21hY2hpbmVUaHJlYWRzKHRoaXMpCkBAIC04OTYsNCArODk3LDEy
IEBAIHZvaWQgSGVhcDo6em9tYmlmeURlYWRPYmplY3RzKCkKICAgICBtX29iamVjdFNwYWNlLmZv
ckVhY2hEZWFkQ2VsbDxab21iaWZ5PigpOwogfQogCitzdGF0aWMgaW50IGdvRnVja1lvdXJzZWxm
ID0gMTsKKwordm9pZCBIZWFwOjpkaWRFeGNlZWRGaXhlZEhlYXBTaXplTGltaXQoKQoreworICAg
IGlmIChnb0Z1Y2tZb3Vyc2VsZiA9PSAxKQorICAgICAgICBDUkFTSCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDE0
NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtMTg5LDYgKzE4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xh
c3MgQ29waWVkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3B5VmlzaXRvcjsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgU3VwZXJS
ZWdpb247CiAgICAgICAgIGZyaWVuZCBjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXI7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBIZWFwU3RhdGlzdGljczsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdlYWtT
ZXQ7CkBAIC0yMjEsNiArMjIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSlNTdGFj
ayYgc3RhY2soKTsKICAgICAgICAgQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKCk7Cisg
ICAgICAgIHZvaWQgZGlkRXhjZWVkRml4ZWRIZWFwU2l6ZUxpbWl0KCk7CiAKICAgICAgICAgY29u
c3QgSGVhcFR5cGUgbV9oZWFwVHlwZTsKICAgICAgICAgY29uc3Qgc2l6ZV90IG1fcmFtU2l6ZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHJldmlz
aW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogTWFy
a2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoRGVhZEJsb2NrKiBibG9jaywgTWFya2VkQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIHNpemVfdCBjZWxsU2l6ZSwgRGVzdHJ1Y3RvclR5cGUgZGVzdHJ1
Y3RvclR5cGUpCiB7CisgICAgQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihibG9jaykg
PT0gKHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihibG9jaykgJiBibG9ja01hc2spKTsKICAgICBS
ZWdpb24qIHJlZ2lvbiA9IGJsb2NrLT5yZWdpb24oKTsKICAgICByZXR1cm4gbmV3IChOb3ROdWxs
LCBibG9jaykgTWFya2VkQmxvY2socmVnaW9uLCBhbGxvY2F0b3IsIGNlbGxTaXplLCBkZXN0cnVj
dG9yVHlwZSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9SZWdpb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9SZWdpb24uaAkocmV2aXNp
b24gMTQ3Mjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvUmVnaW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDkgKzI3LDIxIEBACiAjZGVmaW5lIEpTQ19SZWdpb25faAogCiAjaW5j
bHVkZSAiSGVhcEJsb2NrLmgiCisjaW5jbHVkZSAiU3VwZXJSZWdpb24uaCIKICNpbmNsdWRlIDx3
dGYvRG91Ymx5TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9ySGFuZGxl
Lmg+CiAjaW5jbHVkZSA8d3RmL1BhZ2VBbGxvY2F0aW9uQWxpZ25lZC5oPgogCisjZGVmaW5lIEhF
QVBfTUVNT1JZX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigtMykpCisKKyNpZm5kZWYgRU5BQkxFX1NVUEVSX1JFR0lPTgorI2lmIFVTRShKU1ZBTFVFNjQp
CisjZGVmaW5lIEVOQUJMRV9TVVBFUl9SRUdJT04gMQorI2Vsc2UKKyNkZWZpbmUgRU5BQkxFX1NV
UEVSX1JFR0lPTiAwCisjZW5kaWYKKyNlbmRpZgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
RGVhZEJsb2NrIDogcHVibGljIEhlYXBCbG9jazxEZWFkQmxvY2s+IHsKQEAgLTQ3LDkgKzU5LDEw
IEBAIGNsYXNzIFJlZ2lvbiA6IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm8KICAgICBmcmllbmQg
Y2xhc3MgQmxvY2tBbGxvY2F0b3I7CiBwdWJsaWM6CiAgICAgflJlZ2lvbigpOwotICAgIHN0YXRp
YyBSZWdpb24qIGNyZWF0ZShzaXplX3QgYmxvY2tTaXplKTsKLSAgICBzdGF0aWMgUmVnaW9uKiBj
cmVhdGVDdXN0b21TaXplKHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCk7
CisgICAgc3RhdGljIFJlZ2lvbiogY3JlYXRlKFN1cGVyUmVnaW9uKiwgc2l6ZV90IGJsb2NrU2l6
ZSk7CisgICAgc3RhdGljIFJlZ2lvbiogY3JlYXRlQ3VzdG9tU2l6ZShTdXBlclJlZ2lvbiosIHNp
emVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCk7CiAgICAgUmVnaW9uKiByZXNl
dChzaXplX3QgYmxvY2tTaXplKTsKKyAgICB2b2lkIGRlc3Ryb3koKTsKIAogICAgIHNpemVfdCBi
bG9ja1NpemUoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrU2l6ZTsgfQogICAgIGJvb2wgaXNGdWxs
KCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja3NJblVzZSA9PSBtX3RvdGFsQmxvY2tzOyB9CkBAIC02
MCwxMSArNzMsMTggQEAgcHVibGljOgogICAgIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKik7CiAKICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfcmVnaW9uU2l6ZSA9IDY0ICogS0I7CisgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBzX3JlZ2lvbk1hc2sgPSB+KHNfcmVnaW9uU2l6ZSAtIDEpOworCitwcm90
ZWN0ZWQ6CisgICAgUmVnaW9uKHNpemVfdCBibG9ja1NpemUsIHNpemVfdCB0b3RhbEJsb2Nrcywg
Ym9vbCBpc0V4Y2Vzcyk7CisgICAgdm9pZCBpbml0aWFsaXplQmxvY2tMaXN0KCk7CisKKyAgICBi
b29sIG1faXNFeGNlc3M7CiAKIHByaXZhdGU6Ci0gICAgUmVnaW9uKFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZCYsIHNpemVfdCBibG9ja1NpemUsIHNpemVfdCB0b3RhbEJsb2Nrcyk7CisgICAgdm9pZCog
YmFzZSgpOworICAgIHNpemVfdCBzaXplKCk7CiAKLSAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQg
bV9hbGxvY2F0aW9uOwogICAgIHNpemVfdCBtX3RvdGFsQmxvY2tzOwogICAgIHNpemVfdCBtX2Js
b2Nrc0luVXNlOwogICAgIHNpemVfdCBtX2Jsb2NrU2l6ZTsKQEAgLTc0LDI3ICs5NCwxMDggQEAg
cHJpdmF0ZToKICAgICBEb3VibHlMaW5rZWRMaXN0PERlYWRCbG9jaz4gbV9kZWFkQmxvY2tzOwog
fTsKIAotaW5saW5lIFJlZ2lvbiogUmVnaW9uOjpjcmVhdGUoc2l6ZV90IGJsb2NrU2l6ZSkKKwor
Y2xhc3MgTm9ybWFsUmVnaW9uIDogcHVibGljIFJlZ2lvbiB7CisgICAgZnJpZW5kIGNsYXNzIFJl
Z2lvbjsKK3ByaXZhdGU6CisgICAgTm9ybWFsUmVnaW9uKFBhc3NSZWZQdHI8V1RGOjpNZXRhQWxs
b2NhdG9ySGFuZGxlPiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzKTsKKwor
ICAgIHN0YXRpYyBOb3JtYWxSZWdpb24qIHRyeUNyZWF0ZShTdXBlclJlZ2lvbiosIHNpemVfdCBi
bG9ja1NpemUpOworICAgIHN0YXRpYyBOb3JtYWxSZWdpb24qIHRyeUNyZWF0ZUN1c3RvbVNpemUo
U3VwZXJSZWdpb24qLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpOwor
CisgICAgdm9pZCogYmFzZSgpIHsgcmV0dXJuIG1fYWxsb2NhdGlvbi0+c3RhcnQoKTsgfQorICAg
IHNpemVfdCBzaXplKCkgeyByZXR1cm4gbV9hbGxvY2F0aW9uLT5zaXplSW5CeXRlcygpOyB9CisK
KyAgICBOb3JtYWxSZWdpb24qIHJlc2V0KHNpemVfdCBibG9ja1NpemUpOworCisgICAgUmVmUHRy
PFdURjo6TWV0YUFsbG9jYXRvckhhbmRsZT4gbV9hbGxvY2F0aW9uOworfTsKKworY2xhc3MgRXhj
ZXNzUmVnaW9uIDogcHVibGljIFJlZ2lvbiB7CisgICAgZnJpZW5kIGNsYXNzIFJlZ2lvbjsKK3By
aXZhdGU6CisgICAgRXhjZXNzUmVnaW9uKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIHNpemVfdCBi
bG9ja1NpemUsIHNpemVfdCB0b3RhbEJsb2Nrcyk7CisKKyAgICB+RXhjZXNzUmVnaW9uKCk7CisK
KyAgICBzdGF0aWMgRXhjZXNzUmVnaW9uKiBjcmVhdGUoc2l6ZV90IGJsb2NrU2l6ZSk7CisgICAg
c3RhdGljIEV4Y2Vzc1JlZ2lvbiogY3JlYXRlQ3VzdG9tU2l6ZShzaXplX3QgYmxvY2tTaXplLCBz
aXplX3QgYmxvY2tBbGlnbm1lbnQpOworCisgICAgdm9pZCogYmFzZSgpIHsgcmV0dXJuIG1fYWxs
b2NhdGlvbi5iYXNlKCk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIHsgcmV0dXJuIG1fYWxsb2NhdGlv
bi5zaXplKCk7IH0KKworICAgIEV4Y2Vzc1JlZ2lvbiogcmVzZXQoc2l6ZV90IGJsb2NrU2l6ZSk7
CisKKyAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgbV9hbGxvY2F0aW9uOworfTsKKworaW5saW5l
IE5vcm1hbFJlZ2lvbjo6Tm9ybWFsUmVnaW9uKFBhc3NSZWZQdHI8V1RGOjpNZXRhQWxsb2NhdG9y
SGFuZGxlPiBhbGxvY2F0aW9uLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgdG90YWxCbG9ja3Mp
CisgICAgOiBSZWdpb24oYmxvY2tTaXplLCB0b3RhbEJsb2NrcywgZmFsc2UpCisgICAgLCBtX2Fs
bG9jYXRpb24oYWxsb2NhdGlvbikKK3sKKyAgICBpbml0aWFsaXplQmxvY2tMaXN0KCk7Cit9CisK
K2lubGluZSBOb3JtYWxSZWdpb24qIE5vcm1hbFJlZ2lvbjo6dHJ5Q3JlYXRlKFN1cGVyUmVnaW9u
KiBzdXBlclJlZ2lvbiwgc2l6ZV90IGJsb2NrU2l6ZSkKK3sKKyAgICBSZWZQdHI8V1RGOjpNZXRh
QWxsb2NhdG9ySGFuZGxlPiBhbGxvY2F0aW9uID0gc3VwZXJSZWdpb24tPmFsbG9jYXRlKHNfcmVn
aW9uU2l6ZSwgSEVBUF9NRU1PUllfSUQpOworICAgIGlmICghYWxsb2NhdGlvbikKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBOb3JtYWxSZWdpb24oYWxsb2NhdGlvbiwgYmxvY2tT
aXplLCBzX3JlZ2lvblNpemUgLyBibG9ja1NpemUpOworfQorCitpbmxpbmUgTm9ybWFsUmVnaW9u
KiBOb3JtYWxSZWdpb246OnRyeUNyZWF0ZUN1c3RvbVNpemUoU3VwZXJSZWdpb24qIHN1cGVyUmVn
aW9uLCBzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpCit7CisgICAgQVNT
RVJUX1VOVVNFRChibG9ja0FsaWdubWVudCwgYmxvY2tBbGlnbm1lbnQgPD0gc19yZWdpb25TaXpl
KTsKKyAgICBSZWZQdHI8V1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxlPiBhbGxvY2F0aW9uID0gc3Vw
ZXJSZWdpb24tPmFsbG9jYXRlKGJsb2NrU2l6ZSwgSEVBUF9NRU1PUllfSUQpOworICAgIGlmICgh
YWxsb2NhdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBOb3JtYWxSZWdp
b24oYWxsb2NhdGlvbiwgYmxvY2tTaXplLCAxKTsKK30KKworaW5saW5lIE5vcm1hbFJlZ2lvbiog
Tm9ybWFsUmVnaW9uOjpyZXNldChzaXplX3QgYmxvY2tTaXplKQoreworICAgIEFTU0VSVCghbV9p
c0V4Y2Vzcyk7CisgICAgUmVmUHRyPFdURjo6TWV0YUFsbG9jYXRvckhhbmRsZT4gYWxsb2NhdGlv
biA9IG1fYWxsb2NhdGlvbi5yZWxlYXNlKCk7CisgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgdGhp
cykgTm9ybWFsUmVnaW9uKGFsbG9jYXRpb24ucmVsZWFzZSgpLCBibG9ja1NpemUsIHNfcmVnaW9u
U2l6ZSAvIGJsb2NrU2l6ZSk7Cit9CisKK2lubGluZSBFeGNlc3NSZWdpb246OkV4Y2Vzc1JlZ2lv
bihQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIHNpemVfdCBibG9ja1NpemUsIHNp
emVfdCB0b3RhbEJsb2NrcykKKyAgICA6IFJlZ2lvbihibG9ja1NpemUsIHRvdGFsQmxvY2tzLCB0
cnVlKQorICAgICwgbV9hbGxvY2F0aW9uKGFsbG9jYXRpb24pCit7CisgICAgaW5pdGlhbGl6ZUJs
b2NrTGlzdCgpOworfQorCitpbmxpbmUgRXhjZXNzUmVnaW9uOjp+RXhjZXNzUmVnaW9uKCkKK3sK
KyAgICBtX2FsbG9jYXRpb24uZGVhbGxvY2F0ZSgpOworfQorCitpbmxpbmUgRXhjZXNzUmVnaW9u
KiBFeGNlc3NSZWdpb246OmNyZWF0ZShzaXplX3QgYmxvY2tTaXplKQogewotICAgIEFTU0VSVChi
bG9ja1NpemUgPD0gc19yZWdpb25TaXplKTsKLSAgICBBU1NFUlQoIShzX3JlZ2lvblNpemUgJSBi
bG9ja1NpemUpKTsKICAgICBQYWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VB
bGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoc19yZWdpb25TaXplLCBzX3JlZ2lvblNpemUsIE9T
QWxsb2NhdG9yOjpKU0dDSGVhcFBhZ2VzKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2Fz
dDxib29sPihhbGxvY2F0aW9uKSk7Ci0gICAgcmV0dXJuIG5ldyBSZWdpb24oYWxsb2NhdGlvbiwg
YmxvY2tTaXplLCBzX3JlZ2lvblNpemUgLyBibG9ja1NpemUpOworICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxib29sPihhbGxvY2F0aW9uKSk7CisgICAgcmV0dXJuIG5ldyBFeGNlc3NSZWdpb24oYWxs
b2NhdGlvbiwgYmxvY2tTaXplLCBzX3JlZ2lvblNpemUgLyBibG9ja1NpemUpOyAKIH0KIAotaW5s
aW5lIFJlZ2lvbiogUmVnaW9uOjpjcmVhdGVDdXN0b21TaXplKHNpemVfdCBibG9ja1NpemUsIHNp
emVfdCBibG9ja0FsaWdubWVudCkKK2lubGluZSBFeGNlc3NSZWdpb24qIEV4Y2Vzc1JlZ2lvbjo6
Y3JlYXRlQ3VzdG9tU2l6ZShzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQp
CiB7CiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24gPSBQYWdlQWxsb2NhdGlv
bkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgYmxvY2tBbGlnbm1lbnQsIE9TQWxsb2NhdG9y
OjpKU0dDSGVhcFBhZ2VzKTsKLSAgICBSRUxFQVNFX0FTU0VSVChzdGF0aWNfY2FzdDxib29sPihh
bGxvY2F0aW9uKSk7Ci0gICAgUmVnaW9uKiByZWdpb24gPSBuZXcgUmVnaW9uKGFsbG9jYXRpb24s
IGJsb2NrU2l6ZSwgMSk7Ci0gICAgcmVnaW9uLT5tX2lzQ3VzdG9tU2l6ZSA9IHRydWU7Ci0gICAg
cmV0dXJuIHJlZ2lvbjsKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8Ym9vbD4oYWxsb2NhdGlvbikp
OworICAgIHJldHVybiBuZXcgRXhjZXNzUmVnaW9uKGFsbG9jYXRpb24sIGJsb2NrU2l6ZSwgMSk7
CiB9CiAKLWlubGluZSBSZWdpb246OlJlZ2lvbihQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9j
YXRpb24sIHNpemVfdCBibG9ja1NpemUsIHNpemVfdCB0b3RhbEJsb2NrcykKK2lubGluZSBFeGNl
c3NSZWdpb24qIEV4Y2Vzc1JlZ2lvbjo6cmVzZXQoc2l6ZV90IGJsb2NrU2l6ZSkKK3sKKyAgICBB
U1NFUlQobV9pc0V4Y2Vzcyk7CisgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9jYXRpb24g
PSBtX2FsbG9jYXRpb247CisgICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgdGhpcykgRXhjZXNzUmVn
aW9uKGFsbG9jYXRpb24sIGJsb2NrU2l6ZSwgc19yZWdpb25TaXplIC8gYmxvY2tTaXplKTsKK30K
KworaW5saW5lIFJlZ2lvbjo6UmVnaW9uKHNpemVfdCBibG9ja1NpemUsIHNpemVfdCB0b3RhbEJs
b2NrcywgYm9vbCBpc0V4Y2VzcykKICAgICA6IERvdWJseUxpbmtlZExpc3ROb2RlPFJlZ2lvbj4o
KQotICAgICwgbV9hbGxvY2F0aW9uKGFsbG9jYXRpb24pCisgICAgLCBtX2lzRXhjZXNzKGlzRXhj
ZXNzKQogICAgICwgbV90b3RhbEJsb2Nrcyh0b3RhbEJsb2NrcykKICAgICAsIG1fYmxvY2tzSW5V
c2UoMCkKICAgICAsIG1fYmxvY2tTaXplKGJsb2NrU2l6ZSkKQEAgLTEwMiwyNCArMjAzLDY2IEBA
IGlubGluZSBSZWdpb246OlJlZ2lvbihQYWdlQWxsb2NhdGlvbkFsaWcKICAgICAsIG1fcHJldigw
KQogICAgICwgbV9uZXh0KDApCiB7Ci0gICAgQVNTRVJUKGFsbG9jYXRpb24pOwotICAgIGNoYXIq
IHN0YXJ0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYWxsb2NhdGlvbi5iYXNlKCkpOwotICAgIGNo
YXIqIGVuZCA9IHN0YXJ0ICsgbV9hbGxvY2F0aW9uLnNpemUoKTsKLSAgICBmb3IgKGNoYXIqIGN1
cnJlbnQgPSBzdGFydDsgY3VycmVudCA8IGVuZDsgY3VycmVudCArPSBibG9ja1NpemUpCit9CisK
K2lubGluZSB2b2lkIFJlZ2lvbjo6aW5pdGlhbGl6ZUJsb2NrTGlzdCgpCit7CisgICAgY2hhciog
c3RhcnQgPSBzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZSgpKTsKKyAgICBjaGFyKiBjdXJyZW50ID0g
c3RhcnQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3RvdGFsQmxvY2tzOyBpKyspIHsK
KyAgICAgICAgQVNTRVJUKGN1cnJlbnQgPCBzdGFydCArIHNpemUoKSk7CiAgICAgICAgIG1fZGVh
ZEJsb2Nrcy5hcHBlbmQobmV3IChOb3ROdWxsLCBjdXJyZW50KSBEZWFkQmxvY2sodGhpcykpOwor
ICAgICAgICBjdXJyZW50ICs9IG1fYmxvY2tTaXplOworICAgIH0KK30KKworaW5saW5lIFJlZ2lv
biogUmVnaW9uOjpjcmVhdGUoU3VwZXJSZWdpb24qIHN1cGVyUmVnaW9uLCBzaXplX3QgYmxvY2tT
aXplKQoreworI2lmIEVOQUJMRShTVVBFUl9SRUdJT04pCisgICAgQVNTRVJUKGJsb2NrU2l6ZSA8
PSBzX3JlZ2lvblNpemUpOworICAgIEFTU0VSVCghKHNfcmVnaW9uU2l6ZSAlIGJsb2NrU2l6ZSkp
OworICAgIFJlZ2lvbiogcmVnaW9uID0gTm9ybWFsUmVnaW9uOjp0cnlDcmVhdGUoc3VwZXJSZWdp
b24sIGJsb2NrU2l6ZSk7CisgICAgaWYgKExJS0VMWSghIXJlZ2lvbikpCisgICAgICAgIHJldHVy
biByZWdpb247CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdXBlclJlZ2lvbik7CisjZW5kaWYK
KyAgICByZXR1cm4gRXhjZXNzUmVnaW9uOjpjcmVhdGUoYmxvY2tTaXplKTsKK30KKworaW5saW5l
IFJlZ2lvbiogUmVnaW9uOjpjcmVhdGVDdXN0b21TaXplKFN1cGVyUmVnaW9uKiBzdXBlclJlZ2lv
biwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IGJsb2NrQWxpZ25tZW50KQoreworI2lmIEVOQUJM
RShTVVBFUl9SRUdJT04pCisgICAgUmVnaW9uKiByZWdpb24gPSBOb3JtYWxSZWdpb246OnRyeUNy
ZWF0ZUN1c3RvbVNpemUoc3VwZXJSZWdpb24sIGJsb2NrU2l6ZSwgYmxvY2tBbGlnbm1lbnQpOwor
ICAgIGlmIChVTkxJS0VMWSghcmVnaW9uKSkKKyAgICAgICAgcmVnaW9uID0gRXhjZXNzUmVnaW9u
OjpjcmVhdGVDdXN0b21TaXplKGJsb2NrU2l6ZSwgYmxvY2tBbGlnbm1lbnQpOworI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oc3VwZXJSZWdpb24pOworICAgIFJlZ2lvbiogcmVnaW9uID0gRXhjZXNz
UmVnaW9uOjpjcmVhdGVDdXN0b21TaXplKGJsb2NrU2l6ZSwgYmxvY2tBbGlnbm1lbnQpOworI2Vu
ZGlmCisgICAgcmVnaW9uLT5tX2lzQ3VzdG9tU2l6ZSA9IHRydWU7CisgICAgcmV0dXJuIHJlZ2lv
bjsKIH0KIAogaW5saW5lIFJlZ2lvbjo6flJlZ2lvbigpCiB7CiAgICAgQVNTRVJUKGlzRW1wdHko
KSk7Ci0gICAgbV9hbGxvY2F0aW9uLmRlYWxsb2NhdGUoKTsKK30KKworaW5saW5lIHZvaWQgUmVn
aW9uOjpkZXN0cm95KCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9pc0V4Y2VzcykpCisgICAgICAg
IGRlbGV0ZSBzdGF0aWNfY2FzdDxFeGNlc3NSZWdpb24qPih0aGlzKTsKKyAgICBlbHNlCisgICAg
ICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxOb3JtYWxSZWdpb24qPih0aGlzKTsKIH0KIAogaW5saW5l
IFJlZ2lvbiogUmVnaW9uOjpyZXNldChzaXplX3QgYmxvY2tTaXplKQogewogICAgIEFTU0VSVChp
c0VtcHR5KCkpOwotICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gbV9hbGxv
Y2F0aW9uOwotICAgIHJldHVybiBuZXcgKE5vdE51bGwsIHRoaXMpIFJlZ2lvbihhbGxvY2F0aW9u
LCBibG9ja1NpemUsIHNfcmVnaW9uU2l6ZSAvIGJsb2NrU2l6ZSk7CisgICAgaWYgKFVOTElLRUxZ
KG1faXNFeGNlc3MpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhjZXNzUmVnaW9uKj4o
dGhpcyktPnJlc2V0KGJsb2NrU2l6ZSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5vcm1hbFJl
Z2lvbio+KHRoaXMpLT5yZXNldChibG9ja1NpemUpOwogfQogCiBpbmxpbmUgRGVhZEJsb2NrKiBS
ZWdpb246OmFsbG9jYXRlKCkKQEAgLTEzMywxMiArMjc2LDI2IEBAIGlubGluZSB2b2lkIFJlZ2lv
bjo6ZGVhbGxvY2F0ZSh2b2lkKiBiYXMKIHsKICAgICBBU1NFUlQoYmFzZSk7CiAgICAgQVNTRVJU
KG1fYmxvY2tzSW5Vc2UpOwotICAgIEFTU0VSVChiYXNlID49IG1fYWxsb2NhdGlvbi5iYXNlKCkg
JiYgYmFzZSA8IHN0YXRpY19jYXN0PGNoYXIqPihtX2FsbG9jYXRpb24uYmFzZSgpKSArIG1fYWxs
b2NhdGlvbi5zaXplKCkpOworICAgIEFTU0VSVChiYXNlID49IHRoaXMtPmJhc2UoKSAmJiBiYXNl
IDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHRoaXMtPmJhc2UoKSkgKyBzaXplKCkpOwogICAgIERlYWRC
bG9jayogYmxvY2sgPSBuZXcgKE5vdE51bGwsIGJhc2UpIERlYWRCbG9jayh0aGlzKTsKICAgICBt
X2RlYWRCbG9ja3MucHVzaChibG9jayk7CiAgICAgbV9ibG9ja3NJblVzZS0tOwogfQogCitpbmxp
bmUgdm9pZCogUmVnaW9uOjpiYXNlKCkKK3sKKyAgICBpZiAoVU5MSUtFTFkobV9pc0V4Y2Vzcykp
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeGNlc3NSZWdpb24qPih0aGlzKS0+RXhjZXNz
UmVnaW9uOjpiYXNlKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5vcm1hbFJlZ2lvbio+KHRo
aXMpLT5Ob3JtYWxSZWdpb246OmJhc2UoKTsKK30KKworaW5saW5lIHNpemVfdCBSZWdpb246OnNp
emUoKQoreworICAgIGlmIChVTkxJS0VMWShtX2lzRXhjZXNzKSkKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEV4Y2Vzc1JlZ2lvbio+KHRoaXMpLT5FeGNlc3NSZWdpb246OnNpemUoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Tm9ybWFsUmVnaW9uKj4odGhpcyktPk5vcm1hbFJlZ2lvbjo6
c2l6ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEpTQ19SZWdpb25f
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlN1cGVyUmVnaW9uLmgiCisKKyNpbmNsdWRlICJKU0dsb2JhbERh
dGEuaCIKKyNpbmNsdWRlICJSZWdpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IHNp
emVfdCBTdXBlclJlZ2lvbjo6c19maXhlZEhlYXBNZW1vcnlQb29sU2l6ZSA9IDQgKiAxMDI0ICog
TUI7CisKK1N1cGVyUmVnaW9uOjpTdXBlclJlZ2lvbihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
CisgICAgOiBNZXRhQWxsb2NhdG9yKFJlZ2lvbjo6c19yZWdpb25TaXplLCBSZWdpb246OnNfcmVn
aW9uU2l6ZSkKKyAgICAsIG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQorICAgICwgbV9yZXNlcnZh
dGlvbkJhc2UoMCkKK3sKKyAgICAvLyBPdmVyLWFsbG9jYXRlIHNvIHRoYXQgd2UgY2FuIG1ha2Ug
c3VyZSB0aGF0IHdlJ3JlIGFsaWduZWQgdG8gdGhlIHNpemUgb2YgUmVnaW9ucy4KKyAgICBtX3Jl
c2VydmF0aW9uID0gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHNfZml4ZWRIZWFwTWVtb3J5UG9v
bFNpemUgKyBSZWdpb246OnNfcmVnaW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMp
OworICAgIG1fcmVzZXJ2YXRpb25CYXNlID0gZ2V0QWxpZ25lZEJhc2UobV9yZXNlcnZhdGlvbik7
CisgICAgYWRkRnJlc2hGcmVlU3BhY2UobV9yZXNlcnZhdGlvbkJhc2UsIHNfZml4ZWRIZWFwTWVt
b3J5UG9vbFNpemUpOworfQorCit2b2lkKiBTdXBlclJlZ2lvbjo6Z2V0QWxpZ25lZEJhc2UoUGFn
ZVJlc2VydmF0aW9uJiByZXNlcnZhdGlvbikKK3sKKyAgICBmb3IgKGNoYXIqIGN1cnJlbnQgPSBz
dGF0aWNfY2FzdDxjaGFyKj4ocmVzZXJ2YXRpb24uYmFzZSgpKTsgY3VycmVudCA8IHN0YXRpY19j
YXN0PGNoYXIqPihyZXNlcnZhdGlvbi5iYXNlKCkpICsgUmVnaW9uOjpzX3JlZ2lvblNpemU7IGN1
cnJlbnQgKz0gcGFnZVNpemUoKSkgeworICAgICAgICBpZiAoIShyZWludGVycHJldF9jYXN0PHNp
emVfdD4oY3VycmVudCkgJiB+UmVnaW9uOjpzX3JlZ2lvbk1hc2spKQorICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnQ7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biAwOworfQorCit2b2lkKiBTdXBlclJlZ2lvbjo6YWxsb2NhdGVOZXdTcGFjZShzaXplX3QmKQor
eworICAgIHJldHVybiAwOworfQorCit2b2lkIFN1cGVyUmVnaW9uOjpub3RpZnlOZWVkUGFnZSh2
b2lkKiBwYWdlKQoreworICAgIG1fcmVzZXJ2YXRpb24uY29tbWl0KHBhZ2UsIFJlZ2lvbjo6c19y
ZWdpb25TaXplKTsKK30KKwordm9pZCBTdXBlclJlZ2lvbjo6bm90aWZ5UGFnZUlzRnJlZSh2b2lk
KiBwYWdlKQoreworICAgIG1fcmVzZXJ2YXRpb24uZGVjb21taXQocGFnZSwgUmVnaW9uOjpzX3Jl
Z2lvblNpemUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgU3VwZXJSZWdpb25faAorI2RlZmluZSBTdXBlclJlZ2lv
bl9oCisKKyNpbmNsdWRlIDx3dGYvTWV0YUFsbG9jYXRvci5oPgorI2luY2x1ZGUgPHd0Zi9QYWdl
QmxvY2suaD4KKyNpbmNsdWRlIDx3dGYvUGFnZVJlc2VydmF0aW9uLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK2NsYXNzIFN1cGVyUmVnaW9uIDogcHVibGlj
IFdURjo6TWV0YUFsbG9jYXRvciB7CitwdWJsaWM6CisgICAgU3VwZXJSZWdpb24oSlNHbG9iYWxE
YXRhKik7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQqIGFsbG9jYXRlTmV3U3BhY2Uo
c2l6ZV90Jik7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU5lZWRQYWdlKHZvaWQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5UGFnZUlzRnJlZSh2b2lkKik7CisKK3ByaXZhdGU6CisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBzX2ZpeGVkSGVhcE1lbW9yeVBvb2xTaXplOworCisgICAgc3RhdGlj
IHZvaWQqIGdldEFsaWduZWRCYXNlKFBhZ2VSZXNlcnZhdGlvbiYpOworCisgICAgSlNHbG9iYWxE
YXRhKiBtX2dsb2JhbERhdGE7CisgICAgUGFnZVJlc2VydmF0aW9uIG1fcmVzZXJ2YXRpb247Cisg
ICAgdm9pZCogbV9yZXNlcnZhdGlvbkJhc2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIFN1cGVyUmVnaW9uX2gKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNDcyOTQpCisrKyBTb3Vy
Y2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEzLTAz
LTMxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVnaW9ucyBzaG91bGQgYmUgYWxsb2NhdGVkIGZyb20gdGhlIHNhbWUgY29udGlndW91cyBzZWdt
ZW50IG9mIHZpcnR1YWwgbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbnN0ZWFkIG9mIGxldHRpbmcgdGhlIE9TIHNwcmVhZCBvdXIgUmVnaW9u
cyBhbGwgb3ZlciB0aGUgcGxhY2UsIHdlIHNob3VsZCBhbGxvY2F0ZSB0aGVtIGFsbCB3aXRoaW4g
CisgICAgICAgIHNvbWUgcmFuZ2Ugb2YgZWFjaCBvdGhlci4gVGhpcyBjaGFuZ2Ugd2lsbCBvcGVu
IHRoZSBkb29yIHRvIHNvbWUgb3RoZXIgb3B0aW1pemF0aW9ucywgZS5nLiBkb2luZyBzaW1wbGUg
CisgICAgICAgIHJhbmdlIGNoZWNrcyBmb3Igb3VyIHdyaXRlIGJhcnJpZXJzIGFuZCBjb21wcmVz
c2luZyBKU0NlbGwgcG9pbnRlcnMgdG8gMzItYml0cy4KKworICAgICAgICAqIHd0Zi9NZXRhQWxs
b2NhdG9yLmNwcDogQ2hhbmdlZCB0aGUgTWV0YUFsbG9jYXRvciB0byBhbGxvdyBjdXN0b20gcGFn
ZSBzaXplcyBpZiB0aGUgZGVyaXZlZCBjbGFzcyB3YW50cyB0bworICAgICAgICB1c2Ugc29tZXRo
aW5nIG90aGVyIHRoYW4gdGhlIHN5c3RlbSBwYWdlIHNpemUuCisgICAgICAgIChXVEY6Ok1ldGFB
bGxvY2F0b3I6Ok1ldGFBbGxvY2F0b3IpOgorICAgICAgICAqIHd0Zi9NZXRhQWxsb2NhdG9yLmg6
CisgICAgICAgIChNZXRhQWxsb2NhdG9yKToKKwogMjAxMy0wMy0zMCAgVG9tIFNlcGV6ICA8dHNl
cGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBWaWV3LXNvdXJjZSBpZnJhbWVzIGFyZSBkYW5n
ZXJvdXMgKGFuZCBub3QgdmVyeSB1c2VmdWwpLgpJbmRleDogU291cmNlL1dURi93dGYvTWV0YUFs
bG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5j
cHAJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBNZXRhQWxsb2NhdG9ySGFu
ZGxlOjpzaHJpbmsoc2l6ZV90IAogICAgIG1fc2l6ZUluQnl0ZXMgPSBuZXdTaXplSW5CeXRlczsK
IH0KIAotTWV0YUFsbG9jYXRvcjo6TWV0YUFsbG9jYXRvcihzaXplX3QgYWxsb2NhdGlvbkdyYW51
bGUpCitNZXRhQWxsb2NhdG9yOjpNZXRhQWxsb2NhdG9yKHNpemVfdCBhbGxvY2F0aW9uR3JhbnVs
ZSwgc2l6ZV90IHBhZ2VTaXplKQogICAgIDogbV9hbGxvY2F0aW9uR3JhbnVsZShhbGxvY2F0aW9u
R3JhbnVsZSkKLSAgICAsIG1fcGFnZVNpemUocGFnZVNpemUoKSkKKyAgICAsIG1fcGFnZVNpemUo
cGFnZVNpemUgPyBwYWdlU2l6ZSA6IFdURjo6cGFnZVNpemUoKSkKICAgICAsIG1fYnl0ZXNBbGxv
Y2F0ZWQoMCkKICAgICAsIG1fYnl0ZXNSZXNlcnZlZCgwKQogICAgICwgbV9ieXRlc0NvbW1pdHRl
ZCgwKQpJbmRleDogU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuaAkocmV2aXNpb24gMTQ3Mjg1KQorKysgU291
cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3
IEBAIGNsYXNzIE1ldGFBbGxvY2F0b3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE1ldGFB
bGxvY2F0b3IpOwogCiBwdWJsaWM6Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIE1ldGFBbGxvY2F0
b3Ioc2l6ZV90IGFsbG9jYXRpb25HcmFudWxlKTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgTWV0
YUFsbG9jYXRvcihzaXplX3QgYWxsb2NhdGlvbkdyYW51bGUsIHNpemVfdCBwYWdlU2l6ZSA9IDAp
OwogICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5NZXRhQWxsb2NhdG9yKCk7
CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195922</attachid>
            <date>2013-03-31 21:13:39 -0700</date>
            <delta_ts>2013-04-01 11:45:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113662-20130331211333.patch</filename>
            <type>text/plain</type>
            <size>34797</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3Mjk0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDEzLTAzLTMxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVnaW9ucyBzaG91bGQgYmUgYWxsb2NhdGVkIGZyb20gdGhlIHNhbWUgY29udGln
dW91cyBzZWdtZW50IG9mIHZpcnR1YWwgbWVtb3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTM2NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0ZWFkIG9mIGxldHRpbmcgdGhlIE9TIHNwcmVhZCBv
dXIgUmVnaW9ucyBhbGwgb3ZlciB0aGUgcGxhY2UsIHdlIHNob3VsZCBhbGxvY2F0ZSB0aGVtIGFs
bCB3aXRoaW4gCisgICAgICAgIHNvbWUgcmFuZ2Ugb2YgZWFjaCBvdGhlci4gVGhpcyBjaGFuZ2Ug
d2lsbCBvcGVuIHRoZSBkb29yIHRvIHNvbWUgb3RoZXIgb3B0aW1pemF0aW9ucywgZS5nLiBkb2lu
ZyBzaW1wbGUgCisgICAgICAgIHJhbmdlIGNoZWNrcyBmb3Igb3VyIHdyaXRlIGJhcnJpZXJzIGFu
ZCBjb21wcmVzc2luZyBKU0NlbGwgcG9pbnRlcnMgdG8gMzItYml0cy4KKworICAgICAgICBBZGRl
ZCBuZXcgU3VwZXJSZWdpb24gY2xhc3MgdGhhdCBlbmNhcHN1bGF0ZXMgYWxsb2NhdGluZyBSZWdp
b25zIGZyb20gYSBjb250aWd1b3VzIHJlc2VydmVkIGNodW5rIG9mIAorICAgICAgICB2aXJ0dWFs
IGFkZHJlc3Mgc3BhY2UuIEl0IGZ1bmN0aW9ucyB2ZXJ5IHNpbWlsYXJseSB0byB0aGUgRml4ZWRW
TVBvb2xFeGVjdXRhYmxlQWxsb2NhdG9yIGNsYXNzIHVzZWQgYnkgdGhlIEpJVC4KKworICAgICAg
ICBBbHNvIGFkZGVkIHR3byBuZXcgc3ViY2xhc3NlcyBvZiBSZWdpb24sIE5vcm1hbFJlZ2lvbiBh
bmQgRXhjZXNzUmVnaW9uLiAKKyAgICAgICAgCisgICAgICAgIE5vcm1hbFJlZ2lvbiBpcyB0aGUg
dHlwZSBvZiBSZWdpb24gdGhhdCBpcyBub3JtYWxseSBhbGxvY2F0ZWQgd2hlbiB0aGVyZSBpcyBh
dmFpbGFibGUgc3BhY2UgcmVtYWluaW5nIAorICAgICAgICBpbiB0aGUgU3VwZXJSZWdpb24uIElm
IHdlIGV2ZXIgcnVuIG91dCBvZiBzcGFjZSBpbiB0aGUgU3VwZXJSZWdpb24sIHdlIGZhbGwgYmFj
ayB0byBhbGxvY2F0aW5nIAorICAgICAgICBFeGNlc3NSZWdpb25zLCB3aGljaCBhcmUgaWRlbnRp
Y2FsIHRvIGhvdyBSZWdpb25zIGhhdmUgYmVoYXZlZCB1cCB1bnRpbCBub3csIGkuZS4gdGhleSBj
b250YWluIGEgCisgICAgICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZC4KKworICAgICAgICBXZSBv
bmx5IHVzZSB0aGUgU3VwZXJSZWdpb24gKGFuZCBOb3JtYWxSZWdpb25zKSBvbiA2NC1iaXQgc3lz
dGVtcywgc2luY2UgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIHJlc2VydmUgdGhlIAorICAgICAg
ICBlbnRpcmUgNCBHQiBhZGRyZXNzIHNwYWNlIG9uIDMyLWJpdCBzeXN0ZW1zIGp1c3QgZm9yIHRo
ZSBKUyBoZWFwLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS5neXBpOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2o6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0
LnByaToKKyAgICAgICAgKiBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
QmxvY2tBbGxvY2F0b3I6OkJsb2NrQWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQmxvY2tBbGxvY2F0b3IpOgorICAg
ICAgICAoSlNDOjpCbG9ja0FsbG9jYXRvcjo6YWxsb2NhdGUpOgorICAgICAgICAoSlNDOjpCbG9j
a0FsbG9jYXRvcjo6YWxsb2NhdGVDdXN0b21TaXplKToKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxv
Y2F0b3I6OmRlYWxsb2NhdGVDdXN0b21TaXplKToKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgor
ICAgICAgICAoSlNDOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OkhlYXA6OmRpZEV4Y2VlZEZpeGVkSGVhcFNpemVMaW1pdCk6CisgICAgICAgICogaGVhcC9IZWFw
Lmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgICogaGVhcC9SZWdpb24u
aDoKKyAgICAgICAgKFJlZ2lvbik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoTm9ybWFsUmVn
aW9uKToKKyAgICAgICAgKEpTQzo6Tm9ybWFsUmVnaW9uOjpiYXNlKToKKyAgICAgICAgKEpTQzo6
Tm9ybWFsUmVnaW9uOjpzaXplKToKKyAgICAgICAgKEV4Y2Vzc1JlZ2lvbik6CisgICAgICAgIChK
U0M6OkV4Y2Vzc1JlZ2lvbjo6YmFzZSk6CisgICAgICAgIChKU0M6OkV4Y2Vzc1JlZ2lvbjo6c2l6
ZSk6CisgICAgICAgIChKU0M6Ok5vcm1hbFJlZ2lvbjo6Tm9ybWFsUmVnaW9uKToKKyAgICAgICAg
KEpTQzo6Tm9ybWFsUmVnaW9uOjp0cnlDcmVhdGUpOgorICAgICAgICAoSlNDOjpOb3JtYWxSZWdp
b246OnRyeUNyZWF0ZUN1c3RvbVNpemUpOgorICAgICAgICAoSlNDOjpOb3JtYWxSZWdpb246OnJl
c2V0KToKKyAgICAgICAgKEpTQzo6RXhjZXNzUmVnaW9uOjpFeGNlc3NSZWdpb24pOgorICAgICAg
ICAoSlNDOjpFeGNlc3NSZWdpb246On5FeGNlc3NSZWdpb24pOgorICAgICAgICAoSlNDOjpFeGNl
c3NSZWdpb246OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV4Y2Vzc1JlZ2lvbjo6Y3JlYXRlQ3Vz
dG9tU2l6ZSk6CisgICAgICAgIChKU0M6OkV4Y2Vzc1JlZ2lvbjo6cmVzZXQpOgorICAgICAgICAo
SlNDOjpSZWdpb246OlJlZ2lvbik6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6aW5pdGlhbGl6ZUJs
b2NrTGlzdCk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6
UmVnaW9uOjpjcmVhdGVDdXN0b21TaXplKToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjp+UmVnaW9u
KToKKyAgICAgICAgKEpTQzo6UmVnaW9uOjpkZXN0cm95KToKKyAgICAgICAgKEpTQzo6UmVnaW9u
OjpyZXNldCk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6ZGVhbGxvY2F0ZSk6CisgICAgICAgIChK
U0M6OlJlZ2lvbjo6YmFzZSk6CisgICAgICAgIChKU0M6OlJlZ2lvbjo6c2l6ZSk6CisgICAgICAg
ICogaGVhcC9TdXBlclJlZ2lvbi5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTQzo6U3VwZXJSZWdpb246OlN1cGVyUmVnaW9uKToKKyAgICAgICAgKEpTQzo6U3VwZXJSZWdp
b246OmdldEFsaWduZWRCYXNlKToKKyAgICAgICAgKEpTQzo6U3VwZXJSZWdpb246OmFsbG9jYXRl
TmV3U3BhY2UpOgorICAgICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6bm90aWZ5TmVlZFBhZ2UpOgor
ICAgICAgICAoSlNDOjpTdXBlclJlZ2lvbjo6bm90aWZ5UGFnZUlzRnJlZSk6CisgICAgICAgICog
aGVhcC9TdXBlclJlZ2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdXBl
clJlZ2lvbik6CisKIDIwMTMtMDMtMzEgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIFlhcnIgc2hvdWxkIGJ1aWxkIHVzaW5nIGEgc2VwYXJhdGUg
R1lQIGZpbGUgZnJvbSBKYXZhU2NyaXB0Q29yZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNiArMzU5
LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvUmVnaW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdHJvbmdJbmxpbmVzLmggXAorICAgIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmNwcCBcCisgICAgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvVW5jb25kaXRpb25hbEZpbmFsaXplci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9WVGFibGVTcGVjdHJ1bS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1ZUYWJs
ZVNwZWN0cnVtLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lmd5cGkJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0zOTksNiArMzk5LDggQEAKICAgICAgICAg
ICAgICdoZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oJywKICAgICAgICAgICAgICdoZWFwL1N0cm9u
Zy5oJywKICAgICAgICAgICAgICdoZWFwL1N0cm9uZ0lubGluZXMuaCcsCisgICAgICAgICAgICAn
aGVhcC9TdXBlclJlZ2lvbi5jcHAnLAorICAgICAgICAgICAgJ2hlYXAvU3VwZXJSZWdpb24uaCcs
CiAgICAgICAgICAgICAnaGVhcC9UaW55Qmxvb21GaWx0ZXIuaCcsCiAgICAgICAgICAgICAnaGVh
cC9VbmNvbmRpdGlvbmFsRmluYWxpemVyLmgnLAogICAgICAgICAgICAgJ2hlYXAvVlRhYmxlU3Bl
Y3RydW0uY3BwJywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxNDcy
ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpA
QCAtMTA1LDYgKzEwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGhlYXAvTWFya2VkQmxvY2suY3Bw
IFwKICAgICBoZWFwL01hcmtlZFNwYWNlLmNwcCBcCiAgICAgaGVhcC9TbG90VmlzaXRvci5jcHAg
XAorICAgIGhlYXAvU3VwZXJSZWdpb24uY3BwIFwKICAgICBoZWFwL1ZUYWJsZVNwZWN0cnVtLmNw
cCBcCiAgICAgaGVhcC9Xcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCBcCiAgICAgZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTQ3Mjg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3OTQsNiArMjc5NCwx
NCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwu
LlxoZWFwXFN1cGVyUmVnaW9uLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxTdXBlclJlZ2lvbi5oIgorCQkJCT4KKwkJCTwvRmls
ZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXFZUYWJsZVNwZWN0cnVt
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2oJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTIxMSw2ICsyMTEsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxN
YXJrZWRTcGFjZS5jcHAiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxNYXJr
U3RhY2suY3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcU2xvdFZpc2l0
b3IuY3BwIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcU3VwZXJSZWdpb24u
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcVlRhYmxlU3BlY3RydW0u
Y3BwIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcV2Vha0Jsb2NrLmNwcCIg
Lz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFdlYWtIYW5kbGVPd25lci5jcHAi
IC8+DQpAQCAtNTM1LDYgKzUzNiw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFw
XFNsb3RWaXNpdG9ySW5saW5lcy5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhl
YXBcU3Ryb25nLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTdHJvbmdJ
bmxpbmVzLmgiIC8+DQorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTdXBlclJlZ2lv
bi5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGhlYXBcVGlueUJsb29tRmlsdGVy
LmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmgiIC8+DQogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxWVGFibGVTcGVj
dHJ1bS5oIiAvPg0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwko
d29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxoZWFwXFNsb3RWaXNpdG9yLmNwcCI+DQogICAgICAgPEZpbHRlcj5oZWFwPC9GaWx0ZXI+
DQogICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGhlYXBcU3Vw
ZXJSZWdpb24uY3BwIj4NCisgICAgICA8RmlsdGVyPmhlYXA8L0ZpbHRlcj4NCisgICAgPC9DbENv
bXBpbGU+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caGVhcFxWVGFibGVTcGVjdHJ1bS5j
cHAiPg0KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KICAgICA8L0NsQ29tcGlsZT4NCkBA
IC0xMTU0LDYgKzExNTcsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caGVhcFxTdHJv
bmdJbmxpbmVzLmgiPg0KICAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KICAgICA8L0NsSW5j
bHVkZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxoZWFwXFN1cGVyUmVnaW9uLmgiPg0K
KyAgICAgIDxGaWx0ZXI+aGVhcDwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxoZWFwXFRpbnlCbG9vbUZpbHRlci5oIj4NCiAgICAgICA8Rmls
dGVyPmhlYXA8L0ZpbHRlcj4NCiAgICAgPC9DbEluY2x1ZGU+DQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0NzI4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC04NDksNiArODQ5LDggQEAKIAkJQzJDRjM5QzExNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJ
V3JhcHBlck9iamVjdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QubW0g
Ki87IH07CiAJCUMyQ0YzOUMyMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQ0YzOUMw
MTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLzsgfTsKIAkJQzJENThD
MzQxNTkxMkZFRTAwMjFBODQ0IC8qIEdDQWN0aXZpdHlDYWxsYmFjay5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkQ1OEMzMzE1OTEyRkVFMDAyMUE4
NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJQzJERjQ0MkYxNzA3QUMwMTAw
QTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMyREY0NDJEMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5j
cHAgKi87IH07CisJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBlclJlZ2lvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJERjQ0MkUxNzA3
QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJFNTI2QkQxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBU
aW1lci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MkU1MjZCQjE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmNwcCAqLzsgfTsKIAkJQzJFNTI2
QkUxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhEIC8qIEhlYXBU
aW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMyRUFBM0ZBMTQ5QTgzNUUwMEZDRTExMiAvKiBDb3BpZWRTcGFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJFQUEzRjgxNDlBODMwODAwRkNFMTEy
IC8qIENvcGllZFNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTE3NTQsNiArMTc1Niw4IEBACiAJCUMyQ0YzOUJGMTZFMTVBODEwMERENjlC
RSAvKiBKU0FQSVdyYXBwZXJPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBKU0FQSVdyYXBwZXJPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyQ0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBUElXcmFwcGVyT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRDU4QzMzMTU5MTJGRUUwMDIxQTg0NCAvKiBH
Q0FjdGl2aXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR0NBY3Rpdml0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzJERjQ0MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cGVyUmVnaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQzJERjQ0MkUxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN1cGVyUmVnaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRTUyNkJCMTU5MEVGMDAwMDU0RTQ4RCAvKiBIZWFwVGlt
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVhcFRpbWVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhE
IC8qIEhlYXBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFQUEzRjgxNDlBODMwODAwRkNF
MTEyIC8qIENvcGllZFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
cGllZFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTY2LDYgKzIxNzAs
OCBAQAogCQkJCUMyODMxOEZGMTZGRTRCN0QwMDE1N0JGRCAvKiBIYW5kbGVCbG9jay5oICovLAog
CQkJCUMyODMxOTAxMTZGRTUzM0UwMDE1N0JGRCAvKiBIYW5kbGVCbG9ja0lubGluZXMuaCAqLywK
IAkJCQlDMjBCMjU5ODE3MDY1MzYyMDBDMjFGNEUgLyogUmVnaW9uLmggKi8sCisJCQkJQzJERjQ0
MkQxNzA3QUMwMTAwQTVDQTk2IC8qIFN1cGVyUmVnaW9uLmNwcCAqLywKKwkJCQlDMkRGNDQyRTE3
MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaGVh
cDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yOTY1LDYgKzI5NzEsNyBAQAogCQkJ
CTBGQjdGMzk1MTVFRDhFNDYwMEYxNjdCMiAvKiBBcnJheUNvbnZlbnRpb25zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjYzOTQ1NTE1RDA3MDU3MDA2QTU5N0MgLyogQXJyYXlQcm9maWxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyREY0NDMwMTcwN0FDMDEwMEE1Q0E5NiAvKiBTdXBl
clJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIwQjI1OTkxNzA2NTM2MjAwQzIxRjRFIC8q
IFJlZ2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzI4MzE5MDAxNkZFNEI3RDAwMTU3QkZEIC8q
IEhhbmRsZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQxRDBFMTZGNUNEMDBCMzQ0
NjAgLyogSlNDbGFzc1JlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC0zODUxLDYgKzM4NTgsNyBAQAog
CQkJCTBGMkJEQzRGMTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5
MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDMkRGNDQyRjE3
MDdBQzAxMDBBNUNBOTYgLyogU3VwZXJSZWdpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYy
QkRDNEExNTIyODA5QTAwQ0Q4OTEwIC8qIERGR1ZhcmlhYmxlRXZlbnRTdHJlYW0uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZGRkM5NUYxNEVGOTBCQjAwQzcyNTMyIC8qIERGR1ZpcnR1YWxSZWdp
c3RlckFsbG9jYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjlEMzM3MDE2NURC
QjkwMDA1QUQzODcgLyogRGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcAkocmV2aXNpb24g
MTQ3Mjg1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw4ICszNCw5IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi1C
bG9ja0FsbG9jYXRvcjo6QmxvY2tBbGxvY2F0b3IoKQotICAgIDogbV9jb3BpZWRSZWdpb25TZXQo
Q29waWVkQmxvY2s6OmJsb2NrU2l6ZSkKK0Jsb2NrQWxsb2NhdG9yOjpCbG9ja0FsbG9jYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCisgICAgOiBtX3N1cGVyUmVnaW9uKGdsb2JhbERhdGEp
CisgICAgLCBtX2NvcGllZFJlZ2lvblNldChDb3BpZWRCbG9jazo6YmxvY2tTaXplKQogICAgICwg
bV9tYXJrZWRSZWdpb25TZXQoTWFya2VkQmxvY2s6OmJsb2NrU2l6ZSkKICAgICAsIG1fZm91cktC
QmxvY2tSZWdpb25TZXQoV2Vha0Jsb2NrOjpibG9ja1NpemUpCiAgICAgLCBtX3dvcmtMaXN0UmVn
aW9uU2V0KENvcHlXb3JrTGlzdFNlZ21lbnQ6OmJsb2NrU2l6ZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkocmV2aXNpb24gMTQ3Mjg1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQmxvY2tBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBCbG9ja0FsbG9jYXRvcjsKIGNsYXNzIENvcGllZEJs
b2NrOwogY2xhc3MgQ29weVdvcmtMaXN0U2VnbWVudDsKIGNsYXNzIEhhbmRsZUJsb2NrOworY2xh
c3MgSlNHbG9iYWxEYXRhOwogY2xhc3MgTWFya1N0YWNrU2VnbWVudDsKIGNsYXNzIE1hcmtlZEJs
b2NrOwogY2xhc3MgV2Vha0Jsb2NrOwpAQCAtNDksNyArNTAsNyBAQCBjbGFzcyBXZWFrQmxvY2s7
CiAKIGNsYXNzIEJsb2NrQWxsb2NhdG9yIHsKIHB1YmxpYzoKLSAgICBCbG9ja0FsbG9jYXRvcigp
OworICAgIEJsb2NrQWxsb2NhdG9yKEpTR2xvYmFsRGF0YSopOwogICAgIH5CbG9ja0FsbG9jYXRv
cigpOwogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IERlYWRCbG9jayogYWxsb2NhdGUoKTsK
QEAgLTgyLDYgKzgzLDcgQEAgcHJpdmF0ZToKIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBS
ZWdpb25TZXQmIHJlZ2lvblNldEZvcigpOwogCisgICAgU3VwZXJSZWdpb24gbV9zdXBlclJlZ2lv
bjsKICAgICBSZWdpb25TZXQgbV9jb3BpZWRSZWdpb25TZXQ7CiAgICAgUmVnaW9uU2V0IG1fbWFy
a2VkUmVnaW9uU2V0OwogICAgIC8vIFdlYWtCbG9ja3MgYW5kIE1hcmtTdGFja1NlZ21lbnRzIHVz
ZSB0aGUgc2FtZSBSZWdpb25TZXQgc2luY2UgdGhleSdyZSB0aGUgc2FtZSBzaXplLgpAQCAtMTQw
LDcgKzE0Miw3IEBAIGlubGluZSBEZWFkQmxvY2sqIEJsb2NrQWxsb2NhdG9yOjphbGxvY2EKICAg
ICAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKLSAgICBSZWdpb24qIG5ld1JlZ2lvbiA9
IFJlZ2lvbjo6Y3JlYXRlKFQ6OmJsb2NrU2l6ZSk7CisgICAgUmVnaW9uKiBuZXdSZWdpb24gPSBS
ZWdpb246OmNyZWF0ZSgmbV9zdXBlclJlZ2lvbiwgVDo6YmxvY2tTaXplKTsKIAogICAgIFNwaW5M
b2NrSG9sZGVyIGxvY2tlcigmbV9yZWdpb25Mb2NrKTsKICAgICBtX2VtcHR5UmVnaW9ucy5wdXNo
KG5ld1JlZ2lvbik7CkBAIC0xNTMsNyArMTU1LDcgQEAgaW5saW5lIERlYWRCbG9jayogQmxvY2tB
bGxvY2F0b3I6OmFsbG9jYQogaW5saW5lIERlYWRCbG9jayogQmxvY2tBbGxvY2F0b3I6OmFsbG9j
YXRlQ3VzdG9tU2l6ZShzaXplX3QgYmxvY2tTaXplLCBzaXplX3QgYmxvY2tBbGlnbm1lbnQpCiB7
CiAgICAgc2l6ZV90IHJlYWxTaXplID0gV1RGOjpyb3VuZFVwVG9NdWx0aXBsZU9mKGJsb2NrQWxp
Z25tZW50LCBibG9ja1NpemUpOwotICAgIFJlZ2lvbiogbmV3UmVnaW9uID0gUmVnaW9uOjpjcmVh
dGVDdXN0b21TaXplKHJlYWxTaXplLCBibG9ja0FsaWdubWVudCk7CisgICAgUmVnaW9uKiBuZXdS
ZWdpb24gPSBSZWdpb246OmNyZWF0ZUN1c3RvbVNpemUoJm1fc3VwZXJSZWdpb24sIHJlYWxTaXpl
LCBibG9ja0FsaWdubWVudCk7CiAgICAgRGVhZEJsb2NrKiBibG9jayA9IG5ld1JlZ2lvbi0+YWxs
b2NhdGUoKTsKICAgICBBU1NFUlQoYmxvY2spOwogICAgIHJldHVybiBibG9jazsKQEAgLTE5OSw3
ICsyMDEsNyBAQCBpbmxpbmUgdm9pZCBCbG9ja0FsbG9jYXRvcjo6ZGVhbGxvY2F0ZUN1CiAgICAg
UmVnaW9uKiByZWdpb24gPSBibG9jay0+cmVnaW9uKCk7CiAgICAgQVNTRVJUKHJlZ2lvbi0+aXND
dXN0b21TaXplKCkpOwogICAgIHJlZ2lvbi0+ZGVhbGxvY2F0ZShibG9jayk7Ci0gICAgZGVsZXRl
IHJlZ2lvbjsKKyAgICByZWdpb24tPmRlc3Ryb3koKTsKIH0KIAogdGVtcGxhdGUgPD4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxNDcyODUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUwLDYg
KzI1MCw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWEKICAgICAs
IG1fYnl0ZXNBbGxvY2F0ZWQoMCkKICAgICAsIG1fYnl0ZXNBYmFuZG9uZWQoMCkKICAgICAsIG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyhOb09wZXJhdGlvbikKKyAgICAsIG1fYmxvY2tBbGxvY2F0b3Io
Z2xvYmFsRGF0YSkKICAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fc3RvcmFnZVNw
YWNlKHRoaXMpCiAgICAgLCBtX21hY2hpbmVUaHJlYWRzKHRoaXMpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxNDcyODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIENvcGllZFNwYWNlOwogICAgICAgICBmcmll
bmQgY2xhc3MgQ29weVZpc2l0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIFN1cGVyUmVnaW9uOwogICAgICAgICBmcmllbmQgY2xhc3Mg
SW5jcmVtZW50YWxTd2VlcGVyOwogICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFN0YXRpc3RpY3M7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXZWFrU2V0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNpb24gMTQ3Mjg1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6OmNy
ZWF0ZShEZWFkQmxvY2sqIGJsb2NrLCBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90
IGNlbGxTaXplLCBEZXN0cnVjdG9yVHlwZSBkZXN0cnVjdG9yVHlwZSkKIHsKKyAgICBBU1NFUlQo
cmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGJsb2NrKSA9PSAocmVpbnRlcnByZXRfY2FzdDxzaXpl
X3Q+KGJsb2NrKSAmIGJsb2NrTWFzaykpOwogICAgIFJlZ2lvbiogcmVnaW9uID0gYmxvY2stPnJl
Z2lvbigpOwogICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGJsb2NrKSBNYXJrZWRCbG9jayhyZWdp
b24sIGFsbG9jYXRvciwgY2VsbFNpemUsIGRlc3RydWN0b3JUeXBlKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1JlZ2lvbi5oCShyZXZpc2lvbiAxNDcyODUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9SZWdpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsOSArMjcsMjEg
QEAKICNkZWZpbmUgSlNDX1JlZ2lvbl9oCiAKICNpbmNsdWRlICJIZWFwQmxvY2suaCIKKyNpbmNs
dWRlICJTdXBlclJlZ2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+Cisj
aW5jbHVkZSA8d3RmL01ldGFBbGxvY2F0b3JIYW5kbGUuaD4KICNpbmNsdWRlIDx3dGYvUGFnZUFs
bG9jYXRpb25BbGlnbmVkLmg+CiAKKyNkZWZpbmUgSEVBUF9NRU1PUllfSUQgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0zKSkKKworI2lmbmRlZiBFTkFCTEVf
U1VQRVJfUkVHSU9OCisjaWYgVVNFKEpTVkFMVUU2NCkKKyNkZWZpbmUgRU5BQkxFX1NVUEVSX1JF
R0lPTiAxCisjZWxzZQorI2RlZmluZSBFTkFCTEVfU1VQRVJfUkVHSU9OIDAKKyNlbmRpZgorI2Vu
ZGlmCisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBEZWFkQmxvY2sgOiBwdWJsaWMgSGVhcEJs
b2NrPERlYWRCbG9jaz4gewpAQCAtNDcsOSArNTksMTAgQEAgY2xhc3MgUmVnaW9uIDogcHVibGlj
IERvdWJseUxpbmtlZExpc3RObwogICAgIGZyaWVuZCBjbGFzcyBCbG9ja0FsbG9jYXRvcjsKIHB1
YmxpYzoKICAgICB+UmVnaW9uKCk7Ci0gICAgc3RhdGljIFJlZ2lvbiogY3JlYXRlKHNpemVfdCBi
bG9ja1NpemUpOwotICAgIHN0YXRpYyBSZWdpb24qIGNyZWF0ZUN1c3RvbVNpemUoc2l6ZV90IGJs
b2NrU2l6ZSwgc2l6ZV90IGJsb2NrQWxpZ25tZW50KTsKKyAgICBzdGF0aWMgUmVnaW9uKiBjcmVh
dGUoU3VwZXJSZWdpb24qLCBzaXplX3QgYmxvY2tTaXplKTsKKyAgICBzdGF0aWMgUmVnaW9uKiBj
cmVhdGVDdXN0b21TaXplKFN1cGVyUmVnaW9uKiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IGJs
b2NrQWxpZ25tZW50KTsKICAgICBSZWdpb24qIHJlc2V0KHNpemVfdCBibG9ja1NpemUpOworICAg
IHZvaWQgZGVzdHJveSgpOwogCiAgICAgc2l6ZV90IGJsb2NrU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvY2tTaXplOyB9CiAgICAgYm9vbCBpc0Z1bGwoKSBjb25zdCB7IHJldHVybiBtX2Jsb2Nr
c0luVXNlID09IG1fdG90YWxCbG9ja3M7IH0KQEAgLTYwLDExICs3MywxOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkZWFsbG9jYXRlKHZvaWQqKTsKIAogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19y
ZWdpb25TaXplID0gNjQgKiBLQjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfcmVnaW9uTWFz
ayA9IH4oc19yZWdpb25TaXplIC0gMSk7CisKK3Byb3RlY3RlZDoKKyAgICBSZWdpb24oc2l6ZV90
IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzLCBib29sIGlzRXhjZXNzKTsKKyAgICB2b2lk
IGluaXRpYWxpemVCbG9ja0xpc3QoKTsKKworICAgIGJvb2wgbV9pc0V4Y2VzczsKIAogcHJpdmF0
ZToKLSAgICBSZWdpb24oUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgc2l6ZV90IGJsb2NrU2l6ZSwg
c2l6ZV90IHRvdGFsQmxvY2tzKTsKKyAgICB2b2lkKiBiYXNlKCk7CisgICAgc2l6ZV90IHNpemUo
KTsKIAotICAgIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBtX2FsbG9jYXRpb247CiAgICAgc2l6ZV90
IG1fdG90YWxCbG9ja3M7CiAgICAgc2l6ZV90IG1fYmxvY2tzSW5Vc2U7CiAgICAgc2l6ZV90IG1f
YmxvY2tTaXplOwpAQCAtNzQsMjcgKzk0LDEwOCBAQCBwcml2YXRlOgogICAgIERvdWJseUxpbmtl
ZExpc3Q8RGVhZEJsb2NrPiBtX2RlYWRCbG9ja3M7CiB9OwogCi1pbmxpbmUgUmVnaW9uKiBSZWdp
b246OmNyZWF0ZShzaXplX3QgYmxvY2tTaXplKQorCitjbGFzcyBOb3JtYWxSZWdpb24gOiBwdWJs
aWMgUmVnaW9uIHsKKyAgICBmcmllbmQgY2xhc3MgUmVnaW9uOworcHJpdmF0ZToKKyAgICBOb3Jt
YWxSZWdpb24oUGFzc1JlZlB0cjxXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU+LCBzaXplX3QgYmxv
Y2tTaXplLCBzaXplX3QgdG90YWxCbG9ja3MpOworCisgICAgc3RhdGljIE5vcm1hbFJlZ2lvbiog
dHJ5Q3JlYXRlKFN1cGVyUmVnaW9uKiwgc2l6ZV90IGJsb2NrU2l6ZSk7CisgICAgc3RhdGljIE5v
cm1hbFJlZ2lvbiogdHJ5Q3JlYXRlQ3VzdG9tU2l6ZShTdXBlclJlZ2lvbiosIHNpemVfdCBibG9j
a1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCk7CisKKyAgICB2b2lkKiBiYXNlKCkgeyByZXR1
cm4gbV9hbGxvY2F0aW9uLT5zdGFydCgpOyB9CisgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBt
X2FsbG9jYXRpb24tPnNpemVJbkJ5dGVzKCk7IH0KKworICAgIE5vcm1hbFJlZ2lvbiogcmVzZXQo
c2l6ZV90IGJsb2NrU2l6ZSk7CisKKyAgICBSZWZQdHI8V1RGOjpNZXRhQWxsb2NhdG9ySGFuZGxl
PiBtX2FsbG9jYXRpb247Cit9OworCitjbGFzcyBFeGNlc3NSZWdpb24gOiBwdWJsaWMgUmVnaW9u
IHsKKyAgICBmcmllbmQgY2xhc3MgUmVnaW9uOworcHJpdmF0ZToKKyAgICBFeGNlc3NSZWdpb24o
UGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxv
Y2tzKTsKKworICAgIH5FeGNlc3NSZWdpb24oKTsKKworICAgIHN0YXRpYyBFeGNlc3NSZWdpb24q
IGNyZWF0ZShzaXplX3QgYmxvY2tTaXplKTsKKyAgICBzdGF0aWMgRXhjZXNzUmVnaW9uKiBjcmVh
dGVDdXN0b21TaXplKHNpemVfdCBibG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCk7CisK
KyAgICB2b2lkKiBiYXNlKCkgeyByZXR1cm4gbV9hbGxvY2F0aW9uLmJhc2UoKTsgfQorICAgIHNp
emVfdCBzaXplKCkgeyByZXR1cm4gbV9hbGxvY2F0aW9uLnNpemUoKTsgfQorCisgICAgRXhjZXNz
UmVnaW9uKiByZXNldChzaXplX3QgYmxvY2tTaXplKTsKKworICAgIFBhZ2VBbGxvY2F0aW9uQWxp
Z25lZCBtX2FsbG9jYXRpb247Cit9OworCitpbmxpbmUgTm9ybWFsUmVnaW9uOjpOb3JtYWxSZWdp
b24oUGFzc1JlZlB0cjxXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRpb24sIHNpemVf
dCBibG9ja1NpemUsIHNpemVfdCB0b3RhbEJsb2NrcykKKyAgICA6IFJlZ2lvbihibG9ja1NpemUs
IHRvdGFsQmxvY2tzLCBmYWxzZSkKKyAgICAsIG1fYWxsb2NhdGlvbihhbGxvY2F0aW9uKQorewor
ICAgIGluaXRpYWxpemVCbG9ja0xpc3QoKTsKK30KKworaW5saW5lIE5vcm1hbFJlZ2lvbiogTm9y
bWFsUmVnaW9uOjp0cnlDcmVhdGUoU3VwZXJSZWdpb24qIHN1cGVyUmVnaW9uLCBzaXplX3QgYmxv
Y2tTaXplKQoreworICAgIFJlZlB0cjxXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRp
b24gPSBzdXBlclJlZ2lvbi0+YWxsb2NhdGUoc19yZWdpb25TaXplLCBIRUFQX01FTU9SWV9JRCk7
CisgICAgaWYgKCFhbGxvY2F0aW9uKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbmV3
IE5vcm1hbFJlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUsIHNfcmVnaW9uU2l6ZSAvIGJsb2Nr
U2l6ZSk7Cit9CisKK2lubGluZSBOb3JtYWxSZWdpb24qIE5vcm1hbFJlZ2lvbjo6dHJ5Q3JlYXRl
Q3VzdG9tU2l6ZShTdXBlclJlZ2lvbiogc3VwZXJSZWdpb24sIHNpemVfdCBibG9ja1NpemUsIHNp
emVfdCBibG9ja0FsaWdubWVudCkKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGJsb2NrQWxpZ25tZW50
LCBibG9ja0FsaWdubWVudCA8PSBzX3JlZ2lvblNpemUpOworICAgIFJlZlB0cjxXVEY6Ok1ldGFB
bGxvY2F0b3JIYW5kbGU+IGFsbG9jYXRpb24gPSBzdXBlclJlZ2lvbi0+YWxsb2NhdGUoYmxvY2tT
aXplLCBIRUFQX01FTU9SWV9JRCk7CisgICAgaWYgKCFhbGxvY2F0aW9uKQorICAgICAgICByZXR1
cm4gMDsKKyAgICByZXR1cm4gbmV3IE5vcm1hbFJlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUs
IDEpOworfQorCitpbmxpbmUgTm9ybWFsUmVnaW9uKiBOb3JtYWxSZWdpb246OnJlc2V0KHNpemVf
dCBibG9ja1NpemUpCit7CisgICAgQVNTRVJUKCFtX2lzRXhjZXNzKTsKKyAgICBSZWZQdHI8V1RG
OjpNZXRhQWxsb2NhdG9ySGFuZGxlPiBhbGxvY2F0aW9uID0gbV9hbGxvY2F0aW9uLnJlbGVhc2Uo
KTsKKyAgICByZXR1cm4gbmV3IChOb3ROdWxsLCB0aGlzKSBOb3JtYWxSZWdpb24oYWxsb2NhdGlv
bi5yZWxlYXNlKCksIGJsb2NrU2l6ZSwgc19yZWdpb25TaXplIC8gYmxvY2tTaXplKTsKK30KKwor
aW5saW5lIEV4Y2Vzc1JlZ2lvbjo6RXhjZXNzUmVnaW9uKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYg
YWxsb2NhdGlvbiwgc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzKQorICAgIDog
UmVnaW9uKGJsb2NrU2l6ZSwgdG90YWxCbG9ja3MsIHRydWUpCisgICAgLCBtX2FsbG9jYXRpb24o
YWxsb2NhdGlvbikKK3sKKyAgICBpbml0aWFsaXplQmxvY2tMaXN0KCk7Cit9CisKK2lubGluZSBF
eGNlc3NSZWdpb246On5FeGNlc3NSZWdpb24oKQoreworICAgIG1fYWxsb2NhdGlvbi5kZWFsbG9j
YXRlKCk7Cit9CisKK2lubGluZSBFeGNlc3NSZWdpb24qIEV4Y2Vzc1JlZ2lvbjo6Y3JlYXRlKHNp
emVfdCBibG9ja1NpemUpCiB7Ci0gICAgQVNTRVJUKGJsb2NrU2l6ZSA8PSBzX3JlZ2lvblNpemUp
OwotICAgIEFTU0VSVCghKHNfcmVnaW9uU2l6ZSAlIGJsb2NrU2l6ZSkpOwogICAgIFBhZ2VBbGxv
Y2F0aW9uQWxpZ25lZCBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb25BbGlnbmVkOjphbGxvY2F0
ZShzX3JlZ2lvblNpemUsIHNfcmVnaW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMp
OwotICAgIFJFTEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKTsKLSAg
ICByZXR1cm4gbmV3IFJlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUsIHNfcmVnaW9uU2l6ZSAv
IGJsb2NrU2l6ZSk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKTsK
KyAgICByZXR1cm4gbmV3IEV4Y2Vzc1JlZ2lvbihhbGxvY2F0aW9uLCBibG9ja1NpemUsIHNfcmVn
aW9uU2l6ZSAvIGJsb2NrU2l6ZSk7IAogfQogCi1pbmxpbmUgUmVnaW9uKiBSZWdpb246OmNyZWF0
ZUN1c3RvbVNpemUoc2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IGJsb2NrQWxpZ25tZW50KQoraW5s
aW5lIEV4Y2Vzc1JlZ2lvbiogRXhjZXNzUmVnaW9uOjpjcmVhdGVDdXN0b21TaXplKHNpemVfdCBi
bG9ja1NpemUsIHNpemVfdCBibG9ja0FsaWdubWVudCkKIHsKICAgICBQYWdlQWxsb2NhdGlvbkFs
aWduZWQgYWxsb2NhdGlvbiA9IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZDo6YWxsb2NhdGUoYmxvY2tT
aXplLCBibG9ja0FsaWdubWVudCwgT1NBbGxvY2F0b3I6OkpTR0NIZWFwUGFnZXMpOwotICAgIFJF
TEVBU0VfQVNTRVJUKHN0YXRpY19jYXN0PGJvb2w+KGFsbG9jYXRpb24pKTsKLSAgICBSZWdpb24q
IHJlZ2lvbiA9IG5ldyBSZWdpb24oYWxsb2NhdGlvbiwgYmxvY2tTaXplLCAxKTsKLSAgICByZWdp
b24tPm1faXNDdXN0b21TaXplID0gdHJ1ZTsKLSAgICByZXR1cm4gcmVnaW9uOworICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxib29sPihhbGxvY2F0aW9uKSk7CisgICAgcmV0dXJuIG5ldyBFeGNlc3NS
ZWdpb24oYWxsb2NhdGlvbiwgYmxvY2tTaXplLCAxKTsKIH0KIAotaW5saW5lIFJlZ2lvbjo6UmVn
aW9uKFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgc2l6ZV90IGJsb2NrU2l6ZSwg
c2l6ZV90IHRvdGFsQmxvY2tzKQoraW5saW5lIEV4Y2Vzc1JlZ2lvbiogRXhjZXNzUmVnaW9uOjpy
ZXNldChzaXplX3QgYmxvY2tTaXplKQoreworICAgIEFTU0VSVChtX2lzRXhjZXNzKTsKKyAgICBQ
YWdlQWxsb2NhdGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IG1fYWxsb2NhdGlvbjsKKyAgICByZXR1
cm4gbmV3IChOb3ROdWxsLCB0aGlzKSBFeGNlc3NSZWdpb24oYWxsb2NhdGlvbiwgYmxvY2tTaXpl
LCBzX3JlZ2lvblNpemUgLyBibG9ja1NpemUpOworfQorCitpbmxpbmUgUmVnaW9uOjpSZWdpb24o
c2l6ZV90IGJsb2NrU2l6ZSwgc2l6ZV90IHRvdGFsQmxvY2tzLCBib29sIGlzRXhjZXNzKQogICAg
IDogRG91Ymx5TGlua2VkTGlzdE5vZGU8UmVnaW9uPigpCi0gICAgLCBtX2FsbG9jYXRpb24oYWxs
b2NhdGlvbikKKyAgICAsIG1faXNFeGNlc3MoaXNFeGNlc3MpCiAgICAgLCBtX3RvdGFsQmxvY2tz
KHRvdGFsQmxvY2tzKQogICAgICwgbV9ibG9ja3NJblVzZSgwKQogICAgICwgbV9ibG9ja1NpemUo
YmxvY2tTaXplKQpAQCAtMTAyLDI0ICsyMDMsNzQgQEAgaW5saW5lIFJlZ2lvbjo6UmVnaW9uKFBh
Z2VBbGxvY2F0aW9uQWxpZwogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKIHsKLSAg
ICBBU1NFUlQoYWxsb2NhdGlvbik7Ci0gICAgY2hhciogc3RhcnQgPSBzdGF0aWNfY2FzdDxjaGFy
Kj4obV9hbGxvY2F0aW9uLmJhc2UoKSk7Ci0gICAgY2hhciogZW5kID0gc3RhcnQgKyBtX2FsbG9j
YXRpb24uc2l6ZSgpOwotICAgIGZvciAoY2hhciogY3VycmVudCA9IHN0YXJ0OyBjdXJyZW50IDwg
ZW5kOyBjdXJyZW50ICs9IGJsb2NrU2l6ZSkKK30KKworaW5saW5lIHZvaWQgUmVnaW9uOjppbml0
aWFsaXplQmxvY2tMaXN0KCkKK3sKKyAgICBjaGFyKiBzdGFydCA9IHN0YXRpY19jYXN0PGNoYXIq
PihiYXNlKCkpOworICAgIGNoYXIqIGN1cnJlbnQgPSBzdGFydDsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fdG90YWxCbG9ja3M7IGkrKykgeworICAgICAgICBBU1NFUlQoY3VycmVudCA8
IHN0YXJ0ICsgc2l6ZSgpKTsKICAgICAgICAgbV9kZWFkQmxvY2tzLmFwcGVuZChuZXcgKE5vdE51
bGwsIGN1cnJlbnQpIERlYWRCbG9jayh0aGlzKSk7CisgICAgICAgIGN1cnJlbnQgKz0gbV9ibG9j
a1NpemU7CisgICAgfQorfQorCitpbmxpbmUgUmVnaW9uKiBSZWdpb246OmNyZWF0ZShTdXBlclJl
Z2lvbiogc3VwZXJSZWdpb24sIHNpemVfdCBibG9ja1NpemUpCit7CisjaWYgRU5BQkxFKFNVUEVS
X1JFR0lPTikKKyAgICBBU1NFUlQoYmxvY2tTaXplIDw9IHNfcmVnaW9uU2l6ZSk7CisgICAgQVNT
RVJUKCEoc19yZWdpb25TaXplICUgYmxvY2tTaXplKSk7CisgICAgUmVnaW9uKiByZWdpb24gPSBO
b3JtYWxSZWdpb246OnRyeUNyZWF0ZShzdXBlclJlZ2lvbiwgYmxvY2tTaXplKTsKKyAgICBpZiAo
TElLRUxZKCEhcmVnaW9uKSkKKyAgICAgICAgcmV0dXJuIHJlZ2lvbjsKKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKHN1cGVyUmVnaW9uKTsKKyNlbmRpZgorICAgIHJldHVybiBFeGNlc3NSZWdpb246
OmNyZWF0ZShibG9ja1NpemUpOworfQorCitpbmxpbmUgUmVnaW9uKiBSZWdpb246OmNyZWF0ZUN1
c3RvbVNpemUoU3VwZXJSZWdpb24qIHN1cGVyUmVnaW9uLCBzaXplX3QgYmxvY2tTaXplLCBzaXpl
X3QgYmxvY2tBbGlnbm1lbnQpCit7CisjaWYgRU5BQkxFKFNVUEVSX1JFR0lPTikKKyAgICBSZWdp
b24qIHJlZ2lvbiA9IE5vcm1hbFJlZ2lvbjo6dHJ5Q3JlYXRlQ3VzdG9tU2l6ZShzdXBlclJlZ2lv
biwgYmxvY2tTaXplLCBibG9ja0FsaWdubWVudCk7CisgICAgaWYgKFVOTElLRUxZKCFyZWdpb24p
KQorICAgICAgICByZWdpb24gPSBFeGNlc3NSZWdpb246OmNyZWF0ZUN1c3RvbVNpemUoYmxvY2tT
aXplLCBibG9ja0FsaWdubWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdXBlclJlZ2lv
bik7CisgICAgUmVnaW9uKiByZWdpb24gPSBFeGNlc3NSZWdpb246OmNyZWF0ZUN1c3RvbVNpemUo
YmxvY2tTaXplLCBibG9ja0FsaWdubWVudCk7CisjZW5kaWYKKyAgICByZWdpb24tPm1faXNDdXN0
b21TaXplID0gdHJ1ZTsKKyAgICByZXR1cm4gcmVnaW9uOwogfQogCiBpbmxpbmUgUmVnaW9uOjp+
UmVnaW9uKCkKIHsKICAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLSAgICBtX2FsbG9jYXRpb24uZGVh
bGxvY2F0ZSgpOworfQorCitpbmxpbmUgdm9pZCBSZWdpb246OmRlc3Ryb3koKQoreworI2lmIEVO
QUJMRShTVVBFUl9SRUdJT04pCisgICAgaWYgKFVOTElLRUxZKG1faXNFeGNlc3MpKQorICAgICAg
ICBkZWxldGUgc3RhdGljX2Nhc3Q8RXhjZXNzUmVnaW9uKj4odGhpcyk7CisgICAgZWxzZQorICAg
ICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8Tm9ybWFsUmVnaW9uKj4odGhpcyk7CisjZWxzZQorICAg
IGRlbGV0ZSBzdGF0aWNfY2FzdDxFeGNlc3NSZWdpb24qPih0aGlzKTsKKyNlbmRpZgogfQogCiBp
bmxpbmUgUmVnaW9uKiBSZWdpb246OnJlc2V0KHNpemVfdCBibG9ja1NpemUpCiB7CisjaWYgRU5B
QkxFKFNVUEVSX1JFR0lPTikKICAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLSAgICBQYWdlQWxsb2Nh
dGlvbkFsaWduZWQgYWxsb2NhdGlvbiA9IG1fYWxsb2NhdGlvbjsKLSAgICByZXR1cm4gbmV3IChO
b3ROdWxsLCB0aGlzKSBSZWdpb24oYWxsb2NhdGlvbiwgYmxvY2tTaXplLCBzX3JlZ2lvblNpemUg
LyBibG9ja1NpemUpOworICAgIGlmIChVTkxJS0VMWShtX2lzRXhjZXNzKSkKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEV4Y2Vzc1JlZ2lvbio+KHRoaXMpLT5yZXNldChibG9ja1NpemUpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb3JtYWxSZWdpb24qPih0aGlzKS0+cmVzZXQoYmxvY2tT
aXplKTsKKyNlbHNlCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV4Y2Vzc1JlZ2lvbio+KHRoaXMp
LT5yZXNldChibG9ja1NpemUpOworI2VuZGlmCiB9CiAKIGlubGluZSBEZWFkQmxvY2sqIFJlZ2lv
bjo6YWxsb2NhdGUoKQpAQCAtMTMzLDEyICsyODQsMzQgQEAgaW5saW5lIHZvaWQgUmVnaW9uOjpk
ZWFsbG9jYXRlKHZvaWQqIGJhcwogewogICAgIEFTU0VSVChiYXNlKTsKICAgICBBU1NFUlQobV9i
bG9ja3NJblVzZSk7Ci0gICAgQVNTRVJUKGJhc2UgPj0gbV9hbGxvY2F0aW9uLmJhc2UoKSAmJiBi
YXNlIDwgc3RhdGljX2Nhc3Q8Y2hhcio+KG1fYWxsb2NhdGlvbi5iYXNlKCkpICsgbV9hbGxvY2F0
aW9uLnNpemUoKSk7CisgICAgQVNTRVJUKGJhc2UgPj0gdGhpcy0+YmFzZSgpICYmIGJhc2UgPCBz
dGF0aWNfY2FzdDxjaGFyKj4odGhpcy0+YmFzZSgpKSArIHNpemUoKSk7CiAgICAgRGVhZEJsb2Nr
KiBibG9jayA9IG5ldyAoTm90TnVsbCwgYmFzZSkgRGVhZEJsb2NrKHRoaXMpOwogICAgIG1fZGVh
ZEJsb2Nrcy5wdXNoKGJsb2NrKTsKICAgICBtX2Jsb2Nrc0luVXNlLS07CiB9CiAKK2lubGluZSB2
b2lkKiBSZWdpb246OmJhc2UoKQoreworI2lmIEVOQUJMRShTVVBFUl9SRUdJT04pCisgICAgaWYg
KFVOTElLRUxZKG1faXNFeGNlc3MpKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhjZXNz
UmVnaW9uKj4odGhpcyktPkV4Y2Vzc1JlZ2lvbjo6YmFzZSgpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxOb3JtYWxSZWdpb24qPih0aGlzKS0+Tm9ybWFsUmVnaW9uOjpiYXNlKCk7CisjZWxzZQor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFeGNlc3NSZWdpb24qPih0aGlzKS0+RXhjZXNzUmVnaW9u
OjpiYXNlKCk7CisjZW5kaWYKK30KKworaW5saW5lIHNpemVfdCBSZWdpb246OnNpemUoKQorewor
I2lmIEVOQUJMRShTVVBFUl9SRUdJT04pCisgICAgaWYgKFVOTElLRUxZKG1faXNFeGNlc3MpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXhjZXNzUmVnaW9uKj4odGhpcyktPkV4Y2Vzc1Jl
Z2lvbjo6c2l6ZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxOb3JtYWxSZWdpb24qPih0aGlz
KS0+Tm9ybWFsUmVnaW9uOjpzaXplKCk7CisjZWxzZQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
eGNlc3NSZWdpb24qPih0aGlzKS0+RXhjZXNzUmVnaW9uOjpzaXplKCk7CisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKU0NfUmVnaW9uX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N1cGVyUmVnaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJTdXBlclJlZ2lvbi5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVk
ZSAiUmVnaW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBzaXplX3QgU3VwZXJSZWdp
b246OnNfZml4ZWRIZWFwTWVtb3J5UG9vbFNpemUgPSA0ICogMTAyNCAqIE1COworCitTdXBlclJl
Z2lvbjo6U3VwZXJSZWdpb24oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorICAgIDogTWV0YUFs
bG9jYXRvcihSZWdpb246OnNfcmVnaW9uU2l6ZSwgUmVnaW9uOjpzX3JlZ2lvblNpemUpCisgICAg
LCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKKyAgICAsIG1fcmVzZXJ2YXRpb25CYXNlKDApCit7
CisgICAgLy8gT3Zlci1hbGxvY2F0ZSBzbyB0aGF0IHdlIGNhbiBtYWtlIHN1cmUgdGhhdCB3ZSdy
ZSBhbGlnbmVkIHRvIHRoZSBzaXplIG9mIFJlZ2lvbnMuCisjaWYgRU5BQkxFKFNVUEVSX1JFR0lP
TikKKyAgICBtX3Jlc2VydmF0aW9uID0gUGFnZVJlc2VydmF0aW9uOjpyZXNlcnZlKHNfZml4ZWRI
ZWFwTWVtb3J5UG9vbFNpemUgKyBSZWdpb246OnNfcmVnaW9uU2l6ZSwgT1NBbGxvY2F0b3I6OkpT
R0NIZWFwUGFnZXMpOworICAgIG1fcmVzZXJ2YXRpb25CYXNlID0gZ2V0QWxpZ25lZEJhc2UobV9y
ZXNlcnZhdGlvbik7CisgICAgYWRkRnJlc2hGcmVlU3BhY2UobV9yZXNlcnZhdGlvbkJhc2UsIHNf
Zml4ZWRIZWFwTWVtb3J5UG9vbFNpemUpOworI2VuZGlmCit9CisKK3ZvaWQqIFN1cGVyUmVnaW9u
OjpnZXRBbGlnbmVkQmFzZShQYWdlUmVzZXJ2YXRpb24mIHJlc2VydmF0aW9uKQoreworICAgIGZv
ciAoY2hhciogY3VycmVudCA9IHN0YXRpY19jYXN0PGNoYXIqPihyZXNlcnZhdGlvbi5iYXNlKCkp
OyBjdXJyZW50IDwgc3RhdGljX2Nhc3Q8Y2hhcio+KHJlc2VydmF0aW9uLmJhc2UoKSkgKyBSZWdp
b246OnNfcmVnaW9uU2l6ZTsgY3VycmVudCArPSBwYWdlU2l6ZSgpKSB7CisgICAgICAgIGlmICgh
KHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihjdXJyZW50KSAmIH5SZWdpb246OnNfcmVnaW9uTWFz
aykpCisgICAgICAgICAgICByZXR1cm4gY3VycmVudDsKKyAgICB9CisgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQqIFN1cGVyUmVnaW9uOjphbGxvY2F0
ZU5ld1NwYWNlKHNpemVfdCYpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgU3VwZXJSZWdp
b246Om5vdGlmeU5lZWRQYWdlKHZvaWQqIHBhZ2UpCit7CisgICAgbV9yZXNlcnZhdGlvbi5jb21t
aXQocGFnZSwgUmVnaW9uOjpzX3JlZ2lvblNpemUpOworfQorCit2b2lkIFN1cGVyUmVnaW9uOjpu
b3RpZnlQYWdlSXNGcmVlKHZvaWQqIHBhZ2UpCit7CisgICAgbV9yZXNlcnZhdGlvbi5kZWNvbW1p
dChwYWdlLCBSZWdpb246OnNfcmVnaW9uU2l6ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TdXBlclJlZ2lvbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU3VwZXJSZWdpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTdXBlclJlZ2lvbl9o
CisjZGVmaW5lIFN1cGVyUmVnaW9uX2gKKworI2luY2x1ZGUgPHd0Zi9NZXRhQWxsb2NhdG9yLmg+
CisjaW5jbHVkZSA8d3RmL1BhZ2VCbG9jay5oPgorI2luY2x1ZGUgPHd0Zi9QYWdlUmVzZXJ2YXRp
b24uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworY2xhc3Mg
U3VwZXJSZWdpb24gOiBwdWJsaWMgV1RGOjpNZXRhQWxsb2NhdG9yIHsKK3B1YmxpYzoKKyAgICBT
dXBlclJlZ2lvbihKU0dsb2JhbERhdGEqKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9p
ZCogYWxsb2NhdGVOZXdTcGFjZShzaXplX3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5TmVl
ZFBhZ2Uodm9pZCopOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlSXNGcmVlKHZvaWQqKTsK
KworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfZml4ZWRIZWFwTWVtb3J5UG9v
bFNpemU7CisKKyAgICBzdGF0aWMgdm9pZCogZ2V0QWxpZ25lZEJhc2UoUGFnZVJlc2VydmF0aW9u
Jik7CisKKyAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKKyAgICBQYWdlUmVzZXJ2YXRp
b24gbV9yZXNlcnZhdGlvbjsKKyAgICB2b2lkKiBtX3Jlc2VydmF0aW9uQmFzZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gU3VwZXJSZWdpb25faApJbmRleDogU291cmNl
L1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE0NzI5NCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTMtMDMtMzEgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KKworICAgICAgICBSZWdpb25zIHNob3VsZCBiZSBhbGxvY2F0ZWQgZnJvbSB0aGUg
c2FtZSBjb250aWd1b3VzIHNlZ21lbnQgb2YgdmlydHVhbCBtZW1vcnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMzY2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgbGV0dGluZyB0aGUg
T1Mgc3ByZWFkIG91ciBSZWdpb25zIGFsbCBvdmVyIHRoZSBwbGFjZSwgd2Ugc2hvdWxkIGFsbG9j
YXRlIHRoZW0gYWxsIHdpdGhpbiAKKyAgICAgICAgc29tZSByYW5nZSBvZiBlYWNoIG90aGVyLiBU
aGlzIGNoYW5nZSB3aWxsIG9wZW4gdGhlIGRvb3IgdG8gc29tZSBvdGhlciBvcHRpbWl6YXRpb25z
LCBlLmcuIGRvaW5nIHNpbXBsZSAKKyAgICAgICAgcmFuZ2UgY2hlY2tzIGZvciBvdXIgd3JpdGUg
YmFycmllcnMgYW5kIGNvbXByZXNzaW5nIEpTQ2VsbCBwb2ludGVycyB0byAzMi1iaXRzLgorCisg
ICAgICAgICogd3RmL01ldGFBbGxvY2F0b3IuY3BwOiBDaGFuZ2VkIHRoZSBNZXRhQWxsb2NhdG9y
IHRvIGFsbG93IGN1c3RvbSBwYWdlIHNpemVzIGlmIHRoZSBkZXJpdmVkIGNsYXNzIHdhbnRzIHRv
CisgICAgICAgIHVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGUgc3lzdGVtIHBhZ2Ugc2l6ZS4K
KyAgICAgICAgKFdURjo6TWV0YUFsbG9jYXRvcjo6TWV0YUFsbG9jYXRvcik6CisgICAgICAgICog
d3RmL01ldGFBbGxvY2F0b3IuaDoKKyAgICAgICAgKE1ldGFBbGxvY2F0b3IpOgorCiAyMDEzLTAz
LTMwICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFZpZXctc291
cmNlIGlmcmFtZXMgYXJlIGRhbmdlcm91cyAoYW5kIG5vdCB2ZXJ5IHVzZWZ1bCkuCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RG
L3d0Zi9NZXRhQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMTQ3Mjg1KQorKysgU291cmNlL1dURi93
dGYvTWV0YUFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCw5ICsxMTQsOSBAQCB2
b2lkIE1ldGFBbGxvY2F0b3JIYW5kbGU6OnNocmluayhzaXplX3QgCiAgICAgbV9zaXplSW5CeXRl
cyA9IG5ld1NpemVJbkJ5dGVzOwogfQogCi1NZXRhQWxsb2NhdG9yOjpNZXRhQWxsb2NhdG9yKHNp
emVfdCBhbGxvY2F0aW9uR3JhbnVsZSkKK01ldGFBbGxvY2F0b3I6Ok1ldGFBbGxvY2F0b3Ioc2l6
ZV90IGFsbG9jYXRpb25HcmFudWxlLCBzaXplX3QgcGFnZVNpemUpCiAgICAgOiBtX2FsbG9jYXRp
b25HcmFudWxlKGFsbG9jYXRpb25HcmFudWxlKQotICAgICwgbV9wYWdlU2l6ZShwYWdlU2l6ZSgp
KQorICAgICwgbV9wYWdlU2l6ZShwYWdlU2l6ZSA/IHBhZ2VTaXplIDogV1RGOjpwYWdlU2l6ZSgp
KQogICAgICwgbV9ieXRlc0FsbG9jYXRlZCgwKQogICAgICwgbV9ieXRlc1Jlc2VydmVkKDApCiAg
ICAgLCBtX2J5dGVzQ29tbWl0dGVkKDApCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2Nh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTWV0YUFsbG9jYXRvci5oCShyZXZp
c2lvbiAxNDcyODUpCisrKyBTb3VyY2UvV1RGL3d0Zi9NZXRhQWxsb2NhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgY2xhc3MgTWV0YUFsbG9jYXRvciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoTWV0YUFsbG9jYXRvcik7CiAKIHB1YmxpYzoKLSAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgTWV0YUFsbG9jYXRvcihzaXplX3QgYWxsb2NhdGlvbkdyYW51bGUpOworICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBNZXRhQWxsb2NhdG9yKHNpemVfdCBhbGxvY2F0aW9uR3JhbnVsZSwg
c2l6ZV90IHBhZ2VTaXplID0gMCk7CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgfk1ldGFBbGxvY2F0b3IoKTsKICAgICAK
</data>
<flag name="review"
          id="217891"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="217892"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>