<?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>96356</bug_id>
          
          <creation_ts>2012-09-10 23:58:28 -0700</creation_ts>
          <short_desc>Web Inspector: NMI: move MemoryInstrumentation.h to wtf</short_desc>
          <delta_ts>2012-09-11 00:33:43 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>benjamin</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>716882</commentid>
    <comment_count>0</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-10 23:58:28 -0700</bug_when>
    <thetext>It is necessary step because it helps us to remove dependency between platform and WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716883</commentid>
    <comment_count>1</comment_count>
      <attachid>163287</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-11 00:01:34 -0700</bug_when>
    <thetext>Created attachment 163287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716901</commentid>
    <comment_count>2</comment_count>
      <attachid>163287</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-09-11 00:29:57 -0700</bug_when>
    <thetext>Comment on attachment 163287
Patch

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

&gt; Source/WTF/ChangeLog:8
&gt; +        It is necessary step because it helps us to remove dependency between platform and WebCore.

We also need this to have better coverage for WTF containers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716908</commentid>
    <comment_count>3</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-09-11 00:33:43 -0700</bug_when>
    <thetext>Committed r128153: &lt;http://trac.webkit.org/changeset/128153&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163287</attachid>
            <date>2012-09-11 00:01:34 -0700</date>
            <delta_ts>2012-09-11 00:29:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96356-20120911110108.patch</filename>
            <type>text/plain</type>
            <size>51518</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGNmNGVhZGE3OGVmNjM1MmExN2RjODRl
ZThhZDUzMjhlZGMwMmVjYjkuLjAyZDIxNTI3Y2QxNjI5YjIxNjRhNjc3ODA3ZjE0ZWY4NDM1ODgy
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjkgQEAKKzIwMTItMDktMTAgIElseWEgVGlraG9ub3Zza3kgIDxs
b2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5NSTogbW92ZSBN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCB0byB3dGYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MzU2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSXQgaXMgbmVjZXNzYXJ5IHN0ZXAgYmVjYXVzZSBpdCBoZWxw
cyB1cyB0byByZW1vdmUgZGVwZW5kZW5jeSBiZXR3ZWVuIHBsYXRmb3JtIGFuZCBXZWJDb3JlLgor
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToKKyAg
ICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEdlbmVyaWNN
ZW1vcnlUeXBlcyk6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHMpOgorICAg
ICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6fk1lbW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFJvb3RPYmplY3QpOgorICAgICAgICAoSW5zdHJ1
bWVudGVkUG9pbnRlckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyQmFzZTo6fkluc3RydW1lbnRlZFBvaW50ZXJCYXNlKToK
KyAgICAgICAgKEluc3RydW1lbnRlZFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpJbnN0cnVtZW50ZWRQb2ludGVyOjpJbnN0cnVtZW50ZWRQb2ludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkUmF3
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6T3duaW5n
VHJhaXRzOjphZGRJbnN0cnVtZW50ZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpPd25pbmdUcmFpdHM6OmFkZE9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZEluc3RydW1lbnRlZE9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM6OmFkZE9iamVj
dCk6CisgICAgICAgIChNZW1vcnlPYmplY3RJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9y
eU9iamVjdEluZm86Ok1lbW9yeU9iamVjdEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
T2JqZWN0SW5mbzo6b2JqZWN0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJ
bmZvOjpvYmplY3RTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeU9iamVjdEluZm86Om1l
bW9yeUluc3RydW1lbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlPYmplY3RJbmZv
OjpyZXBvcnRPYmplY3RJbmZvKToKKyAgICAgICAgKE1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86Ok1lbW9yeUNsYXNzSW5mbyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3RydW1lbnRlZE1lbWJlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZE1lbWJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDbGFzc0luZm86OmFkZEhhc2hNYXApOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5
Q2xhc3NJbmZvOjphZGRIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNzSW5m
bzo6YWRkSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2xhc3NJbmZv
OjphZGRJbnN0cnVtZW50ZWRIYXNoU2V0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNsYXNz
SW5mbzo6YWRkSW5zdHJ1bWVudGVkVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNs
YXNzSW5mbzo6YWRkSW5zdHJ1bWVudGVkVmVjdG9yUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNsYXNzSW5mbzo6YWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyk6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZW1vcnlDbGFzc0luZm86OmFkZExpc3RIYXNoU2V0KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUNsYXNzSW5mbzo6YWRkVmVjdG9yUHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNs
YXNzSW5mbzo6YWRkUmF3QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1l
bnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVjdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSGFzaFNldCk6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlJbnN0cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVz
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVu
dGVkTWFwVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkTGlzdEhhc2hTZXQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjphZGRWZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpj
YWxjdWxhdGVDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6cHJvY2Vzcyk6CisK
IDIwMTItMDktMDkgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eGVkIEFTU0VSVCgpIGFuZCBBU1NFUlRfQVQoKSBtYWNyb3Mgc28gdGhhdCB0aGV5IGNhbiBiZSB1
c2VkIGluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2I4ZTg3YjU3YTY0ZWQzNmIzZjNjNzZjN2YyNDJkNmFiMzUz
NGFiNC4uMWRjMjE1OTNjNWQ0ZGQ1OGIxMzUwNjc2YzAyZjcwZDQyYjQ0ZDFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBOTUk6IG1vdmUgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmggdG8gd3RmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NjM1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEl0IGlzIG5lY2Vzc2FyeSBzdGVwIGJlY2F1c2UgaXQgaGVscHMgdXMg
dG8gcmVtb3ZlIGRlcGVuZGVuY3kgYmV0d2VlbiBwbGF0Zm9ybSBhbmQgV2ViQ29yZS4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGRvbS9XZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgICogaW5zcGVj
dG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaDoKKwogMjAxMi0wOS0xMCAgS2Vpc2hpIEhh
dHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIElucHV0VHlwZU5hbWVz
IHRvIGEgc2VwYXJhdGUgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5s
aXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGE0MDgwMzQ1NWYy
ZDcyYzhiZWNkZDcyZjQwYjNjZmZjNTgwODQzZDYuLmU4ZTQyZWRkMzU1MmVkZTU1YWYxODQyMTE1
MWYwZWJiOTMzOTZiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTc5LDYgKzc5LDcgQEAg
d3RmX3NvdXJjZXMgKz0gXAogICAgIFNvdXJjZS9XVEYvd3RmL01hdGhFeHRyYXMuaCBcCiAgICAg
U291cmNlL1dURi93dGYvTWVkaWFUaW1lLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAgXAorICAgIFNvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKICAg
ICBTb3VyY2UvV1RGL3d0Zi9NZXNzYWdlUXVldWUuaCBcCiAgICAgU291cmNlL1dURi93dGYvTWV0
YUFsbG9jYXRvci5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL01ldGFBbGxvY2F0b3IuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5neXBpIGIvU291cmNlL1dURi9XVEYuZ3lwaQppbmRl
eCBjZGM3M2ZkNDViYzA4MzUxMDMwOGFkYTJjZTcyNGVmYWVkYzU5YzBlLi41ZGNkMDFlZDdkM2E0
YjdhOWMzMTgxYjU0YTFhYTRjNWE5ZjIxMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi5n
eXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICAgICAg
ICAgICd3dGYvTUQ1LmgnLAogICAgICAgICAgICAgJ3d0Zi9NYWluVGhyZWFkLmgnLAogICAgICAg
ICAgICAgJ3d0Zi9NYXRoRXh0cmFzLmgnLAorICAgICAgICAgICAgJ3d0Zi9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCcsCiAgICAgICAgICAgICAnd3RmL01lc3NhZ2VRdWV1ZS5oJywKICAgICAgICAg
ICAgICd3dGYvTm9uQ29weWluZ1NvcnQuaCcsCiAgICAgICAgICAgICAnd3RmL05vbmNvcHlhYmxl
LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYucHJvIGIvU291cmNlL1dURi9XVEYucHJv
CmluZGV4IDVkNmE2ZTU0ZmY0NjM1YWVjYTlmMzEzMmIzNDIzMDk5ZWE0MGNlMDMuLjc4OWU0OWJm
YWY5MTAzZDQwNjQxY2Q1NTllNzBjZmUyYzIyYThhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
V1RGLnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5wcm8KQEAgLTgxLDYgKzgxLDcgQEAgSEVBREVS
UyArPSBcCiAgICAgTWF0aEV4dHJhcy5oIFwKICAgICBNRDUuaCBcCiAgICAgTWVkaWFUaW1lLmgg
XAorICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKICAgICBNZXNzYWdlUXVldWUuaCBcCiAg
ICAgTWV0YUFsbG9jYXRvci5oIFwKICAgICBNZXRhQWxsb2NhdG9ySGFuZGxlLmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2ogYi9Tb3VyY2UvV1RGL1dURi52
Y3Byb2ovV1RGLnZjcHJvagppbmRleCA0ODVkMmUzNTlkNDI5MTRlY2U1OWU1ZmNmODIwNGE2NTM4
ZTJhNGZiLi40YjJjYzYyMWFlMTAwN2QzY2IxM2E1YzZkYTJhMjU3MWUxMTZkZGE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri52Y3Byb2ovV1RGLnZjcHJvagpAQCAtOTAxLDYgKzkwMSwxMCBAQAogCQkJPgogCQk8L0ZpbGU+
CiAJCTxGaWxlCisJCSAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlx3dGZcTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmgiCisJCQk+CisJCTwvRmlsZT4KKwkJPEZpbGUKIAkJCVJlbGF0aXZlUGF0aD0iLi5c
d3RmXE1lc3NhZ2VRdWV1ZS5oIgogCQkJPgogCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkMjM2YmQ3N2M5YjI4ZjZiYWM3ZTk5ZjA1OWMwYzNh
ODFmNjIwMDMwLi43NTBiNjE3NDkzZTNjOGJhM2U1OTFiNmU0MGI0MDc4OTgzNDc2N2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2LDYgKzE2LDcgQEAK
IAkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJDQ0Q4OTI5MTVDMDM5
MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgKi87IH07CiAJCTQzMzBGMzhGMTU3
NDVCMDUwMEFBRkE4RiAvKiBVUkxTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDMzMEYzOEUxNTc0NUIwNTAwQUFGQThGIC8qIFVSTFN0cmlu
Zy5jcHAgKi87IH07CiAJCTRGMDMyMUJDMTU2QUE4RDEwMDZFQkFGNiAvKiBCaXRBcnJheS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYwMzIxQkIxNTZB
QThEMTAwNkVCQUY2IC8qIEJpdEFycmF5LmggKi87IH07CisJCTRGMUQxMTU0MTVGRjExQkUwMDI2
RTkwOCAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMUQxMTUzMTVGRjExQkUwMDI2RTkwOCAvKiBNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJh
c2U2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICov
OyB9OwogCQlBODc2REJEODE1MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NzZEQkQ3MTUxODE2RTUwMERB
REI5NSAvKiBQbGF0Zm9ybS5oICovOyB9OwpAQCAtMjYyLDYgKzI2Myw3IEBACiAJCTJDQ0Q4OTI5
MTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmVnb3JpYW5EYXRlVGltZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzMzBGMzhFMTU3NDVCMDUwMEFBRkE4RiAvKiBVUkxTdHJpbmcu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVVJMU3RyaW5nLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYwMzIxQkIxNTZBQThEMTAwNkVCQUY2IC8q
IEJpdEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJpdEFycmF5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGMUQxMTUzMTVGRjExQkUwMDI2RTkwOCAv
KiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVEMjQ3QjYyMTQ2ODlCODYwMEU3OEI3NiAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXgg
PSAwOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTVEMjQ3QjZFMTQ2ODlDNDcwMEU3OEI3NiAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0
aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVEMjQ3QjZG
MTQ2ODlDNDcwMEU3OEI3NiAvKiBDb21waWxlclZlcnNpb24ueGNjb25maWcgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRo
ID0gQ29tcGlsZXJWZXJzaW9uLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjQ3LDYgKzY0OSw3IEBACiAJCQkJQThBNDcyQ0IxNTFBODI1QjAwNDEyM0ZGIC8qIE1ENS5o
ICovLAogCQkJCUNENTQ5N0FBMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovLAog
CQkJCUNENTQ5N0FCMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuaCAqLywKKwkJCQk0RjFE
MTE1MzE1RkYxMUJFMDAyNkU5MDggLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggKi8sCiAJCQkJ
QThBNDcyQ0MxNTFBODI1QjAwNDEyM0ZGIC8qIE1lc3NhZ2VRdWV1ZS5oICovLAogCQkJCUE4QTQ3
MkNEMTUxQTgyNUIwMDQxMjNGRiAvKiBNZXRhQWxsb2NhdG9yLmNwcCAqLywKIAkJCQlBOEE0NzJD
RTE1MUE4MjVCMDA0MTIzRkYgLyogTWV0YUFsbG9jYXRvci5oICovLApAQCAtMTA3MCw2ICsxMDcz
LDcgQEAKIAkJCQlBOEE0NzQ4MDE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBOEE0NzQ0NjE1MUE4MjVCMDA0MTIzRkYgLyogV1RGU3RyaW5nLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOEE0NzQ4NzE1MUE4MjVCMDA0MTIzRkYgLyogV1RGVGhyZWFkRGF0YS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNEYxRDExNTQxNUZGMTFCRTAwMjZFOTA4IC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XVEYvd3RmL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFjNjdmZmZmNjhmOTlkYWE1MmExMTkwNWNjY2NlZTViOGYw
ODZlNjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb24uaApAQCAtMCwwICsxLDM2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gK
KyNkZWZpbmUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKKworI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNZW1vcnlDbGFzc0luZm87CitjbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOworY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOworCit0eXBlZGVm
IGNvbnN0IGNoYXIqIE1lbW9yeU9iamVjdFR5cGU7CisKK2NsYXNzIEdlbmVyaWNNZW1vcnlUeXBl
cyB7CitwdWJsaWM6CisgICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgVW5kZWZpbmVkOworfTsK
KworZW51bSBNZW1vcnlPd25pbmdUeXBlIHsKKyAgICBieVBvaW50ZXIsCisgICAgYnlSZWZlcmVu
Y2UKK307CisKK2NsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0cyB7CitwdWJsaWM6Cisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlw
ZSwgTWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZv
aWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFQqIGNvbnN0JiwgTWVt
b3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7Cit9OworCitjbGFzcyBNZW1vcnlJbnN0
cnVtZW50YXRpb24geworcHVibGljOgorICAgIHZpcnR1YWwgfk1lbW9yeUluc3RydW1lbnRhdGlv
bigpIHsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkUm9vdE9iamVjdChj
b25zdCBUJiB0KQorICAgIHsKKyAgICAgICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KHQsIEdlbmVy
aWNNZW1vcnlUeXBlczo6VW5kZWZpbmVkKTsKKyAgICAgICAgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1
bWVudGVkUG9pbnRlcnMoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWlu
ZXI+IHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShjb25zdCBDb250YWluZXIm
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworCitwcm90ZWN0ZWQ6CisgICAgY2xhc3MgSW5z
dHJ1bWVudGVkUG9pbnRlckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2UoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Mo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKikgPSAwOworICAgIH07CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBlLCBzaXplX3QpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2U+KSA9IDA7CisgICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29u
c3Qgdm9pZCopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVu
dGVkUG9pbnRlcnMoKSA9IDA7CisKKyAgICBmcmllbmQgY2xhc3MgTWVtb3J5Q2xhc3NJbmZvOwor
ICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBJbnN0cnVtZW50ZWRQb2ludGVyIDogcHVibGljIEluc3Ry
dW1lbnRlZFBvaW50ZXJCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3Ry
dW1lbnRlZFBvaW50ZXIoY29uc3QgVCogcG9pbnRlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9i
amVjdFR5cGUpIDogbV9wb2ludGVyKHBvaW50ZXIpLCBtX293bmVyT2JqZWN0VHlwZShvd25lck9i
amVjdFR5cGUpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhNZW1vcnlJbnN0cnVt
ZW50YXRpb24qKSBPVkVSUklERTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0IFQqIG1f
cG9pbnRlcjsKKyAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlw
ZTsKKyAgICB9OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29u
c3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgeworICAgICAg
ICBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdFR5cGUpOwor
ICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IE93bmlu
Z1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlw
ZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRIYXNoTWFw
KGNvbnN0IEhhc2hNYXBUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9
IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNo
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBh
ZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiwgTWVtb3J5T2Jq
ZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYs
IE1lbW9yeU9iamVjdFR5cGUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmLCBNZW1vcnlPYmplY3RUeXBl
KTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhh
c2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250
ZW50T25seSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lk
IGFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250
ZW50T25seSA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBjb25z
dCYgYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUp
CisgICAgeworICAgICAgICBpZiAoIWJ1ZmZlciB8fCB2aXNpdGVkKGJ1ZmZlcikpCisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNp
emUpOworICAgIH0KKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RydWN0IE93bmlu
Z1RyYWl0cyB7IC8vIERlZmF1bHQgYnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisgICAgICAg
IHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24q
IGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVj
dFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PFQ+KGluc3RydW1lbnRhdGlvbiwgJnQsIG93bmVyT2Jq
ZWN0VHlwZSwgYnlSZWZlcmVuY2UpOworICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGFk
ZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYg
dCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkT2JqZWN0PFQ+KGluc3RydW1lbnRh
dGlvbiwgJnQsIG93bmVyT2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CisgICAgc3RydWN0IE93bmluZ1RyYWl0czxU
Kj4geyAvLyBDdXN0b20gYnlQb2ludGVyIGltcGxlbWVudGF0aW9uLgorICAgICAgICBzdGF0aWMg
dm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVt
ZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0
VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRz
OjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8VD4oaW5zdHJ1bWVudGF0aW9uLCB0LCBvd25lck9iamVj
dFR5cGUsIGJ5UG9pbnRlcik7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIHZvaWQgYWRkT2Jq
ZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25z
dCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkT2JqZWN0PFQ+KGluc3RydW1l
bnRhdGlvbiwgdCwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOworICAgICAgICB9CisgICAg
fTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
SW1wbChjb25zdCBUKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUp
OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1w
bChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5n
VHlwZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1w
bChjb25zdCBUKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8
VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29u
c3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1
bWVudGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25z
dCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwodCwgb3duZXJPYmplY3RUeXBlLCBvd25pbmdUeXBlKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRP
YmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNv
bnN0JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlw
ZSBvd25pbmdUeXBlKQoreworICAgIGluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCh0LCBv
d25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOworfQorCitjbGFzcyBNZW1vcnlPYmplY3RJbmZv
IHsKK3B1YmxpYzoKKyAgICBNZW1vcnlPYmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbiog
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkK
KyAgICAgICAgOiBtX21lbW9yeUluc3RydW1lbnRhdGlvbihtZW1vcnlJbnN0cnVtZW50YXRpb24p
CisgICAgICAgICwgbV9vYmplY3RUeXBlKG93bmVyT2JqZWN0VHlwZSkKKyAgICAgICAgLCBtX29i
amVjdFNpemUoMCkKKyAgICB7IH0KKworICAgIHR5cGVkZWYgTWVtb3J5Q2xhc3NJbmZvIENsYXNz
SW5mbzsKKworICAgIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0VHlwZTsgfQorICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RTaXplOyB9CisKKyAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3Ry
dW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOyB9CisKK3ByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNsYXNzSW5mbzsKKworICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5
cGUsIHNpemVfdCBhY3R1YWxTaXplKQorICAgIHsKKyAgICAgICAgaWYgKCFtX29iamVjdFNpemUp
IHsKKyAgICAgICAgICAgIG1fb2JqZWN0U2l6ZSA9IGFjdHVhbFNpemUgPyBhY3R1YWxTaXplIDog
c2l6ZW9mKFQpOworICAgICAgICAgICAgaWYgKG9iamVjdFR5cGUgIT0gR2VuZXJpY01lbW9yeVR5
cGVzOjpVbmRlZmluZWQpCisgICAgICAgICAgICAgICAgbV9vYmplY3RUeXBlID0gb2JqZWN0VHlw
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1v
cnlJbnN0cnVtZW50YXRpb247CisgICAgTWVtb3J5T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7Cisg
ICAgc2l6ZV90IG1fb2JqZWN0U2l6ZTsKK307CisKK2NsYXNzIE1lbW9yeUNsYXNzSW5mbyB7Citw
dWJsaWM6CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KKyAgICBNZW1vcnlDbGFzc0luZm8oTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbywgY29uc3QgVCosIE1lbW9yeU9iamVjdFR5
cGUgb2JqZWN0VHlwZSA9IEdlbmVyaWNNZW1vcnlUeXBlczo6VW5kZWZpbmVkLCBzaXplX3QgYWN0
dWFsU2l6ZSA9IDApCisgICAgICAgIDogbV9tZW1vcnlPYmplY3RJbmZvKG1lbW9yeU9iamVjdElu
Zm8pCisgICAgICAgICwgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5T2JqZWN0SW5mby0+
bWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkpCisgICAgeworICAgICAgICBtX21lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydE9iamVjdEluZm88VD4ob2JqZWN0VHlwZSwgYWN0dWFsU2l6ZSk7CisgICAgICAg
IG1fb2JqZWN0VHlwZSA9IG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsKKyAgICB9CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNPiB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlcihjb25z
dCBNJiBtZW1iZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9i
amVjdChtZW1iZXIsIG1fb2JqZWN0VHlwZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNPiB2
b2lkIGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24t
PmFkZE9iamVjdChtZW1iZXIsIG1fb2JqZWN0VHlwZSk7IH0KKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIG1hcCkg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaE1hcChtYXAsIG1fb2JqZWN0VHlwZSwg
dHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNo
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFk
ZEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaENvdW50ZWRTZXQoY29uc3QgSGFzaFNldFR5cGUm
IHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaFNldChzZXQsIG1fb2JqZWN0
VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBh
ZGRJbnN0cnVtZW50ZWRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oc2V0LCBtX29iamVjdFR5
cGUsIHRydWUpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJ
bnN0cnVtZW50ZWRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKHZlY3RvciwgbV9vYmplY3RU
eXBlLCB0cnVlKTsgfQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRk
SW5zdHJ1bWVudGVkVmVjdG9yUHRyKGNvbnN0IE93blB0cjxWZWN0b3JUeXBlPiYgdmVjdG9yKSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKCp2ZWN0
b3IsIG1fb2JqZWN0VHlwZSwgZmFsc2UpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9y
VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3JQdHIoY29uc3QgVmVjdG9yVHlwZSogY29u
c3QmIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29s
bGVjdGlvbigqdmVjdG9yLCBtX29iamVjdFR5cGUsIGZhbHNlKTsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBU
eXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1hcEVu
dHJpZXMobWFwLCBtX29iamVjdFR5cGUpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwVHlw
ZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYgbWFwKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMobWFwLCBtX29i
amVjdFR5cGUpOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lk
IGFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5hZGRMaXN0SGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBW
ZWN0b3JUeXBlJiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFZlY3Rvcih2
ZWN0b3IsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0
b3JUeXBlPiB2b2lkIGFkZFZlY3RvclB0cihjb25zdCBWZWN0b3JUeXBlKiBjb25zdCB2ZWN0b3Ip
IHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFZlY3RvcigqdmVjdG9yLCBtX29iamVjdFR5
cGUsIGZhbHNlKTsgfQorICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBi
dWZmZXIsIHNpemVfdCBzaXplKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZm
ZXIoYnVmZmVyLCBtX29iamVjdFR5cGUsIHNpemUpOyB9CisKK3ByaXZhdGU6CisgICAgTWVtb3J5
T2JqZWN0SW5mbyogbV9tZW1vcnlPYmplY3RJbmZvOworICAgIE1lbW9yeUluc3RydW1lbnRhdGlv
biogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247CisgICAgTWVtb3J5T2JqZWN0VHlwZSBtX29iamVj
dFR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwg
TWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5n
VHlwZSkKK3sKKyAgICBpZiAob3duaW5nVHlwZSA9PSBieVJlZmVyZW5jZSkgeworICAgICAgICBN
ZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdEluZm8odGhpcywgb3duZXJPYmplY3RUeXBlKTsK
KyAgICAgICAgb2JqZWN0LT5yZXBvcnRNZW1vcnlVc2FnZSgmbWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFvYmplY3QgfHwgdmlzaXRlZChvYmplY3QpKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBkZWZlckluc3RydW1lbnRlZFBvaW50ZXIoYWRvcHRQ
dHIobmV3IEluc3RydW1lbnRlZFBvaW50ZXI8VD4ob2JqZWN0LCBvd25lck9iamVjdFR5cGUpKSk7
CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYg
b2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlw
ZSBvd25pbmdUeXBlKQoreworICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKKyAgICAg
ICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKKyAg
ICBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0VHlw
ZSwgYnlQb2ludGVyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiog
Y29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKK3sKKyAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIp
CisgICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0
KSk7CisgICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25lck9i
amVjdFR5cGUsIGJ5UG9pbnRlcik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0
JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdU
eXBlIG93bmluZ1R5cGUpCit7CisgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQorICAg
ICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwor
ICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50
ZXIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OmFkZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQor
eworICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKKyAgICAgICAgY291bnRPYmplY3RT
aXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKKyAgICBhZGRPYmplY3RJbXBs
KG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBs
KGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCit7CisgICAgaWYgKCFvYmplY3QgfHwgdmlz
aXRlZChvYmplY3QpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG93bmluZ1R5cGUgPT0gYnlS
ZWZlcmVuY2UpCisgICAgICAgIHJldHVybjsKKyAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmpl
Y3RUeXBlLCBzaXplb2YoVCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwVHlwZT4K
K3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBl
JiBoYXNoTWFwLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSkKK3sKKyAgICBpZiAodmlzaXRlZCgmaGFzaE1hcCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBjYWxjdWxhdGVDb250YWluZXJTaXpl
KGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRU
eXBlPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hTZXQoY29uc3QgSGFzaFNl
dFR5cGUmIGhhc2hTZXQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNv
bnRlbnRPbmx5KQoreworICAgIGlmICh2aXNpdGVkKCZoYXNoU2V0KSkKKyAgICAgICAgcmV0dXJu
OworICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRhaW5l
clNpemUoaGFzaFNldCwgY29udGVudE9ubHkpKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ29s
bGVjdGlvblR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
Q29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgTWVtb3J5T2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCit7CisgICAgaWYgKHZpc2l0
ZWQoJmNvbGxlY3Rpb24pKQorICAgICAgICByZXR1cm47CisgICAgY291bnRPYmplY3RTaXplKG93
bmVyT2JqZWN0VHlwZSwgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShjb2xsZWN0aW9uLCBjb250ZW50
T25seSkpOworICAgIHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBjb2xsZWN0aW9uLmVuZCgpOworICAgIGZvciAodHlwZW5hbWUgQ29sbGVjdGlvblR5cGU6OmNv
bnN0X2l0ZXJhdG9yIGkgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCisgICAg
ICAgIGFkZEluc3RydW1lbnRlZE9iamVjdCgqaSwgb3duZXJPYmplY3RUeXBlKTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgTWFwVHlwZT4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJ
bnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgTWVtb3J5T2JqZWN0VHlw
ZSBvd25lck9iamVjdFR5cGUpCit7CisgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRl
cmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgIGFkZEluc3Ry
dW1lbnRlZE9iamVjdChpLT5maXJzdCwgb3duZXJPYmplY3RUeXBlKTsKKyAgICAgICAgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKKyAgICB9Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgTWVtb3J5T2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUpCit7CisgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKQorICAgICAgICBhZGRJbnN0
cnVtZW50ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOworfQorCit0ZW1wbGF0
ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBNZW1vcnlPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKK3sKKyAgICBpZiAodmlz
aXRlZCgmaGFzaFNldCkpCisgICAgICAgIHJldHVybjsKKyAgICBzaXplX3Qgc2l6ZSA9IChjb250
ZW50T25seSA/IDAgOiBzaXplb2YoTGlzdEhhc2hTZXRUeXBlKSkgKyBoYXNoU2V0LmNhcGFjaXR5
KCkgKiBzaXplb2Yodm9pZCopICsgaGFzaFNldC5zaXplKCkgKiAoc2l6ZW9mKHR5cGVuYW1lIExp
c3RIYXNoU2V0VHlwZTo6VmFsdWVUeXBlKSArIDIgKiBzaXplb2Yodm9pZCopKTsKKyAgICBjb3Vu
dE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplKTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVmVjdG9yVHlwZT4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRWZWN0b3IoY29u
c3QgVmVjdG9yVHlwZSYgdmVjdG9yLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwg
Ym9vbCBjb250ZW50T25seSkKK3sKKyAgICBpZiAoIXZlY3Rvci5kYXRhKCkgfHwgdmlzaXRlZCh2
ZWN0b3IuZGF0YSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvdW50T2JqZWN0U2l6ZShvd25l
ck9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUodmVjdG9yLCBjb250ZW50T25seSkp
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+CitzaXplX3QgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpjYWxjdWxhdGVDb250YWluZXJTaXplKGNvbnN0IENvbnRhaW5lciYgY29udGFp
bmVyLCBib29sIGNvbnRlbnRPbmx5KQoreworICAgIHJldHVybiAoY29udGVudE9ubHkgPyAwIDog
c2l6ZW9mKGNvbnRhaW5lcikpICsgY29udGFpbmVyLmNhcGFjaXR5KCkgKiBzaXplb2YodHlwZW5h
bWUgQ29udGFpbmVyOjpWYWx1ZVR5cGUpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9p
ZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50ZXI8VD46OnByb2Nlc3Mo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCit7CisgICAgTWVt
b3J5T2JqZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgbV9v
d25lck9iamVjdFR5cGUpOworICAgIG1fcG9pbnRlci0+cmVwb3J0TWVtb3J5VXNhZ2UoJm1lbW9y
eU9iamVjdEluZm8pOworICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXpl
KG1lbW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNp
emUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vICFkZWZpbmVk
KE1lbW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMWMwMDlkYjZjOTBkY2EwZDQ3MzllOTQxYWYyNWQ4OGI0YWZhYzkwZi4uY2I1NDdkNTdkMzRm
YWMzYTg3ODc0ZTk0MjU5N2Y1YmQ0NjNmNmFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yODA4LDcgKzI4MDgsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2RvbS9IYXNoQ2hhbmdlRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0tleWJv
YXJkRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
Q2hhbm5lbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQppbmRleCA3N2ZhNTg5OTkwYTg1YzA1ODFkZTYzYzM5OGE0MjMzYTkzNDFiYzE2Li45MThj
NjI5OTlhYzRiOTJhZjE3YmZlZjZlMWVkMjkyYTRjYzg4NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTE1
NTYsNyArMTU1Niw2IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9JZFRhcmdldE9ic2VydmVyLmgg
XAogICAgIGRvbS9JZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCBcCiAgICAgZG9tL0tleWJvYXJk
RXZlbnQuaCBcCi0gICAgZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oIFwKICAgICBkb20vTWVz
c2FnZUNoYW5uZWwuaCBcCiAgICAgZG9tL01lc3NhZ2VFdmVudC5oIFwKICAgICBkb20vTWVzc2Fn
ZVBvcnRDaGFubmVsLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg2YjMyOTE3Zjc1NTE5OTJmNjQ5
MjBiOGEzZTE2OTAwNmU0YzAyMWQuLjdjMTE4YzQzNTFjMjBjYjdjNDI5YzE1Y2Y1OWQzOTQ0YjU2
MGU4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM4NjAsNyArMzg2MCw2IEBACiAgICAgICAgICAg
ICAnZG9tL0lkVGFyZ2V0T2JzZXJ2ZXJSZWdpc3RyeS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9J
ZFRhcmdldE9ic2VydmVyUmVnaXN0cnkuaCcsCiAgICAgICAgICAgICAnZG9tL0tleWJvYXJkRXZl
bnQuY3BwJywKLSAgICAgICAgICAgICdkb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgnLAogICAg
ICAgICAgICAgJ2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9NZXNz
YWdlQ2hhbm5lbC5oJywKICAgICAgICAgICAgICdkb20vTWVzc2FnZUV2ZW50LmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDk4YTBjNDFh
OTgzNzhhMGQwNWMyMmQ5OTY3MDQzMDVmYzgxZDRmYWMuLmE3YmJlMGJhNWNkOGI0NGQ0OGYxMjVk
MmE5Nzg4NzQ1YTI4YTdmMTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC01MTkxNSwxMCArNTE5MTUsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRv
bVxNZXNzYWdlQ2hhbm5lbC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDViNDY1NTA5NzUyMDNjZjI5NmFlYjY3YTk2Zjc0NDVhYjQ0MDVjNjAuLmUyNDM5Mjg2ZTcwZWYy
OWYxYjVjMjIzYmIzMjkyYWUxNDhlZjEyNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTUsNyArMTQ1NSw2IEBACiAJCTRG
MkQyMDU1MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MzEyRUFFN0IzMDA1QzI4
NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovOyB9OwogCQk0RjMyODlCNTExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1
ZXMuY3BwICovOyB9OwogCQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFs
dWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMy
ODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEYzMkJCMUIxNEZBODVFODAwRjZD
MUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTRGMzc3RkY1MTVGQTM1NkEwMEU1RDYwRCAvKiBXZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0RjM3N0ZGNDE1RkEzNTZBMDBFNUQ2MEQgLyogV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRG
NEY1RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQTExQ0JEMkQyMDBB
MTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovOyB9OwogCQk0RjZGREQ2NDEzNDFERURE
MDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQwMDFGOEVFMyAvKiBJbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwICovOyB9OwpAQCAtODYyNSw3ICs4NjI0LDYgQEAKIAkJNEYyRDIw
NTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1
ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjMyODlCNDExQTQyQUFCMDA1
QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEluc3BlY3RvclZhbHVlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RjMy
QkIxQTE0RkE4NUFBMDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0RjM3N0ZGNDE1RkEzNTZBMDBFNUQ2MEQgLyogV2ViQ29y
ZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTRGNEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZC
RiAvKiBJbnNwZWN0b3JGcm9udGVuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JGcm9udGVuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE3
NTAsNyArMjE3NDgsNiBAQAogCQkJCUJDOUE2MTQ0MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtlX2Rv
bV9leGNlcHRpb25zLnBsICovLAogCQkJCUJDOUE2MTQ1MTQ2ODU5RDkwMDYwNTdGRCAvKiBtYWtl
X2V2ZW50X2ZhY3RvcnkucGwgKi8sCiAJCQkJQkM5QTYxNDYxNDY4NTlEOTAwNjA1N0ZEIC8qIG1h
a2VfbmFtZXMucGwgKi8sCi0JCQkJNEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oICovLAogCQkJCUUxQURFQ0NEMEU3NkFEOEIwMDRBMUE1RSAvKiBNZXNz
YWdlQ2hhbm5lbC5jcHAgKi8sCiAJCQkJRTFBREVDQ0MwRTc2QUQ4QjAwNEExQTVFIC8qIE1lc3Nh
Z2VDaGFubmVsLmggKi8sCiAJCQkJRTFBREVDRDAwRTc2QURBQjAwNEExQTVFIC8qIE1lc3NhZ2VD
aGFubmVsLmlkbCAqLywKQEAgLTI0NDM4LDcgKzI0NDM1LDYgQEAKIAkJCQlGRDY3MUE3ODE1OUJC
MDcwMDAxOTc1NTkgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDQjE2QzE4MDk3OUMzQkQwMDQ2Nzc0MSAvKiBNZW1vcnlDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOUZGRTNFN0IxMUI1OUM1RDAwMzc4NzRFIC8qIE1lbW9yeUluZm8uaCBpbiBI
ZWFkZXJzICovLAotCQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTRGODU2NUVBMTUzMDM1NkUwMEZBRTc3NiAv
KiBNZW1vcnlJbnN0cnVtZW50YXRpb25JbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NTcxREND
ODEzODVFNkE0MDA3MDJERDAgLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlENjMwRTJBQzE0OUJGMzQ0MDA1QjJGOTUgLyogTWVtb3J5VXNhZ2VTdXBwb3J0Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0
cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM2N2ZmZmY2OGY5OWRhYTUyYTExOTA1
Y2NjY2VlNWI4ZjA4NmU2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwzNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0g
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gK
LSNkZWZpbmUgTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKLQotI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZW1vcnlDbGFzc0luZm87Ci1jbGFzcyBN
ZW1vcnlPYmplY3RJbmZvOwotY2xhc3MgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOwotCi10eXBlZGVm
IGNvbnN0IGNoYXIqIE1lbW9yeU9iamVjdFR5cGU7Ci0KLWNsYXNzIEdlbmVyaWNNZW1vcnlUeXBl
cyB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIE1lbW9yeU9iamVjdFR5cGUgVW5kZWZpbmVkOwotfTsK
LQotZW51bSBNZW1vcnlPd25pbmdUeXBlIHsKLSAgICBieVBvaW50ZXIsCi0gICAgYnlSZWZlcmVu
Y2UKLX07Ci0KLWNsYXNzIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0cyB7Ci1wdWJsaWM6Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFQqIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlw
ZSwgTWVtb3J5T3duaW5nVHlwZSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIHZv
aWQgYWRkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiosIGNvbnN0IFQqIGNvbnN0JiwgTWVt
b3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7Ci19OwotCi1jbGFzcyBNZW1vcnlJbnN0
cnVtZW50YXRpb24gewotcHVibGljOgotICAgIHZpcnR1YWwgfk1lbW9yeUluc3RydW1lbnRhdGlv
bigpIHsgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkUm9vdE9iamVjdChj
b25zdCBUJiB0KQotICAgIHsKLSAgICAgICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KHQsIEdlbmVy
aWNNZW1vcnlUeXBlczo6VW5kZWZpbmVkKTsKLSAgICAgICAgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1
bWVudGVkUG9pbnRlcnMoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWlu
ZXI+IHN0YXRpYyBzaXplX3QgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShjb25zdCBDb250YWluZXIm
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgY2xhc3MgSW5z
dHJ1bWVudGVkUG9pbnRlckJhc2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB+SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2UoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHByb2Nlc3Mo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKikgPSAwOwotICAgIH07Ci0KLXByaXZhdGU6Ci0gICAgdmly
dHVhbCB2b2lkIGNvdW50T2JqZWN0U2l6ZShNZW1vcnlPYmplY3RUeXBlLCBzaXplX3QpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGVmZXJJbnN0cnVtZW50ZWRQb2ludGVyKFBhc3NPd25QdHI8SW5z
dHJ1bWVudGVkUG9pbnRlckJhc2U+KSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHZpc2l0ZWQoY29u
c3Qgdm9pZCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RlZmVycmVkSW5zdHJ1bWVu
dGVkUG9pbnRlcnMoKSA9IDA7Ci0KLSAgICBmcmllbmQgY2xhc3MgTWVtb3J5Q2xhc3NJbmZvOwot
ICAgIGZyaWVuZCBjbGFzcyBNZW1vcnlJbnN0cnVtZW50YXRpb25UcmFpdHM7Ci0KLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBJbnN0cnVtZW50ZWRQb2ludGVyIDogcHVibGljIEluc3Ry
dW1lbnRlZFBvaW50ZXJCYXNlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEluc3Ry
dW1lbnRlZFBvaW50ZXIoY29uc3QgVCogcG9pbnRlciwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9i
amVjdFR5cGUpIDogbV9wb2ludGVyKHBvaW50ZXIpLCBtX293bmVyT2JqZWN0VHlwZShvd25lck9i
amVjdFR5cGUpIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhNZW1vcnlJbnN0cnVt
ZW50YXRpb24qKSBPVkVSUklERTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIGNvbnN0IFQqIG1f
cG9pbnRlcjsKLSAgICAgICAgY29uc3QgTWVtb3J5T2JqZWN0VHlwZSBtX293bmVyT2JqZWN0VHlw
ZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3QoY29u
c3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCi0gICAgewotICAgICAg
ICBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdFR5cGUpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0KGNvbnN0IFQmIHQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7IE93bmlu
Z1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlw
ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBhZGRIYXNoTWFw
KGNvbnN0IEhhc2hNYXBUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9
IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNo
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBh
ZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiwgTWVtb3J5T2Jq
ZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYs
IE1lbW9yeU9iamVjdFR5cGUpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQg
YWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmLCBNZW1vcnlPYmplY3RUeXBl
KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhh
c2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250
ZW50T25seSA9IGZhbHNlKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lk
IGFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiwgTWVtb3J5T2JqZWN0VHlwZSwgYm9vbCBjb250
ZW50T25seSA9IGZhbHNlKTsKLSAgICB2b2lkIGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBjb25z
dCYgYnVmZmVyLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgc2l6ZV90IHNpemUp
Ci0gICAgewotICAgICAgICBpZiAoIWJ1ZmZlciB8fCB2aXNpdGVkKGJ1ZmZlcikpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNp
emUpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IE93bmlu
Z1RyYWl0cyB7IC8vIERlZmF1bHQgYnlSZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0gICAgICAg
IHN0YXRpYyB2b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24q
IGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVj
dFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0
czo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0PFQ+KGluc3RydW1lbnRhdGlvbiwgJnQsIG93bmVyT2Jq
ZWN0VHlwZSwgYnlSZWZlcmVuY2UpOwotICAgICAgICB9Ci0gICAgICAgIHN0YXRpYyB2b2lkIGFk
ZE9iamVjdChNZW1vcnlJbnN0cnVtZW50YXRpb24qIGluc3RydW1lbnRhdGlvbiwgY29uc3QgVCYg
dCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkT2JqZWN0PFQ+KGluc3RydW1lbnRh
dGlvbiwgJnQsIG93bmVyT2JqZWN0VHlwZSwgYnlSZWZlcmVuY2UpOwotICAgICAgICB9Ci0gICAg
fTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IE93bmluZ1RyYWl0czxU
Kj4geyAvLyBDdXN0b20gYnlQb2ludGVyIGltcGxlbWVudGF0aW9uLgotICAgICAgICBzdGF0aWMg
dm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVt
ZW50YXRpb24sIGNvbnN0IFQqIGNvbnN0JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0
VHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRz
OjphZGRJbnN0cnVtZW50ZWRPYmplY3Q8VD4oaW5zdHJ1bWVudGF0aW9uLCB0LCBvd25lck9iamVj
dFR5cGUsIGJ5UG9pbnRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhdGljIHZvaWQgYWRkT2Jq
ZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25zdCBUKiBjb25z
dCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkT2JqZWN0PFQ+KGluc3RydW1l
bnRhdGlvbiwgdCwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50ZXIpOwotICAgICAgICB9Ci0gICAg
fTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0
SW1wbChjb25zdCBUKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUp
OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1w
bChjb25zdCBPd25QdHI8VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5n
VHlwZSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmpl
Y3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29uc3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlP
d25pbmdUeXBlKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1w
bChjb25zdCBUKiBjb25zdCYsIE1lbW9yeU9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUpOwot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgYWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8
VD4qIGNvbnN0JiwgTWVtb3J5T2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSk7Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBhZGRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiogY29u
c3QmLCBNZW1vcnlPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdUeXBlKTsKLX07Ci0KLXRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvblRyYWl0czo6YWRkSW5zdHJ1
bWVudGVkT2JqZWN0KE1lbW9yeUluc3RydW1lbnRhdGlvbiogaW5zdHJ1bWVudGF0aW9uLCBjb25z
dCBUKiBjb25zdCYgdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKLXsKLSAgICBpbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1l
bnRlZE9iamVjdEltcGwodCwgb3duZXJPYmplY3RUeXBlLCBvd25pbmdUeXBlKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uVHJhaXRzOjphZGRP
YmplY3QoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBpbnN0cnVtZW50YXRpb24sIGNvbnN0IFQqIGNv
bnN0JiB0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlw
ZSBvd25pbmdUeXBlKQotewotICAgIGluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0SW1wbCh0LCBv
d25lck9iamVjdFR5cGUsIG93bmluZ1R5cGUpOwotfQotCi1jbGFzcyBNZW1vcnlPYmplY3RJbmZv
IHsKLXB1YmxpYzoKLSAgICBNZW1vcnlPYmplY3RJbmZvKE1lbW9yeUluc3RydW1lbnRhdGlvbiog
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkK
LSAgICAgICAgOiBtX21lbW9yeUluc3RydW1lbnRhdGlvbihtZW1vcnlJbnN0cnVtZW50YXRpb24p
Ci0gICAgICAgICwgbV9vYmplY3RUeXBlKG93bmVyT2JqZWN0VHlwZSkKLSAgICAgICAgLCBtX29i
amVjdFNpemUoMCkKLSAgICB7IH0KLQotICAgIHR5cGVkZWYgTWVtb3J5Q2xhc3NJbmZvIENsYXNz
SW5mbzsKLQotICAgIE1lbW9yeU9iamVjdFR5cGUgb2JqZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0VHlwZTsgfQotICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QgeyByZXR1cm4g
bV9vYmplY3RTaXplOyB9Ci0KLSAgICBNZW1vcnlJbnN0cnVtZW50YXRpb24qIG1lbW9yeUluc3Ry
dW1lbnRhdGlvbigpIHsgcmV0dXJuIG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uOyB9Ci0KLXByaXZh
dGU6Ci0gICAgZnJpZW5kIGNsYXNzIE1lbW9yeUNsYXNzSW5mbzsKLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHZvaWQgcmVwb3J0T2JqZWN0SW5mbyhNZW1vcnlPYmplY3RUeXBlIG9iamVjdFR5
cGUsIHNpemVfdCBhY3R1YWxTaXplKQotICAgIHsKLSAgICAgICAgaWYgKCFtX29iamVjdFNpemUp
IHsKLSAgICAgICAgICAgIG1fb2JqZWN0U2l6ZSA9IGFjdHVhbFNpemUgPyBhY3R1YWxTaXplIDog
c2l6ZW9mKFQpOwotICAgICAgICAgICAgaWYgKG9iamVjdFR5cGUgIT0gR2VuZXJpY01lbW9yeVR5
cGVzOjpVbmRlZmluZWQpCi0gICAgICAgICAgICAgICAgbV9vYmplY3RUeXBlID0gb2JqZWN0VHlw
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIE1lbW9yeUluc3RydW1lbnRhdGlvbiogbV9tZW1v
cnlJbnN0cnVtZW50YXRpb247Ci0gICAgTWVtb3J5T2JqZWN0VHlwZSBtX29iamVjdFR5cGU7Ci0g
ICAgc2l6ZV90IG1fb2JqZWN0U2l6ZTsKLX07Ci0KLWNsYXNzIE1lbW9yeUNsYXNzSW5mbyB7Ci1w
dWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBNZW1vcnlDbGFzc0luZm8oTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbywgY29uc3QgVCosIE1lbW9yeU9iamVjdFR5
cGUgb2JqZWN0VHlwZSA9IEdlbmVyaWNNZW1vcnlUeXBlczo6VW5kZWZpbmVkLCBzaXplX3QgYWN0
dWFsU2l6ZSA9IDApCi0gICAgICAgIDogbV9tZW1vcnlPYmplY3RJbmZvKG1lbW9yeU9iamVjdElu
Zm8pCi0gICAgICAgICwgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24obWVtb3J5T2JqZWN0SW5mby0+
bWVtb3J5SW5zdHJ1bWVudGF0aW9uKCkpCi0gICAgewotICAgICAgICBtX21lbW9yeU9iamVjdElu
Zm8tPnJlcG9ydE9iamVjdEluZm88VD4ob2JqZWN0VHlwZSwgYWN0dWFsU2l6ZSk7Ci0gICAgICAg
IG1fb2JqZWN0VHlwZSA9IG1lbW9yeU9iamVjdEluZm8tPm9iamVjdFR5cGUoKTsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNPiB2b2lkIGFkZEluc3RydW1lbnRlZE1lbWJlcihjb25z
dCBNJiBtZW1iZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE9i
amVjdChtZW1iZXIsIG1fb2JqZWN0VHlwZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNPiB2
b2lkIGFkZE1lbWJlcihjb25zdCBNJiBtZW1iZXIpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24t
PmFkZE9iamVjdChtZW1iZXIsIG1fb2JqZWN0VHlwZSk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIG1hcCkg
eyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaE1hcChtYXAsIG1fb2JqZWN0VHlwZSwg
dHJ1ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNo
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFk
ZEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaENvdW50ZWRTZXQoY29uc3QgSGFzaFNldFR5cGUm
IHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaFNldChzZXQsIG1fb2JqZWN0
VHlwZSwgdHJ1ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBh
ZGRJbnN0cnVtZW50ZWRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJ
bnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oc2V0LCBtX29iamVjdFR5
cGUsIHRydWUpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJ
bnN0cnVtZW50ZWRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKHZlY3RvciwgbV9vYmplY3RU
eXBlLCB0cnVlKTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRk
SW5zdHJ1bWVudGVkVmVjdG9yUHRyKGNvbnN0IE93blB0cjxWZWN0b3JUeXBlPiYgdmVjdG9yKSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKCp2ZWN0
b3IsIG1fb2JqZWN0VHlwZSwgZmFsc2UpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmVjdG9y
VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3JQdHIoY29uc3QgVmVjdG9yVHlwZSogY29u
c3QmIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29s
bGVjdGlvbigqdmVjdG9yLCBtX29iamVjdFR5cGUsIGZhbHNlKTsgfQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBU
eXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZE1hcEVu
dHJpZXMobWFwLCBtX29iamVjdFR5cGUpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTWFwVHlw
ZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYgbWFwKSB7IG1f
bWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMobWFwLCBtX29i
amVjdFR5cGUpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lk
IGFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5hZGRMaXN0SGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0K
LSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBW
ZWN0b3JUeXBlJiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFZlY3Rvcih2
ZWN0b3IsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBWZWN0
b3JUeXBlPiB2b2lkIGFkZFZlY3RvclB0cihjb25zdCBWZWN0b3JUeXBlKiBjb25zdCB2ZWN0b3Ip
IHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFZlY3RvcigqdmVjdG9yLCBtX29iamVjdFR5
cGUsIGZhbHNlKTsgfQotICAgIHZvaWQgYWRkUmF3QnVmZmVyKGNvbnN0IHZvaWQqIGNvbnN0JiBi
dWZmZXIsIHNpemVfdCBzaXplKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRSYXdCdWZm
ZXIoYnVmZmVyLCBtX29iamVjdFR5cGUsIHNpemUpOyB9Ci0KLXByaXZhdGU6Ci0gICAgTWVtb3J5
T2JqZWN0SW5mbyogbV9tZW1vcnlPYmplY3RJbmZvOwotICAgIE1lbW9yeUluc3RydW1lbnRhdGlv
biogbV9tZW1vcnlJbnN0cnVtZW50YXRpb247Ci0gICAgTWVtb3J5T2JqZWN0VHlwZSBtX29iamVj
dFR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgVCogY29uc3QmIG9iamVjdCwg
TWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93bmluZ1R5cGUgb3duaW5n
VHlwZSkKLXsKLSAgICBpZiAob3duaW5nVHlwZSA9PSBieVJlZmVyZW5jZSkgewotICAgICAgICBN
ZW1vcnlPYmplY3RJbmZvIG1lbW9yeU9iamVjdEluZm8odGhpcywgb3duZXJPYmplY3RUeXBlKTsK
LSAgICAgICAgb2JqZWN0LT5yZXBvcnRNZW1vcnlVc2FnZSgmbWVtb3J5T2JqZWN0SW5mbyk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFvYmplY3QgfHwgdmlzaXRlZChvYmplY3QpKQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICBkZWZlckluc3RydW1lbnRlZFBvaW50ZXIoYWRvcHRQ
dHIobmV3IEluc3RydW1lbnRlZFBvaW50ZXI8VD4ob2JqZWN0LCBvd25lck9iamVjdFR5cGUpKSk7
Ci0gICAgfQotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OmFkZEluc3RydW1lbnRlZE9iamVjdEltcGwoY29uc3QgT3duUHRyPFQ+KiBjb25zdCYg
b2JqZWN0LCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlw
ZSBvd25pbmdUeXBlKQotewotICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAg
ICAgY291bnRPYmplY3RTaXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKLSAg
ICBhZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0VHlw
ZSwgYnlQb2ludGVyKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRPYmplY3RJbXBsKGNvbnN0IFJlZlB0cjxUPiog
Y29uc3QmIG9iamVjdCwgTWVtb3J5T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUsIE1lbW9yeU93
bmluZ1R5cGUgb3duaW5nVHlwZSkKLXsKLSAgICBpZiAob3duaW5nVHlwZSA9PSBieVBvaW50ZXIp
Ci0gICAgICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIHNpemVvZigqb2JqZWN0
KSk7Ci0gICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0SW1wbChvYmplY3QtPmdldCgpLCBvd25lck9i
amVjdFR5cGUsIGJ5UG9pbnRlcik7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0SW1wbChjb25zdCBPd25QdHI8VD4qIGNvbnN0
JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBNZW1vcnlPd25pbmdU
eXBlIG93bmluZ1R5cGUpCi17Ci0gICAgaWYgKG93bmluZ1R5cGUgPT0gYnlQb2ludGVyKQotICAg
ICAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplb2YoKm9iamVjdCkpOwot
ICAgIGFkZE9iamVjdEltcGwob2JqZWN0LT5nZXQoKSwgb3duZXJPYmplY3RUeXBlLCBieVBvaW50
ZXIpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OmFkZE9iamVjdEltcGwoY29uc3QgUmVmUHRyPFQ+KiBjb25zdCYgb2JqZWN0LCBNZW1vcnlP
YmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgTWVtb3J5T3duaW5nVHlwZSBvd25pbmdUeXBlKQot
ewotICAgIGlmIChvd25pbmdUeXBlID09IGJ5UG9pbnRlcikKLSAgICAgICAgY291bnRPYmplY3RT
aXplKG93bmVyT2JqZWN0VHlwZSwgc2l6ZW9mKCpvYmplY3QpKTsKLSAgICBhZGRPYmplY3RJbXBs
KG9iamVjdC0+Z2V0KCksIG93bmVyT2JqZWN0VHlwZSwgYnlQb2ludGVyKTsKLX0KLQotdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3RJbXBs
KGNvbnN0IFQqIGNvbnN0JiBvYmplY3QsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBl
LCBNZW1vcnlPd25pbmdUeXBlIG93bmluZ1R5cGUpCi17Ci0gICAgaWYgKCFvYmplY3QgfHwgdmlz
aXRlZChvYmplY3QpKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKG93bmluZ1R5cGUgPT0gYnlS
ZWZlcmVuY2UpCi0gICAgICAgIHJldHVybjsKLSAgICBjb3VudE9iamVjdFNpemUob3duZXJPYmpl
Y3RUeXBlLCBzaXplb2YoVCkpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoTWFwVHlwZT4K
LXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBl
JiBoYXNoTWFwLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50
T25seSkKLXsKLSAgICBpZiAodmlzaXRlZCgmaGFzaE1hcCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBjb3VudE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBjYWxjdWxhdGVDb250YWluZXJTaXpl
KGhhc2hNYXAsIGNvbnRlbnRPbmx5KSk7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEhhc2hTZXRU
eXBlPgotdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZEhhc2hTZXQoY29uc3QgSGFzaFNl
dFR5cGUmIGhhc2hTZXQsIE1lbW9yeU9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlLCBib29sIGNv
bnRlbnRPbmx5KQotewotICAgIGlmICh2aXNpdGVkKCZoYXNoU2V0KSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGNvdW50T2JqZWN0U2l6ZShvd25lck9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRhaW5l
clNpemUoaGFzaFNldCwgY29udGVudE9ubHkpKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ29s
bGVjdGlvblR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkSW5zdHJ1bWVudGVk
Q29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbGVjdGlvbiwgTWVtb3J5T2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCi17Ci0gICAgaWYgKHZpc2l0
ZWQoJmNvbGxlY3Rpb24pKQotICAgICAgICByZXR1cm47Ci0gICAgY291bnRPYmplY3RTaXplKG93
bmVyT2JqZWN0VHlwZSwgY2FsY3VsYXRlQ29udGFpbmVyU2l6ZShjb2xsZWN0aW9uLCBjb250ZW50
T25seSkpOwotICAgIHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBjb2xsZWN0aW9uLmVuZCgpOwotICAgIGZvciAodHlwZW5hbWUgQ29sbGVjdGlvblR5cGU6OmNv
bnN0X2l0ZXJhdG9yIGkgPSBjb2xsZWN0aW9uLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpCi0gICAg
ICAgIGFkZEluc3RydW1lbnRlZE9iamVjdCgqaSwgb3duZXJPYmplY3RUeXBlKTsKLX0KLQotdGVt
cGxhdGU8dHlwZW5hbWUgTWFwVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJ
bnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgTWVtb3J5T2JqZWN0VHlw
ZSBvd25lck9iamVjdFR5cGUpCi17Ci0gICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRl
cmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7Ci0gICAgICAgIGFkZEluc3Ry
dW1lbnRlZE9iamVjdChpLT5maXJzdCwgb3duZXJPYmplY3RUeXBlKTsKLSAgICAgICAgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKLSAgICB9Ci19Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIE1hcFR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgTWVtb3J5T2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUpCi17Ci0gICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gbWFwLmVuZCgpOwotICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3Rf
aXRlcmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKQotICAgICAgICBhZGRJbnN0
cnVtZW50ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOwotfQotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+Ci12b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBNZW1vcnlPYmpl
Y3RUeXBlIG93bmVyT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKLXsKLSAgICBpZiAodmlz
aXRlZCgmaGFzaFNldCkpCi0gICAgICAgIHJldHVybjsKLSAgICBzaXplX3Qgc2l6ZSA9IChjb250
ZW50T25seSA/IDAgOiBzaXplb2YoTGlzdEhhc2hTZXRUeXBlKSkgKyBoYXNoU2V0LmNhcGFjaXR5
KCkgKiBzaXplb2Yodm9pZCopICsgaGFzaFNldC5zaXplKCkgKiAoc2l6ZW9mKHR5cGVuYW1lIExp
c3RIYXNoU2V0VHlwZTo6VmFsdWVUeXBlKSArIDIgKiBzaXplb2Yodm9pZCopKTsKLSAgICBjb3Vu
dE9iamVjdFNpemUob3duZXJPYmplY3RUeXBlLCBzaXplKTsKLX0KLQotdGVtcGxhdGU8dHlwZW5h
bWUgVmVjdG9yVHlwZT4KLXZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRWZWN0b3IoY29u
c3QgVmVjdG9yVHlwZSYgdmVjdG9yLCBNZW1vcnlPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSwg
Ym9vbCBjb250ZW50T25seSkKLXsKLSAgICBpZiAoIXZlY3Rvci5kYXRhKCkgfHwgdmlzaXRlZCh2
ZWN0b3IuZGF0YSgpKSkKLSAgICAgICAgcmV0dXJuOwotICAgIGNvdW50T2JqZWN0U2l6ZShvd25l
ck9iamVjdFR5cGUsIGNhbGN1bGF0ZUNvbnRhaW5lclNpemUodmVjdG9yLCBjb250ZW50T25seSkp
OwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDb250YWluZXI+Ci1zaXplX3QgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpjYWxjdWxhdGVDb250YWluZXJTaXplKGNvbnN0IENvbnRhaW5lciYgY29udGFp
bmVyLCBib29sIGNvbnRlbnRPbmx5KQotewotICAgIHJldHVybiAoY29udGVudE9ubHkgPyAwIDog
c2l6ZW9mKGNvbnRhaW5lcikpICsgY29udGFpbmVyLmNhcGFjaXR5KCkgKiBzaXplb2YodHlwZW5h
bWUgQ29udGFpbmVyOjpWYWx1ZVR5cGUpOwotfQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9p
ZCBNZW1vcnlJbnN0cnVtZW50YXRpb246Okluc3RydW1lbnRlZFBvaW50ZXI8VD46OnByb2Nlc3Mo
TWVtb3J5SW5zdHJ1bWVudGF0aW9uKiBtZW1vcnlJbnN0cnVtZW50YXRpb24pCi17Ci0gICAgTWVt
b3J5T2JqZWN0SW5mbyBtZW1vcnlPYmplY3RJbmZvKG1lbW9yeUluc3RydW1lbnRhdGlvbiwgbV9v
d25lck9iamVjdFR5cGUpOwotICAgIG1fcG9pbnRlci0+cmVwb3J0TWVtb3J5VXNhZ2UoJm1lbW9y
eU9iamVjdEluZm8pOwotICAgIG1lbW9yeUluc3RydW1lbnRhdGlvbi0+Y291bnRPYmplY3RTaXpl
KG1lbW9yeU9iamVjdEluZm8ub2JqZWN0VHlwZSgpLCBtZW1vcnlPYmplY3RJbmZvLm9iamVjdFNp
emUoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFkZWZpbmVk
KE1lbW9yeUluc3RydW1lbnRhdGlvbl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJD
b3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggYzg2ODRiYmE3ZDY4ZDI2Njg5YzFmOTMy
NjMwMDJlZTc0YTE2MWI0OS4uOWQ2ODg1NDNlYmVkMzM3NjEwMTgxZTQwODA3ZmMwOWJkY2VjOGZj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1dlYkNvcmVNZW1vcnlJbnN0cnVtZW50
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViQ29yZU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oCkBAIC0zMSw5ICszMSw4IEBACiAjaWZuZGVmIFdlYkNvcmVNZW1vcnlJbnN0cnVtZW50
YXRpb25faAogI2RlZmluZSBXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uX2gKIAotI2luY2x1
ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgotCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3Ry
dW1lbnRhdGlvbkltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9NZW1vcnlJbnN0cnVt
ZW50YXRpb25JbXBsLmgKaW5kZXggODVjYmM1ZTQ1MDk1ZTJkMDBmYWUxOGY3OTNiY2UwYzUxM2Vi
ZWFiYS4uOWVmMGZlYzE0YTU0OTJiMTJhNmU4YzQ0NmVhMWZjZDQ5Y2RlYmFlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL01lbW9yeUluc3RydW1lbnRhdGlvbkltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbC5o
CkBAIC0zMSwxMCArMzEsMTAgQEAKICNpZm5kZWYgTWVtb3J5SW5zdHJ1bWVudGF0aW9uSW1wbF9o
CiAjZGVmaW5lIE1lbW9yeUluc3RydW1lbnRhdGlvbkltcGxfaAogCi0jaW5jbHVkZSAiTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCiAKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewo=
</data>
<flag name="review"
          id="174675"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>