<?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>140368</bug_id>
          
          <creation_ts>2015-01-12 12:38:57 -0800</creation_ts>
          <short_desc>Move DatabaseBackend functions back to Database</short_desc>
          <delta_ts>2015-01-12 13:58:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060628</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-12 12:38:57 -0800</bug_when>
    <thetext>Move DatabaseBackend functions back to Database</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060629</commentid>
    <comment_count>1</comment_count>
      <attachid>244456</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-12 12:39:39 -0800</bug_when>
    <thetext>Created attachment 244456
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060630</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-12 12:41:20 -0800</bug_when>
    <thetext>Attachment 244456 did not pass style-queue:


ERROR: Source/WebCore/Modules/webdatabase/DatabaseThread.cpp:260:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060631</commentid>
    <comment_count>3</comment_count>
      <attachid>244457</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-12 12:49:19 -0800</bug_when>
    <thetext>Created attachment 244457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060633</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-12 12:50:31 -0800</bug_when>
    <thetext>Attachment 244457 did not pass style-queue:


ERROR: Source/WebCore/Modules/webdatabase/DatabaseThread.cpp:260:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060666</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-01-12 13:58:08 -0800</bug_when>
    <thetext>Committed r178296: &lt;http://trac.webkit.org/changeset/178296&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244456</attachid>
            <date>2015-01-12 12:39:39 -0800</date>
            <delta_ts>2015-01-12 12:49:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140368-20150112123944.patch</filename>
            <type>text/plain</type>
            <size>23804</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkwMGEzNmZiMTZjOTEw
NGE1NzBmZTJhNmRlYmQzZmM3YmI5MWI1OC4uMWEyMzQzMjYwZDhlYTM2ZGY1ZDg2MTk2M2NkMDI1
YjIzZDQyYmM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE1LTAxLTEyICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBEYXRhYmFz
ZUJhY2tlbmQgZnVuY3Rpb25zIGJhY2sgdG8gRGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDM2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6
cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJh
bnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJh
bnNhY3Rpb25Db21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRyYW5zYWN0
aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6Y2xvc2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpydW5UcmFuc2FjdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmluUHJvZ3Jl
c3NUcmFuc2FjdGlvbkNvbXBsZXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUJhY2tlbmQ6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VCYWNrZW5kOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnRyYW5zYWN0aW9uQ2xpZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6dHJhbnNhY3Rpb25D
b29yZGluYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFz
ZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNl
Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNhbWVEYXRhYmFzZVByZWRpY2F0ZTo6U2FtZURh
dGFiYXNlUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjp1bnNj
aGVkdWxlRGF0YWJhc2VUYXNrcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6U1FMVHJh
bnNhY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5k
OjpkYXRhYmFzZSk6CisKKzIwMTUtMDEtMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKwogICAgICAgICBNZXJnZSBEYXRhYmFzZUJhY2tlbmRDb250ZXh0IGludG8gRGF0
YWJhc2VDb250ZXh0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDAzNjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcAppbmRleCAwMjcyOTNjYTM3YWQ3ZjM4YTFkNjZiZWRhOGY2NTJhNjZjM2ZiNGY2
Li5iNWI5YjEzOTAzNDUwYmJjNzhlN2NlMDJmZTYxYjQ1NGUyYzc0ODMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJDaGFuZ2VWZXJzaW9u
RGF0YS5oIgorI2luY2x1ZGUgIkNoYW5nZVZlcnNpb25XcmFwcGVyLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgpAQCAtOTYsNiArOTcsMTI4IEBAIERhdGFiYXNlOjp+RGF0YWJh
c2UoKQogICAgIH0KIH0KIAorYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9v
bCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYgZXJyb3IsIFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQoreworICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6
ZXI7CisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5
bmNocm9uaXplcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOworICAgIGF1dG8gdGFzayA9IERhdGFiYXNlT3BlblRhc2s6OmNyZWF0ZSh0aGlzLCBz
ZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgJnN5bmNocm9uaXplciwgZXJyb3IsIGVycm9yTWVzc2Fn
ZSwgc3VjY2Vzcyk7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNj
aGVkdWxlSW1tZWRpYXRlVGFzayhXVEY6Om1vdmUodGFzaykpOworICAgIHN5bmNocm9uaXplci53
YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKKworICAgIHJldHVybiBzdWNjZXNzOworfQorCit2b2lk
IERhdGFiYXNlOjpjbG9zZSgpCit7CisgICAgQVNTRVJUKGRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKworICAgIHsKKyAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOworCisg
ICAgICAgIC8vIENsZWFuIHVwIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gc2NoZWR1
bGVkIHlldDoKKyAgICAgICAgLy8gVHJhbnNhY3Rpb24gcGhhc2UgMSBjbGVhbnVwLiBTZWUgY29t
bWVudCBvbiAiV2hhdCBoYXBwZW5zIGlmIGEKKyAgICAgICAgLy8gdHJhbnNhY3Rpb24gaXMgaW50
ZXJydXB0ZWQ/IiBhdCB0aGUgdG9wIG9mIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAuCisgICAg
ICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IHRyYW5zYWN0aW9uOworICAgICAgICB3
aGlsZSAoIW1fdHJhbnNhY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgdHJh
bnNhY3Rpb24tPm5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIH0KKworICAgIGNsb3NlRGF0
YWJhc2UoKTsKKworICAgIC8vIERhdGFiYXNlVGhyZWFkIGtlZXBzIGRhdGFiYXNlcyBhbGl2ZSBi
eSByZWZlcmVuY2luZyB0aGVtIGluIGl0cworICAgIC8vIG1fb3BlbkRhdGFiYXNlU2V0LiBEYXRh
YmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZSgpIHdpbGwgcmVtb3ZlCisgICAgLy8gdGhp
cyBkYXRhYmFzZSBmcm9tIHRoYXQgc2V0ICh3aGljaCBlZmZlY3RpdmVseSBkZXJlZidzIGl0KS4g
V2UgaG9sZCBvbgorICAgIC8vIHRvIGl0IHdpdGggYSBsb2NhbCBwb2ludGVyIGhlcmUgZm9yIGEg
bGlpdGxlIGxvbmdlciwgc28gdGhhdCB3ZSBjYW4KKyAgICAvLyB1bnNjaGVkdWxlIGFueSBEYXRh
YmFzZVRhc2tzIHRoYXQgcmVmZXIgdG8gaXQgYmVmb3JlIHRoZSBkYXRhYmFzZSBnZXRzCisgICAg
Ly8gZGVsZXRlZC4KKyAgICBSZWY8RGF0YWJhc2VCYWNrZW5kPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9z
ZWQodGhpcyk7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnVuc2No
ZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOworfQorCitib29sIERhdGFiYXNlOjpwZXJmb3JtT3Bl
bkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiBl
cnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgaWYgKERhdGFiYXNlQmFja2VuZEJh
c2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBlcnJvciwg
ZXJyb3JNZXNzYWdlKSkgeworICAgICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNl
VGhyZWFkKCkpCisgICAgICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQo
KS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFu
c2FjdGlvbigpCit7CisgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4LnRy
eUxvY2soKSk7IC8vIExvY2tlZCBieSBjYWxsZXIuCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9u
QmFja2VuZD4gdHJhbnNhY3Rpb247CisKKyAgICBpZiAobV9pc1RyYW5zYWN0aW9uUXVldWVFbmFi
bGVkICYmICFtX3RyYW5zYWN0aW9uUXVldWUuaXNFbXB0eSgpKQorICAgICAgICB0cmFuc2FjdGlv
biA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsKKworICAgIGlmICh0cmFuc2FjdGlv
biAmJiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkgeworICAgICAgICBhdXRv
IHRhc2sgPSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKKyAg
ICAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNr
ICVwIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24o
KSk7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gdHJ1ZTsKKyAgICAgICAgZGF0
YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayhXVEY6Om1vdmUo
dGFzaykpOworICAgIH0gZWxzZQorICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZh
bHNlOworfQorCitQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gRGF0YWJhc2U6OnJ1
blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uLCBib29s
IHJlYWRPbmx5LCBjb25zdCBDaGFuZ2VWZXJzaW9uRGF0YSogZGF0YSkKK3sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgaWYgKCFtX2lz
VHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRy
PFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlcjsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAg
d3JhcHBlciA9IENoYW5nZVZlcnNpb25XcmFwcGVyOjpjcmVhdGUoZGF0YS0+b2xkVmVyc2lvbigp
LCBkYXRhLT5uZXdWZXJzaW9uKCkpOworCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZD4gdHJhbnNhY3Rpb25CYWNrZW5kID0gU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjcmVhdGUodGhp
cywgdHJhbnNhY3Rpb24sIHdyYXBwZXIsIHJlYWRPbmx5KTsKKyAgICBtX3RyYW5zYWN0aW9uUXVl
dWUuYXBwZW5kKHRyYW5zYWN0aW9uQmFja2VuZCk7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzcykKKyAgICAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOworCisgICAgcmV0dXJuIHRy
YW5zYWN0aW9uQmFja2VuZDsKK30KKwordm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlv
blN0ZXAoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbikKK3sKKyAgICBpZiAoIWRh
dGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHRhc2sgPSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9u
KTsKKyAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRh
c2sgJXAgZm9yIHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKKyAgICBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKFdURjo6bW92ZSh0
YXNrKSk7Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmluUHJvZ3Jlc3NUcmFuc2FjdGlvbkNvbXBsZXRl
ZCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0
ZXgpOworICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CisgICAgc2NoZWR1bGVU
cmFuc2FjdGlvbigpOworfQorCitTUUxUcmFuc2FjdGlvbkNsaWVudCogRGF0YWJhc2U6OnRyYW5z
YWN0aW9uQ2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0KCktPmRh
dGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ2xpZW50KCk7Cit9CisKK1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqIERhdGFiYXNlOjp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKTsKK30KKwogRGF0YWJhc2UqIERhdGFiYXNlOjpmcm9tKERhdGFiYXNl
QmFja2VuZCogYmFja2VuZCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGF0YWJhc2UqPihi
YWNrZW5kLT5tX2Zyb250ZW5kKTsKQEAgLTE2NCw3ICsyODcsNyBAQCB2b2lkIERhdGFiYXNlOjpy
dW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaywg
UmVmUHRyPAogewogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBTUUxU
cmFuc2FjdGlvbjo6Y3JlYXRlKCp0aGlzLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUo
c3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjay5jb3B5UmVmKCksIHJlYWRPbmx5KTsKIAot
ICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IHRyYW5zYWN0aW9uQmFja2VuZCA9IGJh
Y2tlbmQoKS0+cnVuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24ucmVsZWFzZSgpLCByZWFkT25seSwg
Y2hhbmdlVmVyc2lvbkRhdGEpOworICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IHRy
YW5zYWN0aW9uQmFja2VuZCA9IHJ1blRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLnJlbGVhc2UoKSwg
cmVhZE9ubHksIGNoYW5nZVZlcnNpb25EYXRhKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uQmFja2Vu
ZCAmJiBlcnJvckNhbGxiYWNrKSB7CiAgICAgICAgIFdURjo6UmVmUHRyPFNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1Byb3RlY3RvciA9IFdURjo6bW92ZShlcnJvckNh
bGxiYWNrKTsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbZXJy
b3JDYWxsYmFja1Byb3RlY3Rvcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAppbmRleCBkODRiZDFjNjA5
MDU4ZmI2MTIzZjZlOTdkYTkxYjdkYzE2YTQ4ZmI2Li4yZjE3YzgwYmEwODY4YjU3ZDFmMjI0NjE1
NDg1YjE5OGE4MDg4NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5oCkBAIC00OSwxMCArNDksMjAgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25DYWxs
YmFjazsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazsKIGNsYXNzIFZvaWRDYWxs
YmFjazsKIAotY2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMgRGF0YWJhc2VCYWNrZW5kIHsKK2NsYXNz
IERhdGFiYXNlIGZpbmFsIDogcHVibGljIERhdGFiYXNlQmFja2VuZCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RGF0YWJhc2UoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBvcGVuQW5kVmVyaWZ5VmVy
c2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25CYWNrZW5kPiBydW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uPiwgYm9vbCByZWFkT25seSwgY29uc3QgQ2hhbmdlVmVyc2lvbkRhdGEqKTsKKyAgICB2b2lk
IHNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uQmFja2VuZCopOworICAgIHZv
aWQgaW5Qcm9ncmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCk7CisKKyAgICBTUUxUcmFuc2FjdGlv
bkNsaWVudCogdHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdDsKKyAgICBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3Q7CisKICAgICAvLyBEaXJl
Y3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgb2xkVmVyc2lvbiwg
Y29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+LApAQCAtODQsNiArOTQsMTAgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPERhdGFiYXNl
QmFja2VuZD4gYmFja2VuZCgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFz
ZT4pOwogCisgICAgdmlydHVhbCBib29sIHBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVy
c2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CisKKyAgICB2b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKKwogICAgIHZvaWQgcnVuVHJhbnNh
Y3Rpb24oUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxi
YWNrLCBib29sIHJlYWRPbmx5LCBjb25zdCBDaGFuZ2VWZXJzaW9uRGF0YSogPSBudWxscHRyKTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1HZXRUYWJsZU5hbWVzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAK
aW5kZXggMTk2ZGEzMjVjYmU2MjY3MWU3ZDQ3ZGVkMDU2OGE5ZWViMDAzZGJiNS4uY2M5MjdlNzQw
MmY3ZjdhYTc5ZGQ5YmJlMjJiZDIxZDkwYjBiMTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcApAQCAtNTQsMTI5
ICs1NCw2IEBAIERhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VCYWNrZW5kKFBhc3NSZWZQdHI8RGF0
YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvCiB7CiB9CiAKLWJvb2wgRGF0YWJhc2VC
YWNrZW5kOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgRGF0
YWJhc2VUYXNrU3luY2hyb25pemVyIHN5bmNocm9uaXplcjsKLSAgICBpZiAoIWRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRo
cmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgYXV0byB0YXNrID0g
RGF0YWJhc2VPcGVuVGFzazo6Y3JlYXRlKHRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCAm
c3luY2hyb25pemVyLCBlcnJvciwgZXJyb3JNZXNzYWdlLCBzdWNjZXNzKTsKLSAgICBkYXRhYmFz
ZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURjo6
bW92ZSh0YXNrKSk7Ci0gICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwot
Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgRGF0YWJhc2VCYWNrZW5kOjpwZXJmb3Jt
T3BlbkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9y
JiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgaWYgKERhdGFiYXNlQmFja2Vu
ZEJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBlcnJv
ciwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCkpCi0gICAgICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJl
YWQoKS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMpOwotCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBEYXRhYmFzZUJhY2tlbmQ6OmNs
b3NlKCkKLXsKLSAgICBBU1NFUlQoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwotCi0gICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7Ci0KLSAgICAgICAgLy8gQ2xl
YW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiBzY2hlZHVsZWQgeWV0OgotICAg
ICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAxIGNsZWFudXAuIFNlZSBjb21tZW50IG9uICJXaGF0
IGhhcHBlbnMgaWYgYQotICAgICAgICAvLyB0cmFuc2FjdGlvbiBpcyBpbnRlcnJ1cHRlZD8iIGF0
IHRoZSB0b3Agb2YgU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcC4KLSAgICAgICAgUmVmUHRyPFNR
TFRyYW5zYWN0aW9uQmFja2VuZD4gdHJhbnNhY3Rpb247Ci0gICAgICAgIHdoaWxlICghbV90cmFu
c2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgdHJhbnNhY3Rpb24gPSBtX3Ry
YW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+bm90
aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwotICAgICAgICB9Ci0KLSAgICAgICAg
bV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgY2xvc2VEYXRhYmFzZSgpOwotCi0g
ICAgLy8gRGF0YWJhc2VUaHJlYWQga2VlcHMgZGF0YWJhc2VzIGFsaXZlIGJ5IHJlZmVyZW5jaW5n
IHRoZW0gaW4gaXRzCi0gICAgLy8gbV9vcGVuRGF0YWJhc2VTZXQuIERhdGFiYXNlVGhyZWFkOjpy
ZWNvcmREYXRhYmFzZUNsb3NlKCkgd2lsbCByZW1vdmUKLSAgICAvLyB0aGlzIGRhdGFiYXNlIGZy
b20gdGhhdCBzZXQgKHdoaWNoIGVmZmVjdGl2ZWx5IGRlcmVmJ3MgaXQpLiBXZSBob2xkIG9uCi0g
ICAgLy8gdG8gaXQgd2l0aCBhIGxvY2FsIHBvaW50ZXIgaGVyZSBmb3IgYSBsaWl0bGUgbG9uZ2Vy
LCBzbyB0aGF0IHdlIGNhbgotICAgIC8vIHVuc2NoZWR1bGUgYW55IERhdGFiYXNlVGFza3MgdGhh
dCByZWZlciB0byBpdCBiZWZvcmUgdGhlIGRhdGFiYXNlIGdldHMKLSAgICAvLyBkZWxldGVkLgot
ICAgIFJlZjxEYXRhYmFzZUJhY2tlbmQ+IHByb3RlY3QoKnRoaXMpOwotICAgIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZUNsb3NlZCh0aGlzKTsKLSAg
ICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dW5zY2hlZHVsZURhdGFiYXNl
VGFza3ModGhpcyk7Ci19Ci0KLVBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBEYXRh
YmFzZUJhY2tlbmQ6OnJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IHRy
YW5zYWN0aW9uLAotICAgIGJvb2wgcmVhZE9ubHksIGNvbnN0IENoYW5nZVZlcnNpb25EYXRhKiBk
YXRhKQotewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011
dGV4KTsKLSAgICBpZiAoIW1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyOwotICAg
IGlmIChkYXRhKQotICAgICAgICB3cmFwcGVyID0gQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmNyZWF0
ZShkYXRhLT5vbGRWZXJzaW9uKCksIGRhdGEtPm5ld1ZlcnNpb24oKSk7Ci0KLSAgICBSZWZQdHI8
U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBTUUxUcmFuc2FjdGlv
bkJhY2tlbmQ6OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbiwgd3JhcHBlciwgcmVhZE9ubHkpOwot
ICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBlbmQodHJhbnNhY3Rpb25CYWNrZW5kKTsKLSAgICBp
ZiAoIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzKQotICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9u
KCk7Ci0KLSAgICByZXR1cm4gdHJhbnNhY3Rpb25CYWNrZW5kOwotfQotCi12b2lkIERhdGFiYXNl
QmFja2VuZDo6aW5Qcm9ncmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCkKLXsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7Ci0gICAgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7Ci19Ci0K
LXZvaWQgRGF0YWJhc2VCYWNrZW5kOjpzY2hlZHVsZVRyYW5zYWN0aW9uKCkKLXsKLSAgICBBU1NF
UlQoIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgudHJ5TG9jaygpKTsgLy8gTG9ja2VkIGJ5
IGNhbGxlci4KLSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFuc2FjdGlvbjsK
LQotICAgIGlmIChtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQgJiYgIW1fdHJhbnNhY3Rpb25R
dWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVl
LnRha2VGaXJzdCgpOwotCi0gICAgaWYgKHRyYW5zYWN0aW9uICYmIGRhdGFiYXNlQ29udGV4dCgp
LT5kYXRhYmFzZVRocmVhZCgpKSB7Ci0gICAgICAgIGF1dG8gdGFzayA9IERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwotICAgICAgICBMT0coU3RvcmFnZUFQSSwg
IlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVw
XG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2FjdGlvbigpKTsKLSAgICAgICAgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKFdURjo6bW92ZSh0YXNrKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7Ci19Ci0KLXZvaWQgRGF0YWJh
c2VCYWNrZW5kOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbkJhY2tlbmQq
IHRyYW5zYWN0aW9uKQotewotICAgIGlmICghZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhy
ZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gdGFzayA9IERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwotICAgIExPRyhTdG9yYWdlQVBJLCAiU2No
ZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5zYWN0aW9uIHN0
ZXBcbiIsIHRhc2suZ2V0KCkpOwotICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT5zY2hlZHVsZVRhc2soV1RGOjptb3ZlKHRhc2spKTsKLX0KLQotU1FMVHJhbnNhY3Rpb25D
bGllbnQqIERhdGFiYXNlQmFja2VuZDo6dHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdAotewotICAg
IHJldHVybiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25D
bGllbnQoKTsKLX0KLQotU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogRGF0YWJhc2VCYWNrZW5k
Ojp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGF0YWJhc2VD
b250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFja2VuZC5oCmluZGV4IDM0NmQzM2QzNDQ1MWNiZThiYTdjMGQ4OGYxMWYwMjliM2FkOWUzNGUu
LjkwZmRlZDM0ZGE4Yjc2Mjg3MzI0MTBhOWRkYWFhY2QwZGYyZmQ1MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaApAQCAt
NTIsMjYgKzUyLDEyIEBAIGNsYXNzIERhdGFiYXNlQmFja2VuZCA6IHB1YmxpYyBEYXRhYmFzZUJh
Y2tlbmRCYXNlIHsKIHB1YmxpYzoKICAgICBEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0cjxEYXRh
YmFzZUNvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRW
ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpOwogCi0gICAgdmlydHVhbCBib29sIG9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0
VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7Ci0gICAgdm9pZCBjbG9zZSgpOwotCi0gICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ+IHJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+LCBib29sIHJl
YWRPbmx5LCBjb25zdCBDaGFuZ2VWZXJzaW9uRGF0YSopOwotICAgIHZvaWQgc2NoZWR1bGVUcmFu
c2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKik7Ci0gICAgdm9pZCBpblByb2dyZXNz
VHJhbnNhY3Rpb25Db21wbGV0ZWQoKTsKLQotICAgIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFu
c2FjdGlvbkNsaWVudCgpIGNvbnN0OwotICAgIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBjbGFzcyBEYXRh
YmFzZU9wZW5UYXNrOwogICAgIGNsYXNzIERhdGFiYXNlQ2xvc2VUYXNrOwogICAgIGNsYXNzIERh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrOwogICAgIGNsYXNzIERhdGFiYXNlVGFibGVOYW1lc1Rhc2s7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9u
SW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLQot
ICAgIHZvaWQgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwotCiAgICAgRGVxdWU8UmVmUHRyPFNRTFRy
YW5zYWN0aW9uQmFja2VuZD4+IG1fdHJhbnNhY3Rpb25RdWV1ZTsKICAgICBNdXRleCBtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4OwogICAgIGJvb2wgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
aHJlYWQuY3BwCmluZGV4IDg4MzJjYWVhNjczMDY3NjRhZGI0ODlmZDhmOTNjOWVlZTMxYjQzNjYu
LjhmMmE5ZmUxNDJlOGM4YzVjYmM0NTlhMDBlYTFkM2U5YjRjNzdmNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQog
ICAgICAgICBjbGVhbnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOwogfQogCi12b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKK3Zv
aWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlT3BlbihEYXRhYmFzZSogZGF0YWJhc2Up
CiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZElEKTsKICAgICBBU1NF
UlQoZGF0YWJhc2UpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJl
Y29yZERhdGFiYXNlT3BlbihEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogICAgIG1fb3BlbkRh
dGFiYXNlU2V0LmFkZChkYXRhYmFzZSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29y
ZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCit2b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZElEKTsKICAgICBBU1NFUlQoZGF0YWJh
c2UpOwpAQCAtMjU3LDEzICsyNTcsMTMgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6c2NoZWR1bGVJ
bW1lZGlhdGVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+IHRhc2spCiAKIGNsYXNz
IFNhbWVEYXRhYmFzZVByZWRpY2F0ZSB7CiBwdWJsaWM6Ci0gICAgU2FtZURhdGFiYXNlUHJlZGlj
YXRlKGNvbnN0IERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpIDogbV9kYXRhYmFzZShkYXRhYmFz
ZSkgeyB9CisgICAgU2FtZURhdGFiYXNlUHJlZGljYXRlKGNvbnN0IERhdGFiYXNlKiBkYXRhYmFz
ZSkgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKSB7IH0KICAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qg
RGF0YWJhc2VUYXNrJiB0YXNrKSBjb25zdCB7IHJldHVybiB0YXNrLmRhdGFiYXNlKCkgPT0gbV9k
YXRhYmFzZTsgfQogcHJpdmF0ZToKLSAgICBjb25zdCBEYXRhYmFzZUJhY2tlbmQqIG1fZGF0YWJh
c2U7CisgICAgY29uc3QgRGF0YWJhc2UqIG1fZGF0YWJhc2U7CiB9OwogCi12b2lkIERhdGFiYXNl
VGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNl
KQordm9pZCBEYXRhYmFzZVRocmVhZDo6dW5zY2hlZHVsZURhdGFiYXNlVGFza3MoRGF0YWJhc2Uq
IGRhdGFiYXNlKQogewogICAgIC8vIE5vdGUgdGhhdCB0aGUgdGhyZWFkIGxvb3AgaXMgcnVubmlu
Zywgc28gc29tZSB0YXNrcyBmb3IgdGhlIGRhdGFiYXNlCiAgICAgLy8gbWF5IHN0aWxsIGJlIGV4
ZWN1dGVkLiBUaGlzIGlzIHVuYXZvaWRhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IDc1NWE3OWQ4ZmI4OWU1NDk2
MDM3MmZhYjgyOWIzMTc0YzQwOGUwZjguLjg1ZDNmYmMxNjM4ZDU0YmVlZWQ0Y2QwM2VkMzc4YWVk
MzNhZDQ4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmgKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBEYXRhYmFzZUJhY2tlbmQ7CitjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFi
YXNlVGFzazsKIGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKIGNsYXNzIERvY3VtZW50
OwpAQCAtNTgsMTAgKzU4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+KTsKICAgICB2b2lkIHNjaGVkdWxlSW1tZWRpYXRl
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPik7IC8vIFRoaXMganVzdCBhZGRzIHRo
ZSB0YXNrIHRvIHRoZSBmcm9udCBvZiB0aGUgcXVldWUgLSB0aGUgY2FsbGVyIG5lZWRzIHRvIGJl
IGV4dHJlbWVseSBjYXJlZnVsIG5vdCB0byBjcmVhdGUgZGVhZGxvY2tzIHdoZW4gd2FpdGluZyBm
b3IgY29tcGxldGlvbi4KLSAgICB2b2lkIHVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKERhdGFiYXNl
QmFja2VuZCopOworICAgIHZvaWQgdW5zY2hlZHVsZURhdGFiYXNlVGFza3MoRGF0YWJhc2UqKTsK
IAotICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlQmFja2VuZCopOwotICAgIHZv
aWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2VCYWNrZW5kKik7CisgICAgdm9pZCByZWNv
cmREYXRhYmFzZU9wZW4oRGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlY29yZERhdGFiYXNlQ2xvc2Vk
KERhdGFiYXNlKik7CiAgICAgVGhyZWFkSWRlbnRpZmllciBnZXRUaHJlYWRJRCgpIHsgcmV0dXJu
IG1fdGhyZWFkSUQ7IH0KIAogICAgIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNs
aWVudCgpIHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25DbGllbnQuZ2V0KCk7IH0KQEAgLTkwLDcgKzkw
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gVGhpcyBzZXQga2VlcHMgdHJhY2sgb2Yg
dGhlIG9wZW4gZGF0YWJhc2VzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgb24gdGhpcyB0aHJlYWQuCi0g
ICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+PiBEYXRhYmFzZVNldDsK
KyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlPj4gRGF0YWJhc2VTZXQ7CiAgICAg
RGF0YWJhc2VTZXQgbV9vcGVuRGF0YWJhc2VTZXQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FM
VHJhbnNhY3Rpb25DbGllbnQ+IG1fdHJhbnNhY3Rpb25DbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2Vu
ZC5jcHAKaW5kZXggMjBlMjBiOTc0M2FlYjFhZDA4NGQ2YWYwYjNjZDRmNGRhNjJhNWVjZS4uMmVm
N2MxNjVlNDE5MjFiZjM3NjM4NDBhOGY3MmFmN2YwYmU0OWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kLmNwcApAQCAtMzQ2LDEyICszNDYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpj
cmVhdGUoRGF0YWJhc2VCYWNrZW5kKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gZnJv
bnRlbmQsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29sIHJl
YWRPbmx5KQorUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IFNRTFRyYW5zYWN0aW9u
QmFja2VuZDo6Y3JlYXRlKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4g
ZnJvbnRlbmQsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29s
IHJlYWRPbmx5KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kKGRiLCBmcm9udGVuZCwgd3JhcHBlciwgcmVhZE9ubHkpKTsKIH0KIAotU1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2VCYWNrZW5kKiBkYiwgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gZnJvbnRlbmQsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25XcmFwcGVyPiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQorU1FMVHJhbnNhY3Rpb25CYWNrZW5k
OjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uPiBmcm9udGVuZCwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBw
ZXIsIGJvb2wgcmVhZE9ubHkpCiAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5kKQogICAgICwgbV9k
YXRhYmFzZShkYikKICAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgK
aW5kZXggMzM4YjM2OTdkYjQ5NzkxNzllMmUwNWFiM2RhNGFkMzdkMzE2ZGNiZi4uODgxM2EyYTFh
OGY2YTRiNTI5NmRhMGIyZGUwYzljZDk5N2UzYTI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCkBA
IC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGF0YWJhc2VC
YWNrZW5kOworY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBPcmlnaW5Mb2NrOwogY2xhc3MgU1FMRXJy
b3I7CiBjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbjsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgog
CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiwgcHVibGljIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNo
aW5lPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gY3JlYXRlKERhdGFiYXNlQmFja2VuZCosIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb24+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4s
IGJvb2wgcmVhZE9ubHkpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFj
a2VuZD4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4sIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiwgYm9vbCByZWFkT25seSk7CiAKICAgICB2aXJ0
dWFsIH5TUUxUcmFuc2FjdGlvbkJhY2tlbmQoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBjb25zdDsKICNlbmRpZgogCi0g
ICAgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7
IH0KKyAgICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9
CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgeyByZXR1cm4gbV9yZWFkT25seTsgfQogICAgIHZvaWQg
bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwogCkBAIC04NCw3ICs4NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGV4ZWN1dGVTUUwoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVu
dD4sIGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1
bWVudHMsIGludCBwZXJtaXNzaW9ucyk7CiAgICAgCiBwcml2YXRlOgotICAgIFNRTFRyYW5zYWN0
aW9uQmFja2VuZChEYXRhYmFzZUJhY2tlbmQqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiwg
UGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKKyAgICBT
UUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
PiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKIAog
ICAgIHZvaWQgZG9DbGVhbnVwKCk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gbV9mcm9udGVuZDsgLy8gSGFzIGEgcmVmZXJlbmNlIGN5
Y2xlLCBhbmQgd2lsbCBicmVhayBpbiBkb0NsZWFudXAoKS4KICAgICBSZWZQdHI8U1FMU3RhdGVt
ZW50QmFja2VuZD4gbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZDsKIAotICAgIFJlZlB0cjxEYXRh
YmFzZUJhY2tlbmQ+IG1fZGF0YWJhc2U7CisgICAgUmVmUHRyPERhdGFiYXNlPiBtX2RhdGFiYXNl
OwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IG1fd3JhcHBlcjsKICAgICBSZWZQ
dHI8U1FMRXJyb3I+IG1fdHJhbnNhY3Rpb25FcnJvcjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244457</attachid>
            <date>2015-01-12 12:49:19 -0800</date>
            <delta_ts>2015-01-12 13:55:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140368-20150112124924.patch</filename>
            <type>text/plain</type>
            <size>24690</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc4Mjg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzkwMGEzNmZiMTZjOTEw
NGE1NzBmZTJhNmRlYmQzZmM3YmI5MWI1OC4uMWEyMzQzMjYwZDhlYTM2ZGY1ZDg2MTk2M2NkMDI1
YjIzZDQyYmM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE1LTAxLTEyICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBEYXRhYmFz
ZUJhY2tlbmQgZnVuY3Rpb25zIGJhY2sgdG8gRGF0YWJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MDM2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZTo6
cnVuVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnNjaGVkdWxlVHJh
bnNhY3Rpb25TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjppblByb2dyZXNzVHJh
bnNhY3Rpb25Db21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6OnRyYW5zYWN0
aW9uQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlOjp0cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbik6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6Y2xvc2UpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VCYWNrZW5kOjpydW5UcmFuc2FjdGlv
bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OmluUHJvZ3Jl
c3NUcmFuc2FjdGlvbkNvbXBsZXRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEYXRh
YmFzZUJhY2tlbmQ6OnNjaGVkdWxlVHJhbnNhY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VCYWNrZW5kOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZUJhY2tlbmQ6OnRyYW5zYWN0aW9uQ2xpZW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlQmFja2VuZDo6dHJhbnNhY3Rpb25D
b29yZGluYXRvcik6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpyZWNvcmREYXRhYmFz
ZU9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNl
Q2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNhbWVEYXRhYmFzZVByZWRpY2F0ZTo6U2FtZURh
dGFiYXNlUHJlZGljYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjp1bnNj
aGVkdWxlRGF0YWJhc2VUYXNrcyk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZVRocmVhZC5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25CYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTFRyYW5zYWN0aW9uQmFja2VuZDo6U1FMVHJh
bnNhY3Rpb25CYWNrZW5kKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5z
YWN0aW9uQmFja2VuZC5oOgorICAgICAgICAoV2ViQ29yZTo6U1FMVHJhbnNhY3Rpb25CYWNrZW5k
OjpkYXRhYmFzZSk6CisKKzIwMTUtMDEtMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KKwogICAgICAgICBNZXJnZSBEYXRhYmFzZUJhY2tlbmRDb250ZXh0IGludG8gRGF0
YWJhc2VDb250ZXh0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDAzNjUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlLmNwcAppbmRleCAwMjcyOTNjYTM3YWQ3ZjM4YTFkNjZiZWRhOGY2NTJhNjZjM2ZiNGY2
Li5iNWI5YjEzOTAzNDUwYmJjNzhlN2NlMDJmZTYxYjQ1NGUyYzc0ODMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMzIsNiArMzIs
NyBAQAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAKICNpbmNsdWRlICJDaGFuZ2VWZXJzaW9u
RGF0YS5oIgorI2luY2x1ZGUgIkNoYW5nZVZlcnNpb25XcmFwcGVyLmgiCiAjaW5jbHVkZSAiRGF0
YWJhc2VDYWxsYmFjay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlQ29udGV4dC5oIgogI2luY2x1ZGUg
IkRhdGFiYXNlTWFuYWdlci5oIgpAQCAtOTYsNiArOTcsMTI4IEBAIERhdGFiYXNlOjp+RGF0YWJh
c2UoKQogICAgIH0KIH0KIAorYm9vbCBEYXRhYmFzZTo6b3BlbkFuZFZlcmlmeVZlcnNpb24oYm9v
bCBzZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYgZXJyb3IsIFN0cmluZyYg
ZXJyb3JNZXNzYWdlKQoreworICAgIERhdGFiYXNlVGFza1N5bmNocm9uaXplciBzeW5jaHJvbml6
ZXI7CisgICAgaWYgKCFkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSB8fCBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dGVybWluYXRpb25SZXF1ZXN0ZWQoJnN5
bmNocm9uaXplcikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgc3VjY2VzcyA9
IGZhbHNlOworICAgIGF1dG8gdGFzayA9IERhdGFiYXNlT3BlblRhc2s6OmNyZWF0ZSh0aGlzLCBz
ZXRWZXJzaW9uSW5OZXdEYXRhYmFzZSwgJnN5bmNocm9uaXplciwgZXJyb3IsIGVycm9yTWVzc2Fn
ZSwgc3VjY2Vzcyk7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNj
aGVkdWxlSW1tZWRpYXRlVGFzayhXVEY6Om1vdmUodGFzaykpOworICAgIHN5bmNocm9uaXplci53
YWl0Rm9yVGFza0NvbXBsZXRpb24oKTsKKworICAgIHJldHVybiBzdWNjZXNzOworfQorCit2b2lk
IERhdGFiYXNlOjpjbG9zZSgpCit7CisgICAgQVNTRVJUKGRhdGFiYXNlQ29udGV4dCgpLT5kYXRh
YmFzZVRocmVhZCgpKTsKKyAgICBBU1NFUlQoY3VycmVudFRocmVhZCgpID09IGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5nZXRUaHJlYWRJRCgpKTsKKworICAgIHsKKyAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgpOworCisg
ICAgICAgIC8vIENsZWFuIHVwIHRyYW5zYWN0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gc2NoZWR1
bGVkIHlldDoKKyAgICAgICAgLy8gVHJhbnNhY3Rpb24gcGhhc2UgMSBjbGVhbnVwLiBTZWUgY29t
bWVudCBvbiAiV2hhdCBoYXBwZW5zIGlmIGEKKyAgICAgICAgLy8gdHJhbnNhY3Rpb24gaXMgaW50
ZXJydXB0ZWQ/IiBhdCB0aGUgdG9wIG9mIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAuCisgICAg
ICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IHRyYW5zYWN0aW9uOworICAgICAgICB3
aGlsZSAoIW1fdHJhbnNhY3Rpb25RdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVlLnRha2VGaXJzdCgpOworICAgICAgICAgICAgdHJh
bnNhY3Rpb24tPm5vdGlmeURhdGFiYXNlVGhyZWFkSXNTaHV0dGluZ0Rvd24oKTsKKyAgICAgICAg
fQorCisgICAgICAgIG1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIH0KKworICAgIGNsb3NlRGF0
YWJhc2UoKTsKKworICAgIC8vIERhdGFiYXNlVGhyZWFkIGtlZXBzIGRhdGFiYXNlcyBhbGl2ZSBi
eSByZWZlcmVuY2luZyB0aGVtIGluIGl0cworICAgIC8vIG1fb3BlbkRhdGFiYXNlU2V0LiBEYXRh
YmFzZVRocmVhZDo6cmVjb3JkRGF0YWJhc2VDbG9zZSgpIHdpbGwgcmVtb3ZlCisgICAgLy8gdGhp
cyBkYXRhYmFzZSBmcm9tIHRoYXQgc2V0ICh3aGljaCBlZmZlY3RpdmVseSBkZXJlZidzIGl0KS4g
V2UgaG9sZCBvbgorICAgIC8vIHRvIGl0IHdpdGggYSBsb2NhbCBwb2ludGVyIGhlcmUgZm9yIGEg
bGlpdGxlIGxvbmdlciwgc28gdGhhdCB3ZSBjYW4KKyAgICAvLyB1bnNjaGVkdWxlIGFueSBEYXRh
YmFzZVRhc2tzIHRoYXQgcmVmZXIgdG8gaXQgYmVmb3JlIHRoZSBkYXRhYmFzZSBnZXRzCisgICAg
Ly8gZGVsZXRlZC4KKyAgICBSZWY8RGF0YWJhc2VCYWNrZW5kPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+cmVjb3JkRGF0YWJhc2VDbG9z
ZWQodGhpcyk7CisgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnVuc2No
ZWR1bGVEYXRhYmFzZVRhc2tzKHRoaXMpOworfQorCitib29sIERhdGFiYXNlOjpwZXJmb3JtT3Bl
bkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiBl
cnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCit7CisgICAgaWYgKERhdGFiYXNlQmFja2VuZEJh
c2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBlcnJvciwg
ZXJyb3JNZXNzYWdlKSkgeworICAgICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNl
VGhyZWFkKCkpCisgICAgICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQo
KS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFu
c2FjdGlvbigpCit7CisgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011dGV4LnRy
eUxvY2soKSk7IC8vIExvY2tlZCBieSBjYWxsZXIuCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9u
QmFja2VuZD4gdHJhbnNhY3Rpb247CisKKyAgICBpZiAobV9pc1RyYW5zYWN0aW9uUXVldWVFbmFi
bGVkICYmICFtX3RyYW5zYWN0aW9uUXVldWUuaXNFbXB0eSgpKQorICAgICAgICB0cmFuc2FjdGlv
biA9IG1fdHJhbnNhY3Rpb25RdWV1ZS50YWtlRmlyc3QoKTsKKworICAgIGlmICh0cmFuc2FjdGlv
biAmJiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKSkgeworICAgICAgICBhdXRv
IHRhc2sgPSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9uKTsKKyAg
ICAgICAgTE9HKFN0b3JhZ2VBUEksICJTY2hlZHVsaW5nIERhdGFiYXNlVHJhbnNhY3Rpb25UYXNr
ICVwIGZvciB0cmFuc2FjdGlvbiAlcFxuIiwgdGFzay5nZXQoKSwgdGFzay0+dHJhbnNhY3Rpb24o
KSk7CisgICAgICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gdHJ1ZTsKKyAgICAgICAgZGF0
YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnNjaGVkdWxlVGFzayhXVEY6Om1vdmUo
dGFzaykpOworICAgIH0gZWxzZQorICAgICAgICBtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IGZh
bHNlOworfQorCitQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gRGF0YWJhc2U6OnJ1
blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uLCBib29s
IHJlYWRPbmx5LCBjb25zdCBDaGFuZ2VWZXJzaW9uRGF0YSogZGF0YSkKK3sKKyAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7CisgICAgaWYgKCFtX2lz
VHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRy
PFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4gd3JhcHBlcjsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAg
d3JhcHBlciA9IENoYW5nZVZlcnNpb25XcmFwcGVyOjpjcmVhdGUoZGF0YS0+b2xkVmVyc2lvbigp
LCBkYXRhLT5uZXdWZXJzaW9uKCkpOworCisgICAgUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2Vu
ZD4gdHJhbnNhY3Rpb25CYWNrZW5kID0gU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpjcmVhdGUodGhp
cywgdHJhbnNhY3Rpb24sIHdyYXBwZXIsIHJlYWRPbmx5KTsKKyAgICBtX3RyYW5zYWN0aW9uUXVl
dWUuYXBwZW5kKHRyYW5zYWN0aW9uQmFja2VuZCk7CisgICAgaWYgKCFtX3RyYW5zYWN0aW9uSW5Q
cm9ncmVzcykKKyAgICAgICAgc2NoZWR1bGVUcmFuc2FjdGlvbigpOworCisgICAgcmV0dXJuIHRy
YW5zYWN0aW9uQmFja2VuZDsKK30KKwordm9pZCBEYXRhYmFzZTo6c2NoZWR1bGVUcmFuc2FjdGlv
blN0ZXAoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbikKK3sKKyAgICBpZiAoIWRh
dGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIHRhc2sgPSBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzazo6Y3JlYXRlKHRyYW5zYWN0aW9u
KTsKKyAgICBMT0coU3RvcmFnZUFQSSwgIlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRh
c2sgJXAgZm9yIHRoZSB0cmFuc2FjdGlvbiBzdGVwXG4iLCB0YXNrLmdldCgpKTsKKyAgICBkYXRh
YmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKFdURjo6bW92ZSh0
YXNrKSk7Cit9CisKK3ZvaWQgRGF0YWJhc2U6OmluUHJvZ3Jlc3NUcmFuc2FjdGlvbkNvbXBsZXRl
ZCgpCit7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0
ZXgpOworICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7CisgICAgc2NoZWR1bGVU
cmFuc2FjdGlvbigpOworfQorCitTUUxUcmFuc2FjdGlvbkNsaWVudCogRGF0YWJhc2U6OnRyYW5z
YWN0aW9uQ2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0KCktPmRh
dGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ2xpZW50KCk7Cit9CisKK1NRTFRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IqIERhdGFiYXNlOjp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKTsKK30KKwogRGF0YWJhc2UqIERhdGFiYXNlOjpmcm9tKERhdGFiYXNl
QmFja2VuZCogYmFja2VuZCkKIHsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGF0YWJhc2UqPihi
YWNrZW5kLT5tX2Zyb250ZW5kKTsKQEAgLTE2NCw3ICsyODcsNyBAQCB2b2lkIERhdGFiYXNlOjpy
dW5UcmFuc2FjdGlvbihSZWZQdHI8U1FMVHJhbnNhY3Rpb25DYWxsYmFjaz4mJiBjYWxsYmFjaywg
UmVmUHRyPAogewogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBTUUxU
cmFuc2FjdGlvbjo6Y3JlYXRlKCp0aGlzLCBXVEY6Om1vdmUoY2FsbGJhY2spLCBXVEY6Om1vdmUo
c3VjY2Vzc0NhbGxiYWNrKSwgZXJyb3JDYWxsYmFjay5jb3B5UmVmKCksIHJlYWRPbmx5KTsKIAot
ICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IHRyYW5zYWN0aW9uQmFja2VuZCA9IGJh
Y2tlbmQoKS0+cnVuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24ucmVsZWFzZSgpLCByZWFkT25seSwg
Y2hhbmdlVmVyc2lvbkRhdGEpOworICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IHRy
YW5zYWN0aW9uQmFja2VuZCA9IHJ1blRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLnJlbGVhc2UoKSwg
cmVhZE9ubHksIGNoYW5nZVZlcnNpb25EYXRhKTsKICAgICBpZiAoIXRyYW5zYWN0aW9uQmFja2Vu
ZCAmJiBlcnJvckNhbGxiYWNrKSB7CiAgICAgICAgIFdURjo6UmVmUHRyPFNRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFja1Byb3RlY3RvciA9IFdURjo6bW92ZShlcnJvckNh
bGxiYWNrKTsKICAgICAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0VGFzayhbZXJy
b3JDYWxsYmFja1Byb3RlY3Rvcl0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuaAppbmRleCBkODRiZDFjNjA5
MDU4ZmI2MTIzZjZlOTdkYTkxYjdkYzE2YTQ4ZmI2Li4yZjE3YzgwYmEwODY4YjU3ZDFmMjI0NjE1
NDg1YjE5OGE4MDg4NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5oCkBAIC00OSwxMCArNDksMjAgQEAgY2xhc3MgU1FMVHJhbnNhY3Rpb25DYWxs
YmFjazsKIGNsYXNzIFNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjazsKIGNsYXNzIFZvaWRDYWxs
YmFjazsKIAotY2xhc3MgRGF0YWJhc2UgOiBwdWJsaWMgRGF0YWJhc2VCYWNrZW5kIHsKK2NsYXNz
IERhdGFiYXNlIGZpbmFsIDogcHVibGljIERhdGFiYXNlQmFja2VuZCB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCB+RGF0YWJhc2UoKTsKIAorICAgIHZpcnR1YWwgYm9vbCBvcGVuQW5kVmVyaWZ5VmVy
c2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9yJiwgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpOworICAgIHZvaWQgY2xvc2UoKTsKKworICAgIFBhc3NSZWZQdHI8U1FM
VHJhbnNhY3Rpb25CYWNrZW5kPiBydW5UcmFuc2FjdGlvbihQYXNzUmVmUHRyPFNRTFRyYW5zYWN0
aW9uPiwgYm9vbCByZWFkT25seSwgY29uc3QgQ2hhbmdlVmVyc2lvbkRhdGEqKTsKKyAgICB2b2lk
IHNjaGVkdWxlVHJhbnNhY3Rpb25TdGVwKFNRTFRyYW5zYWN0aW9uQmFja2VuZCopOworICAgIHZv
aWQgaW5Qcm9ncmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCk7CisKKyAgICBTUUxUcmFuc2FjdGlv
bkNsaWVudCogdHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdDsKKyAgICBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3Q7CisKICAgICAvLyBEaXJl
Y3Qgc3VwcG9ydCBmb3IgdGhlIERPTSBBUEkKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJzaW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCBjaGFuZ2VWZXJzaW9uKGNvbnN0IFN0cmluZyYgb2xkVmVyc2lvbiwg
Y29uc3QgU3RyaW5nJiBuZXdWZXJzaW9uLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJh
Y2s+LApAQCAtODQsNiArOTQsMTAgQEAgcHJpdmF0ZToKICAgICBQYXNzUmVmUHRyPERhdGFiYXNl
QmFja2VuZD4gYmFja2VuZCgpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlPiBjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8RGF0YWJhc2VCYWNrZW5kQmFz
ZT4pOwogCisgICAgdmlydHVhbCBib29sIHBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2V0VmVy
c2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7
CisKKyAgICB2b2lkIHNjaGVkdWxlVHJhbnNhY3Rpb24oKTsKKwogICAgIHZvaWQgcnVuVHJhbnNh
Y3Rpb24oUmVmUHRyPFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2s+JiYsIFJlZlB0cjxTUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2s+JiYsIFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgc3VjY2Vzc0NhbGxi
YWNrLCBib29sIHJlYWRPbmx5LCBjb25zdCBDaGFuZ2VWZXJzaW9uRGF0YSogPSBudWxscHRyKTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHBlcmZvcm1HZXRUYWJsZU5hbWVzKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlQmFja2VuZC5jcHAK
aW5kZXggMTk2ZGEzMjVjYmU2MjY3MWU3ZDQ3ZGVkMDU2OGE5ZWViMDAzZGJiNS4uY2M5MjdlNzQw
MmY3ZjdhYTc5ZGQ5YmJlMjJiZDIxZDkwYjBiMTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmNwcApAQCAtNTQsMTI5
ICs1NCw2IEBAIERhdGFiYXNlQmFja2VuZDo6RGF0YWJhc2VCYWNrZW5kKFBhc3NSZWZQdHI8RGF0
YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQsIGNvCiB7CiB9CiAKLWJvb2wgRGF0YWJhc2VC
YWNrZW5kOjpvcGVuQW5kVmVyaWZ5VmVyc2lvbihib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNl
LCBEYXRhYmFzZUVycm9yJiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgRGF0
YWJhc2VUYXNrU3luY2hyb25pemVyIHN5bmNocm9uaXplcjsKLSAgICBpZiAoIWRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpIHx8IGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRo
cmVhZCgpLT50ZXJtaW5hdGlvblJlcXVlc3RlZCgmc3luY2hyb25pemVyKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgYXV0byB0YXNrID0g
RGF0YWJhc2VPcGVuVGFzazo6Y3JlYXRlKHRoaXMsIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCAm
c3luY2hyb25pemVyLCBlcnJvciwgZXJyb3JNZXNzYWdlLCBzdWNjZXNzKTsKLSAgICBkYXRhYmFz
ZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+c2NoZWR1bGVJbW1lZGlhdGVUYXNrKFdURjo6
bW92ZSh0YXNrKSk7Ci0gICAgc3luY2hyb25pemVyLndhaXRGb3JUYXNrQ29tcGxldGlvbigpOwot
Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWJvb2wgRGF0YWJhc2VCYWNrZW5kOjpwZXJmb3Jt
T3BlbkFuZFZlcmlmeShib29sIHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBEYXRhYmFzZUVycm9y
JiBlcnJvciwgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgaWYgKERhdGFiYXNlQmFja2Vu
ZEJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KHNldFZlcnNpb25Jbk5ld0RhdGFiYXNlLCBlcnJv
ciwgZXJyb3JNZXNzYWdlKSkgewotICAgICAgICBpZiAoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCkpCi0gICAgICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJl
YWQoKS0+cmVjb3JkRGF0YWJhc2VPcGVuKHRoaXMpOwotCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBEYXRhYmFzZUJhY2tlbmQ6OmNs
b3NlKCkKLXsKLSAgICBBU1NFUlQoZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCkp
OwotICAgIEFTU0VSVChjdXJyZW50VGhyZWFkKCkgPT0gZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCktPmdldFRocmVhZElEKCkpOwotCi0gICAgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7Ci0KLSAgICAgICAgLy8gQ2xl
YW4gdXAgdHJhbnNhY3Rpb25zIHRoYXQgaGF2ZSBub3QgYmVlbiBzY2hlZHVsZWQgeWV0OgotICAg
ICAgICAvLyBUcmFuc2FjdGlvbiBwaGFzZSAxIGNsZWFudXAuIFNlZSBjb21tZW50IG9uICJXaGF0
IGhhcHBlbnMgaWYgYQotICAgICAgICAvLyB0cmFuc2FjdGlvbiBpcyBpbnRlcnJ1cHRlZD8iIGF0
IHRoZSB0b3Agb2YgU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmNwcC4KLSAgICAgICAgUmVmUHRyPFNR
TFRyYW5zYWN0aW9uQmFja2VuZD4gdHJhbnNhY3Rpb247Ci0gICAgICAgIHdoaWxlICghbV90cmFu
c2FjdGlvblF1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgdHJhbnNhY3Rpb24gPSBtX3Ry
YW5zYWN0aW9uUXVldWUudGFrZUZpcnN0KCk7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+bm90
aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwotICAgICAgICB9Ci0KLSAgICAgICAg
bV9pc1RyYW5zYWN0aW9uUXVldWVFbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIG1fdHJhbnNhY3Rp
b25JblByb2dyZXNzID0gZmFsc2U7Ci0gICAgfQotCi0gICAgY2xvc2VEYXRhYmFzZSgpOwotCi0g
ICAgLy8gRGF0YWJhc2VUaHJlYWQga2VlcHMgZGF0YWJhc2VzIGFsaXZlIGJ5IHJlZmVyZW5jaW5n
IHRoZW0gaW4gaXRzCi0gICAgLy8gbV9vcGVuRGF0YWJhc2VTZXQuIERhdGFiYXNlVGhyZWFkOjpy
ZWNvcmREYXRhYmFzZUNsb3NlKCkgd2lsbCByZW1vdmUKLSAgICAvLyB0aGlzIGRhdGFiYXNlIGZy
b20gdGhhdCBzZXQgKHdoaWNoIGVmZmVjdGl2ZWx5IGRlcmVmJ3MgaXQpLiBXZSBob2xkIG9uCi0g
ICAgLy8gdG8gaXQgd2l0aCBhIGxvY2FsIHBvaW50ZXIgaGVyZSBmb3IgYSBsaWl0bGUgbG9uZ2Vy
LCBzbyB0aGF0IHdlIGNhbgotICAgIC8vIHVuc2NoZWR1bGUgYW55IERhdGFiYXNlVGFza3MgdGhh
dCByZWZlciB0byBpdCBiZWZvcmUgdGhlIGRhdGFiYXNlIGdldHMKLSAgICAvLyBkZWxldGVkLgot
ICAgIFJlZjxEYXRhYmFzZUJhY2tlbmQ+IHByb3RlY3QoKnRoaXMpOwotICAgIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNvcmREYXRhYmFzZUNsb3NlZCh0aGlzKTsKLSAg
ICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dW5zY2hlZHVsZURhdGFiYXNl
VGFza3ModGhpcyk7Ci19Ci0KLVBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiBEYXRh
YmFzZUJhY2tlbmQ6OnJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+IHRy
YW5zYWN0aW9uLAotICAgIGJvb2wgcmVhZE9ubHksIGNvbnN0IENoYW5nZVZlcnNpb25EYXRhKiBk
YXRhKQotewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3RyYW5zYWN0aW9uSW5Qcm9ncmVzc011
dGV4KTsKLSAgICBpZiAoIW1faXNUcmFuc2FjdGlvblF1ZXVlRW5hYmxlZCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyOwotICAg
IGlmIChkYXRhKQotICAgICAgICB3cmFwcGVyID0gQ2hhbmdlVmVyc2lvbldyYXBwZXI6OmNyZWF0
ZShkYXRhLT5vbGRWZXJzaW9uKCksIGRhdGEtPm5ld1ZlcnNpb24oKSk7Ci0KLSAgICBSZWZQdHI8
U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFuc2FjdGlvbkJhY2tlbmQgPSBTUUxUcmFuc2FjdGlv
bkJhY2tlbmQ6OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbiwgd3JhcHBlciwgcmVhZE9ubHkpOwot
ICAgIG1fdHJhbnNhY3Rpb25RdWV1ZS5hcHBlbmQodHJhbnNhY3Rpb25CYWNrZW5kKTsKLSAgICBp
ZiAoIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzKQotICAgICAgICBzY2hlZHVsZVRyYW5zYWN0aW9u
KCk7Ci0KLSAgICByZXR1cm4gdHJhbnNhY3Rpb25CYWNrZW5kOwotfQotCi12b2lkIERhdGFiYXNl
QmFja2VuZDo6aW5Qcm9ncmVzc1RyYW5zYWN0aW9uQ29tcGxldGVkKCkKLXsKLSAgICBNdXRleExv
Y2tlciBsb2NrZXIobV90cmFuc2FjdGlvbkluUHJvZ3Jlc3NNdXRleCk7Ci0gICAgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSBmYWxzZTsKLSAgICBzY2hlZHVsZVRyYW5zYWN0aW9uKCk7Ci19Ci0K
LXZvaWQgRGF0YWJhc2VCYWNrZW5kOjpzY2hlZHVsZVRyYW5zYWN0aW9uKCkKLXsKLSAgICBBU1NF
UlQoIW1fdHJhbnNhY3Rpb25JblByb2dyZXNzTXV0ZXgudHJ5TG9jaygpKTsgLy8gTG9ja2VkIGJ5
IGNhbGxlci4KLSAgICBSZWZQdHI8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiB0cmFuc2FjdGlvbjsK
LQotICAgIGlmIChtX2lzVHJhbnNhY3Rpb25RdWV1ZUVuYWJsZWQgJiYgIW1fdHJhbnNhY3Rpb25R
dWV1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvblF1ZXVl
LnRha2VGaXJzdCgpOwotCi0gICAgaWYgKHRyYW5zYWN0aW9uICYmIGRhdGFiYXNlQ29udGV4dCgp
LT5kYXRhYmFzZVRocmVhZCgpKSB7Ci0gICAgICAgIGF1dG8gdGFzayA9IERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwotICAgICAgICBMT0coU3RvcmFnZUFQSSwg
IlNjaGVkdWxpbmcgRGF0YWJhc2VUcmFuc2FjdGlvblRhc2sgJXAgZm9yIHRyYW5zYWN0aW9uICVw
XG4iLCB0YXNrLmdldCgpLCB0YXNrLT50cmFuc2FjdGlvbigpKTsKLSAgICAgICAgbV90cmFuc2Fj
dGlvbkluUHJvZ3Jlc3MgPSB0cnVlOwotICAgICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJh
c2VUaHJlYWQoKS0+c2NoZWR1bGVUYXNrKFdURjo6bW92ZSh0YXNrKSk7Ci0gICAgfSBlbHNlCi0g
ICAgICAgIG1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gZmFsc2U7Ci19Ci0KLXZvaWQgRGF0YWJh
c2VCYWNrZW5kOjpzY2hlZHVsZVRyYW5zYWN0aW9uU3RlcChTUUxUcmFuc2FjdGlvbkJhY2tlbmQq
IHRyYW5zYWN0aW9uKQotewotICAgIGlmICghZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhy
ZWFkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gdGFzayA9IERhdGFiYXNlVHJhbnNh
Y3Rpb25UYXNrOjpjcmVhdGUodHJhbnNhY3Rpb24pOwotICAgIExPRyhTdG9yYWdlQVBJLCAiU2No
ZWR1bGluZyBEYXRhYmFzZVRyYW5zYWN0aW9uVGFzayAlcCBmb3IgdGhlIHRyYW5zYWN0aW9uIHN0
ZXBcbiIsIHRhc2suZ2V0KCkpOwotICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT5zY2hlZHVsZVRhc2soV1RGOjptb3ZlKHRhc2spKTsKLX0KLQotU1FMVHJhbnNhY3Rpb25D
bGllbnQqIERhdGFiYXNlQmFja2VuZDo6dHJhbnNhY3Rpb25DbGllbnQoKSBjb25zdAotewotICAg
IHJldHVybiBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VUaHJlYWQoKS0+dHJhbnNhY3Rpb25D
bGllbnQoKTsKLX0KLQotU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvciogRGF0YWJhc2VCYWNrZW5k
Ojp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZGF0YWJhc2VD
b250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKLX0K
LQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNRTF9EQVRBQkFT
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
QmFja2VuZC5oCmluZGV4IDM0NmQzM2QzNDQ1MWNiZThiYTdjMGQ4OGYxMWYwMjliM2FkOWUzNGUu
LjkwZmRlZDM0ZGE4Yjc2Mjg3MzI0MTBhOWRkYWFhY2QwZGYyZmQ1MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaApAQCAt
NTIsMjYgKzUyLDEyIEBAIGNsYXNzIERhdGFiYXNlQmFja2VuZCA6IHB1YmxpYyBEYXRhYmFzZUJh
Y2tlbmRCYXNlIHsKIHB1YmxpYzoKICAgICBEYXRhYmFzZUJhY2tlbmQoUGFzc1JlZlB0cjxEYXRh
YmFzZUNvbnRleHQ+LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgZXhwZWN0ZWRW
ZXJzaW9uLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRl
ZFNpemUpOwogCi0gICAgdmlydHVhbCBib29sIG9wZW5BbmRWZXJpZnlWZXJzaW9uKGJvb2wgc2V0
VmVyc2lvbkluTmV3RGF0YWJhc2UsIERhdGFiYXNlRXJyb3ImLCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7Ci0gICAgdm9pZCBjbG9zZSgpOwotCi0gICAgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkJh
Y2tlbmQ+IHJ1blRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb24+LCBib29sIHJl
YWRPbmx5LCBjb25zdCBDaGFuZ2VWZXJzaW9uRGF0YSopOwotICAgIHZvaWQgc2NoZWR1bGVUcmFu
c2FjdGlvblN0ZXAoU1FMVHJhbnNhY3Rpb25CYWNrZW5kKik7Ci0gICAgdm9pZCBpblByb2dyZXNz
VHJhbnNhY3Rpb25Db21wbGV0ZWQoKTsKLQotICAgIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFu
c2FjdGlvbkNsaWVudCgpIGNvbnN0OwotICAgIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBjbGFzcyBEYXRh
YmFzZU9wZW5UYXNrOwogICAgIGNsYXNzIERhdGFiYXNlQ2xvc2VUYXNrOwogICAgIGNsYXNzIERh
dGFiYXNlVHJhbnNhY3Rpb25UYXNrOwogICAgIGNsYXNzIERhdGFiYXNlVGFibGVOYW1lc1Rhc2s7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybU9wZW5BbmRWZXJpZnkoYm9vbCBzZXRWZXJzaW9u
SW5OZXdEYXRhYmFzZSwgRGF0YWJhc2VFcnJvciYsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLQot
ICAgIHZvaWQgc2NoZWR1bGVUcmFuc2FjdGlvbigpOwotCiAgICAgRGVxdWU8UmVmUHRyPFNRTFRy
YW5zYWN0aW9uQmFja2VuZD4+IG1fdHJhbnNhY3Rpb25RdWV1ZTsKICAgICBNdXRleCBtX3RyYW5z
YWN0aW9uSW5Qcm9ncmVzc011dGV4OwogICAgIGJvb2wgbV90cmFuc2FjdGlvbkluUHJvZ3Jlc3M7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
aHJlYWQuY3BwCmluZGV4IDg4MzJjYWVhNjczMDY3NjRhZGI0ODlmZDhmOTNjOWVlZTMxYjQzNjYu
LjhmMmE5ZmUxNDJlOGM4YzVjYmM0NTlhMDBlYTFkM2U5YjRjNzdmNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBA
IC0yMjcsNyArMjI3LDcgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWQoKQog
ICAgICAgICBjbGVhbnVwU3luYy0+dGFza0NvbXBsZXRlZCgpOwogfQogCi12b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZU9wZW4oRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSkKK3Zv
aWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29yZERhdGFiYXNlT3BlbihEYXRhYmFzZSogZGF0YWJhc2Up
CiB7CiAgICAgQVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZElEKTsKICAgICBBU1NF
UlQoZGF0YWJhc2UpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJl
Y29yZERhdGFiYXNlT3BlbihEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNlKQogICAgIG1fb3BlbkRh
dGFiYXNlU2V0LmFkZChkYXRhYmFzZSk7CiB9CiAKLXZvaWQgRGF0YWJhc2VUaHJlYWQ6OnJlY29y
ZERhdGFiYXNlQ2xvc2VkKERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpCit2b2lkIERhdGFiYXNl
VGhyZWFkOjpyZWNvcmREYXRhYmFzZUNsb3NlZChEYXRhYmFzZSogZGF0YWJhc2UpCiB7CiAgICAg
QVNTRVJUKGN1cnJlbnRUaHJlYWQoKSA9PSBtX3RocmVhZElEKTsKICAgICBBU1NFUlQoZGF0YWJh
c2UpOwpAQCAtMjU3LDEzICsyNTcsMTMgQEAgdm9pZCBEYXRhYmFzZVRocmVhZDo6c2NoZWR1bGVJ
bW1lZGlhdGVUYXNrKHN0ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+IHRhc2spCiAKIGNsYXNz
IFNhbWVEYXRhYmFzZVByZWRpY2F0ZSB7CiBwdWJsaWM6Ci0gICAgU2FtZURhdGFiYXNlUHJlZGlj
YXRlKGNvbnN0IERhdGFiYXNlQmFja2VuZCogZGF0YWJhc2UpIDogbV9kYXRhYmFzZShkYXRhYmFz
ZSkgeyB9CisgICAgU2FtZURhdGFiYXNlUHJlZGljYXRlKGNvbnN0IERhdGFiYXNlKiBkYXRhYmFz
ZSkgOiBtX2RhdGFiYXNlKGRhdGFiYXNlKSB7IH0KICAgICBib29sIG9wZXJhdG9yKCkoY29uc3Qg
RGF0YWJhc2VUYXNrJiB0YXNrKSBjb25zdCB7IHJldHVybiB0YXNrLmRhdGFiYXNlKCkgPT0gbV9k
YXRhYmFzZTsgfQogcHJpdmF0ZToKLSAgICBjb25zdCBEYXRhYmFzZUJhY2tlbmQqIG1fZGF0YWJh
c2U7CisgICAgY29uc3QgRGF0YWJhc2UqIG1fZGF0YWJhc2U7CiB9OwogCi12b2lkIERhdGFiYXNl
VGhyZWFkOjp1bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyhEYXRhYmFzZUJhY2tlbmQqIGRhdGFiYXNl
KQordm9pZCBEYXRhYmFzZVRocmVhZDo6dW5zY2hlZHVsZURhdGFiYXNlVGFza3MoRGF0YWJhc2Uq
IGRhdGFiYXNlKQogewogICAgIC8vIE5vdGUgdGhhdCB0aGUgdGhyZWFkIGxvb3AgaXMgcnVubmlu
Zywgc28gc29tZSB0YXNrcyBmb3IgdGhlIGRhdGFiYXNlCiAgICAgLy8gbWF5IHN0aWxsIGJlIGV4
ZWN1dGVkLiBUaGlzIGlzIHVuYXZvaWRhYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IDc1NWE3OWQ4ZmI4OWU1NDk2
MDM3MmZhYjgyOWIzMTc0YzQwOGUwZjguLjg1ZDNmYmMxNjM4ZDU0YmVlZWQ0Y2QwM2VkMzc4YWVk
MzNhZDQ4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmgKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBEYXRhYmFzZUJhY2tlbmQ7CitjbGFzcyBEYXRhYmFzZTsKIGNsYXNzIERhdGFi
YXNlVGFzazsKIGNsYXNzIERhdGFiYXNlVGFza1N5bmNocm9uaXplcjsKIGNsYXNzIERvY3VtZW50
OwpAQCAtNTgsMTAgKzU4LDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2NoZWR1bGVUYXNrKHN0
ZDo6dW5pcXVlX3B0cjxEYXRhYmFzZVRhc2s+KTsKICAgICB2b2lkIHNjaGVkdWxlSW1tZWRpYXRl
VGFzayhzdGQ6OnVuaXF1ZV9wdHI8RGF0YWJhc2VUYXNrPik7IC8vIFRoaXMganVzdCBhZGRzIHRo
ZSB0YXNrIHRvIHRoZSBmcm9udCBvZiB0aGUgcXVldWUgLSB0aGUgY2FsbGVyIG5lZWRzIHRvIGJl
IGV4dHJlbWVseSBjYXJlZnVsIG5vdCB0byBjcmVhdGUgZGVhZGxvY2tzIHdoZW4gd2FpdGluZyBm
b3IgY29tcGxldGlvbi4KLSAgICB2b2lkIHVuc2NoZWR1bGVEYXRhYmFzZVRhc2tzKERhdGFiYXNl
QmFja2VuZCopOworICAgIHZvaWQgdW5zY2hlZHVsZURhdGFiYXNlVGFza3MoRGF0YWJhc2UqKTsK
IAotICAgIHZvaWQgcmVjb3JkRGF0YWJhc2VPcGVuKERhdGFiYXNlQmFja2VuZCopOwotICAgIHZv
aWQgcmVjb3JkRGF0YWJhc2VDbG9zZWQoRGF0YWJhc2VCYWNrZW5kKik7CisgICAgdm9pZCByZWNv
cmREYXRhYmFzZU9wZW4oRGF0YWJhc2UqKTsKKyAgICB2b2lkIHJlY29yZERhdGFiYXNlQ2xvc2Vk
KERhdGFiYXNlKik7CiAgICAgVGhyZWFkSWRlbnRpZmllciBnZXRUaHJlYWRJRCgpIHsgcmV0dXJu
IG1fdGhyZWFkSUQ7IH0KIAogICAgIFNRTFRyYW5zYWN0aW9uQ2xpZW50KiB0cmFuc2FjdGlvbkNs
aWVudCgpIHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25DbGllbnQuZ2V0KCk7IH0KQEAgLTkwLDcgKzkw
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgLy8gVGhpcyBzZXQga2VlcHMgdHJhY2sgb2Yg
dGhlIG9wZW4gZGF0YWJhc2VzIHRoYXQgaGF2ZSBiZWVuIHVzZWQgb24gdGhpcyB0aHJlYWQuCi0g
ICAgdHlwZWRlZiBIYXNoU2V0PFJlZlB0cjxEYXRhYmFzZUJhY2tlbmQ+PiBEYXRhYmFzZVNldDsK
KyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPERhdGFiYXNlPj4gRGF0YWJhc2VTZXQ7CiAgICAg
RGF0YWJhc2VTZXQgbV9vcGVuRGF0YWJhc2VTZXQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1FM
VHJhbnNhY3Rpb25DbGllbnQ+IG1fdHJhbnNhY3Rpb25DbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2Vu
ZC5jcHAKaW5kZXggMjBlMjBiOTc0M2FlYjFhZDA4NGQ2YWYwYjNjZDRmNGRhNjJhNWVjZS4uMmVm
N2MxNjVlNDE5MjFiZjM3NjM4NDBhOGY3MmFmN2YwYmU0OWJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kLmNwcApAQCAtMzQ2LDEyICszNDYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Q
YXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gU1FMVHJhbnNhY3Rpb25CYWNrZW5kOjpj
cmVhdGUoRGF0YWJhc2VCYWNrZW5kKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gZnJv
bnRlbmQsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29sIHJl
YWRPbmx5KQorUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbkJhY2tlbmQ+IFNRTFRyYW5zYWN0aW9u
QmFja2VuZDo6Y3JlYXRlKERhdGFiYXNlKiBkYiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4g
ZnJvbnRlbmQsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiB3cmFwcGVyLCBib29s
IHJlYWRPbmx5KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kKGRiLCBmcm9udGVuZCwgd3JhcHBlciwgcmVhZE9ubHkpKTsKIH0KIAotU1FMVHJhbnNhY3Rp
b25CYWNrZW5kOjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2VCYWNrZW5kKiBkYiwgUGFz
c1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4gZnJvbnRlbmQsIFBhc3NSZWZQdHI8U1FMVHJhbnNhY3Rp
b25XcmFwcGVyPiB3cmFwcGVyLCBib29sIHJlYWRPbmx5KQorU1FMVHJhbnNhY3Rpb25CYWNrZW5k
OjpTUUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2UqIGRiLCBQYXNzUmVmUHRyPFNRTFRyYW5z
YWN0aW9uPiBmcm9udGVuZCwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IHdyYXBw
ZXIsIGJvb2wgcmVhZE9ubHkpCiAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5kKQogICAgICwgbV9k
YXRhYmFzZShkYikKICAgICAsIG1fd3JhcHBlcih3cmFwcGVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmgK
aW5kZXggMzM4YjM2OTdkYjQ5NzkxNzllMmUwNWFiM2RhNGFkMzdkMzE2ZGNiZi4uODgxM2EyYTFh
OGY2YTRiNTI5NmRhMGIyZGUwYzljZDk5N2UzYTI4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZC5oCkBA
IC00MCw3ICs0MCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGF0YWJhc2VC
YWNrZW5kOworY2xhc3MgRGF0YWJhc2U7CiBjbGFzcyBPcmlnaW5Mb2NrOwogY2xhc3MgU1FMRXJy
b3I7CiBjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbjsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgog
CiBjbGFzcyBTUUxUcmFuc2FjdGlvbkJhY2tlbmQgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U1FMVHJhbnNhY3Rpb25CYWNrZW5kPiwgcHVibGljIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNo
aW5lPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNRTFRyYW5zYWN0aW9uQmFja2VuZD4gY3JlYXRlKERhdGFiYXNlQmFja2VuZCosIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb24+LCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uV3JhcHBlcj4s
IGJvb2wgcmVhZE9ubHkpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uQmFj
a2VuZD4gY3JlYXRlKERhdGFiYXNlKiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbj4sIFBhc3NS
ZWZQdHI8U1FMVHJhbnNhY3Rpb25XcmFwcGVyPiwgYm9vbCByZWFkT25seSk7CiAKICAgICB2aXJ0
dWFsIH5TUUxUcmFuc2FjdGlvbkJhY2tlbmQoKTsKIApAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzaG91bGRQZXJmb3JtV2hpbGVQYXVzZWQoKSBjb25zdDsKICNlbmRpZgogCi0g
ICAgRGF0YWJhc2VCYWNrZW5kKiBkYXRhYmFzZSgpIHsgcmV0dXJuIG1fZGF0YWJhc2UuZ2V0KCk7
IH0KKyAgICBEYXRhYmFzZSogZGF0YWJhc2UoKSB7IHJldHVybiBtX2RhdGFiYXNlLmdldCgpOyB9
CiAgICAgYm9vbCBpc1JlYWRPbmx5KCkgeyByZXR1cm4gbV9yZWFkT25seTsgfQogICAgIHZvaWQg
bm90aWZ5RGF0YWJhc2VUaHJlYWRJc1NodXR0aW5nRG93bigpOwogCkBAIC04NCw3ICs4NCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGV4ZWN1dGVTUUwoc3RkOjp1bmlxdWVfcHRyPFNRTFN0YXRlbWVu
dD4sIGNvbnN0IFN0cmluZyYgc3RhdGVtZW50LCBjb25zdCBWZWN0b3I8U1FMVmFsdWU+JiBhcmd1
bWVudHMsIGludCBwZXJtaXNzaW9ucyk7CiAgICAgCiBwcml2YXRlOgotICAgIFNRTFRyYW5zYWN0
aW9uQmFja2VuZChEYXRhYmFzZUJhY2tlbmQqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9uPiwg
UGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKKyAgICBT
UUxUcmFuc2FjdGlvbkJhY2tlbmQoRGF0YWJhc2UqLCBQYXNzUmVmUHRyPFNRTFRyYW5zYWN0aW9u
PiwgUGFzc1JlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+LCBib29sIHJlYWRPbmx5KTsKIAog
ICAgIHZvaWQgZG9DbGVhbnVwKCk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxTUUxUcmFuc2FjdGlvbj4gbV9mcm9udGVuZDsgLy8gSGFzIGEgcmVmZXJlbmNlIGN5
Y2xlLCBhbmQgd2lsbCBicmVhayBpbiBkb0NsZWFudXAoKS4KICAgICBSZWZQdHI8U1FMU3RhdGVt
ZW50QmFja2VuZD4gbV9jdXJyZW50U3RhdGVtZW50QmFja2VuZDsKIAotICAgIFJlZlB0cjxEYXRh
YmFzZUJhY2tlbmQ+IG1fZGF0YWJhc2U7CisgICAgUmVmUHRyPERhdGFiYXNlPiBtX2RhdGFiYXNl
OwogICAgIFJlZlB0cjxTUUxUcmFuc2FjdGlvbldyYXBwZXI+IG1fd3JhcHBlcjsKICAgICBSZWZQ
dHI8U1FMRXJyb3I+IG1fdHJhbnNhY3Rpb25FcnJvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5jcHAKaW5kZXggYmJiNDVhODEwYzcxZjdiZTM3NGIzY2UwMTQ5ZGI2NDc3YTIyYjUxMS4u
OGFiYzZjZjE3NmIwNjZhNTNjY2U3NTA4NDk2MjcxZTY4MzhmZjNhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKICNpZiBFTkFCTEUoU1FMX0RB
VEFCQVNFKQogCi0jaW5jbHVkZSAiRGF0YWJhc2VCYWNrZW5kLmgiCisjaW5jbHVkZSAiRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCIKICNpbmNsdWRlICJTZWN1
cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgpAQCAtNDYsNyArNDYsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTdHJpbmcgZ2V0RGF0YWJhc2VJZGVudGlmaWVy
KFNRTFRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24pCiB7Ci0gICAgRGF0YWJhc2VCYWNr
ZW5kKiBkYXRhYmFzZSA9IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOworICAgIERhdGFiYXNlKiBk
YXRhYmFzZSA9IHRyYW5zYWN0aW9uLT5kYXRhYmFzZSgpOwogICAgIEFTU0VSVChkYXRhYmFzZSk7
CiAgICAgcmV0dXJuIGRhdGFiYXNlLT5zZWN1cml0eU9yaWdpbigpLT5kYXRhYmFzZUlkZW50aWZp
ZXIoKTsKIH0K
</data>
<flag name="review"
          id="269395"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>