<?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>109690</bug_id>
          
          <creation_ts>2013-02-13 07:05:52 -0800</creation_ts>
          <short_desc>[Qt] Port GCController to JSC C API</short_desc>
          <delta_ts>2013-02-15 01:46:04 -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>
          
          <blocked>109677</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>831877</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-13 07:05:52 -0800</bug_when>
    <thetext>[Qt] Port GCController to JSC C API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831879</commentid>
    <comment_count>1</comment_count>
      <attachid>188078</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-13 07:07:52 -0800</bug_when>
    <thetext>Created attachment 188078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832435</commentid>
    <comment_count>2</comment_count>
      <attachid>188078</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-13 15:47:45 -0800</bug_when>
    <thetext>Comment on attachment 188078
Patch

Thanks a lot Simon, I appreciate you take the time to clean this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833804</commentid>
    <comment_count>3</comment_count>
      <attachid>188078</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 01:46:01 -0800</bug_when>
    <thetext>Comment on attachment 188078
Patch

Clearing flags on attachment: 188078

Committed r142972: &lt;http://trac.webkit.org/changeset/142972&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833805</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-15 01:46:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188078</attachid>
            <date>2013-02-13 07:07:52 -0800</date>
            <delta_ts>2013-02-15 01:46:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109690-20130213160434.patch</filename>
            <type>text/plain</type>
            <size>51426</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGM3ZTYxYjkwOWE0
M2ViMjU5ZjgwMTM1YjcwMTIyYTc2Nzk0NzNhZDguLjBiYTQxN2EzNjYwMTVhZDAwYmQxNzU3YzVh
N2YwOTRmZWFkYjA4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDIt
MTMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgorCisgICAgICAg
IFtRdF0gUG9ydCBHQ0NvbnRyb2xsZXIgdG8gSlNDIEMgQVBJCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2OTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaG9va3MgdG8gcmV0cmlldmUgSlNDb250
ZXh0UmVmIGFuZCB3aW5kb3cgb2JqZWN0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OmdldEpTV2luZG93T2JqZWN0KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5oOgorCiAyMDEzLTAyLTEyICBIdWFuZyBEb25nc3VuZyAgPGx1eHRl
bGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFtUZXhNYXBdIEFwcGx5IGZyYW1lcy1wZXIt
c2Vjb25kIGRlYnVnIGNvdW50ZXIgdG8gV0sxLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAppbmRleCA1
YzM2MjVhYjZhNjE3YWZlOTI1ZGM1ZTUxZmRkMGJmOTk4Njk3NGRlLi4wNzUyOGIwMWY5NjM3OGMw
NDUwYzhlOWIxZjk0NTc2YTBmZjY4MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApAQCAtOTky
LDMgKzk5MiwxMCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjbGVhck5vdGlmaWNh
dGlvblBlcm1pc3Npb25zKCkKICAgICBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXJDbGll
bnRRdDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCktPmNsZWFyQ2FjaGVkUGVybWlzc2lvbnMoKTsK
ICNlbmRpZgogfQorCit2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnZXRKU1dpbmRvd09i
amVjdChRV2ViRnJhbWVBZGFwdGVyKiBhZGFwdGVyLCBKU0NvbnRleHRSZWYqIGNvbnRleHQsIEpT
T2JqZWN0UmVmKiBvYmplY3QpCit7CisgICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01X
aW5kb3coYWRhcHRlci0+ZnJhbWUsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKKyAgICAqb2Jq
ZWN0ID0gdG9SZWYod2luZG93KTsKKyAgICAqY29udGV4dCA9IHRvUmVmKHdpbmRvdy0+Z2xvYmFs
RXhlYygpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAppbmRleCBlYzdiMTdiMDJhZTY0YTc4NmIzMWU1
MjVkNWNlYmI3ZmI5OTBjZDEwLi40MDFkOWI2MjlmMTAzYWUwNTI2MmI0ZDdmZTUwYzU5OTZhZDM5
NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmgKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8UVZl
Y3Rvcj4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRS
ZWY7Cit0eXBlZGVmIHN0cnVjdCBPcGFxdWVKU1ZhbHVlKiBKU09iamVjdFJlZjsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgVGV4dDsKQEAgLTIwOSw2ICsyMTAsOCBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgUVN0cmluZyBmcmFtZVJlbmRlclRyZWVEdW1wKFFXZWJGcmFtZUFkYXB0ZXIq
KTsKICAgICBzdGF0aWMgdm9pZCBjbGVhck5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCk7CisKKyAg
ICBzdGF0aWMgdm9pZCBnZXRKU1dpbmRvd09iamVjdChRV2ViRnJhbWVBZGFwdGVyKiwgSlNDb250
ZXh0UmVmKiwgSlNPYmplY3RSZWYqKTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDhhMzk5ODlhNGVmMDY2ZTM2MjkwMWFh
MDIwMGM5MDE1MDFiMzk1NDcuLmIxYjk4NmY1ZWJkNDgyN2UzMTJhMzFjZWU3NzExMGNjMTFkYTVk
NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNTcgQEAKKzIwMTMtMDItMTMgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5AZGlnaWEuY29tPgorCisgICAgICAgIFtRdF0gUG9ydCBHQ0NvbnRyb2xsZXIgdG8gSlNDIEMg
QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk2
OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5h
bWUgVGVzdFJ1bm5lciB0byBUZXN0UnVubmVyUXQgdG8gYXZvaWQgY29uZmxpY3Qgd2hlbgorICAg
ICAgICBpbmNsdWRpbmcgVGVzdFJ1bm5lci5oIGluIHRoZSBmdXR1cmUuCisKKyAgICAgICAgUmVw
bGFjZWQgUU9iamVjdCBiYXNlZCBHQ0NvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24gd2l0aCBKU0Mg
QyBBUEkKKyAgICAgICAgYmFzZWQgb25lLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQv
RHVtcFJlbmRlclRyZWUucHJvOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5k
ZXJUcmVlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5k
ZXJUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpvcGVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjppbml0SlNPYmplY3RzKToKKyAgICAgICAgKFdl
YkNvcmU6Om1ldGhvZE5hbWVTdHJpbmdGb3JGYWlsZWRUZXN0KToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0Lmg6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVu
ZGVyVHJlZTo6dGVzdFJ1bm5lcik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZSk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwOgorICAgICAgICAoR0NDb250
cm9sbGVyOjpnZXRKU09iamVjdENvdW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9H
Q0NvbnRyb2xsZXJRdC5oOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rl
c3RSdW5uZXJRdC5jcHA6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OlRlc3RSdW5uZXJRdCk6Cisg
ICAgICAgIChUZXN0UnVubmVyUXQ6OnJlc2V0KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6ZHVt
cE5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojpwcm9jZXNzV29yayk6Cisg
ICAgICAgIChUZXN0UnVubmVyUXQ6Om1heWJlRHVtcCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6
OmR1bXBBc1RleHQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojp3YWl0VW50aWxEb25lKToKKyAg
ICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUpOgorICAgICAgICAo
VGVzdFJ1bm5lclF0Ojp3ZWJIaXN0b3J5SXRlbUNvdW50KToKKyAgICAgICAgKFRlc3RSdW5uZXJR
dDo6a2VlcFdlYkhpc3RvcnkpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojpub3RpZnlEb25lKToK
KyAgICAgICAgKFRlc3RSdW5uZXJRdDo6d2luZG93Q291bnQpOgorICAgICAgICAoVGVzdFJ1bm5l
clF0OjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAgICAgICAoVGVzdFJ1bm5l
clF0OjppZ25vcmVMZWdhY3lXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMpOgorICAg
ICAgICAoVGVzdFJ1bm5lclF0OjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbik6CisgICAg
ICAgIChUZXN0UnVubmVyUXQ6OnJlbW92ZUFsbFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25zKToK
KyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGljayk6Cisg
ICAgICAgIChUZXN0UnVubmVyUXQ6OnNpbXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2sp
OgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpkaXNwbGF5KToKKyAgICAgICAgKFRlc3RSdW5uZXJR
dDo6ZGlzcGxheUludmFsaWRhdGVkUmVnaW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6Y2xl
YXJCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpwYXRoVG9Mb2NhbFJl
c291cmNlKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6ZHVtcEVkaXRpbmdDYWxsYmFja3MpOgor
ICAgICAgICAoVGVzdFJ1bm5lclF0OjpkdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAgICAg
KFRlc3RSdW5uZXJRdDo6ZHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjayk6CisgICAgICAgIChU
ZXN0UnVubmVyUXQ6OmR1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKToKKyAgICAg
ICAgKFRlc3RSdW5uZXJRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyk6CisgICAgICAgIChU
ZXN0UnVubmVyUXQ6OmR1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKToKKyAgICAgICAgKFRl
c3RSdW5uZXJRdDo6ZHVtcFdpbGxDYWNoZVJlc3BvbnNlKToKKyAgICAgICAgKFRlc3RSdW5uZXJR
dDo6ZHVtcEhpc3RvcnlDYWxsYmFja3MpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpzZXRXaWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QpOgorICAgICAgICAoVGVzdFJ1bm5lclF0
OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6
OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6
c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnF1
ZXVlQmFja05hdmlnYXRpb24pOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpxdWV1ZUZvcndhcmRO
YXZpZ2F0aW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6cXVldWVMb2FkKToKKyAgICAgICAg
KFRlc3RSdW5uZXJRdDo6cXVldWVMb2FkSFRNTFN0cmluZyk6CisgICAgICAgIChUZXN0UnVubmVy
UXQ6OnF1ZXVlUmVsb2FkKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6cXVldWVMb2FkaW5nU2Ny
aXB0KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6cXVldWVOb25Mb2FkaW5nU2NyaXB0KToKKyAg
ICAgICAgKFRlc3RSdW5uZXJRdDo6cHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFRlc3RSdW5u
ZXJRdDo6dGltZXJFdmVudCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OmVuY29kZUhvc3ROYW1l
KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6ZGVjb2RlSG9zdE5hbWUpOgorICAgICAgICAoVGVz
dFJ1bm5lclF0OjpjbG9zZVdlYkluc3BlY3Rvcik6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnNl
dERldmVsb3BlckV4dHJhc0VuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnNo
b3dXZWJJbnNwZWN0b3IpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpldmFsdWF0ZUluV2ViSW5z
cGVjdG9yKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6Z29CYWNrKToKKyAgICAgICAgKFRlc3RS
dW5uZXJRdDo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnNldEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6
c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnNldEF1dG9m
aWxsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpzZXRWYWx1ZUZvclVzZXIpOgorICAgICAg
ICAoVGVzdFJ1bm5lclF0OjpzZXRGaXhlZENvbnRlbnRzU2l6ZSk6CisgICAgICAgIChUZXN0UnVu
bmVyUXQ6OnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0
OjpzZXRTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojpz
ZXRQb3B1cEJsb2NraW5nRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnNldFBsdWdp
bnNFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0UE9TSVhMb2NhbGUpOgorICAg
ICAgICAoVGVzdFJ1bm5lclF0OjpzZXRXaW5kb3dJc0tleSk6CisgICAgICAgIChUZXN0UnVubmVy
UXQ6OnNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIpOgorICAgICAgICAoVGVzdFJ1bm5lclF0
OjpzZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKToKKyAgICAgICAgKFRlc3RSdW5uZXJR
dDo6c2V0WFNTQXVkaXRvckVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpkaXNwYXRj
aFBlbmRpbmdMb2FkUmVxdWVzdHMpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpjbGVhckFsbEFw
cGxpY2F0aW9uQ2FjaGVzKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6Y2xlYXJBcHBsaWNhdGlv
bkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6bG9jYWxTdG9yYWdlRGlz
a1VzYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0QXBwbGljYXRpb25D
YWNoZU9yaWdpblF1b3RhKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6YXBwbGljYXRpb25DYWNo
ZURpc2tVc2FnZUZvck9yaWdpbik6CisgICAgICAgIChUZXN0UnVubmVyUXQ6Om9yaWdpbnNXaXRo
QXBwbGljYXRpb25DYWNoZSk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnNldENhY2hlTW9kZWwp
OgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFRl
c3RSdW5uZXJRdDo6Y2xlYXJBbGxEYXRhYmFzZXMpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojph
ZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnJl
bW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6
c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojp3YWl0Rm9y
UG9saWN5RGVsZWdhdGUpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpvdmVycmlkZVByZWZlcmVu
Y2UpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKToK
KyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQpOgorICAgICAg
ICAoVGVzdFJ1bm5lclF0OjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyUXQ6OnNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCk6CisgICAgICAgIChUZXN0
UnVubmVyUXQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUpOgorICAg
ICAgICAoVGVzdFJ1bm5lclF0OjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcpOgorICAgICAgICAo
VGVzdFJ1bm5lclF0OjpzZXRTY3JvbGxiYXJQb2xpY3kpOgorICAgICAgICAoVGVzdFJ1bm5lclF0
OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojpz
ZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXJR
dDo6ZXhlY0NvbW1hbmQpOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojppc0NvbW1hbmRFbmFibGVk
KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6ZmluZFN0cmluZyk6CisgICAgICAgIChUZXN0UnVu
bmVyUXQ6Om1hcmtlclRleHRGb3JMaXN0SXRlbSk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6
OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCk6CisgICAgICAgIChUZXN0
UnVubmVyUXQ6OmF1dGhlbnRpY2F0ZVNlc3Npb24pOgorICAgICAgICAoVGVzdFJ1bm5lclF0Ojpz
ZXRJY29uRGF0YWJhc2VFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdHMpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpzZXRHZW9s
b2NhdGlvblBlcm1pc3Npb25Db21tb24pOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpzZXRNb2Nr
R2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAoVGVzdFJ1bm5l
clF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyUXQ6
OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3VsdCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnNldE1v
Y2tTcGVlY2hJbnB1dER1bXBSZWN0KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c3RhcnRTcGVl
Y2hJbnB1dCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRl
ZFdvcmxkQW5kUmV0dXJuVmFsdWUpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpldmFsdWF0ZVNj
cmlwdEluSXNvbGF0ZWRXb3JsZCk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OmFkZFVzZXJTdHls
ZVNoZWV0KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKToK
KyAgICAgICAgKFRlc3RSdW5uZXJRdDo6YWRkVVJMVG9SZWRpcmVjdCk6CisgICAgICAgIChUZXN0
UnVubmVyUXQ6Om9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFRlc3RSdW5uZXJR
dDo6ZGVsZXRlQWxsTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6ZGVsZXRl
TG9jYWxTdG9yYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6b2JzZXJ2ZVN0
b3JhZ2VUcmFja2VyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChUZXN0UnVubmVyUXQ6OnN5bmNM
b2NhbFN0b3JhZ2UpOgorICAgICAgICAoVGVzdFJ1bm5lclF0OjpyZXNldFBhZ2VWaXNpYmlsaXR5
KToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0UGFnZVZpc2liaWxpdHkpOgorICAgICAgICAo
VGVzdFJ1bm5lclF0OjpzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCk6CisgICAgICAg
IChUZXN0UnVubmVyUXQ6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAoVGVzdFJ1bm5lclF0
OjpzZXRBbHdheXNBY2NlcHRDb29raWVzKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0QWx3
YXlzQmxvY2tDb29raWVzKToKKyAgICAgICAgKFRlc3RSdW5uZXJRdDo6c2V0QXVkaW9EYXRhKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDoKKyAgICAgICAgKFRl
c3RSdW5uZXJRdCk6CisKIDIwMTMtMDItMTIgIEFkZW5pbHNvbiBDYXZhbGNhbnRpICA8Y2F2YWxj
YW50aWlAZ21haWwuY29tPgogCiAgICAgICAgIFtXSzJdIFBhZ2UgcmVsb2FkaW5nIHdpbGwgY3Jh
c2ggVUlQcm9jZXNzIGFmdGVyIFdlYlByb2Nlc3Mgd2FzIGtpbGxlZApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCmluZGV4IDI2NzFhYjY2NGQxNmY0NzhlNzUwMjI3
Y2FhMzRiZTA5ZDhkOTM2ZTguLmEyZjg1NjMyYzY0Y2M1Yjc1M2Y3NWMwN2Q3NjU4ZjExNmIxMGQz
ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBy
bworKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KQEAgLTI2
LDE3ICsyNiwxOCBAQCBtYWN4OiBRVCArPSB4bWwKIEhFQURFUlMgKz0gXAogICAgICQkUFdELy4u
L1dvcmtRdWV1ZS5oIFwKICAgICAkJFBXRC8uLi9EdW1wUmVuZGVyVHJlZS5oIFwKKyAgICAkJFBX
RC8uLi9HQ0NvbnRyb2xsZXIuaCBcCiAgICAgRHVtcFJlbmRlclRyZWVRdC5oIFwKICAgICBFdmVu
dFNlbmRlclF0LmggXAogICAgIFRleHRJbnB1dENvbnRyb2xsZXJRdC5oIFwKICAgICBXb3JrUXVl
dWVJdGVtUXQuaCBcCiAgICAgVGVzdFJ1bm5lclF0LmggXAotICAgIEdDQ29udHJvbGxlclF0Lmgg
XAogICAgIHRlc3RwbHVnaW4uaAogCiBTT1VSQ0VTICs9IFwKICAgICAkJFBXRC8uLi9Xb3JrUXVl
dWUuY3BwIFwKICAgICAkJFBXRC8uLi9EdW1wUmVuZGVyVHJlZUNvbW1vbi5jcHAgXAorICAgICQk
UFdELy4uL0dDQ29udHJvbGxlci5jcHAgXAogICAgIER1bXBSZW5kZXJUcmVlUXQuY3BwIFwKICAg
ICBFdmVudFNlbmRlclF0LmNwcCBcCiAgICAgVGV4dElucHV0Q29udHJvbGxlclF0LmNwcCBcCmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuY3BwCmluZGV4IGFjNzM2
ZWFlOGM3OWI1MzdjNzU4MDU5MmFiYjEzZmQxMzc0YTQwOGUuLjIzZmQzNWMxYzZmYjVmMTc5MzNi
NjUzMmJkNGM4NzQxNzAwZThjZDIgMTAwNzU1Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L0R1bXBSZW5kZXJUcmVlUXQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBS
ZW5kZXJUcmVlUXQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiRHVtcFJlbmRlclRy
ZWVRdC5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCiAjaW5jbHVkZSAi
RXZlbnRTZW5kZXJRdC5oIgotI2luY2x1ZGUgIkdDQ29udHJvbGxlclF0LmgiCisjaW5jbHVkZSAi
R0NDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5pdFdlYkNvcmVRdC5oIgogI2luY2x1ZGUgIklu
aXRXZWJLaXRRdC5oIgogI2luY2x1ZGUgIlF0VGVzdFN1cHBvcnQuaCIKQEAgLTQyMiw3ICs0MjIs
NyBAQCBEdW1wUmVuZGVyVHJlZTo6RHVtcFJlbmRlclRyZWUoKQogICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0Ojp3ZWJQYWdlU2V0R3JvdXBOYW1lKHBhZ2VBZGFwdGVyKCksICJvcmcud2Via2l0
LnF0LkR1bXBSZW5kZXJUcmVlIik7CiAKICAgICBtX21haW5WaWV3LT5zZXRDb250ZXh0TWVudVBv
bGljeShRdDo6Tm9Db250ZXh0TWVudSk7Ci0gICAgbV9tYWluVmlldy0+cmVzaXplKFFTaXplKFRl
c3RSdW5uZXI6Om1heFZpZXdXaWR0aCwgVGVzdFJ1bm5lcjo6bWF4Vmlld0hlaWdodCkpOworICAg
IG1fbWFpblZpZXctPnJlc2l6ZShRU2l6ZShUZXN0UnVubmVyUXQ6Om1heFZpZXdXaWR0aCwgVGVz
dFJ1bm5lclF0OjptYXhWaWV3SGVpZ2h0KSk7CiAKICAgICAvLyBjbGVhbiB1cCBjYWNoZSBieSBy
ZXNldHRpbmcgcXVvdGEuCiAgICAgcWludDY0IHF1b3RhID0gd2ViUGFnZSgpLT5zZXR0aW5ncygp
LT5vZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKCk7CkBAIC00MzAsNyArNDMwLDcgQEAg
RHVtcFJlbmRlclRyZWU6OkR1bXBSZW5kZXJUcmVlKCkKIAogICAgIC8vIGNyZWF0ZSBvdXIgY29u
dHJvbGxlcnMuIFRoaXMgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIGNvbm5lY3RGcmFtZSwKICAgICAv
LyBhcyBpdCBleHBvcnRzIHRoZXJlIHRvIHRoZSBKYXZhU2NyaXB0IERPTSB3aW5kb3cuCi0gICAg
bV9jb250cm9sbGVyID0gbmV3IFRlc3RSdW5uZXIodGhpcyk7CisgICAgbV9jb250cm9sbGVyID0g
bmV3IFRlc3RSdW5uZXJRdCh0aGlzKTsKICAgICBjb25uZWN0KG1fY29udHJvbGxlciwgU0lHTkFM
KHNob3dQYWdlKCkpLCB0aGlzLCBTTE9UKHNob3dQYWdlKCkpKTsKICAgICBjb25uZWN0KG1fY29u
dHJvbGxlciwgU0lHTkFMKGhpZGVQYWdlKCkpLCB0aGlzLCBTTE9UKGhpZGVQYWdlKCkpKTsKIApA
QCAtNDQwLDcgKzQ0MCw3IEBAIER1bXBSZW5kZXJUcmVlOjpEdW1wUmVuZGVyVHJlZSgpCiAgICAg
Y29ubmVjdChtX2NvbnRyb2xsZXIsIFNJR05BTChkb25lKCkpLCB0aGlzLCBTTE9UKGR1bXAoKSkp
OwogICAgIG1fZXZlbnRTZW5kZXIgPSBuZXcgRXZlbnRTZW5kZXIobV9wYWdlKTsKICAgICBtX3Rl
eHRJbnB1dENvbnRyb2xsZXIgPSBuZXcgVGV4dElucHV0Q29udHJvbGxlcihtX3BhZ2UpOwotICAg
IG1fZ2NDb250cm9sbGVyID0gbmV3IEdDQ29udHJvbGxlcihtX3BhZ2UpOworICAgIG1fZ2NDb250
cm9sbGVyLnJlc2V0KG5ldyBHQ0NvbnRyb2xsZXIoKSk7CiAKICAgICAvLyBub3cgY29ubmVjdCBv
dXIgZGlmZmVyZW50IHNpZ25hbHMKICAgICBjb25uZWN0KG1fcGFnZSwgU0lHTkFMKGZyYW1lQ3Jl
YXRlZChRV2ViRnJhbWUgKikpLApAQCAtNjEyLDggKzYxMiw4IEBAIHZvaWQgRHVtcFJlbmRlclRy
ZWU6Om9wZW4oY29uc3QgUVVybCYgdXJsKQogCiAgICAgLy8gVzNDIFNWRyB0ZXN0cyBleHBlY3Qg
dG8gYmUgNDgweDM2MAogICAgIGJvb2wgaXNXM0NUZXN0ID0gdXJsLnRvU3RyaW5nKCkuY29udGFp
bnMoInN2Zy9XM0MtU1ZHLTEuMSIpOwotICAgIGludCB3aWR0aCA9IGlzVzNDVGVzdCA/IDQ4MCA6
IFRlc3RSdW5uZXI6Om1heFZpZXdXaWR0aDsKLSAgICBpbnQgaGVpZ2h0ID0gaXNXM0NUZXN0ID8g
MzYwIDogVGVzdFJ1bm5lcjo6bWF4Vmlld0hlaWdodDsKKyAgICBpbnQgd2lkdGggPSBpc1czQ1Rl
c3QgPyA0ODAgOiBUZXN0UnVubmVyUXQ6Om1heFZpZXdXaWR0aDsKKyAgICBpbnQgaGVpZ2h0ID0g
aXNXM0NUZXN0ID8gMzYwIDogVGVzdFJ1bm5lclF0OjptYXhWaWV3SGVpZ2h0OwogICAgIG1fbWFp
blZpZXctPnJlc2l6ZShRU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAgICAgbV9wYWdlLT5zZXRQcmVm
ZXJyZWRDb250ZW50c1NpemUoUVNpemUoKSk7CiAgICAgbV9wYWdlLT5zZXRWaWV3cG9ydFNpemUo
UVNpemUod2lkdGgsIGhlaWdodCkpOwpAQCAtNzM1LDEwICs3MzUsMTcgQEAgdm9pZCBEdW1wUmVu
ZGVyVHJlZTo6aW5pdEpTT2JqZWN0cygpCiB7CiAgICAgUVdlYkZyYW1lICpmcmFtZSA9IHFvYmpl
Y3RfY2FzdDxRV2ViRnJhbWUqPihzZW5kZXIoKSk7CiAgICAgUV9BU1NFUlQoZnJhbWUpOworCisg
ICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSAwOworICAgIEpTT2JqZWN0UmVmIHdpbmRvdyA9IDA7
CisKKyAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2V0SlNXaW5kb3dPYmplY3QoZnJhbWUt
PmhhbmRsZSgpLCAmY29udGV4dCwgJndpbmRvdyk7CisKICAgICBmcmFtZS0+YWRkVG9KYXZhU2Ny
aXB0V2luZG93T2JqZWN0KFFMYXRpbjFTdHJpbmcoInRlc3RSdW5uZXIiKSwgbV9jb250cm9sbGVy
KTsKICAgICBmcmFtZS0+YWRkVG9KYXZhU2NyaXB0V2luZG93T2JqZWN0KFFMYXRpbjFTdHJpbmco
ImV2ZW50U2VuZGVyIiksIG1fZXZlbnRTZW5kZXIpOwogICAgIGZyYW1lLT5hZGRUb0phdmFTY3Jp
cHRXaW5kb3dPYmplY3QoUUxhdGluMVN0cmluZygidGV4dElucHV0Q29udHJvbGxlciIpLCBtX3Rl
eHRJbnB1dENvbnRyb2xsZXIpOwotICAgIGZyYW1lLT5hZGRUb0phdmFTY3JpcHRXaW5kb3dPYmpl
Y3QoUUxhdGluMVN0cmluZygiR0NDb250cm9sbGVyIiksIG1fZ2NDb250cm9sbGVyKTsKKyAgICBt
X2djQ29udHJvbGxlci0+bWFrZVdpbmRvd09iamVjdChjb250ZXh0LCB3aW5kb3csIDApOworCiAg
ICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluamVjdEludGVybmFsc09iamVjdChmcmFtZS0+
aGFuZGxlKCkpOwogfQogCkBAIC04NzgsNyArODg1LDcgQEAgUVN0cmluZyBEdW1wUmVuZGVyVHJl
ZTo6ZHVtcEJhY2tGb3J3YXJkTGlzdChRV2ViUGFnZSogcGFnZSkKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqbWV0aG9kTmFtZVN0cmluZ0ZvckZhaWxlZFRlc3Qo
VGVzdFJ1bm5lciAqY29udHJvbGxlcikKK3N0YXRpYyBjb25zdCBjaGFyICptZXRob2ROYW1lU3Ry
aW5nRm9yRmFpbGVkVGVzdChUZXN0UnVubmVyUXQgKmNvbnRyb2xsZXIpCiB7CiAgICAgY29uc3Qg
Y2hhciAqZXJyb3JNZXNzYWdlOwogICAgIGlmIChjb250cm9sbGVyLT5zaG91bGREdW1wQXNUZXh0
KCkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmgKaW5kZXggN2E2
Zjc2ZmIwYTJkZTI3NzM4OThlMmZhZjA3OTY5Y2RhNzRhZTdlNi4uZGM1NTAwYTQxNzcwOTAxOTc1
NzkwNWVmOGYxNmM5ZDQ5NjgxMjc4MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWVRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBS
ZW5kZXJUcmVlUXQuaApAQCAtNTYsNyArNTYsNyBAQCBRVF9FTkRfTkFNRVNQQUNFCiBjbGFzcyBR
V2ViRnJhbWVBZGFwdGVyOwogY2xhc3MgUVdlYlBhZ2VBZGFwdGVyOwogCi1jbGFzcyBUZXN0UnVu
bmVyOworY2xhc3MgVGVzdFJ1bm5lclF0OwogY2xhc3MgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ7
CiBjbGFzcyBFdmVudFNlbmRlcjsKIGNsYXNzIFRleHRJbnB1dENvbnRyb2xsZXI7CkBAIC04Niw3
ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsb3NlUmVtYWluaW5nV2luZG93cygpOwogICAg
IHZvaWQgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3RpbmcoY29uc3QgUVVybCYpOwog
Ci0gICAgVGVzdFJ1bm5lciAqdGVzdFJ1bm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbGxl
cjsgfQorICAgIFRlc3RSdW5uZXJRdCAqdGVzdFJ1bm5lcigpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dHJvbGxlcjsgfQogICAgIEV2ZW50U2VuZGVyICpldmVudFNlbmRlcigpIGNvbnN0IHsgcmV0dXJu
IG1fZXZlbnRTZW5kZXI7IH0KICAgICBUZXh0SW5wdXRDb250cm9sbGVyICp0ZXh0SW5wdXRDb250
cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0SW5wdXRDb250cm9sbGVyOyB9CiAgICAgUVN0
cmluZyBwZXJzaXN0ZW50U3RvcmFnZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX3BlcnNpc3RlbnRT
dG9yYWdlUGF0aDsgfQpAQCAtMTQzLDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgUVN0cmluZyBk
dW1wRnJhbWVzQXNUZXh0KFFXZWJGcmFtZSogZnJhbWUpOwogICAgIFFTdHJpbmcgZHVtcEJhY2tG
b3J3YXJkTGlzdChRV2ViUGFnZSogcGFnZSk7CiAgICAgUVN0cmluZyBkdW1wRnJhbWVTY3JvbGxQ
b3NpdGlvbihRV2ViRnJhbWUqIGZyYW1lKTsKLSAgICBUZXN0UnVubmVyICptX2NvbnRyb2xsZXI7
CisgICAgVGVzdFJ1bm5lclF0ICptX2NvbnRyb2xsZXI7CiAKICAgICBib29sIG1fZHVtcFBpeGVs
c0ZvckN1cnJlbnRUZXN0OwogICAgIGJvb2wgbV9kdW1wUGl4ZWxzRm9yQWxsVGVzdHM7CkBAIC0x
NTUsNyArMTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIEV2ZW50U2VuZGVyICptX2V2ZW50U2VuZGVy
OwogICAgIFRleHRJbnB1dENvbnRyb2xsZXIgKm1fdGV4dElucHV0Q29udHJvbGxlcjsKLSAgICBH
Q0NvbnRyb2xsZXIqIG1fZ2NDb250cm9sbGVyOworICAgIFFTY29wZWRQb2ludGVyPEdDQ29udHJv
bGxlcj4gbV9nY0NvbnRyb2xsZXI7CiAgICAgTmV0d29ya0FjY2Vzc01hbmFnZXIqIG1fbmV0d29y
a0FjY2Vzc01hbmFnZXI7CiAKICAgICBRRmlsZSAqbV9zdGRpbjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L0dDQ29udHJvbGxlclF0LmNwcAppbmRleCBhMmU1ZTBjODVkYWZlMGZlZGI1MmVmNWMz
YWYyYTY0MzRhZmFlMjc4Li45ZjkzNjk4ZDc3OGYzOWUzZTc0NGZlN2NlMGUxNmYwNDk3MWYwZmVh
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9HQ0NvbnRyb2xsZXJRdC5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvR0NDb250cm9sbGVyUXQuY3BwCkBAIC0yOCwx
NSArMjgsOSBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJHQ0NvbnRy
b2xsZXJRdC5oIgotI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCi0KLSNpbmNs
dWRlIDxxd2VicGFnZS5oPgorI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogCi1HQ0NvbnRyb2xs
ZXI6OkdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFyZW50KQotICAgIDogUU9iamVjdChwYXJlbnQp
Ci17Ci19CisjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaCIKIAogdm9pZCBHQ0Nv
bnRyb2xsZXI6OmNvbGxlY3QoKSBjb25zdAogewpAQCAtNDgsNyArNDIsNyBAQCB2b2lkIEdDQ29u
dHJvbGxlcjo6Y29sbGVjdE9uQWx0ZXJuYXRlVGhyZWFkKGJvb2wgd2FpdFVudGlsRG9uZSkgY29u
c3QKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2FyYmFnZUNvbGxlY3RvckNvbGxlY3RP
bkFsdGVybmF0ZVRocmVhZCh3YWl0VW50aWxEb25lKTsKIH0KIAotdW5zaWduZWQgaW50IEdDQ29u
dHJvbGxlcjo6Z2V0SlNPYmplY3RDb3VudCgpIGNvbnN0CitzaXplX3QgR0NDb250cm9sbGVyOjpn
ZXRKU09iamVjdENvdW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OmphdmFTY3JpcHRPYmplY3RzQ291bnQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9HQ0NvbnRyb2xsZXJRdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2M5ZjIz
NDc0YTliYWE1OTM5MzgzZWRjMjMwYTIwZjQ2OTQ5NzIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0dDQ29udHJv
bGxlclF0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQot
ICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLwotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0jaWZuZGVmIEdDQ29udHJvbGxlclF0X2gKLSNkZWZpbmUgR0NDb250cm9sbGVyUXRf
aAotCi0jaW5jbHVkZSA8UU9iamVjdD4KLQotY2xhc3MgUVdlYlBhZ2U7Ci1jbGFzcyBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDsKLQotY2xhc3MgR0NDb250cm9sbGVyIDogcHVibGljIFFPYmplY3QK
LXsKLSAgICBRX09CSkVDVAotcHVibGljOgotICAgIEdDQ29udHJvbGxlcihRV2ViUGFnZSogcGFy
ZW50KTsKLQotcHVibGljIFFfU0xPVFM6Ci0gICAgdm9pZCBjb2xsZWN0KCkgY29uc3Q7Ci0gICAg
dm9pZCBjb2xsZWN0T25BbHRlcm5hdGVUaHJlYWQoYm9vbCB3YWl0VW50aWxEb25lKSBjb25zdDsK
LSAgICB1bnNpZ25lZCBpbnQgZ2V0SlNPYmplY3RDb3VudCgpIGNvbnN0OwotCi19OwotCi0jZW5k
aWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCmluZGV4IDc1MjljMmI1
Mzg1Yjc1MGQzNDIxZjQ5ZWNkMmRmZGNlOGYyMjEyNmQuLjJkN2YzYmYzNDFkNjI5YjJhODBiN2Q5
ODAwNjBjY2YwYmRiNzQ3NzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rl
c3RSdW5uZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0
LmNwcApAQCAtMzksNyArMzksNyBAQAogI2luY2x1ZGUgPFFMb2NhbGU+CiAjaW5jbHVkZSA8cXdl
YnNldHRpbmdzLmg+CiAKLVRlc3RSdW5uZXI6OlRlc3RSdW5uZXIoV2ViQ29yZTo6RHVtcFJlbmRl
clRyZWUqIGRydCkKK1Rlc3RSdW5uZXJRdDo6VGVzdFJ1bm5lclF0KFdlYkNvcmU6OkR1bXBSZW5k
ZXJUcmVlKiBkcnQpCiAgICAgOiBRT2JqZWN0KCkKICAgICAsIG1fZHJ0KGRydCkKICAgICAsIG1f
c2hvdWxkVGltZW91dCh0cnVlKQpAQCAtNDgsNyArNDgsNyBAQCBUZXN0UnVubmVyOjpUZXN0UnVu
bmVyKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlKiBkcnQpCiAgICAgcmVzZXQoKTsKIH0KIAotdm9p
ZCBUZXN0UnVubmVyOjpyZXNldCgpCit2b2lkIFRlc3RSdW5uZXJRdDo6cmVzZXQoKQogewogICAg
IG1faGFzRHVtcGVkID0gZmFsc2U7CiAgICAgbV9sb2FkRmluaXNoZWQgPSBmYWxzZTsKQEAgLTEw
MywxMiArMTAzLDEyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6cmVzZXQoKQogICAgIGVtaXQgaGlkZVBh
Z2UoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpkdW1wTm90aWZpY2F0aW9ucygpCit2b2lkIFRl
c3RSdW5uZXJRdDo6ZHVtcE5vdGlmaWNhdGlvbnMoKQogewogICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjpkdW1wTm90aWZpY2F0aW9uKHRydWUpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnBy
b2Nlc3NXb3JrKCkKK3ZvaWQgVGVzdFJ1bm5lclF0Ojpwcm9jZXNzV29yaygpCiB7CiAgICAgLy8g
cURlYnVnKCkgPDwgIj4+PnByb2Nlc3NXb3JrIjsKIApAQCAtMTIwLDcgKzEyMCw3IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6cHJvY2Vzc1dvcmsoKQogfQogCiAvLyBDYWxsZWQgb24gbG9hZEZpbmlzaGVk
IG9uIFdlYlBhZ2UKLXZvaWQgVGVzdFJ1bm5lcjo6bWF5YmVEdW1wKGJvb2wgLypzdWNjZXNzKi8p
Cit2b2lkIFRlc3RSdW5uZXJRdDo6bWF5YmVEdW1wKGJvb2wgLypzdWNjZXNzKi8pCiB7CiAKICAg
ICAvLyBUaGlzIGNhbiBoYXBwZW4gb24gYW55IG9mIHRoZSBodHRwL3Rlc3RzL3NlY3VyaXR5L3dp
bmRvdy1ldmVudHMtKi5odG1sIHRlc3RzLCB3aGVyZSB0aGUgdGVzdCBvcGVucwpAQCAtMTUxLDEz
ICsxNTEsMTMgQEAgdm9pZCBUZXN0UnVubmVyOjptYXliZUR1bXAoYm9vbCAvKnN1Y2Nlc3MqLykK
ICAgICB9CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6ZHVtcEFzVGV4dChib29sIHNob3VsZER1bXBQ
aXhlbHMpCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVtcEFzVGV4dChib29sIHNob3VsZER1bXBQaXhl
bHMpCiB7CiAgICAgbV90ZXh0RHVtcCA9IHRydWU7CiAgICAgbV9zaG91bGREdW1wUGl4ZWxzID0g
c2hvdWxkRHVtcFBpeGVsczsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKCkK
K3ZvaWQgVGVzdFJ1bm5lclF0Ojp3YWl0VW50aWxEb25lKCkKIHsKICAgICAvL3FEZWJ1ZygpIDw8
ICI+Pj4+d2FpdEZvckRvbmUiOwogICAgIG1fd2FpdEZvckRvbmUgPSB0cnVlOwpAQCAtMTY4LDEy
ICsxNjgsMTIgQEAgdm9pZCBUZXN0UnVubmVyOjp3YWl0VW50aWxEb25lKCkKICAgICBtX3RpbWVv
dXRUaW1lci5zdGFydChtX3RpbWVvdXQsIHRoaXMpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNl
dFZpZXdNb2RlTWVkaWFGZWF0dXJlKGNvbnN0IFFTdHJpbmcmIG1vZGUpCit2b2lkIFRlc3RSdW5u
ZXJRdDo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoY29uc3QgUVN0cmluZyYgbW9kZSkKIHsKICAg
ICBtX2RydC0+d2ViUGFnZSgpLT5zZXRQcm9wZXJ0eSgiX3Ffdmlld01vZGUiLCBtb2RlKTsKIH0K
IAotaW50IFRlc3RSdW5uZXI6OndlYkhpc3RvcnlJdGVtQ291bnQoKQoraW50IFRlc3RSdW5uZXJR
dDo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCiB7CiAgICAgaWYgKCFtX3dlYkhpc3RvcnkpCiAgICAg
ICAgIHJldHVybiAtMTsKQEAgLTE4MywxMiArMTgzLDEyIEBAIGludCBUZXN0UnVubmVyOjp3ZWJI
aXN0b3J5SXRlbUNvdW50KCkKICAgICByZXR1cm4gbV93ZWJIaXN0b3J5LT5jb3VudCgpIC0gMTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCit2b2lkIFRlc3RSdW5uZXJR
dDo6a2VlcFdlYkhpc3RvcnkoKQogewogICAgIG1fd2ViSGlzdG9yeSA9IG1fZHJ0LT53ZWJQYWdl
KCktPmhpc3RvcnkoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpub3RpZnlEb25lKCkKK3ZvaWQg
VGVzdFJ1bm5lclF0Ojpub3RpZnlEb25lKCkKIHsKICAgICBxRGVidWcoKSA8PCAiPj4+Pm5vdGlm
eURvbmUiOwogCkBAIC0yMTIsNjAgKzIxMiw2MCBAQCB2b2lkIFRlc3RSdW5uZXI6Om5vdGlmeURv
bmUoKQogICAgIG1fd2FpdEZvclBvbGljeSA9IGZhbHNlOwogfQogCi1pbnQgVGVzdFJ1bm5lcjo6
d2luZG93Q291bnQoKQoraW50IFRlc3RSdW5uZXJRdDo6d2luZG93Q291bnQoKQogewogICAgIHJl
dHVybiBtX2RydC0+d2luZG93Q291bnQoKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpncmFudFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgUVN0cmluZyYgb3JpZ2luKQordm9pZCBUZXN0
UnVubmVyUXQ6OmdyYW50V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbihjb25zdCBRU3RyaW5nJiBv
cmlnaW4pCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IG1fZHJ0LT53ZWJQYWdlKCktPm1haW5G
cmFtZSgpOwogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldEZlYXR1cmVQZXJtaXNzaW9uKGZyYW1l
LCBRV2ViUGFnZTo6Tm90aWZpY2F0aW9ucywgUVdlYlBhZ2U6OlBlcm1pc3Npb25HcmFudGVkQnlV
c2VyKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjppZ25vcmVMZWdhY3lXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdHMoKQordm9pZCBUZXN0UnVubmVyUXQ6Omlnbm9yZUxlZ2FjeVdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0cygpCiB7CiAgICAgbV9pZ25vcmVEZXNrdG9wTm90
aWZpY2F0aW9uID0gdHJ1ZTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbihjb25zdCBRU3RyaW5nJiBvcmlnaW4pCit2b2lkIFRlc3RSdW5uZXJRdDo6
ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24oY29uc3QgUVN0cmluZyYgb3JpZ2luKQogewog
ICAgIFFXZWJGcmFtZSogZnJhbWUgPSBtX2RydC0+d2ViUGFnZSgpLT5tYWluRnJhbWUoKTsKICAg
ICBtX2RydC0+d2ViUGFnZSgpLT5zZXRGZWF0dXJlUGVybWlzc2lvbihmcmFtZSwgUVdlYlBhZ2U6
Ok5vdGlmaWNhdGlvbnMsIFFXZWJQYWdlOjpQZXJtaXNzaW9uRGVuaWVkQnlVc2VyKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpCit2
b2lkIFRlc3RSdW5uZXJRdDo6cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQog
ewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpjbGVhck5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlj
ayhjb25zdCBRV2ViRWxlbWVudCYgbm90aWZpY2F0aW9uKQordm9pZCBUZXN0UnVubmVyUXQ6OnNp
bXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgUVdlYkVsZW1lbnQmIG5vdGlmaWNhdGlv
bikKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50LgogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNp
bXVsYXRlTGVnYWN5V2ViTm90aWZpY2F0aW9uQ2xpY2soY29uc3QgUVN0cmluZyYgdGl0bGUpCit2
b2lkIFRlc3RSdW5uZXJRdDo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayhjb25z
dCBRU3RyaW5nJiB0aXRsZSkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2ltdWxh
dGVEZXNrdG9wTm90aWZpY2F0aW9uQ2xpY2sodGl0bGUpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6
OmRpc3BsYXkoKQordm9pZCBUZXN0UnVubmVyUXQ6OmRpc3BsYXkoKQogewogICAgIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpzZXRUcmFja1JlcGFpbnRSZWN0cyhtX3RvcExvYWRpbmdGcmFtZS0+
aGFuZGxlKCksIHRydWUpOwogICAgIGVtaXQgc2hvd1BhZ2UoKTsKIH0KIAotdm9pZCBUZXN0UnVu
bmVyOjpkaXNwbGF5SW52YWxpZGF0ZWRSZWdpb24oKQordm9pZCBUZXN0UnVubmVyUXQ6OmRpc3Bs
YXlJbnZhbGlkYXRlZFJlZ2lvbigpCiB7CiAgICAgZGlzcGxheSgpOwogfQogCi12b2lkIFRlc3RS
dW5uZXI6OmNsZWFyQmFja0ZvcndhcmRMaXN0KCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpjbGVhckJh
Y2tGb3J3YXJkTGlzdCgpCiB7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+aGlzdG9yeSgpLT5jbGVh
cigpOwogfQogCi1RU3RyaW5nIFRlc3RSdW5uZXI6OnBhdGhUb0xvY2FsUmVzb3VyY2UoY29uc3Qg
UVN0cmluZyYgdXJsKQorUVN0cmluZyBUZXN0UnVubmVyUXQ6OnBhdGhUb0xvY2FsUmVzb3VyY2Uo
Y29uc3QgUVN0cmluZyYgdXJsKQogewogICAgIFFTdHJpbmcgbG9jYWxUbXBVcmwoUUxhdGluMVN0
cmluZygiZmlsZTovLy90bXAvTGF5b3V0VGVzdHMiKSk7CiAKQEAgLTI4Miw4MiArMjgyLDgyIEBA
IFFTdHJpbmcgVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZShjb25zdCBRU3RyaW5nJiB1
cmwpCiAgICAgcmV0dXJuIHVybDsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpkdW1wRWRpdGluZ0Nh
bGxiYWNrcygpCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVtcEVkaXRpbmdDYWxsYmFja3MoKQogewog
ICAgIHFEZWJ1ZygpIDw8ICI+Pj5kdW1wRWRpdGluZ0NhbGxiYWNrcyI7CiAgICAgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OmR1bXBFZGl0aW5nQ2FsbGJhY2tzKHRydWUpOwogfQogCi12b2lkIFRl
c3RSdW5uZXI6OmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKQordm9pZCBUZXN0UnVubmVyUXQ6OmR1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpk
dW1wRnJhbWVMb2FkZXIodHJ1ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6ZHVtcFByb2dyZXNz
RmluaXNoZWRDYWxsYmFjaygpCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVtcFByb2dyZXNzRmluaXNo
ZWRDYWxsYmFjaygpCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBQcm9ncmVz
c0ZpbmlzaGVkQ2FsbGJhY2sodHJ1ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6ZHVtcFVzZXJH
ZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKQordm9pZCBUZXN0UnVubmVyUXQ6OmR1bXBVc2Vy
R2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlcih0cnVlKTsKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjpkdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKK3ZvaWQgVGVzdFJ1bm5lclF0Ojpk
dW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyh0cnVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVy
OjpkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVt
cFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpkdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcyh0cnVlKTsKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjpkdW1wV2lsbENhY2hlUmVzcG9uc2UoKQordm9pZCBUZXN0UnVubmVyUXQ6OmR1bXBX
aWxsQ2FjaGVSZXNwb25zZSgpCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmR1bXBX
aWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrcyh0cnVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpk
dW1wSGlzdG9yeUNhbGxiYWNrcygpCit2b2lkIFRlc3RSdW5uZXJRdDo6ZHVtcEhpc3RvcnlDYWxs
YmFja3MoKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpkdW1wSGlzdG9yeUNhbGxi
YWNrcyh0cnVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1
cm5zTnVsbE9uUmVkaXJlY3QoYm9vbCBlbmFibGVkKQordm9pZCBUZXN0UnVubmVyUXQ6OnNldFdp
bGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdChib29sIGVuYWJsZWQpCiB7CiAgICAg
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25S
ZWRpcmVjdChlbmFibGVkKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbChib29sIGVuYWJsZWQpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGwoYm9vbCBlbmFibGVkKQogewogICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChlbmFibGVkKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihjb25zdCBRU3Ry
aW5nTGlzdCYgaGVhZGVycykKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRXaWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcihjb25zdCBRU3RyaW5nTGlzdCYgaGVhZGVycykKIHsKICAgICBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKGhlYWRlcnMpOwog
fQogCi12b2lkIFRlc3RSdW5uZXI6OnNldERlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoYm9vbCBk
ZWZlcikKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXREZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKGJv
b2wgZGVmZXIpCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERlZmVyTWFpblJl
c291cmNlRGF0YUxvYWQoZGVmZXIpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnF1ZXVlQmFja05h
dmlnYXRpb24oaW50IGhvd0ZhckJhY2t3YXJkKQordm9pZCBUZXN0UnVubmVyUXQ6OnF1ZXVlQmFj
a05hdmlnYXRpb24oaW50IGhvd0ZhckJhY2t3YXJkKQogewogICAgIC8vcURlYnVnKCkgPDwgIj4+
PnF1ZXVlQmFja05hdmlnYXRpb24iIDw8IGhvd0ZhckJhY2t3YXJkOwogICAgIGZvciAoaW50IGkg
PSAwOyBpICE9IGhvd0ZhckJhY2t3YXJkOyArK2kpCiAgICAgICAgIFdvcmtRdWV1ZTo6c2hhcmVk
KCktPnF1ZXVlKG5ldyBCYWNrSXRlbSgxLCBtX2RydC0+d2ViUGFnZSgpKSk7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6cXVldWVGb3J3YXJkTmF2aWdhdGlvbihpbnQgaG93RmFyRm9yd2FyZCkKK3Zv
aWQgVGVzdFJ1bm5lclF0OjpxdWV1ZUZvcndhcmROYXZpZ2F0aW9uKGludCBob3dGYXJGb3J3YXJk
KQogewogICAgIC8vcURlYnVnKCkgPDwgIj4+PnF1ZXVlRm9yd2FyZE5hdmlnYXRpb24iIDw8IGhv
d0ZhckZvcndhcmQ7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gaG93RmFyRm9yd2FyZDsgKytp
KQogICAgICAgICBXb3JrUXVldWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgRm9yd2FyZEl0ZW0oMSwg
bV9kcnQtPndlYlBhZ2UoKSkpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnF1ZXVlTG9hZChjb25z
dCBRU3RyaW5nJiB1cmwsIGNvbnN0IFFTdHJpbmcmIHRhcmdldCkKK3ZvaWQgVGVzdFJ1bm5lclF0
OjpxdWV1ZUxvYWQoY29uc3QgUVN0cmluZyYgdXJsLCBjb25zdCBRU3RyaW5nJiB0YXJnZXQpCiB7
CiAgICAgLy9xRGVidWcoKSA8PCAiPj4+cXVldWVMb2FkIiA8PCB1cmwgPDwgdGFyZ2V0OwogICAg
IFFVcmwgbWFpblJlc291cmNlVXJsID0gbV9kcnQtPndlYlBhZ2UoKS0+bWFpbkZyYW1lKCktPnVy
bCgpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkKGNvbnN0
IFFTdHJpbmcmIHVybCwgY29uc3QgUVN0cmluZyYgdGFyZ2V0KQogICAgIFdvcmtRdWV1ZTo6c2hh
cmVkKCktPnF1ZXVlKG5ldyBMb2FkSXRlbShhYnNvbHV0ZVVybCwgdGFyZ2V0LCBtX2RydC0+d2Vi
UGFnZSgpKSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkSFRNTFN0cmluZyhjb25z
dCBRU3RyaW5nJiBjb250ZW50LCBjb25zdCBRU3RyaW5nJiBiYXNlVVJMLCBjb25zdCBRU3RyaW5n
JiBmYWlsaW5nVVJMKQordm9pZCBUZXN0UnVubmVyUXQ6OnF1ZXVlTG9hZEhUTUxTdHJpbmcoY29u
c3QgUVN0cmluZyYgY29udGVudCwgY29uc3QgUVN0cmluZyYgYmFzZVVSTCwgY29uc3QgUVN0cmlu
ZyYgZmFpbGluZ1VSTCkKIHsKICAgICBpZiAoZmFpbGluZ1VSTC5pc0VtcHR5KCkpCiAgICAgICAg
IFdvcmtRdWV1ZTo6c2hhcmVkKCktPnF1ZXVlKG5ldyBMb2FkSFRNTFN0cmluZ0l0ZW0oY29udGVu
dCwgYmFzZVVSTCwgbV9kcnQtPndlYlBhZ2UoKSkpOwpAQCAtMzczLDMyICszNzMsMzIgQEAgdm9p
ZCBUZXN0UnVubmVyOjpxdWV1ZUxvYWRIVE1MU3RyaW5nKGNvbnN0IFFTdHJpbmcmIGNvbnRlbnQs
IGNvbnN0IFFTdHJpbmcmIGJhc2UKICAgICAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUo
bmV3IExvYWRBbHRlcm5hdGVIVE1MU3RyaW5nSXRlbShjb250ZW50LCBiYXNlVVJMLCBmYWlsaW5n
VVJMLCBtX2RydC0+d2ViUGFnZSgpKSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6cXVldWVSZWxv
YWQoKQordm9pZCBUZXN0UnVubmVyUXQ6OnF1ZXVlUmVsb2FkKCkKIHsKICAgICAvL3FEZWJ1Zygp
IDw8ICI+Pj5xdWV1ZVJlbG9hZCI7CiAgICAgV29ya1F1ZXVlOjpzaGFyZWQoKS0+cXVldWUobmV3
IFJlbG9hZEl0ZW0obV9kcnQtPndlYlBhZ2UoKSkpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnF1
ZXVlTG9hZGluZ1NjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHQpCit2b2lkIFRlc3RSdW5uZXJR
dDo6cXVldWVMb2FkaW5nU2NyaXB0KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKIHsKICAgICAvL3FE
ZWJ1ZygpIDw8ICI+Pj5xdWV1ZUxvYWRpbmdTY3JpcHQiIDw8IHNjcmlwdDsKICAgICBXb3JrUXVl
dWU6OnNoYXJlZCgpLT5xdWV1ZShuZXcgTG9hZGluZ1NjcmlwdEl0ZW0oc2NyaXB0LCBtX2RydC0+
d2ViUGFnZSgpKSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6cXVldWVOb25Mb2FkaW5nU2NyaXB0
KGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpxdWV1ZU5vbkxvYWRp
bmdTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0KQogewogICAgIC8vcURlYnVnKCkgPDwgIj4+
PnF1ZXVlTm9uTG9hZGluZ1NjcmlwdCIgPDwgc2NyaXB0OwogICAgIFdvcmtRdWV1ZTo6c2hhcmVk
KCktPnF1ZXVlKG5ldyBOb25Mb2FkaW5nU2NyaXB0SXRlbShzY3JpcHQsIG1fZHJ0LT53ZWJQYWdl
KCkpKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpwcm92aXNpb25hbExvYWQoKQordm9pZCBUZXN0
UnVubmVyUXQ6OnByb3Zpc2lvbmFsTG9hZCgpCiB7CiAgICAgUVdlYkZyYW1lKiBmcmFtZSA9IHFv
YmplY3RfY2FzdDxRV2ViRnJhbWUqPihzZW5kZXIoKSk7CiAgICAgaWYgKCFtX3RvcExvYWRpbmdG
cmFtZSAmJiAhbV9oYXNEdW1wZWQpCiAgICAgICAgIG1fdG9wTG9hZGluZ0ZyYW1lID0gZnJhbWU7
CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXYpCit2b2lk
IFRlc3RSdW5uZXJRdDo6dGltZXJFdmVudChRVGltZXJFdmVudCAqZXYpCiB7CiAgICAgaWYgKGV2
LT50aW1lcklkKCkgPT0gbV90aW1lb3V0VGltZXIudGltZXJJZCgpKSB7CiAgICAgICAgIGNvbnN0
IGNoYXIqIG1lc3NhZ2UgPSAiRkFJTDogVGltZWQgb3V0IHdhaXRpbmcgZm9yIG5vdGlmeURvbmUg
dG8gYmUgY2FsbGVkXG4iOwpAQCAtNDA5LDEyOSArNDA5LDEyOSBAQCB2b2lkIFRlc3RSdW5uZXI6
OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQgKmV2KQogICAgICAgICBRT2JqZWN0Ojp0aW1lckV2ZW50
KGV2KTsKIH0KIAotUVN0cmluZyBUZXN0UnVubmVyOjplbmNvZGVIb3N0TmFtZShjb25zdCBRU3Ry
aW5nJiBob3N0KQorUVN0cmluZyBUZXN0UnVubmVyUXQ6OmVuY29kZUhvc3ROYW1lKGNvbnN0IFFT
dHJpbmcmIGhvc3QpCiB7CiAgICAgUVN0cmluZyBlbmNvZGVkID0gUVN0cmluZzo6ZnJvbUxhdGlu
MShRVXJsOjp0b0FjZShob3N0ICsgUUxhdGluMVN0cmluZygiLm5vIikpKTsKICAgICBlbmNvZGVk
LnRydW5jYXRlKGVuY29kZWQubGVuZ3RoKCkgLSAzKTsgLy8gc3RyaXAgLm5vCiAgICAgcmV0dXJu
IGVuY29kZWQ7CiB9CiAKLVFTdHJpbmcgVGVzdFJ1bm5lcjo6ZGVjb2RlSG9zdE5hbWUoY29uc3Qg
UVN0cmluZyYgaG9zdCkKK1FTdHJpbmcgVGVzdFJ1bm5lclF0OjpkZWNvZGVIb3N0TmFtZShjb25z
dCBRU3RyaW5nJiBob3N0KQogewogICAgIFFTdHJpbmcgZGVjb2RlZCA9IFFVcmw6OmZyb21BY2Uo
aG9zdC50b0xhdGluMSgpICsgUUJ5dGVBcnJheSgiLm5vIikpOwogICAgIGRlY29kZWQudHJ1bmNh
dGUoZGVjb2RlZC5sZW5ndGgoKSAtIDMpOwogICAgIHJldHVybiBkZWNvZGVkOwogfQogCi12b2lk
IFRlc3RSdW5uZXI6OmNsb3NlV2ViSW5zcGVjdG9yKCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpjbG9z
ZVdlYkluc3BlY3RvcigpCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndlYkluc3Bl
Y3RvckNsb3NlKG1fZHJ0LT5wYWdlQWRhcHRlcigpKTsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5z
ZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFi
bGVkLCBmYWxzZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZChib29sIGVuYWJsZWQpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0RGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3Mo
KS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCwgZW5h
YmxlZCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChib29sKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KIH0K
IAotdm9pZCBUZXN0UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkKK3ZvaWQgVGVzdFJ1bm5lclF0
OjpzaG93V2ViSW5zcGVjdG9yKCkKIHsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygp
LT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpEZXZlbG9wZXJFeHRyYXNFbmFibGVkLCB0cnVl
KTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yU2hvdyhtX2RydC0+
cGFnZUFkYXB0ZXIoKSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3Bl
Y3Rvcihsb25nIGNhbGxJZCwgY29uc3QgUVN0cmluZyYgc2NyaXB0KQordm9pZCBUZXN0UnVubmVy
UXQ6OmV2YWx1YXRlSW5XZWJJbnNwZWN0b3IobG9uZyBjYWxsSWQsIGNvbnN0IFFTdHJpbmcmIHNj
cmlwdCkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2ViSW5zcGVjdG9yRXhlY3V0
ZVNjcmlwdChtX2RydC0+cGFnZUFkYXB0ZXIoKSwgY2FsbElkLCBzY3JpcHQpOwogfQogCi12b2lk
IFRlc3RSdW5uZXI6OmdvQmFjaygpCit2b2lkIFRlc3RSdW5uZXJRdDo6Z29CYWNrKCkKIHsKICAg
ICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z29CYWNrKG1fZHJ0LT5wYWdlQWRhcHRlcigpKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZmxhZykKK3ZvaWQg
VGVzdFJ1bm5lclF0OjpzZXREZWZlcnNMb2FkaW5nKGJvb2wgZmxhZykKIHsKICAgICBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6c2V0RGVmZXJzTG9hZGluZyhtX2RydC0+cGFnZUFkYXB0ZXIoKSwg
ZmxhZyk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHMoYm9vbCBlbmFibGVkKQordm9pZCBUZXN0UnVubmVyUXQ6OnNldEFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX2RydC0+d2ViUGFn
ZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRD
YW5BY2Nlc3NSZW1vdGVVcmxzLCBlbmFibGVkKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQordm9pZCBUZXN0UnVubmVy
UXQ6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiB7CiAgICAg
bV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6
TG9jYWxDb250ZW50Q2FuQWNjZXNzRmlsZVVybHMsIGVuYWJsZWQpOwogfQogCi12b2lkIFRlc3RS
dW5uZXI6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQor
dm9pZCBUZXN0UnVubmVyUXQ6OnNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKQogewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldE9mZmxp
bmVXZWJBcHBsaWNhdGlvbkNhY2hlUXVvdGEocXVvdGEpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6
OnNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQsIGJvb2wgaXNBdXRvZmls
bGVkKQordm9pZCBUZXN0UnVubmVyUXQ6OnNldEF1dG9maWxsZWQoY29uc3QgUVdlYkVsZW1lbnQm
IGVsZW1lbnQsIGJvb2wgaXNBdXRvZmlsbGVkKQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2V0QXV0b2ZpbGxlZChlbGVtZW50LCBpc0F1dG9maWxsZWQpOwogfQogCi12
b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgUVN0cmluZyYgdmFsdWUpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0VmFsdWVGb3JV
c2VyKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50LCBjb25zdCBRU3RyaW5nJiB2YWx1ZSkKIHsK
ICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0VmFsdWVGb3JVc2VyKGVsZW1lbnQsIHZh
bHVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRGaXhlZENvbnRlbnRzU2l6ZShpbnQgd2lk
dGgsIGludCBoZWlnaHQpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0Rml4ZWRDb250ZW50c1NpemUo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIG1fdG9wTG9hZGluZ0ZyYW1lLT5wYWdlKCkt
PnNldFByZWZlcnJlZENvbnRlbnRzU2l6ZShRU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiB9CiAKLXZv
aWQgVGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZSkKK3Zv
aWQgVGVzdFJ1bm5lclF0OjpzZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlKQog
ewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0
dGluZ3M6OlByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGVuYWJsZSk7CiB9CiAKLXZvaWQgVGVzdFJ1
bm5lcjo6c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkKGJvb2wgZW5hYmxlKQordm9pZCBUZXN0
UnVubmVyUXQ6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAg
ICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdz
OjpTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQsIGVuYWJsZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpCit2b2lkIFRlc3RSdW5uZXJR
dDo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7CiAgICAgbV9kcnQtPndl
YlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlw
dENhbk9wZW5XaW5kb3dzLCAhZW5hYmxlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRQbHVn
aW5zRW5hYmxlZChib29sIGZsYWcpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0UGx1Z2luc0VuYWJs
ZWQoYm9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjpzZXRQT1NJWExvY2FsZShjb25zdCBRU3RyaW5nJiBsb2NhbGUpCit2b2lkIFRlc3RS
dW5uZXJRdDo6c2V0UE9TSVhMb2NhbGUoY29uc3QgUVN0cmluZyYgbG9jYWxlKQogewogICAgIFFM
b2NhbGUgcWxvY2FsZShsb2NhbGUpOwogICAgIFFMb2NhbGU6OnNldERlZmF1bHQocWxvY2FsZSk7
CiB9IAogCi12b2lkIFRlc3RSdW5uZXI6OnNldFdpbmRvd0lzS2V5KGJvb2wgaXNLZXkpCit2b2lk
IFRlc3RSdW5uZXJRdDo6c2V0V2luZG93SXNLZXkoYm9vbCBpc0tleSkKIHsKICAgICBtX2RydC0+
c3dpdGNoRm9jdXMoaXNLZXkpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1haW5GcmFtZUlz
Rmlyc3RSZXNwb25kZXIoYm9vbCBpc0ZpcnN0KQordm9pZCBUZXN0UnVubmVyUXQ6OnNldE1haW5G
cmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCBpc0ZpcnN0KQogewogICAgIC8vRklYTUU6IG9ubHkg
bmVlZCB0aGlzIGZvciB0aGUgbW9tZW50OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzI5OTAKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRKYXZhU2NyaXB0Q2FuQWNj
ZXNzQ2xpcGJvYXJkKGJvb2wgZW5hYmxlKQordm9pZCBUZXN0UnVubmVyUXQ6OnNldEphdmFTY3Jp
cHRDYW5BY2Nlc3NDbGlwYm9hcmQoYm9vbCBlbmFibGUpCiB7CiAgICAgbV9kcnQtPndlYlBhZ2Uo
KS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6SmF2YXNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZCwgZW5hYmxlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRYU1NBdWRp
dG9yRW5hYmxlZChib29sIGVuYWJsZSkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRYU1NBdWRpdG9y
RW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICAvLyBTZXQgWFNTQXVkaXRpbmdFbmFibGVkIGds
b2JhbGx5IHNvIHRoYXQgd2luZG93cyBjcmVhdGVkIGJ5IHRoZSB0ZXN0IGluaGVyaXQgaXQgdG9v
LgogICAgIC8vIHJlc2V0U2V0dGluZ3MoKSB3aWxsIGNhbGwgdGhpcyB0byByZXNldCB0aGUgcGFn
ZSBhbmQgZ2xvYmFsIHNldHRpbmcgdG8gZmFsc2UgYWdhaW4uCkBAIC01NDEsNDcgKzU0MSw0NyBA
QCB2b2lkIFRlc3RSdW5uZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKGJvb2wgZW5hYmxlKQogICAg
IG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6
OlhTU0F1ZGl0aW5nRW5hYmxlZCwgZW5hYmxlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpkaXNw
YXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKQordm9pZCBUZXN0UnVubmVyUXQ6OmRpc3BhdGNoUGVu
ZGluZ0xvYWRSZXF1ZXN0cygpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBmb3IgdGVzdGlu
ZyBmaXggZm9yIDY3Mjc0OTUKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpjbGVhckFsbEFwcGxpY2F0
aW9uQ2FjaGVzKCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVz
KCkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y2xlYXJBbGxBcHBsaWNhdGlvbkNh
Y2hlcygpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OmNsZWFyQXBwbGljYXRpb25DYWNoZUZvck9y
aWdpbihjb25zdCBRU3RyaW5nJiB1cmwpCit2b2lkIFRlc3RSdW5uZXJRdDo6Y2xlYXJBcHBsaWNh
dGlvbkNhY2hlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHVybCkKIHsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRvIHN1cHBvcnQgZGVsZXRpbmcgYWxsIGFwcGxpY2F0aW9uIGNhY2hlcyBmb3Ig
YW4gb3JpZ2luLgogfQogCi1sb25nIGxvbmcgVGVzdFJ1bm5lcjo6bG9jYWxTdG9yYWdlRGlza1Vz
YWdlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpCitsb25nIGxvbmcg
VGVzdFJ1bm5lclF0Ojpsb2NhbFN0b3JhZ2VEaXNrVXNhZ2VGb3JPcmlnaW4oY29uc3QgUVN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllcikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBv
cnQgZ2V0dGluZyBkaXNrIHVzYWdlIGluIGJ5dGVzIGZvciBhbiBvcmlnaW4uCiAgICAgcmV0dXJu
IDA7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3Rh
KHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQogewogICAgIGlm
ICghbV90b3BMb2FkaW5nRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBtX3RvcExvYWRpbmdG
cmFtZS0+c2VjdXJpdHlPcmlnaW4oKS5zZXRBcHBsaWNhdGlvbkNhY2hlUXVvdGEocXVvdGEpOwog
fQogCi1sb25nIGxvbmcgVGVzdFJ1bm5lcjo6YXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9y
aWdpbihjb25zdCBRU3RyaW5nJiBvcmlnaW4pCitsb25nIGxvbmcgVGVzdFJ1bm5lclF0OjphcHBs
aWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKGNvbnN0IFFTdHJpbmcmIG9yaWdpbikKIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHN1cHBvcnQgZ2V0dGluZyBkaXNrIHVzYWdlIGJ5
IGFsbCBhcHBsaWNhdGlvbiBjYWNoZXMgZm9yIGFuIG9yaWdpbi4KICAgICByZXR1cm4gMDsKIH0K
IAotUVN0cmluZ0xpc3QgVGVzdFJ1bm5lcjo6b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCkK
K1FTdHJpbmdMaXN0IFRlc3RSdW5uZXJRdDo6b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKCkK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIGdldCBvcmlnaW5zIHRoYXQgaGF2ZSBhcHBs
aWNhdGlvbiBjYWNoZXMuCiAgICAgcmV0dXJuIFFTdHJpbmdMaXN0KCk7CiB9CiAKLXZvaWQgVGVz
dFJ1bm5lcjo6c2V0Q2FjaGVNb2RlbChpbnQgbW9kZWwpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0
Q2FjaGVNb2RlbChpbnQgbW9kZWwpCiB7CiAgICAgLy8gcXdlYnNldHRpbmcgZG9lc24ndCBoYXZl
IG1hdGNoZWQgc2V0dGluZyB5ZXQgOgogICAgIC8vIFdFQktJVF9DQUNIRV9NT0RFTF9ET0NVTUVO
VF9WSUVXRVIKQEAgLTU5MSw0MSArNTkxLDQxIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q2FjaGVN
b2RlbChpbnQgbW9kZWwpCiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KIAotdm9pZCBUZXN0
UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKGludCBzaXplKQordm9pZCBUZXN0UnVubmVyUXQ6OnNl
dERhdGFiYXNlUXVvdGEoaW50IHNpemUpCiB7CiAgICAgaWYgKCFtX3RvcExvYWRpbmdGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG1fdG9wTG9hZGluZ0ZyYW1lLT5zZWN1cml0eU9yaWdpbigp
LnNldERhdGFiYXNlUXVvdGEoc2l6ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6Y2xlYXJBbGxE
YXRhYmFzZXMoKQordm9pZCBUZXN0UnVubmVyUXQ6OmNsZWFyQWxsRGF0YWJhc2VzKCkKIHsKICAg
ICBRV2ViRGF0YWJhc2U6OnJlbW92ZUFsbERhdGFiYXNlcygpOwogfQogCi12b2lkIFRlc3RSdW5u
ZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9y
aWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQordm9pZCBU
ZXN0UnVubmVyUXQ6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFFTdHJpbmcm
IHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3Qg
UVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3Jp
Z2luKHNvdXJjZU9yaWdpbiwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6cmVtb3Zl
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBj
b25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5h
dGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit2b2lkIFRlc3RSdW5u
ZXJRdDo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgUVN0cmluZyYgc291
cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3Ry
aW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlbW92ZVdoaXRlTGlzdEFjY2Vzc0Zyb21P
cmlnaW4oc291cmNlT3JpZ2luLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wgcGVybWlzc2l2ZSkKK3ZvaWQg
VGVzdFJ1bm5lclF0OjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIGVuYWJsZWQsIGJvb2wg
cGVybWlzc2l2ZSkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0Q3VzdG9tUG9s
aWN5RGVsZWdhdGUoZW5hYmxlZCwgcGVybWlzc2l2ZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
d2FpdEZvclBvbGljeURlbGVnYXRlKCkKK3ZvaWQgVGVzdFJ1bm5lclF0Ojp3YWl0Rm9yUG9saWN5
RGVsZWdhdGUoKQogewogICAgIHNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRydWUpOwogICAgIG1f
d2FpdEZvclBvbGljeSA9IHRydWU7CiAgICAgd2FpdFVudGlsRG9uZSgpOwogfQogCi12b2lkIFRl
c3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBRU3RyaW5nJiBuYW1lLCBjb25zdCBR
VmFyaWFudCYgdmFsdWUpCit2b2lkIFRlc3RSdW5uZXJRdDo6b3ZlcnJpZGVQcmVmZXJlbmNlKGNv
bnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFWYXJpYW50JiB2YWx1ZSkKIHsKICAgICBRV2ViU2V0
dGluZ3MqIHNldHRpbmdzID0gbV90b3BMb2FkaW5nRnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKTsK
IApAQCAtNjYyLDcgKzY2Miw3IEBAIHZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNl
KGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFWYXJpYW50JiB2YWx1ZSkKICAgICAgICAgICAg
IG5hbWUudG9MYXRpbjEoKS5kYXRhKCkpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24oY29uc3QgUVN0cmluZyYgdXJsKQordm9pZCBUZXN0UnVubmVyUXQ6
OnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oY29uc3QgUVN0cmluZyYgdXJsKQogewogICAgIFFC
eXRlQXJyYXkgdXJsRGF0YSA9IHBhdGhUb0xvY2FsUmVzb3VyY2UodXJsKS50b0xhdGluMSgpOwog
ICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFFVcmw6OmZyb21FbmNvZGVkKHVybERhdGEs
IFFVcmw6OlN0cmljdE1vZGUpOwpAQCAtNjcxLDE3ICs2NzEsMTcgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uKGNvbnN0IFFTdHJpbmcmIHVybCkKICAgICAgICAg
c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKHRydWUpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNl
dENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgdmFsdWUpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0
Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQobV9kcnQtPnBhZ2VBZGFwdGVyKCksIHZh
bHVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZChib29sIHZhbHVlKQordm9pZCBUZXN0UnVubmVyUXQ6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKGJvb2wgdmFsdWUpCiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldEF1
dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKG1fZHJ0LT5wYWdlQWRhcHRlcigpLCB2YWx1ZSk7CiB9
CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogICAgIG1fdXNlclN0eWxlU2hlZXRFbmFibGVkID0gZW5hYmxlZDsKIApAQCAtNjkx
LDE3ICs2OTEsMTcgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRV
c2VyU3R5bGVTaGVldFVybChRVXJsKCkpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldERvbWFp
blJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFT
dHJpbmcmIHNjaGVtZSkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXREb21haW5SZWxheGF0aW9uRm9y
YmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBRU3RyaW5nJiBzY2hlbWUp
CiB7CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3Ji
aWRkZW5Gb3JVUkxTY2hlbWUoZm9yYmlkZGVuLCBzY2hlbWUpOwogfQogCi1ib29sIFRlc3RSdW5u
ZXI6OmNhbGxTaG91bGRDbG9zZU9uV2ViVmlldygpCitib29sIFRlc3RSdW5uZXJRdDo6Y2FsbFNo
b3VsZENsb3NlT25XZWJWaWV3KCkKIHsKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnNob3VsZENsb3NlKG1fZHJ0LT5tYWluRnJhbWVBZGFwdGVyKCkpOwogfQogCi12b2lkIFRl
c3RSdW5uZXI6OnNldFNjcm9sbGJhclBvbGljeShjb25zdCBRU3RyaW5nJiBvcmllbnRhdGlvbiwg
Y29uc3QgUVN0cmluZyYgcG9saWN5KQordm9pZCBUZXN0UnVubmVyUXQ6OnNldFNjcm9sbGJhclBv
bGljeShjb25zdCBRU3RyaW5nJiBvcmllbnRhdGlvbiwgY29uc3QgUVN0cmluZyYgcG9saWN5KQog
ewogICAgIFF0OjpPcmllbnRhdGlvbiBvOwogICAgIFF0OjpTY3JvbGxCYXJQb2xpY3kgcDsKQEAg
LTcyNSw1MiArNzI1LDUyIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U2Nyb2xsYmFyUG9saWN5KGNv
bnN0IFFTdHJpbmcmIG9yaWVudGF0aW9uLCBjb25zdCBRU3RyaW5nJiBwCiAgICAgbV9kcnQtPndl
YlBhZ2UoKS0+bWFpbkZyYW1lKCktPnNldFNjcm9sbEJhclBvbGljeShvLCBwKTsKIH0KIAotdm9p
ZCBUZXN0UnVubmVyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBlbmFibGUpCit2
b2lkIFRlc3RSdW5uZXJRdDo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgZW5hYmxl
KQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQobV9kcnQtPnBhZ2VBZGFwdGVyKCksIGVuYWJsZSk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZChib29sIGVuYWJsZSkKK3ZvaWQg
VGVzdFJ1bm5lclF0OjpzZXRTZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKGJvb2wgZW5h
YmxlKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRTZWxlY3RUcmFpbGluZ1do
aXRlc3BhY2VFbmFibGVkKG1fZHJ0LT5wYWdlQWRhcHRlcigpLCBlbmFibGUpOwogfQogCi12b2lk
IFRlc3RSdW5uZXI6OmV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcmIG5hbWUsIGNvbnN0IFFTdHJp
bmcmIHZhbHVlKQordm9pZCBUZXN0UnVubmVyUXQ6OmV4ZWNDb21tYW5kKGNvbnN0IFFTdHJpbmcm
IG5hbWUsIGNvbnN0IFFTdHJpbmcmIHZhbHVlKQogewogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9y
dFF0OjpleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUobV9kcnQtPnBhZ2VBZGFwdGVyKCksIG5hbWUs
IHZhbHVlKTsKIH0KIAotYm9vbCBUZXN0UnVubmVyOjppc0NvbW1hbmRFbmFibGVkKGNvbnN0IFFT
dHJpbmcmIG5hbWUpIGNvbnN0Citib29sIFRlc3RSdW5uZXJRdDo6aXNDb21tYW5kRW5hYmxlZChj
b25zdCBRU3RyaW5nJiBuYW1lKSBjb25zdAogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6aXNDb21tYW5kRW5hYmxlZChtX2RydC0+cGFnZUFkYXB0ZXIoKSwgbmFtZSk7CiB9
CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhjb25zdCBRU3RyaW5nJiBzdHJpbmcsIGNv
bnN0IFFTdHJpbmdMaXN0JiBvcHRpb25BcnJheSkKK2Jvb2wgVGVzdFJ1bm5lclF0OjpmaW5kU3Ry
aW5nKGNvbnN0IFFTdHJpbmcmIHN0cmluZywgY29uc3QgUVN0cmluZ0xpc3QmIG9wdGlvbkFycmF5
KQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZmluZFN0cmluZyhtX2Ry
dC0+cGFnZUFkYXB0ZXIoKSwgc3RyaW5nLCBvcHRpb25BcnJheSk7CiB9CiAKLVFTdHJpbmcgVGVz
dFJ1bm5lcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKGNvbnN0IFFXZWJFbGVtZW50JiBsaXN0SXRl
bSkKK1FTdHJpbmcgVGVzdFJ1bm5lclF0OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgUVdl
YkVsZW1lbnQmIGxpc3RJdGVtKQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6bWFya2VyVGV4dEZvckxpc3RJdGVtKGxpc3RJdGVtKTsKIH0KIAotUVZhcmlhbnRNYXAgVGVz
dFJ1bm5lcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNvbnN0IFFXZWJFbGVt
ZW50JiBlbGVtZW50KSBjb25zdAorUVZhcmlhbnRNYXAgVGVzdFJ1bm5lclF0Ojpjb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oZWxlbWVudCk7CiB9CiAKLWJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVu
dERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJ
ZCkKK2Jvb2wgVGVzdFJ1bm5lclF0OjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRX
aXRoSWQoY29uc3QgUVN0cmluZyYgZWxlbWVudElkKQogewogICAgIHJldHVybiBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdDo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKG1f
ZHJ0LT5tYWluRnJhbWVBZGFwdGVyKCksIGVsZW1lbnRJZCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6YXV0aGVudGljYXRlU2Vzc2lvbihjb25zdCBRU3RyaW5nJiwgY29uc3QgUVN0cmluZyYsIGNv
bnN0IFFTdHJpbmcmKQordm9pZCBUZXN0UnVubmVyUXQ6OmF1dGhlbnRpY2F0ZVNlc3Npb24oY29u
c3QgUVN0cmluZyYsIGNvbnN0IFFTdHJpbmcmLCBjb25zdCBRU3RyaW5nJikKIHsKICAgICAvLyBG
SVhNRTogSWYgdGhlcmUgaXMgYSBjb25jZXB0IHBlci1zZXNzaW9uIChwZXItcHJvY2VzcykgY3Jl
ZGVudGlhbCBzdG9yYWdlLCB0aGUgY3JlZGVudGlhbHMgc2hvdWxkIGJlIGFkZGVkIHRvIGl0IGZv
ciBsYXRlciB1c2UuCiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxl
ZChib29sIGVuYWJsZSkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRJY29uRGF0YWJhc2VFbmFibGVk
KGJvb2wgZW5hYmxlKQogewogICAgIGlmIChlbmFibGUgJiYgIW1fZHJ0LT5wZXJzaXN0ZW50U3Rv
cmFnZVBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIFFXZWJTZXR0aW5nczo6c2V0SWNvbkRhdGFi
YXNlUGF0aChtX2RydC0+cGVyc2lzdGVudFN0b3JhZ2VQYXRoKCkpOwpAQCAtNzc4LDE0ICs3Nzgs
MTQgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRJY29uRGF0YWJhc2VFbmFibGVkKGJvb2wgZW5hYmxl
KQogICAgICAgICBRV2ViU2V0dGluZ3M6OnNldEljb25EYXRhYmFzZVBhdGgoUVN0cmluZygpKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oYm9vbCBjYW5Q
cm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJl
dGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpCit2b2lkIFRlc3RSdW5uZXJR
dDo6c2V0TW9ja0RldmljZU9yaWVudGF0aW9uKGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUg
YWxwaGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVH
YW1tYSwgZG91YmxlIGdhbW1hKQogewogICAgIFFMaXN0PFdlYkNvcmU6OldlYlBhZ2UqPiBwYWdl
cyA9IG1fZHJ0LT5nZXRBbGxQYWdlcygpOwogICAgIGZvcmVhY2ggKFdlYkNvcmU6OldlYlBhZ2Uq
IHBhZ2UsIHBhZ2VzKQogICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0Rl
dmljZU9yaWVudGF0aW9uKHBhZ2UtPmhhbmRsZSgpLCBjYW5Qcm92aWRlQWxwaGEsIGFscGhhLCBj
YW5Qcm92aWRlQmV0YSwgYmV0YSwgY2FuUHJvdmlkZUdhbW1hLCBnYW1tYSk7CiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCit2b2lkIFRl
c3RSdW5uZXJRdDo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJvb2wgYWxsb3cpCiB7CiAgICAg
c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uQ29tbW9uKGFsbG93KTsKICAgICBRTGlzdDxXZWJDb3Jl
OjpXZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxsUGFnZXMoKTsKQEAgLTc5Myw3ICs3OTMs
NyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEdlb2xvY2F0aW9uUGVybWlzc2lvbihib29sIGFsbG93
KQogICAgICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUGVy
bWlzc2lvbihwYWdlLT5oYW5kbGUoKSwgYWxsb3cpOwogfQogCi1pbnQgVGVzdFJ1bm5lcjo6bnVt
YmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKQoraW50IFRlc3RSdW5u
ZXJRdDo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKQogewog
ICAgIGludCBwZW5kaW5nUGVybWlzc2lvbkNvdW50ID0gMDsKICAgICBRTGlzdDxXZWJDb3JlOjpX
ZWJQYWdlKj4gcGFnZXMgPSBtX2RydC0+Z2V0QWxsUGFnZXMoKTsKQEAgLTgwMywxMTIgKzgwMywx
MTIgQEAgaW50IFRlc3RSdW5uZXI6Om51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKCkKICAgICByZXR1cm4gcGVuZGluZ1Blcm1pc3Npb25Db3VudDsKIH0KIAotdm9p
ZCBUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYm9vbCBhbGxvdykK
K3ZvaWQgVGVzdFJ1bm5lclF0OjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb25Db21tb24oYm9vbCBh
bGxvdykKIHsKICAgICAgbV9pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCA9IHRydWU7CiAgICAg
IG1fZ2VvbG9jYXRpb25QZXJtaXNzaW9uID0gYWxsb3c7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25VbmF2YWlsYWJsZUVycm9yKGNvbnN0IFFTdHJpbmcm
IG1lc3NhZ2UpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb25V
bmF2YWlsYWJsZUVycm9yKGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgUUxpc3Q8V2Vi
Q29yZTo6V2ViUGFnZSo+IHBhZ2VzID0gbV9kcnQtPmdldEFsbFBhZ2VzKCk7CiAgICAgZm9yZWFj
aCAoV2ViQ29yZTo6V2ViUGFnZSogcGFnZSwgcGFnZXMpCiAgICAgICAgIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IocGFn
ZS0+aGFuZGxlKCksIG1lc3NhZ2UpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tHZW9s
b2NhdGlvblBvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91Ymxl
IGFjY3VyYWN5KQordm9pZCBUZXN0UnVubmVyUXQ6OnNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9u
KGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KQogewog
ICAgIFFMaXN0PFdlYkNvcmU6OldlYlBhZ2UqPiBwYWdlcyA9IG1fZHJ0LT5nZXRBbGxQYWdlcygp
OwogICAgIGZvcmVhY2ggKFdlYkNvcmU6OldlYlBhZ2UqIHBhZ2UsIHBhZ2VzKQogICAgICAgICBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0TW9ja0dlb2xvY2F0aW9uUG9zaXRpb24ocGFnZS0+
aGFuZGxlKCksIGxhdGl0dWRlLCBsb25naXR1ZGUsIGFjY3VyYWN5KTsKIH0KIAotdm9pZCBUZXN0
UnVubmVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoY29uc3QgUVN0cmluZyYgcmVzdWx0LCBk
b3VibGUgY29uZmlkZW5jZSwgY29uc3QgUVN0cmluZyYgbGFuZ3VhZ2UpCit2b2lkIFRlc3RSdW5u
ZXJRdDo6YWRkTW9ja1NwZWVjaElucHV0UmVzdWx0KGNvbnN0IFFTdHJpbmcmIHJlc3VsdCwgZG91
YmxlIGNvbmZpZGVuY2UsIGNvbnN0IFFTdHJpbmcmIGxhbmd1YWdlKQogewogICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAgLy8gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KIH0KIAotdm9pZCBU
ZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNoSW5wdXREdW1wUmVjdChib29sIGZsYWcpCit2b2lkIFRl
c3RSdW5uZXJRdDo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJlY3QoYm9vbCBmbGFnKQogewogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIHNwZWVjaCBpbnB1dCBsYXlvdXQgdGVzdHMuCiAgICAg
Ly8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTQ4NS4KIH0K
IAotdm9pZCBUZXN0UnVubmVyOjpzdGFydFNwZWVjaElucHV0KGNvbnN0IFFTdHJpbmcmIGlucHV0
RWxlbWVudCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpzdGFydFNwZWVjaElucHV0KGNvbnN0IFFTdHJp
bmcmIGlucHV0RWxlbWVudCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBzcGVlY2gg
aW5wdXQgbGF5b3V0IHRlc3RzLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzk0ODUuCiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZShpbnQgd29ybGRJRCwgY29uc3QgUVN0cmlu
ZyYgc2NyaXB0KQordm9pZCBUZXN0UnVubmVyUXQ6OmV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdv
cmxkQW5kUmV0dXJuVmFsdWUoaW50IHdvcmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKIHsK
ICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFRlc3RSdW5uZXI6OmV2YWx1YXRl
U2NyaXB0SW5Jc29sYXRlZFdvcmxkKGludCB3b3JsZElELCBjb25zdCBRU3RyaW5nJiBzY3JpcHQp
Cit2b2lkIFRlc3RSdW5uZXJRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQoaW50IHdv
cmxkSUQsIGNvbnN0IFFTdHJpbmcmIHNjcmlwdCkKIHsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6ZXZhbHVhdGVTY3JpcHRJbklzb2xhdGVkV29ybGQobV9kcnQtPm1haW5GcmFtZUFkYXB0
ZXIoKSwgd29ybGRJRCwgc2NyaXB0KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjphZGRVc2VyU3R5
bGVTaGVldChjb25zdCBRU3RyaW5nJiBzb3VyY2VDb2RlKQordm9pZCBUZXN0UnVubmVyUXQ6OmFk
ZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFFTdHJpbmcmIHNvdXJjZUNvZGUpCiB7CiAgICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmFkZFVzZXJTdHlsZVNoZWV0KG1fZHJ0LT5wYWdlQWRhcHRlcigp
LCBzb3VyY2VDb2RlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlu
a3MoKQordm9pZCBUZXN0UnVubmVyUXQ6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7CiAgICAg
UVdlYkhpc3RvcnkqIGhpc3RvcnkgPSBtX2RydC0+d2ViUGFnZSgpLT5oaXN0b3J5KCk7CiAgICAg
aGlzdG9yeS0+Y2xlYXIoKTsKICAgICBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrcyh0cnVlKTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjphZGRVUkxUb1Jl
ZGlyZWN0KGNvbnN0IFFTdHJpbmcmIG9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb24p
Cit2b2lkIFRlc3RSdW5uZXJRdDo6YWRkVVJMVG9SZWRpcmVjdChjb25zdCBRU3RyaW5nJiBvcmln
aW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uKQogewogICAgIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjphZGRVUkxUb1JlZGlyZWN0KG9yaWdpbiwgZGVzdGluYXRpb24pOwogfQogCi12b2lk
IFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKCkKK3ZvaWQgVGVzdFJ1bm5lclF0
OjpvcmlnaW5zV2l0aExvY2FsU3RvcmFnZSgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4K
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpkZWxldGVBbGxMb2NhbFN0b3JhZ2UoKQordm9pZCBUZXN0
UnVubmVyUXQ6OmRlbGV0ZUFsbExvY2FsU3RvcmFnZSgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KIH0KIAotdm9pZCBUZXN0UnVubmVyOjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4o
Y29uc3QgUVN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKK3ZvaWQgVGVzdFJ1bm5lclF0OjpkZWxl
dGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4oY29uc3QgUVN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikK
IHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFRlc3RSdW5uZXI6Om9ic2Vy
dmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnModW5zaWduZWQgbnVtYmVyKQordm9pZCBUZXN0
UnVubmVyUXQ6Om9ic2VydmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnModW5zaWduZWQgbnVt
YmVyKQogewogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6
c3luY0xvY2FsU3RvcmFnZSgpCit2b2lkIFRlc3RSdW5uZXJRdDo6c3luY0xvY2FsU3RvcmFnZSgp
CiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KIAotdm9pZCBUZXN0UnVubmVyOjpyZXNl
dFBhZ2VWaXNpYmlsaXR5KCkKK3ZvaWQgVGVzdFJ1bm5lclF0OjpyZXNldFBhZ2VWaXNpYmlsaXR5
KCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiB9CiAKLXZvaWQgVGVzdFJ1bm5l
cjo6c2V0UGFnZVZpc2liaWxpdHkoY29uc3QgY2hhciopCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0
UGFnZVZpc2liaWxpdHkoY29uc3QgY2hhciopCiB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0
aGlzLgogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkKGJvb2wpCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVu
YWJsZWQoYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCiB9CiAKLXZvaWQg
VGVzdFJ1bm5lcjo6c2V0VGV4dERpcmVjdGlvbihjb25zdCBRU3RyaW5nJiBkaXJlY3Rpb25OYW1l
KQordm9pZCBUZXN0UnVubmVyUXQ6OnNldFRleHREaXJlY3Rpb24oY29uc3QgUVN0cmluZyYgZGly
ZWN0aW9uTmFtZSkKIHsKICAgICBpZiAoZGlyZWN0aW9uTmFtZSA9PSAiYXV0byIpCiAgICAgICAg
IG1fZHJ0LT53ZWJQYWdlKCktPnRyaWdnZXJBY3Rpb24oUVdlYlBhZ2U6OlNldFRleHREaXJlY3Rp
b25EZWZhdWx0KTsKQEAgLTkxOCw3ICs5MTgsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldFRleHRE
aXJlY3Rpb24oY29uc3QgUVN0cmluZyYgZGlyZWN0aW9uTmFtZSkKICAgICAgICAgbV9kcnQtPndl
YlBhZ2UoKS0+dHJpZ2dlckFjdGlvbihRV2ViUGFnZTo6U2V0VGV4dERpcmVjdGlvbkxlZnRUb1Jp
Z2h0KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpzZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2wg
YWNjZXB0KQordm9pZCBUZXN0UnVubmVyUXQ6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoYm9vbCBh
Y2NlcHQpCiB7CiAgICAgUVdlYlNldHRpbmdzKiBnbG9iYWxTZXR0aW5ncyA9IFFXZWJTZXR0aW5n
czo6Z2xvYmFsU2V0dGluZ3MoKTsKICAgICBpZiAoYWNjZXB0KQpAQCAtOTI5LDcgKzkyOSw3IEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhib29sIGFjY2VwdCkKICAg
ICB9CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQmxvY2tDb29raWVzKGJvb2wgYmxv
Y2spCit2b2lkIFRlc3RSdW5uZXJRdDo6c2V0QWx3YXlzQmxvY2tDb29raWVzKGJvb2wgYmxvY2sp
CiB7CiAgICAgUVdlYlNldHRpbmdzKiBnbG9iYWxTZXR0aW5ncyA9IFFXZWJTZXR0aW5nczo6Z2xv
YmFsU2V0dGluZ3MoKTsKICAgICBpZiAoYmxvY2spCkBAIC05MzgsMTEgKzkzOCwxMSBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldEFsd2F5c0Jsb2NrQ29va2llcyhib29sIGJsb2NrKQogICAgICAgICBn
bG9iYWxTZXR0aW5ncy0+c2V0VGhpcmRQYXJ0eUNvb2tpZVBvbGljeShRV2ViU2V0dGluZ3M6OkFs
d2F5c0FsbG93VGhpcmRQYXJ0eUNvb2tpZXMpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnNldEF1
ZGlvRGF0YShjb25zdCBRQnl0ZUFycmF5JiBhdWRpb0RhdGEpCit2b2lkIFRlc3RSdW5uZXJRdDo6
c2V0QXVkaW9EYXRhKGNvbnN0IFFCeXRlQXJyYXkmIGF1ZGlvRGF0YSkKIHsKICAgICBtX2F1ZGlv
RGF0YSA9IGF1ZGlvRGF0YTsKICAgICBtX2F1ZGlvRHVtcCA9IHRydWU7CiB9CiAKLWNvbnN0IHVu
c2lnbmVkIFRlc3RSdW5uZXI6Om1heFZpZXdXaWR0aCA9IDgwMDsKLWNvbnN0IHVuc2lnbmVkIFRl
c3RSdW5uZXI6Om1heFZpZXdIZWlnaHQgPSA2MDA7Citjb25zdCB1bnNpZ25lZCBUZXN0UnVubmVy
UXQ6Om1heFZpZXdXaWR0aCA9IDgwMDsKK2NvbnN0IHVuc2lnbmVkIFRlc3RSdW5uZXJRdDo6bWF4
Vmlld0hlaWdodCA9IDYwMDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rl
c3RSdW5uZXJRdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKaW5k
ZXggZTZmODNlMWE2NTU1OTZjNTNjMjkxNDllNDBhNDhjZDY4ZTRjNjc2ZC4uYmMyYWY5YTE0MzMx
MmZmYjcyNjA1ODVjNDUwMzI3ZmNiNWUxMjlmZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvcXQvVGVzdFJ1bm5lclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVz
dFJ1bm5lclF0LmgKQEAgLTUzLDEyICs1MywxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBEdW1wUmVuZGVyVHJlZTsKIH0KIAotY2xhc3MgVGVzdFJ1bm5lciA6IHB1YmxpYyBRT2JqZWN0
IHsKK2NsYXNzIFRlc3RSdW5uZXJRdCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX09CSkVDVAog
ICAgIFFfUFJPUEVSVFkoaW50IHdlYkhpc3RvcnlJdGVtQ291bnQgUkVBRCB3ZWJIaXN0b3J5SXRl
bUNvdW50KQogICAgIFFfUFJPUEVSVFkoYm9vbCBnbG9iYWxGbGFnIFJFQUQgZ2xvYmFsRmxhZyBX
UklURSBzZXRHbG9iYWxGbGFnKQogcHVibGljOgotICAgIFRlc3RSdW5uZXIoV2ViQ29yZTo6RHVt
cFJlbmRlclRyZWUqKTsKKyAgICBUZXN0UnVubmVyUXQoV2ViQ29yZTo6RHVtcFJlbmRlclRyZWUq
KTsKIAogICAgIGJvb2wgc2hvdWxkRGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVR
dW90YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2Fj
aGVRdW90YTsgfQogICAgIGJvb2wgc2hvdWxkRHVtcEFzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGV4dER1bXA7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>