<?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>112144</bug_id>
          
          <creation_ts>2013-03-12 06:44:55 -0700</creation_ts>
          <short_desc>[Qt] Prepare DRT for transition to shared TestRunner interface</short_desc>
          <delta_ts>2013-03-13 14:56:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>109694</dependson>
          <blocked>109677</blocked>
    
    <blocked>112147</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Simon Hausmann">hausmann</assigned_to>
          <cc>jturcotte</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853410</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-12 06:44:55 -0700</bug_when>
    <thetext>[Qt] Prepare DRT for transition to shared TestRunner interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853472</commentid>
    <comment_count>1</comment_count>
      <attachid>192739</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-12 08:09:14 -0700</bug_when>
    <thetext>Created attachment 192739
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853473</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-12 08:09:37 -0700</bug_when>
    <thetext>Just realized that this doesn&apos;t work quite right yet because the thisObject will be wrong. Working on a solution :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854097</commentid>
    <comment_count>3</comment_count>
      <attachid>192739</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-13 00:35:45 -0700</bug_when>
    <thetext>Comment on attachment 192739
Patch

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

&gt; Tools/ChangeLog:16
&gt; +        This is impplemented by instantiating the QObject based testRunner in
&gt; +        the global object, then instantiating the JSC C based TestRunner
&gt; +        separately and placing it &quot;behind&quot; the QObject based testRunner through
&gt; +        injection in the prototype chain. This allows for porting over method
&gt; +        by method by removing the method from the QObject TestRunnerQt and
&gt; +        implementing it in the JSC C based TestRunner.

Good idea!

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:982
&gt; +
&gt; +
&gt; +
&gt; +void TestRunner::notifyDone()

many spaces?

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1001
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::removeAllWebNotificationPermissions()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1010
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::closeIdleLocalStorageDatabases()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1015
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::focusWebView()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1024
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::removeChromeInputField()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1029
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::addChromeInputField()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1034
&gt; +}
&gt; +
&gt; +
&gt; +JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1048
&gt; +
&gt; +
&gt; +void TestRunner::observeStorageTrackerNotifications(unsigned number)

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1057
&gt; +}
&gt; +
&gt; +
&gt; +int TestRunner::windowCount()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1063
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::setWaitToDump(bool)

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1068
&gt; +
&gt; +
&gt; +void TestRunner::waitForPolicyDelegate()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1078
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::showWebInspector()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1091
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::setSerializeHTTPLoads(bool)

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1100
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::setCustomPolicyDelegate(bool setDelegate, bool permissive)

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1113
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::resetPageVisibility()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1118
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::keepWebHistory()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1123
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::goBack()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1138
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::display()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1143
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::dispatchPendingLoadRequests()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1148
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::clearPersistentUserStyleSheet()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1163
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::clearBackForwardList()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1168
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::clearAllDatabases()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1177
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::apiTestGoToCurrentBackForwardItem()

Ditto.

&gt; Tools/DumpRenderTree/qt/TestRunnerQt.cpp:1186
&gt; +}
&gt; +
&gt; +
&gt; +void TestRunner::abortModal()

Ditto.

Etc, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854234</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-13 05:51:27 -0700</bug_when>
    <thetext>Committed r145708: &lt;http://trac.webkit.org/changeset/145708&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854352</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-03-13 09:21:32 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Committed r145708: &lt;http://trac.webkit.org/changeset/145708&gt;

It broke the Win build:
moc_TestRunnerQt.cpp
C:\WebKitBuildSlave\Qt5.0.1\include\QtCore/qdatetime.h(123) : warning C4003: not enough actual parameters for macro &apos;min&apos;
C:\WebKitBuildSlave\Qt5.0.1\include\QtCore/qdatetime.h(123) : error C2589: &apos;(&apos; : illegal token on right side of &apos;::&apos;
C:\WebKitBuildSlave\Qt5.0.1\include\QtCore/qdatetime.h(123) : error C2059: syntax error : &apos;::&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854682</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-13 14:56:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Committed r145708: &lt;http://trac.webkit.org/changeset/145708&gt;
&gt; 
&gt; It broke the Win build:
&gt; moc_TestRunnerQt.cpp
&gt; C:\WebKitBuildSlave\Qt5.0.1\include\QtCore/qdatetime.h(123) : warning C4003: not enough actual parameters for macro &apos;min&apos;
&gt; C:\WebKitBuildSlave\Qt5.0.1\include\QtCore/qdatetime.h(123) : error C2589: &apos;(&apos; : illegal token on right side of &apos;::&apos;
&gt; C:\WebKitBuildSlave\Qt5.0.1\include\QtCore/qdatetime.h(123) : error C2059: syntax error : &apos;::&apos;

Oops. Sorry!

Prospective fix landed in http://trac.webkit.org/changeset/145747 *crossing fingers*</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192739</attachid>
            <date>2013-03-12 08:09:14 -0700</date>
            <delta_ts>2013-03-13 00:35:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112144-20130312160513.patch</filename>
            <type>text/plain</type>
            <size>18946</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NDk4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZThjZGFkZjljODVkODdkMjlkZDU0OWY1YzgwNjc0ZTZl
ZWY1Njc4Ny4uYTBjMWFiOTM1ZGUwYmQwZjViMjQzMTE3ZmQyYzc1YmMzNzI3ZjVlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
NSBAQAorMjAxMy0wMy0xMiAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5j
b20+CisKKyAgICAgICAgW1F0XSBQcmVwYXJlIERSVCBmb3IgdHJhbnNpdGlvbiB0byBzaGFyZWQg
VGVzdFJ1bm5lciBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTExMjE0NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFByZXBhcmUgUXQncyBEUlQgZm9yIGEgdHJhbnNpdGlvbiBmcm9tIHRoZSBR
T2JqZWN0IGJhc2VkIFRlc3RSdW5uZXIgdG8KKyAgICAgICAgdGhlIEpTQyBDIEFQSSBiYXNlZCBv
bmUuCisKKyAgICAgICAgVGhpcyBpcyBpbXBwbGVtZW50ZWQgYnkgaW5zdGFudGlhdGluZyB0aGUg
UU9iamVjdCBiYXNlZCB0ZXN0UnVubmVyIGluCisgICAgICAgIHRoZSBnbG9iYWwgb2JqZWN0LCB0
aGVuIGluc3RhbnRpYXRpbmcgdGhlIEpTQyBDIGJhc2VkIFRlc3RSdW5uZXIKKyAgICAgICAgc2Vw
YXJhdGVseSBhbmQgcGxhY2luZyBpdCAiYmVoaW5kIiB0aGUgUU9iamVjdCBiYXNlZCB0ZXN0UnVu
bmVyIHRocm91Z2gKKyAgICAgICAgaW5qZWN0aW9uIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uIFRo
aXMgYWxsb3dzIGZvciBwb3J0aW5nIG92ZXIgbWV0aG9kCisgICAgICAgIGJ5IG1ldGhvZCBieSBy
ZW1vdmluZyB0aGUgbWV0aG9kIGZyb20gdGhlIFFPYmplY3QgVGVzdFJ1bm5lclF0IGFuZAorICAg
ICAgICBpbXBsZW1lbnRpbmcgaXQgaW4gdGhlIEpTQyBDIGJhc2VkIFRlc3RSdW5uZXIuCisKKyAg
ICAgICAgSW4gb3JkZXIgZm9yIHRoaXMgdG8gbGluayBhbmQgcnVuIGR1bW15IGltcGxlbWVudGF0
aW9ucyBvZiBhbGwgdGhlCisgICAgICAgIG5lY2Vzc2FyeSBUZXN0UnVubmVyIGZ1bmN0aW9ucyBh
cmUgcHJvdmlkZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZS5wcm86CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVNYWluLmNw
cDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkR1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVm
b3JlVGVzdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpEdW1wUmVuZGVyVHJlZTo6aW5pdEpTT2Jq
ZWN0cyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rl
c3RSdW5uZXJRdC5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjp+VGVzdFJ1bm5lcik6CisgICAg
ICAgIChUZXN0UnVubmVyOjphZGREaXNhbGxvd2VkVVJMKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnF1ZXVlTG9hZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3Mp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0QWNjZXB0c0VkaXRpbmcpOgorICAgICAgICAoVGVz
dFJ1bm5lcjo6c2ltdWxhdGVMZWdhY3lXZWJOb3RpZmljYXRpb25DbGljayk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRXaW5kb3dJc0tleSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBbHdh
eXNBY2NlcHRDb29raWVzKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFdlYlZpZXdFZGl0YWJsZSk6
CisgICAgICAgIChUZXN0UnVubmVyOjpjbGVhckFsbEFwcGxpY2F0aW9uQ2FjaGVzKToKKyAgICAg
ICAgKFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
bm90aWZ5RG9uZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpudW1iZXJPZlBlbmRpbmdHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0cyk6CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVBy
ZWZlcmVuY2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6cGF0aFRvTG9jYWxSZXNvdXJjZSk6Cisg
ICAgICAgIChUZXN0UnVubmVyOjpyZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9ucyk6
CisgICAgICAgIChUZXN0UnVubmVyOjpzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNrKToKKyAg
ICAgICAgKFRlc3RSdW5uZXI6OmNsb3NlSWRsZUxvY2FsU3RvcmFnZURhdGFiYXNlcyk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpmb2N1c1dlYlZpZXcpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0
QmFja2luZ1NjYWxlRmFjdG9yKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnJlbW92ZUNocm9tZUlu
cHV0RmllbGQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YWRkQ2hyb21lSW5wdXRGaWVsZCk6Cisg
ICAgICAgIChUZXN0UnVubmVyOjpvcmlnaW5zV2l0aExvY2FsU3RvcmFnZSk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpkZWxldGVBbGxMb2NhbFN0b3JhZ2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
ZGVsZXRlTG9jYWxTdG9yYWdlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Om9ic2Vy
dmVTdG9yYWdlVHJhY2tlck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3lu
Y0xvY2FsU3RvcmFnZSk6CisgICAgICAgIChUZXN0UnVubmVyOjp3aW5kb3dDb3VudCk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpzZXRXYWl0VG9EdW1wKToKKyAgICAgICAgKFRlc3RSdW5uZXI6Ondh
aXRGb3JQb2xpY3lEZWxlZ2F0ZSk6CisgICAgICAgIChUZXN0UnVubmVyOjp3ZWJIaXN0b3J5SXRl
bUNvdW50KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNob3dXZWJJbnNwZWN0b3IpOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6Y2xvc2VXZWJJbnNwZWN0b3IpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6
ZXZhbHVhdGVJbldlYkluc3BlY3Rvcik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRTZXJpYWxp
emVIVFRQTG9hZHMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFM
b2FkQmFzZVVSTCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0
ZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUpOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6cmVzZXRQYWdlVmlzaWJpbGl0eSk6CisgICAgICAgIChUZXN0UnVu
bmVyOjprZWVwV2ViSGlzdG9yeSk6CisgICAgICAgIChUZXN0UnVubmVyOjpnb0JhY2spOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmFwcGxpY2F0aW9uQ2FjaGVEaXNrVXNhZ2VGb3JPcmlnaW4pOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6ZGlzcGxheSk6CisgICAgICAgIChUZXN0UnVubmVyOjpkaXNwYXRjaFBl
bmRpbmdMb2FkUmVxdWVzdHMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2xlYXJQZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2FsbFNob3VsZENsb3NlT25X
ZWJWaWV3KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5hbWUpOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6Y2xlYXJCYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6Y2xlYXJBbGxEYXRhYmFzZXMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6Y2xlYXJBcHBs
aWNhdGlvbkNhY2hlRm9yT3JpZ2luKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFwaVRlc3RHb1Rv
Q3VycmVudEJhY2tGb3J3YXJkSXRlbSk6CisgICAgICAgIChUZXN0UnVubmVyOjphdXRoZW50aWNh
dGVTZXNzaW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFib3J0TW9kYWwpOgorICAgICAgICAo
VGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVydmFsKToKKyAgICAgICAgKFRl
c3RSdW5uZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFhTU0F1ZGl0b3JFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRT
Y3JvbGxiYXJQb2xpY3kpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0
ZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldEVu
YWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbik6
CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSk6
CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKToKKyAgICAg
ICAgKFRlc3RSdW5uZXI6OnNldFNlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQpOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzZXRQbHVnaW5zRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRQ
b3B1cEJsb2NraW5nRW5hYmxlZCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrU3BlZWNo
SW5wdXREdW1wUmVjdCk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRQZXJzaXN0ZW50VXNlclN0
eWxlU2hlZXRMb2NhdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRp
b25Qb3NpdGlvbik6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0TW9ja0Rldmlj
ZU9yaWVudGF0aW9uKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldE1haW5GcmFtZUlzRmlyc3RS
ZXNwb25kZXIpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCk6
CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRHZW9sb2NhdGlvblBlcm1pc3Npb24pOgorICAgICAg
ICAoVGVzdFJ1bm5lcjo6c2V0RGVmZXJzTG9hZGluZyk6CisgICAgICAgIChUZXN0UnVubmVyOjpz
ZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMcyk6CisgICAgICAgIChUZXN0UnVubmVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXplKToK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSk6
CisgICAgICAgIChUZXN0UnVubmVyOjpkZW55V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbik6Cisg
ICAgICAgIChUZXN0UnVubmVyOjpncmFudFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24pOgorICAg
ICAgICAoVGVzdFJ1bm5lcjo6c2V0VmFsdWVGb3JVc2VyKToKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnNldFZpZXdNb2RlTWVkaWFGZWF0dXJlKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFBhZ2VW
aXNpYmlsaXR5KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZE1vY2tTcGVlY2hJbnB1dFJlc3Vs
dCk6CisgICAgICAgIChUZXN0UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSk6CisgICAgICAgIChUZXN0UnVubmVyOjphZGRVc2VyU2NyaXB0KToKKyAgICAgICAgKFRlc3RS
dW5uZXI6OmlzQ29tbWFuZEVuYWJsZWQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZXZhbHVhdGVT
Y3JpcHRJbklzb2xhdGVkV29ybGQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZXZhbHVhdGVTY3Jp
cHRJbklzb2xhdGVkV29ybGRBbmRSZXR1cm5WYWx1ZSk6CisgICAgICAgIChUZXN0UnVubmVyOjpj
b3B5RW5jb2RlZEhvc3ROYW1lKToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmFkZFVzZXJTdHlsZVNo
ZWV0KToKKyAgICAgICAgKFRlc3RSdW5uZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAoVGVzdFJ1
bm5lcjo6ZXhlY0NvbW1hbmQpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6bG9jYWxTdG9yYWdlRGlz
a1VzYWdlRm9yT3JpZ2luKToKKwogMjAxMy0wMy0xMSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgW01hY11bV0sxXSBBZGQgc3VwcG9ydCBmb3IgYWxlcnQoKSBp
biBNaW5pQnJvd3Nlci4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBS
ZW5kZXJUcmVlLnBybyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBy
bwppbmRleCBhMmY4NTYzMmM2NGNjNWI3NTNmNzVjMDdkNzY1OGYxMTZiMTBkM2Y3Li4xODRlNTZk
YmVlMTBlMzVkZmNmNzk1ZGExNjBiYWFmZWZmNTBlNGY0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvRHVtcFJlbmRlclRyZWUucHJvCkBAIC0yNyw2ICsyNyw3IEBAIEhFQURFUlMgKz0gXAog
ICAgICQkUFdELy4uL1dvcmtRdWV1ZS5oIFwKICAgICAkJFBXRC8uLi9EdW1wUmVuZGVyVHJlZS5o
IFwKICAgICAkJFBXRC8uLi9HQ0NvbnRyb2xsZXIuaCBcCisgICAgJCRQV0QvLi4vVGV4dFJ1bm5l
ci5oIFwKICAgICBEdW1wUmVuZGVyVHJlZVF0LmggXAogICAgIEV2ZW50U2VuZGVyUXQuaCBcCiAg
ICAgVGV4dElucHV0Q29udHJvbGxlclF0LmggXApAQCAtMzgsNiArMzksNyBAQCBTT1VSQ0VTICs9
IFwKICAgICAkJFBXRC8uLi9Xb3JrUXVldWUuY3BwIFwKICAgICAkJFBXRC8uLi9EdW1wUmVuZGVy
VHJlZUNvbW1vbi5jcHAgXAogICAgICQkUFdELy4uL0dDQ29udHJvbGxlci5jcHAgXAorICAgICQk
UFdELy4uL1Rlc3RSdW5uZXIuY3BwIFwKICAgICBEdW1wUmVuZGVyVHJlZVF0LmNwcCBcCiAgICAg
RXZlbnRTZW5kZXJRdC5jcHAgXAogICAgIFRleHRJbnB1dENvbnRyb2xsZXJRdC5jcHAgXApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVNYWluLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlTWFpbi5jcHAKaW5kZXggNTAy
NmQzY2E0MzY1MjBjODA0YWU0Nzk5NWQ0MWFlMDZiMTRlYmVmOS4uMDVmNjFjNzc5OTVmMzE3ZGE4
YjU5ZWVmYjNkMTBkYWNjYjYxYjUzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvRHVtcFJlbmRlclRyZWVNYWluLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9E
dW1wUmVuZGVyVHJlZU1haW4uY3BwCkBAIC00Miw3ICs0Miw2IEBACiAKIAogI2luY2x1ZGUgPHd0
Zi9BbHdheXNJbmxpbmUuaD4KLSNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CiAKICNpZmRl
ZiBRX1dTX1gxMQogI2luY2x1ZGUgPHF4MTFpbmZvX3gxMS5oPgpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcAppbmRleCAyM2ZkMzVjMWM2ZmI1ZjE3OTMzYjY1
MzJiZDRjODc0MTcwMGU4Y2QyLi4xNzdhMDM4ZDg3MjUxMjE1MmM0MzQ2NDQ5MWQzZDE1MzYwNzQy
Y2MwIDEwMDc1NQotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZVF0LmNwcApA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkluaXRXZWJDb3JlUXQuaCIKICNpbmNsdWRlICJJ
bml0V2ViS2l0UXQuaCIKICNpbmNsdWRlICJRdFRlc3RTdXBwb3J0LmgiCisjaW5jbHVkZSAiVGVz
dFJ1bm5lci5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJRdC5oIgogI2luY2x1ZGUgIlRleHRJbnB1
dENvbnRyb2xsZXJRdC5oIgogI2luY2x1ZGUgInRlc3RwbHVnaW4uaCIKQEAgLTUyNCw2ICs1MjUs
OCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlQmVmb3JlVGVz
dGluZyhjb25zdCBRVXJsJiB1cmwpCiAgICAgLy8gb2YgdGhlIERSVC4KICAgICBtX2NvbnRyb2xs
ZXItPnJlc2V0KCk7CiAKKyAgICBtX2pzY0NvbnRyb2xsZXIgPSBUZXN0UnVubmVyOjpjcmVhdGUo
dXJsLnRvU3RyaW5nKCkudG9TdGRTdHJpbmcoKSwgbV9leHBlY3RlZEhhc2gudG9TdGRTdHJpbmco
KSk7CisKICAgICAvLyByZXNldCBtb3VzZSBjbGlja3MgY291bnRlcgogICAgIG1fZXZlbnRTZW5k
ZXItPnJlc2V0Q2xpY2tDb3VudCgpOwogCkBAIC03NDYsNiArNzQ5LDE1IEBAIHZvaWQgRHVtcFJl
bmRlclRyZWU6OmluaXRKU09iamVjdHMoKQogICAgIGZyYW1lLT5hZGRUb0phdmFTY3JpcHRXaW5k
b3dPYmplY3QoUUxhdGluMVN0cmluZygidGV4dElucHV0Q29udHJvbGxlciIpLCBtX3RleHRJbnB1
dENvbnRyb2xsZXIpOwogICAgIG1fZ2NDb250cm9sbGVyLT5tYWtlV2luZG93T2JqZWN0KGNvbnRl
eHQsIHdpbmRvdywgMCk7CiAKKyAgICBpZiAobV9qc2NDb250cm9sbGVyKSB7CisgICAgICAgIEpT
T2JqZWN0UmVmIGR1bW15V2luZG93ID0gSlNPYmplY3RNYWtlKGNvbnRleHQsIDAsIDApOworICAg
ICAgICBtX2pzY0NvbnRyb2xsZXItPm1ha2VXaW5kb3dPYmplY3QoY29udGV4dCwgZHVtbXlXaW5k
b3csIDApOworICAgICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gdGVzdFJ1bm5lck5hbWUo
QWRvcHQsIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJ0ZXN0UnVubmVyIikpOworICAg
ICAgICBKU1ZhbHVlUmVmIHdyYXBwZWRUZXN0UnVubmVyID0gSlNPYmplY3RHZXRQcm9wZXJ0eShj
b250ZXh0LCBkdW1teVdpbmRvdywgdGVzdFJ1bm5lck5hbWUuZ2V0KCksIDApOworICAgICAgICBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaGVscGVyU2NyaXB0KEFkb3B0LCBKU1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZygidGVzdFJ1bm5lci5fX3Byb3RvX18gPSB0aGlzIikpOworICAgICAg
ICBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIGhlbHBlclNjcmlwdC5nZXQoKSwgSlNWYWx1ZVRv
T2JqZWN0KGNvbnRleHQsIHdyYXBwZWRUZXN0UnVubmVyLCAwKSwgMCwgMCwgMCk7CisgICAgfQor
CiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmluamVjdEludGVybmFsc09iamVjdChmcmFt
ZS0+aGFuZGxlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9E
dW1wUmVuZGVyVHJlZVF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJl
ZVF0LmgKaW5kZXggZGM1NTAwYTQxNzcwOTAxOTc1NzkwNWVmOGYxNmM5ZDQ5NjgxMjc4MC4uNjFk
MDdjZDY3MTJkOGM0ODZjOTNhYmVlMTc3NTJiMDg0MzYxYTYxYiAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWVRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlUXQuaApAQCAtNDEsMTIgKzQxLDE0IEBACiAjZW5kaWYK
IAogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgiCisjaW5jbHVkZSAiVGVzdFJ1
bm5lci5oIgogI2luY2x1ZGUgPHFncmFwaGljc3ZpZXcuaD4KICNpbmNsdWRlIDxxZ3JhcGhpY3N3
ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXdlYmZyYW1lLmg+CiAjaW5jbHVkZSA8cXdlYmluc3BlY3Rv
ci5oPgogI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAjaW5jbHVkZSA8cXdlYnZpZXcuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUVVybDsKQEAg
LTE0NCw2ICsxNDYsNyBAQCBwcml2YXRlOgogICAgIFFTdHJpbmcgZHVtcEJhY2tGb3J3YXJkTGlz
dChRV2ViUGFnZSogcGFnZSk7CiAgICAgUVN0cmluZyBkdW1wRnJhbWVTY3JvbGxQb3NpdGlvbihR
V2ViRnJhbWUqIGZyYW1lKTsKICAgICBUZXN0UnVubmVyUXQgKm1fY29udHJvbGxlcjsKKyAgICBS
ZWZQdHI8VGVzdFJ1bm5lcj4gbV9qc2NDb250cm9sbGVyOwogCiAgICAgYm9vbCBtX2R1bXBQaXhl
bHNGb3JDdXJyZW50VGVzdDsKICAgICBib29sIG1fZHVtcFBpeGVsc0ZvckFsbFRlc3RzOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKaW5kZXggZTVlODI0MzBlMTdkZTI5
NjE3OTMzNWQ0ZTY1NTg1ZDFiNGM3MjljMC4uZmQwMTg2MGU1ZjQyNGYzMjRkNmM0NGVhYjZkODU2
MzNjZjNhMDFmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5l
clF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCkBA
IC00OCw2ICs0OCwxMCBAQCBUZXN0UnVubmVyUXQ6OlRlc3RSdW5uZXJRdChXZWJDb3JlOjpEdW1w
UmVuZGVyVHJlZSogZHJ0KQogICAgIHJlc2V0KCk7CiB9CiAKK1Rlc3RSdW5uZXI6On5UZXN0UnVu
bmVyKCkKK3sKK30KKwogdm9pZCBUZXN0UnVubmVyUXQ6OnJlc2V0KCkKIHsKICAgICBtX2hhc0R1
bXBlZCA9IGZhbHNlOwpAQCAtOTI2LDMgKzkzMCw0ODggQEAgdm9pZCBUZXN0UnVubmVyUXQ6OnNl
dEF1ZGlvRGF0YShjb25zdCBRQnl0ZUFycmF5JiBhdWRpb0RhdGEpCiAKIGNvbnN0IHVuc2lnbmVk
IFRlc3RSdW5uZXJRdDo6bWF4Vmlld1dpZHRoID0gODAwOwogY29uc3QgdW5zaWduZWQgVGVzdFJ1
bm5lclF0OjptYXhWaWV3SGVpZ2h0ID0gNjAwOworCisvLyAtLS0gSlNDIEMgQVBJIHN0dWJzCisK
K3ZvaWQgVGVzdFJ1bm5lcjo6YWRkRGlzYWxsb3dlZFVSTChKU1N0cmluZ1JlZiB1cmwpCit7Cit9
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cXVldWVMb2FkKEpTU3RyaW5nUmVmIHVybCwgSlNTdHJpbmdS
ZWYgdGFyZ2V0KQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5r
cygpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QWNjZXB0c0VkaXRpbmcoYm9vbCkKK3sK
K30KKwordm9pZCBUZXN0UnVubmVyOjpzaW11bGF0ZUxlZ2FjeVdlYk5vdGlmaWNhdGlvbkNsaWNr
KEpTU3RyaW5nUmVmIHRpdGxlKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFdpbmRvd0lz
S2V5KGJvb2wpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QWx3YXlzQWNjZXB0Q29va2ll
cyhib29sKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KEpTU3RyaW5nUmVmIHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Q
cm90b2NvbCwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFdlYlZpZXdFZGl0YWJs
ZShib29sKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OmNsZWFyQWxsQXBwbGljYXRpb25DYWNo
ZXMoKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFRleHREaXJlY3Rpb24oSlNTdHJpbmdS
ZWYpCit7Cit9CisKKworCit2b2lkIFRlc3RSdW5uZXI6Om5vdGlmeURvbmUoKQoreworfQorCitp
bnQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHMoKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJl
ZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVlKQoreworfQorCitKU1N0
cmluZ1JlZiBUZXN0UnVubmVyOjpwYXRoVG9Mb2NhbFJlc291cmNlKEpTQ29udGV4dFJlZiwgSlNT
dHJpbmdSZWYgdXJsKQoreworICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygwKTsgLy8gIyMjIFRha2UgaW1wbCBmcm9tIFdUUgorfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6
cmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQoreworfQorCit2b2lkIFRlc3RS
dW5uZXI6OnNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2soSlNWYWx1ZVJlZiBub3RpZmljYXRp
b24pCit7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpjbG9zZUlkbGVMb2NhbFN0b3JhZ2VEYXRh
YmFzZXMoKQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6Zm9jdXNXZWJWaWV3KCkKK3sKK30K
Kwordm9pZCBUZXN0UnVubmVyOjpzZXRCYWNraW5nU2NhbGVGYWN0b3IoZG91YmxlKQoreworfQor
CisKK3ZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQ2hyb21lSW5wdXRGaWVsZCgpCit7Cit9CisKKwor
dm9pZCBUZXN0UnVubmVyOjphZGRDaHJvbWVJbnB1dEZpZWxkKCkKK3sKK30KKworCitKU1ZhbHVl
UmVmIFRlc3RSdW5uZXI6Om9yaWdpbnNXaXRoTG9jYWxTdG9yYWdlKEpTQ29udGV4dFJlZiBjb250
ZXh0KQoreworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Cit9CisKK3ZvaWQg
VGVzdFJ1bm5lcjo6ZGVsZXRlQWxsTG9jYWxTdG9yYWdlKCkKK3sKK30KKwordm9pZCBUZXN0UnVu
bmVyOjpkZWxldGVMb2NhbFN0b3JhZ2VGb3JPcmlnaW4oSlNTdHJpbmdSZWYgb3JpZ2luSWRlbnRp
ZmllcikKK3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6Om9ic2VydmVTdG9yYWdlVHJhY2tlck5v
dGlmaWNhdGlvbnModW5zaWduZWQgbnVtYmVyKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnN5
bmNMb2NhbFN0b3JhZ2UoKQoreworfQorCisKK2ludCBUZXN0UnVubmVyOjp3aW5kb3dDb3VudCgp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpzZXRXYWl0VG9EdW1w
KGJvb2wpCit7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjp3YWl0Rm9yUG9saWN5RGVsZWdhdGUo
KQoreworfQorCitzaXplX3QgVGVzdFJ1bm5lcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCit7Cisg
ICAgcmV0dXJuIDA7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpzaG93V2ViSW5zcGVjdG9yKCkK
K3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpjbG9zZVdlYkluc3BlY3RvcigpCit7Cit9CisKK3Zv
aWQgVGVzdFJ1bm5lcjo6ZXZhbHVhdGVJbldlYkluc3BlY3Rvcihsb25nIGNhbGxJZCwgSlNTdHJp
bmdSZWYgc2NyaXB0KQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U2VyaWFsaXplSFRU
UExvYWRzKGJvb2wpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0Rh
dGFMb2FkQmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSZWYgYmFzZVVSTCkK
K3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6OnNldEN1c3RvbVBvbGljeURlbGVnYXRlKGJvb2wg
c2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpz
ZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKK3sKK30KKwordm9pZCBU
ZXN0UnVubmVyOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wg
Zm9yYmlkZGVuLCBKU1N0cmluZ1JlZiBzY2hlbWUpCit7Cit9CisKKwordm9pZCBUZXN0UnVubmVy
OjpyZXNldFBhZ2VWaXNpYmlsaXR5KCkKK3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6OmtlZXBX
ZWJIaXN0b3J5KCkKK3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6OmdvQmFjaygpCit7Cit9CisK
K0pTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6b3JpZ2luc1dpdGhBcHBsaWNhdGlvbkNhY2hlKEpTQ29u
dGV4dFJlZiBjb250ZXh0KQoreworICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7
Cit9CisKK2xvbmcgbG9uZyBUZXN0UnVubmVyOjphcHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9y
T3JpZ2luKEpTU3RyaW5nUmVmIG5hbWUpCit7CisgICAgcmV0dXJuIDA7Cit9CisKKwordm9pZCBU
ZXN0UnVubmVyOjpkaXNwbGF5KCkKK3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6OmRpc3BhdGNo
UGVuZGluZ0xvYWRSZXF1ZXN0cygpCit7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpjbGVhclBl
cnNpc3RlbnRVc2VyU3R5bGVTaGVldCgpCit7Cit9CisKK2Jvb2wgVGVzdFJ1bm5lcjo6Y2FsbFNo
b3VsZENsb3NlT25XZWJWaWV3KCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0pTU3RyaW5n
UmVmIFRlc3RSdW5uZXI6OmNvcHlEZWNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKK3sK
KyAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoMCk7Cit9CisKKwordm9p
ZCBUZXN0UnVubmVyOjpjbGVhckJhY2tGb3J3YXJkTGlzdCgpCit7Cit9CisKKwordm9pZCBUZXN0
UnVubmVyOjpjbGVhckFsbERhdGFiYXNlcygpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5lcjo6Y2xl
YXJBcHBsaWNhdGlvbkNhY2hlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG5hbWUpCit7Cit9CisKKwor
dm9pZCBUZXN0UnVubmVyOjphcGlUZXN0R29Ub0N1cnJlbnRCYWNrRm9yd2FyZEl0ZW0oKQorewor
fQorCit2b2lkIFRlc3RSdW5uZXI6OmF1dGhlbnRpY2F0ZVNlc3Npb24oSlNTdHJpbmdSZWYgdXJs
LCBKU1N0cmluZ1JlZiB1c2VybmFtZSwgSlNTdHJpbmdSZWYgcGFzc3dvcmQpCit7Cit9CisKKwor
dm9pZCBUZXN0UnVubmVyOjphYm9ydE1vZGFsKCkKK3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6
OnNldFN0b3JhZ2VEYXRhYmFzZUlkbGVJbnRlcnZhbChkb3VibGUpCit7Cit9CisKKwordm9pZCBU
ZXN0UnVubmVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKQorewor
fQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0WFNTQXVkaXRvckVuYWJsZWQoYm9vbCBmbGFnKQor
eworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29s
KQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNjcm9sbGJhclBvbGljeShKU1N0cmluZ1Jl
ZiBvcmllbnRhdGlvbiwgSlNTdHJpbmdSZWYgcG9saWN5KQoreworfQorCisKK3ZvaWQgVGVzdFJ1
bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29sIGZsYWcpCit7Cit9CisK
K3ZvaWQgVGVzdFJ1bm5lcjo6c2V0QXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoYm9vbCBm
bGFnKQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVk
KGJvb2wgZmxhZykKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCit7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpzZXRV
c2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZShib29sIGZsYWcpCit7Cit9CisKKwordm9pZCBU
ZXN0UnVubmVyOjpzZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoYm9vbCkKK3sKK30KKwor
Cit2b2lkIFRlc3RSdW5uZXI6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sKQorewor
fQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0U2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxl
ZChib29sKQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0UHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZChib29sKQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0UGx1Z2luc0VuYWJsZWQo
Ym9vbCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChi
b29sKQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0TW9ja1NwZWVjaElucHV0RHVtcFJl
Y3QoYm9vbCBmbGFnKQoreworfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFBlcnNpc3RlbnRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpCit7Cit9CisKKwordm9pZCBUZXN0
UnVubmVyOjpzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGJvb2wgcHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1
ZGVBY2N1cmFjeSwgYm9vbCBwcm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHBy
b3ZpZGVzU3BlZWQsIGRvdWJsZSBzcGVlZCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRN
b2NrR2VvbG9jYXRpb25Qb3NpdGlvblVuYXZhaWxhYmxlRXJyb3IoSlNTdHJpbmdSZWYgbWVzc2Fn
ZSkKK3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6OnNldE1vY2tEZXZpY2VPcmllbnRhdGlvbihi
b29sIGNhblByb3ZpZGVBbHBoYSwgZG91YmxlIGFscGhhLCBib29sIGNhblByb3ZpZGVCZXRhLCBk
b3VibGUgYmV0YSwgYm9vbCBjYW5Qcm92aWRlR2FtbWEsIGRvdWJsZSBnYW1tYSkKK3sKK30KKwor
Cit2b2lkIFRlc3RSdW5uZXI6OnNldE1haW5GcmFtZUlzRmlyc3RSZXNwb25kZXIoYm9vbCBmbGFn
KQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0SWNvbkRhdGFiYXNlRW5hYmxlZChib29s
KQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6c2V0R2VvbG9jYXRpb25QZXJtaXNzaW9uKGJv
b2wgYWxsb3cpCit7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpzZXREZWZlcnNMb2FkaW5nKGJv
b2wpCit7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpzZXRDYWNoZU1vZGVsKGludCkKK3sKK30K
KworCit2b2lkIFRlc3RSdW5uZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wp
Cit7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoYm9vbCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXpl
KHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkKK3sKK30KKworCit2b2lkIFRlc3RSdW5uZXI6OnNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpCit7Cit9CisKKwordm9pZCBU
ZXN0UnVubmVyOjpzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodW5zaWduZWQgbG9uZyBs
b25nKQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZGVueVdlYk5vdGlmaWNhdGlvblBlcm1p
c3Npb24oSlNTdHJpbmdSZWYgb3JpZ2luKQoreworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6Z3Jh
bnRXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKEpTU3RyaW5nUmVmIG9yaWdpbikKK3sKK30KKwor
Cit2b2lkIFRlc3RSdW5uZXI6OnNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVS
ZWYgbm9kZU9iamVjdCwgSlNTdHJpbmdSZWYgdmFsdWUpCit7Cit9CisKK3ZvaWQgVGVzdFJ1bm5l
cjo6c2V0Vmlld01vZGVNZWRpYUZlYXR1cmUoSlNTdHJpbmdSZWYpCit7Cit9CisKKwordm9pZCBU
ZXN0UnVubmVyOjpzZXRQYWdlVmlzaWJpbGl0eShjb25zdCBjaGFyICopCit7Cit9CisKKwordm9p
ZCBUZXN0UnVubmVyOjphZGRNb2NrU3BlZWNoSW5wdXRSZXN1bHQoSlNTdHJpbmdSZWYgcmVzdWx0
LCBkb3VibGUgY29uZmlkZW5jZSwgSlNTdHJpbmdSZWYgbGFuZ3VhZ2UpCit7Cit9CisKKwordm9p
ZCBUZXN0UnVubmVyOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShKU1N0cmluZ1Jl
ZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEpTU3RyaW5n
UmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3sK
K30KKwordm9pZCBUZXN0UnVubmVyOjphZGRVc2VyU2NyaXB0KEpTU3RyaW5nUmVmIHNvdXJjZSwg
Ym9vbCBydW5BdFN0YXJ0LCBib29sIGFsbEZyYW1lcykKK3sKK30KKworCitib29sIFRlc3RSdW5u
ZXI6OmlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKKwordm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0ZWRXb3Js
ZCh1bnNpZ25lZCB3b3JsZElELCBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nUmVm
IHNjcmlwdCkKK3sKK30KKwordm9pZCBUZXN0UnVubmVyOjpldmFsdWF0ZVNjcmlwdEluSXNvbGF0
ZWRXb3JsZEFuZFJldHVyblZhbHVlKHVuc2lnbmVkIHdvcmxkSUQsIEpTT2JqZWN0UmVmIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmdSZWYgc2NyaXB0KQoreworfQorCisKK0pTU3RyaW5nUmVmIFRlc3RS
dW5uZXI6OmNvcHlFbmNvZGVkSG9zdE5hbWUoSlNTdHJpbmdSZWYgbmFtZSkKK3sKKyAgICByZXR1
cm4gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoMCk7Cit9CisKKwordm9pZCBUZXN0UnVu
bmVyOjphZGRVc2VyU3R5bGVTaGVldChKU1N0cmluZ1JlZiBzb3VyY2UsIGJvb2wgYWxsRnJhbWVz
KQoreworfQorCisKK2Jvb2wgVGVzdFJ1bm5lcjo6ZmluZFN0cmluZyhKU0NvbnRleHRSZWYsIEpT
U3RyaW5nUmVmLCBKU09iamVjdFJlZiBvcHRpb25zQXJyYXkpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCisKK3ZvaWQgVGVzdFJ1bm5lcjo6ZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYgbmFtZSwg
SlNTdHJpbmdSZWYgdmFsdWUpCit7Cit9CisKKworbG9uZyBsb25nIFRlc3RSdW5uZXI6OmxvY2Fs
U3RvcmFnZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBvcmlnaW5JZGVudGlmaWVyKQor
eworICAgIHJldHVybiAwOworfQorCg==
</data>
<flag name="review"
          id="214063"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>