<?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>164905</bug_id>
          
          <creation_ts>2016-11-17 19:49:45 -0800</creation_ts>
          <short_desc>Make it possible to test non-stable-state scrolling on iOS</short_desc>
          <delta_ts>2016-11-19 12:51:00 -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>Tools / Tests</component>
          <version>WebKit 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>164967</dependson>
          <blocked>164855</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>koivisto</cc>
    
    <cc>lforschler</cc>
    
    <cc>ossy</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252579</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-17 19:49:45 -0800</bug_when>
    <thetext>I need to be able to test scrolling behavior (tile coverage, scrolling tree state) when the viewport is not in a stable state, to simulate what happens in the middle of scrolling or zooming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252580</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-17 19:50:20 -0800</bug_when>
    <thetext>I have a patch but the associated layer tree dump, with visible and coverage rects, is flakey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252581</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-17 19:59:43 -0800</bug_when>
    <thetext>The source of the flakiness is that sometimes TileController::adjustTileCoverageRect() has CoverageForVisibleArea and sometimes CoverageForVerticalScrolling. That&apos;s affected by FrameView::speculativeTilingEnabled() which is in turn affected by FrameView::wasScrolledByUser(). FrameView:: wasScrolledByUser() is being set via EventHandler::sendScrollEvent() (why?). This is called from FrameView::scrollPositionChanged(), which uses the eventThrottlingDelay() from WebKit2.

There are also timers at various points in this chain. It&apos;s all very hard to get stable for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252582</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-17 20:04:05 -0800</bug_when>
    <thetext>In my particular case m_estimatedLatency is 16ms so we decide to send a scroll event, setting FrameView&apos;s scrolledByUser, which then triggers additional tile coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252597</commentid>
    <comment_count>4</comment_count>
      <attachid>295133</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-17 21:04:21 -0800</bug_when>
    <thetext>Created attachment 295133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252605</commentid>
    <comment_count>5</comment_count>
      <attachid>295135</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-17 22:16:48 -0800</bug_when>
    <thetext>Created attachment 295135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253011</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-18 19:01:14 -0800</bug_when>
    <thetext>Need to redo parts of this patch after bug 164980.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253087</commentid>
    <comment_count>7</comment_count>
      <attachid>295264</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-19 10:01:00 -0800</bug_when>
    <thetext>Created attachment 295264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253089</commentid>
    <comment_count>8</comment_count>
      <attachid>295264</attachid>
    <who name="">mitz</who>
    <bug_when>2016-11-19 10:22:49 -0800</bug_when>
    <thetext>Comment on attachment 295264
Patch

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

&gt; Source/WebKit2/ChangeLog:11
&gt; +        scrolling and layer trees in these transients states.

“transients”?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h:293
&gt; +@property (nonatomic, setter=_setStableStateOverride:) NSNumber *_stableStateOverride WK_API_AVAILABLE(ios(WK_IOS_TBA));

Can be readonly in this class, with subclasses redeclaring as readwrite.

&gt; Tools/WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:50
&gt; +@property (nonatomic, copy) NSNumber *testRunnerStableStateOverride;

Strange to add this level of indirection. Can just declare a RetainPtr&lt;NSNumber&gt; ivar to back the existing property.

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:63
&gt; +    [webView _doAfterNextPresentationUpdate:^ {

Extra space after the ^, and I thought we preferred C++ lambdas with explicit capture over Objective-C blocks.

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:423
&gt; +    if (overrideValue)
&gt; +        webView._stableStateOverride = @(overrideValue.value());
&gt; +    else
&gt; +        webView._stableStateOverride = nil;

Can be written more succinctly with a ternary operator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253091</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-19 11:02:34 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/208926</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253102</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-11-19 12:46:15 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; https://trac.webkit.org/changeset/208926

It broke the Apple Mac build on all buildbots, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253103</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-11-19 12:51:00 -0800</bug_when>
    <thetext>Fixing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295133</attachid>
            <date>2016-11-17 21:04:21 -0800</date>
            <delta_ts>2016-11-17 22:16:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164905-20161117210415.patch</filename>
            <type>text/plain</type>
            <size>34892</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGQ1YTM4NWNiN2YyNTFj
NmUxYzhjOWI5MmFjNzEyMWQwODAwZWRjYS4uMjkzODg4ODE5ZGY0MDk3OGFkZjM3NDJiZWYzNzI1
ODBlYjU4OTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTExLTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gdGVzdCBub24tc3RhYmxlLXN0YXRlIHNjcm9sbGluZyBvbiBpT1MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDkwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
Zm9yIGFuIGlPUyBsYXlvdXQgdGVzdCB0byBmb3JjZSBldmVyeSB2aXNpYmxlIHJlY3QgdXBkYXRl
CisgICAgICAgIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gdGhlIHdlYiBwcm9jZXNzIHRvIGJlIGlu
IGEgbm9uLXN0YWJsZSBzdGF0ZS4gVGhpcyBlbXVsYXRlcworICAgICAgICB3aGF0IGhhcHBlbnMg
ZHVyaW5nIHBhbm5pbmcgYW5kIHpvb21pbmcgaW50ZXJhY3Rpb25zLCBhbmQgYWxsb3dzIHVzIHRv
IHRlc3QgdGhlCisgICAgICAgIHNjcm9sbGluZyBhbmQgbGF5ZXIgdHJlZXMgaW4gdGhlc2UgdHJh
bnNpZW50cyBzdGF0ZXMuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBhIHRlc3Rp
bmcgcHJvcGVydHkgb24gV0tXZWJWaWV3LCBfc3RhYmxlU3RhdGVPdmVycmlkZSwgd2hvc2UKKyAg
ICAgICAgZ2V0dGVycyBhbmQgc2V0dGVycyBhcmUgb3ZlcnJpZGRlbiBpbiBUZXN0UnVubmVyV0tX
ZWJWaWV3LiBXaGVuIG5vbi1uaWwsIHdlIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBZnRlclNj
cm9sbEluVmlldworICAgICAgICBjb25zdWx0cyB0aGUgTlNOdW1iZXIncyBib29sVmFsdWUgYW5k
IHVzZXMgaXQgdG8gb3ZlcnJpZGUgdGhlIHN0YWJsZSBzdGF0ZS4KKworICAgICAgICBUbyBmYWNp
bGl0YXRlIHRoaXMga2luZCBvZiB0ZXN0aW5nLCBhbHNvIGFkZCBpbW1lZGlhdGVTY3JvbGxUb09m
ZnNldCgpIGFuZAorICAgICAgICBpbW1lZGlhdGVab29tVG9TY2FsZSgpIHRvIFVJU2NyaXB0Q29u
dHJvbGxlci4gRmluYWxseSwgYWRkIGRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoKQorICAgICAg
ICB3aGljaCBwcm92aWRlcyBhIGNhbGxiYWNrIHRoYXQgZmlyZXMgYWZ0ZXIgb25lIHRyaXAgdG8g
dGhlIHdlYiBwcm9jZXNzIGFuZCBiYWNrLgorCisgICAgICAgIFRoZSBhZGRlZCB0ZXN0IHByb3Zl
ZCBmbGFrZXksIGJlY2F1c2Ugb2Ygc3VidGxlIHRpbWluZyBpc3N1ZXMgd2hlcmUsIGRlcGVuZGlu
ZyBvbgorICAgICAgICB0aGUgZXN0aW1hdGVkIGxhdGVuY3kgYmV0d2VlbiB0aGUgVUkgcHJvY2Vz
cyBhbmQgd2ViIHByb2Nlc3MsIHdlIHdvdWxkIGRlY2lkZSBvciBub3QKKyAgICAgICAgdG8gZmly
ZSBhIHNjcm9sbCBldmVudCwgd2hpY2ggc2V0IEZyYW1lVmlldydzIHNjcm9sbGVkQnlVc2VyIGZs
YWcsIHdoaWNoIGluIHR1cm4gYWZmZWN0ZWQKKyAgICAgICAgc3BlY3VsYXRpdmUgdGlsaW5nLiBU
byByZW1vdmUgdGhpcyBzb3VyY2Ugb2YgZmxha2luZXNzLCBhZGQgYSBTZXR0aW5nIHdoaWNoIGFs
bG93cworICAgICAgICBzcGVjdWxhdGl2ZSB0aWxpbmcgdG8gYmUgZGlzYWJsZWQgZm9yIHRlc3Rp
bmcuCisKKyAgICAgICAgVGVzdDogc2Nyb2xsaW5nY29vcmRpbmF0b3IvaW9zL25vbi1zdGFibGUt
dmlld3BvcnQtc2Nyb2xsLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZW5hYmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRl
ZCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKwogMjAxNi0xMS0xNiAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBzbG90Y2hhbmdlIGV2ZW50IHNob3Vs
ZCBidWJibGUgYW5kIGRpc3BhdGNoZWQgb25jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFkNTE0ZGU3OTkwZTll
Y2U1ODQ3OTFmM2JhY2Q2Yzk0Mjk4YTU3OTcuLjE5N2JjZTY3YzM1MzRlNzY1NmE1OGI1ZDFiNDc2
YzIzYWEwMzY1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxNi0xMS0xNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBv
c3NpYmxlIHRvIHRlc3Qgbm9uLXN0YWJsZS1zdGF0ZSBzY3JvbGxpbmcgb24gaU9TCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxl
IGZvciBhbiBpT1MgbGF5b3V0IHRlc3QgdG8gZm9yY2UgZXZlcnkgdmlzaWJsZSByZWN0IHVwZGF0
ZQorICAgICAgICBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2VzcyB0byBiZSBp
biBhIG5vbi1zdGFibGUgc3RhdGUuIFRoaXMgZW11bGF0ZXMKKyAgICAgICAgd2hhdCBoYXBwZW5z
IGR1cmluZyBwYW5uaW5nIGFuZCB6b29taW5nIGludGVyYWN0aW9ucywgYW5kIGFsbG93cyB1cyB0
byB0ZXN0IHRoZQorICAgICAgICBzY3JvbGxpbmcgYW5kIGxheWVyIHRyZWVzIGluIHRoZXNlIHRy
YW5zaWVudHMgc3RhdGVzLgorCisgICAgICAgIFRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSB0ZXN0
aW5nIHByb3BlcnR5IG9uIFdLV2ViVmlldywgX3N0YWJsZVN0YXRlT3ZlcnJpZGUsIHdob3NlCisg
ICAgICAgIGdldHRlcnMgYW5kIHNldHRlcnMgYXJlIG92ZXJyaWRkZW4gaW4gVGVzdFJ1bm5lcldL
V2ViVmlldy4gV2hlbiBub24tbmlsLCB3ZSBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QWZ0ZXJT
Y3JvbGxJblZpZXcKKyAgICAgICAgY29uc3VsdHMgdGhlIE5TTnVtYmVyJ3MgYm9vbFZhbHVlIGFu
ZCB1c2VzIGl0IHRvIG92ZXJyaWRlIHRoZSBzdGFibGUgc3RhdGUuCisKKyAgICAgICAgVG8gZmFj
aWxpdGF0ZSB0aGlzIGtpbmQgb2YgdGVzdGluZywgYWxzbyBhZGQgaW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQoKSBhbmQKKyAgICAgICAgaW1tZWRpYXRlWm9vbVRvU2NhbGUoKSB0byBVSVNjcmlwdENv
bnRyb2xsZXIuIEZpbmFsbHksIGFkZCBkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKCkKKyAgICAg
ICAgd2hpY2ggcHJvdmlkZXMgYSBjYWxsYmFjayB0aGF0IGZpcmVzIGFmdGVyIG9uZSB0cmlwIHRv
IHRoZSB3ZWIgcHJvY2VzcyBhbmQgYmFjay4KKworICAgICAgICBUaGUgYWRkZWQgdGVzdCBwcm92
ZWQgZmxha2V5LCBiZWNhdXNlIG9mIHN1YnRsZSB0aW1pbmcgaXNzdWVzIHdoZXJlLCBkZXBlbmRp
bmcgb24KKyAgICAgICAgdGhlIGVzdGltYXRlZCBsYXRlbmN5IGJldHdlZW4gdGhlIFVJIHByb2Nl
c3MgYW5kIHdlYiBwcm9jZXNzLCB3ZSB3b3VsZCBkZWNpZGUgb3Igbm90CisgICAgICAgIHRvIGZp
cmUgYSBzY3JvbGwgZXZlbnQsIHdoaWNoIHNldCBGcmFtZVZpZXcncyBzY3JvbGxlZEJ5VXNlciBm
bGFnLCB3aGljaCBpbiB0dXJuIGFmZmVjdGVkCisgICAgICAgIHNwZWN1bGF0aXZlIHRpbGluZy4g
VG8gcmVtb3ZlIHRoaXMgc291cmNlIG9mIGZsYWtpbmVzcywgYWRkIGEgU2V0dGluZyB3aGljaCBh
bGxvd3MKKyAgICAgICAgc3BlY3VsYXRpdmUgdGlsaW5nIHRvIGJlIGRpc2FibGVkIGZvciB0ZXN0
aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QWZ0ZXJTY3JvbGxJblZp
ZXc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RhYmxlU3RhdGVPdmVycmlkZV0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NldFN0YWJsZVN0YXRlT3ZlcnJpZGU6XSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTYtMTEtMTYgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGxvZ2dp
bmcgc3VwcG9ydCB0byBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKaW5kZXggMmVmNTgzOGFiMzQ0YThiYjkyYTRjZWNjYmQxYzI1NmI2MzI4NmNj
OS4uZTVlZjI2NTMwMTZlMTg2MTc3ZDA4MDg4ZGViODEyZTk0NzE4YTM3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcApAQCAtMjgzMiw2ICsyODMyLDEwIEBAIHN0YXRpYyBib29sIHNob3Vs
ZEVuYWJsZVNwZWN1bGF0aXZlVGlsaW5nRHVyaW5nTG9hZGluZyhjb25zdCBGcmFtZVZpZXcmIHZp
ZXcpCiB2b2lkIEZyYW1lVmlldzo6ZW5hYmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRlZCgpCiB7
CiAgICAgQVNTRVJUKCFtX3NwZWN1bGF0aXZlVGlsaW5nRW5hYmxlZCk7CisgICAgCisgICAgaWYg
KCFmcmFtZSgpLnNldHRpbmdzKCkuc3BlY3VsYXRpdmVUaWxpbmdFbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKICAgICBpZiAobV93YXNTY3JvbGxlZEJ5VXNlcikgewogICAgICAgICBt
X3NwZWN1bGF0aXZlVGlsaW5nRW5hYmxlZCA9IHRydWU7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmluCmluZGV4IDE0YWM3MDM0ODRkNzlhZTBkNzI1OTU1ODU1ZmY1OGY1ZWQw
OGFhNGMuLmZiOTkyOTk4MmVhYmMyNDM0ZjI0OTk2ZDc3NDQ3MWU4ZjdhYmI1NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5pbgpAQCAtMTQ5LDYgKzE0OSwxMCBAQCBzY3JvbGxpbmdDb29yZGluYXRv
ckVuYWJsZWQgaW5pdGlhbD1mYWxzZQogc2Nyb2xsaW5nVHJlZUluY2x1ZGVzRnJhbWVzIGluaXRp
YWw9ZGVmYXVsdFNjcm9sbGluZ1RyZWVJbmNsdWRlc0ZyYW1lcwogc2Nyb2xsQW5pbWF0b3JFbmFi
bGVkIGluaXRpYWw9dHJ1ZSwgY29uZGl0aW9uYWw9U01PT1RIX1NDUk9MTElORwogZm9yY2VVcGRh
dGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5nIGluaXRpYWw9ZmFs
c2UKKworIyBTaG91bGQgb25seSBiZSBkaXNhYmxlZCBmb3IgdGVzdGluZy4KK3NwZWN1bGF0aXZl
VGlsaW5nRW5hYmxlZCBpbml0aWFsPXRydWUKKwogbm90aWZpY2F0aW9uc0VuYWJsZWQgaW5pdGlh
bD10cnVlCiAKICMgU29tZSBhcHBzIG5lZWRzIGlzTG9hZGluZ0luQVBJU2Vuc2UgdG8gYWNjb3Vu
dCBmb3IgYWN0aXZlIHN1YnJlc291cmNlIGxvYWRlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDJjNDYyNjAwNjMyMDQ5ODU4MDdm
NmIwZTFiNGRhZTQ3Njg2ZWExZGYuLmNjNzU5OGFlYjUyYWNmZWEzODA3ZGJlMjA0MjY1MzQzY2Q0
NjM0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCkBAIC0yMDUyLDYgKzIwNTIsOSBAQCAtICh2b2lkKV91cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3RBZnRlclNjcm9sbEluVmlldzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogICAgIGlm
IChpc1N0YWJsZVN0YXRlICYmIFtzY3JvbGxWaWV3IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX2lzSW50ZXJydXB0aW5nRGVjZWxlcmF0aW9uKV0pCiAgICAgICAgIGlzU3RhYmxlU3RhdGUg
PSAhW3Njcm9sbFZpZXcgcGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfaXNJbnRlcnJ1cHRpbmdE
ZWNlbGVyYXRpb24pXTsKIAorICAgIGlmIChOU051bWJlciAqc3RhYmxlT3ZlcnJpZGUgPSBzZWxm
Ll9zdGFibGVTdGF0ZU92ZXJyaWRlKQorICAgICAgICBpc1N0YWJsZVN0YXRlID0gc3RhYmxlT3Zl
cnJpZGUuYm9vbFZhbHVlOworCiAgICAgW3NlbGYgX3VwZGF0ZUNvbnRlbnRSZWN0c1dpdGhTdGF0
ZTppc1N0YWJsZVN0YXRlXTsKIH0KIApAQCAtNDcwNyw2ICs0NzEwLDE3IEBAIC0gKE5TU3RyaW5n
ICopX3Njcm9sbGluZ1RyZWVBc1RleHQKICAgICByZXR1cm4gY29vcmRpbmF0b3ItPnNjcm9sbGlu
Z1RyZWVBc1RleHQoKTsKIH0KIAorLSAoTlNOdW1iZXIgKilfc3RhYmxlU3RhdGVPdmVycmlkZQor
eworICAgIC8vIEZvciBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlLgorICAgIHJldHVybiBuaWw7Cit9
CisKKy0gKHZvaWQpX3NldFN0YWJsZVN0YXRlT3ZlcnJpZGU6KE5TTnVtYmVyICopb3ZlcnJpZGVC
b29sZWFuCit7CisgICAgLy8gRm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCit9CisKICNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY5
NzY1MGFhYjliMzQ1ZjE4NTNmZjA2ODYwOGRmMzRiYzZiZGIzMmQuLjhiM2U4YWNjZWYzNGZlODY5
MDA1MWQ4MWI1NjVjNGZkZmNjN2E0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yODcsNyArMjg3LDkgQEAg
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLSW1tZWRpYXRlQWN0aW9uVHlwZSkgewogCiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nICpfc2Nyb2xsaW5nVHJlZUFz
VGV4dCBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAKLSNlbmRpZgorQHByb3Bl
cnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0U3RhYmxlU3RhdGVPdmVycmlkZTopIE5TTnVtYmVy
ICpfc3RhYmxlU3RhdGVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7
CisKKyNlbmRpZiAvLyBUQVJHRVRfT1NfSVBIT05FCiAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9oYXNBY3RpdmVWaWRlb0ZvckNv
bnRyb2xzTWFuYWdlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMikpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGY4ZGZkMDM3OTM3MTQ1
ZDZkYTc0NTI5NThlYTQxNGRiZGY0MTkzYjguLjcxZmY5ZjBiY2VjNTgzMDhhYmE2ZjE5YzBmNDg5
MTcyNGMyNzU4NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw3OCBAQAorMjAxNi0xMS0xNyAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHRlc3Qgbm9u
LXN0YWJsZS1zdGF0ZSBzY3JvbGxpbmcgb24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIGZvciBhbiBpT1MgbGF5b3V0
IHRlc3QgdG8gZm9yY2UgZXZlcnkgdmlzaWJsZSByZWN0IHVwZGF0ZQorICAgICAgICBmcm9tIHRo
ZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIgcHJvY2VzcyB0byBiZSBpbiBhIG5vbi1zdGFibGUgc3Rh
dGUuIFRoaXMgZW11bGF0ZXMKKyAgICAgICAgd2hhdCBoYXBwZW5zIGR1cmluZyBwYW5uaW5nIGFu
ZCB6b29taW5nIGludGVyYWN0aW9ucywgYW5kIGFsbG93cyB1cyB0byB0ZXN0IHRoZQorICAgICAg
ICBzY3JvbGxpbmcgYW5kIGxheWVyIHRyZWVzIGluIHRoZXNlIHRyYW5zaWVudHMgc3RhdGVzLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBhIHRlc3RpbmcgcHJvcGVy
dHkgb24gV0tXZWJWaWV3LCBfc3RhYmxlU3RhdGVPdmVycmlkZSwgd2hvc2UKKyAgICAgICAgZ2V0
dGVycyBhbmQgc2V0dGVycyBhcmUgb3ZlcnJpZGRlbiBpbiBUZXN0UnVubmVyV0tXZWJWaWV3LiBX
aGVuIG5vbi1uaWwsIHdlIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBZnRlclNjcm9sbEluVmll
dworICAgICAgICBjb25zdWx0cyB0aGUgTlNOdW1iZXIncyBib29sVmFsdWUgYW5kIHVzZXMgaXQg
dG8gb3ZlcnJpZGUgdGhlIHN0YWJsZSBzdGF0ZS4KKyAgICAgICAgCisgICAgICAgIFRvIGZhY2ls
aXRhdGUgdGhpcyBraW5kIG9mIHRlc3RpbmcsIGFsc28gYWRkIGltbWVkaWF0ZVNjcm9sbFRvT2Zm
c2V0KCkgYW5kCisgICAgICAgIGltbWVkaWF0ZVpvb21Ub1NjYWxlKCkgdG8gVUlTY3JpcHRDb250
cm9sbGVyLiBGaW5hbGx5LCBhZGQgZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZSgpCisgICAgICAg
IHdoaWNoIHByb3ZpZGVzIGEgY2FsbGJhY2sgdGhhdCBmaXJlcyBhZnRlciBvbmUgdHJpcCB0byB0
aGUgd2ViIHByb2Nlc3MgYW5kIGJhY2suCisgICAgICAgIAorICAgICAgICBUaGUgYWRkZWQgdGVz
dCBwcm92ZWQgZmxha2V5LCBiZWNhdXNlIG9mIHN1YnRsZSB0aW1pbmcgaXNzdWVzIHdoZXJlLCBk
ZXBlbmRpbmcgb24KKyAgICAgICAgdGhlIGVzdGltYXRlZCBsYXRlbmN5IGJldHdlZW4gdGhlIFVJ
IHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLCB3ZSB3b3VsZCBkZWNpZGUgb3Igbm90CisgICAgICAg
IHRvIGZpcmUgYSBzY3JvbGwgZXZlbnQsIHdoaWNoIHNldCBGcmFtZVZpZXcncyBzY3JvbGxlZEJ5
VXNlciBmbGFnLCB3aGljaCBpbiB0dXJuIGFmZmVjdGVkCisgICAgICAgIHNwZWN1bGF0aXZlIHRp
bGluZy4gVG8gcmVtb3ZlIHRoaXMgc291cmNlIG9mIGZsYWtpbmVzcywgYWRkIGEgU2V0dGluZyB3
aGljaCBhbGxvd3MKKyAgICAgICAgc3BlY3VsYXRpdmUgdGlsaW5nIHRvIGJlIGRpc2FibGVkIGZv
ciB0ZXN0aW5nLgorCisgICAgICAgIEFkZCBjb2RlIGdlbmVyYXRpb24gc3VwcG9ydCBmb3Igb3B0
aW9uYWwgYm9vbGVhbiBhdHRyaWJ1dGVzIGluIElETC4KKworICAgICAgICBBbGlnbiBDb2RlR2Vu
ZXJhdG9yRHVtcFJlbmRlclRyZWUucG0gYW5kIENvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5k
ZXJUcmVlLnBtOgorICAgICAgICAoX2dlbmVyYXRlSW1wbGVtZW50YXRpb25GaWxlKToKKyAgICAg
ICAgKF9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChfcmV0dXJuRXhwcmVzc2lv
bik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9u
VXBkYXRlKToKKyAgICAgICAgKFdUUjo6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2Up
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zmc2V0KToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbW1lZGlhdGVTY3JvbGxUb09mZnNldCk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlWm9vbVRvU2NhbGUp
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUp
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJp
ZGUpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZG9BZnRlclByZXNlbnRhdGlv
blVwZGF0ZSk6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU1dyYXBwYWJs
ZS5oOgorICAgICAgICAoV1RSOjpKU1ZhbHVlTWFrZUJvb2xlYW5Pck51bGwpOgorICAgICAgICAo
V1RSOjpKU1ZhbHVlVG9OdWxsYWJsZUJvb2xlYW4pOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbW1lZGlhdGVTY3JvbGxU
b09mZnNldCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlWm9v
bVRvU2NhbGUpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRl
T3ZlcnJpZGUpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0
YXRlT3ZlcnJpZGUpOgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG06CisgICAgICAgIChf
Y2xhc3NSZWZHZXR0ZXIpOgorICAgICAgICAoX3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKToKKyAg
ICAgICAgKF9yZXR1cm5FeHByZXNzaW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2Nv
Y29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZp
ZXcgZGVhbGxvY10pOgorICAgICAgICAoLVtUZXN0UnVubmVyV0tXZWJWaWV3IF9zdGFibGVTdGF0
ZU92ZXJyaWRlXSk6CisgICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX3NldFN0YWJsZVN0
YXRlT3ZlcnJpZGU6XSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRy
b2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJlc2V0
U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9z
L1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyOjpkb0FzeW5jVGFzayk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZG9B
ZnRlclByZXNlbnRhdGlvblVwZGF0ZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cjo6em9vbVRvU2NhbGUpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVk
aWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpp
bW1lZGlhdGVab29tVG9TY2FsZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
c3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
c2V0U3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VUlTY3JpcHRDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xs
ZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUpOgorCiAyMDE2LTExLTE2ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhcmQgdG8gd3JpdGUgcmVs
aWFibGUgVUlTY3JpcHRDb250cm9sbGVyIHNjcm9sbGluZ1RyZWVBc1RleHQgdGVzdHMKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVu
ZGVyVHJlZS5wbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JE
dW1wUmVuZGVyVHJlZS5wbQppbmRleCA1ZjFjNTllM2MyOTQzZjE1M2JkNTFiZWJmZjE2Y2M1Y2Fi
Njk4OGRmLi5kMzlkNjhhMGYxYTViNDJhYjI5YjNlNzZiOTkzYjVkOTU4ZDUwN2I3IDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRl
clRyZWUucG0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRv
ckR1bXBSZW5kZXJUcmVlLnBtCkBAIC0yNDQsNyArMjQ0LDcgQEAgSlNDbGFzc1JlZiAke2NsYXNz
TmFtZX06OiR7Y2xhc3NSZWZHZXR0ZXJ9KCkKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBqc0NsYXNz
OwogICAgIGlmICghanNDbGFzcykgewogICAgICAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0
aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9uRW1wdHk7Ci0gICAgICAgIGRlZmluaXRpb24uY2xhc3NO
YW1lID0gIiR7dHlwZX0iOworICAgICAgICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJAe1skdHlw
ZS0+bmFtZV19IjsKICAgICAgICAgZGVmaW5pdGlvbi5wYXJlbnRDbGFzcyA9IEB7WyRzZWxmLT5f
cGFyZW50Q2xhc3NSZWZHZXR0ZXJFeHByZXNzaW9uKCRpbnRlcmZhY2UpXX07CiAgICAgICAgIGRl
ZmluaXRpb24uc3RhdGljVmFsdWVzID0gc3RhdGljVmFsdWVzKCk7CiAgICAgICAgIGRlZmluaXRp
b24uc3RhdGljRnVuY3Rpb25zID0gc3RhdGljRnVuY3Rpb25zKCk7CkBAIC00MzEsNyArNDMxLDgg
QEAgc3ViIF9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3RvcgogewogICAgIG15ICgkc2VsZiwgJHR5cGUs
ICRhcmd1bWVudE5hbWUpID0gQF87CiAKLSAgICByZXR1cm4gIkpTVmFsdWVUb0Jvb2xlYW4oY29u
dGV4dCwgJGFyZ3VtZW50TmFtZSkiIGlmICR0eXBlIGVxICJib29sZWFuIjsKKyAgICByZXR1cm4g
IkpTVmFsdWVUb051bGxhYmxlQm9vbGVhbihjb250ZXh0LCAkYXJndW1lbnROYW1lKSIgaWYgJHR5
cGUtPm5hbWUgZXEgImJvb2xlYW4iICYmICR0eXBlLT5pc051bGxhYmxlOworICAgIHJldHVybiAi
SlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCAkYXJndW1lbnROYW1lKSIgaWYgJHR5cGUtPm5hbWUg
ZXEgImJvb2xlYW4iOwogICAgIHJldHVybiAiJGFyZ3VtZW50TmFtZSIgaWYgJHR5cGUtPm5hbWUg
ZXEgIm9iamVjdCI7CiAgICAgcmV0dXJuICJKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgJGFyZ3VtZW50TmFtZSwgMCkpIiBpZiAkJHNl
bGZ7Y29kZUdlbmVyYXRvcn0tPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICJKU1Zh
bHVlVG9OdW1iZXIoY29udGV4dCwgJGFyZ3VtZW50TmFtZSwgMCkiIGlmICQkc2VsZntjb2RlR2Vu
ZXJhdG9yfS0+SXNOb25Qb2ludGVyVHlwZSgkdHlwZSk7CkBAIC00NzEsNiArNDcyLDcgQEAgc3Vi
IF9yZXR1cm5FeHByZXNzaW9uCiAgICAgbXkgKCRzZWxmLCAkcmV0dXJuVHlwZSwgJGV4cHJlc3Np
b24pID0gQF87CiAKICAgICByZXR1cm4gIkpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpIiBp
ZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAidm9pZCI7CisgICAgcmV0dXJuICJKU1ZhbHVlTWFrZUJv
b2xlYW5Pck51bGwoY29udGV4dCwgJHtleHByZXNzaW9ufSkiIGlmICRyZXR1cm5UeXBlLT5uYW1l
IGVxICJib29sZWFuIiAmJiAkcmV0dXJuVHlwZS0+aXNOdWxsYWJsZTsKICAgICByZXR1cm4gIkpT
VmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCAke2V4cHJlc3Npb259KSIgaWYgJHJldHVyblR5cGUt
Pm5hbWUgZXEgImJvb2xlYW4iOwogICAgIHJldHVybiAiJHtleHByZXNzaW9ufSIgaWYgJHJldHVy
blR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CiAgICAgcmV0dXJuICJKU1ZhbHVlTWFrZU51bWJlcihj
b250ZXh0LCAke2V4cHJlc3Npb259KSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc05vblBv
aW50ZXJUeXBlKCRyZXR1cm5UeXBlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3Mv
VUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGRmZDg3ZDJkYzBjZTA3OTU1YmU0MGEyYzgy
NTc5M2E0N2RmOTRjYTguLjk1YjE4MGZkNjEyZTgzMjk4OWY1NDQ3ZjYyNjdmOWVhNmM1YTI5NjMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQpAQCAtNDksNiArNDksMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNU
YXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7
CisgICAgcmV0dXJuIGRvQXN5bmNUYXNrKGNhbGxiYWNrKTsKK30KKwogdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6Onpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykK
IHsKICAgICBSZWZQdHI8VUlTY3JpcHRDb250cm9sbGVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpA
QCAtMTQxLDggKzE0NiwzNSBAQCBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRl
bnRzT2ZVc2VySW50ZXJmYWNlSXRlbShKU1N0cmluZ1JlZiBpbnRlcmZhYwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXQobG9u
ZywgbG9uZykKK3N0YXRpYyBDR1BvaW50IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdl
KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgQ0dQb2ludCBjb250ZW50T2Zmc2V0KQoreworICAg
IFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7Cisg
ICAgQ0dTaXplIGNvbnRlbnRTaXplID0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZTsKKyAgICBDR1Np
emUgc2Nyb2xsVmlld1NpemUgPSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplOworCisgICAgQ0dGbG9h
dCBtYXhIb3Jpem9udGFsT2Zmc2V0ID0gY29udGVudFNpemUud2lkdGggKyBjb250ZW50SW5zZXRz
LnJpZ2h0IC0gc2Nyb2xsVmlld1NpemUud2lkdGg7CisgICAgY29udGVudE9mZnNldC54ID0gc3Rk
OjptaW4obWF4SG9yaXpvbnRhbE9mZnNldCwgY29udGVudE9mZnNldC54KTsKKyAgICBjb250ZW50
T2Zmc2V0LnggPSBzdGQ6Om1heCgtY29udGVudEluc2V0cy5sZWZ0LCBjb250ZW50T2Zmc2V0Lngp
OworCisgICAgQ0dGbG9hdCBtYXhWZXJ0aWNhbE9mZnNldCA9IGNvbnRlbnRTaXplLmhlaWdodCAr
IGNvbnRlbnRJbnNldHMuYm90dG9tIC0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0OworICAgIGNvbnRl
bnRPZmZzZXQueSA9IHN0ZDo6bWluKG1heFZlcnRpY2FsT2Zmc2V0LCBjb250ZW50T2Zmc2V0Lnkp
OworICAgIGNvbnRlbnRPZmZzZXQueSA9IHN0ZDo6bWF4KC1jb250ZW50SW5zZXRzLnRvcCwgY29u
dGVudE9mZnNldC55KTsKKyAgICByZXR1cm4gY29udGVudE9mZnNldDsKK30KKwordm9pZCBVSVNj
cmlwdENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQoreworICAgIFtn
V2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxp
ZFJhbmdlKGdXZWJTY3JvbGxWaWV3LCBDR1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6WUVTXTsK
K30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxv
bmcgeCwgbG9uZyB5KQogeworICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmNv
bnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKGdXZWJTY3JvbGxWaWV3LCBDR1BvaW50TWFr
ZSh4LCB5KSkgYW5pbWF0ZWQ6Tk9dOworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6aW1t
ZWRpYXRlWm9vbVRvU2NhbGUoZG91YmxlIHNjYWxlKQoreworICAgIFtnV2ViU2Nyb2xsVmlldyBz
ZXRab29tU2NhbGU6c2NhbGUgYW5pbWF0ZWQ6Tk9dOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6a2V5Ym9hcmRBY2Nlc3NvcnlCYXJOZXh0KCkKQEAgLTE2Myw2ICsxOTUsMTYgQEAgZG91
YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGdXZWJTY3JvbGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CiB9CiAKK09wdGlvbmFsPGJvb2w+
IFVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIE51bGxvcHQ7Cit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVT
dGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KQoreworfQorCisKIEpTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6Y29udGVudFZpc2libGVSZWN0KCkgY29uc3QKIHsKICAgICBDR1JlY3Qg
Y29udGVudFZpc2libGVSZWN0ID0gW2dXZWJCcm93c2VyVmlldyBkb2N1bWVudFZpc2libGVSZWN0
XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xs
ZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tCmluZGV4IGI3ODI4ZTEzOWFjYzc3Y2QxZTY0ZGQ0MzVhODRkZTUxOTgwYmI4OTUuLjU5OTRl
MDM1MGMzNDgyNzM0OTRiNDE5OWI4Yjk4ZTMzMzgxNDUzYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQpAQCAtNDYsNiArNDYsMTEg
QEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJh
Y2spCiAgICAgfSk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2Vu
dGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgcmV0dXJuIGRvQXN5bmNU
YXNrKGNhbGxiYWNrKTsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQo
SlNTdHJpbmdSZWYsIGludCwgaW50KQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9C
aW5kaW5ncy9KU1dyYXBwYWJsZS5oCmluZGV4IDVlYzcxOTdjNTlkMGUxYWVmN2YyMzY0NDc1NDM5
MDI4NmM1NWFmODYuLjE1YjM5MGRjNDE1MmNkYjliZmNiMTVhMjBjNmQ3N2M3NzAzNjFmY2IgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNXcmFwcGFibGUuaAor
KysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmgKQEAgLTIz
LDEwICsyMywxMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgSlNXcmFwcGFibGVfaAotI2RlZmluZSBKU1dyYXBwYWJsZV9oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHQuaD4KKyNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2Ug
V1RSIHsKQEAgLTM3LDExICszNywxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0NsYXNzUmVm
IHdyYXBwZXJDbGFzcygpID0gMDsKIH07CiAKK2lubGluZSBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtl
Qm9vbGVhbk9yTnVsbChKU0NvbnRleHRSZWYgY29udGV4dCwgT3B0aW9uYWw8Ym9vbD4gdmFsdWUp
Cit7CisgICAgcmV0dXJuIHZhbHVlID8gSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHZhbHVl
LnZhbHVlKCkpIDogSlNWYWx1ZU1ha2VOdWxsKGNvbnRleHQpOworfQorCitpbmxpbmUgT3B0aW9u
YWw8Ym9vbD4gSlNWYWx1ZVRvTnVsbGFibGVCb29sZWFuKEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U1ZhbHVlUmVmIHZhbHVlKQoreworICAgIHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4
dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051bGwoY29udGV4dCwgdmFsdWUpID8gTnVsbG9wdCA6IE9w
dGlvbmFsPGJvb2w+KEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgdmFsdWUpKTsKK30KKwogaW5s
aW5lIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmdPck51bGwoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTU3RyaW5nUmVmIHN0cmluZ09yTnVsbCkKIHsKICAgICByZXR1cm4gc3RyaW5nT3JOdWxs
ID8gSlNWYWx1ZU1ha2VTdHJpbmcoY29udGV4dCwgc3RyaW5nT3JOdWxsKSA6IEpTVmFsdWVNYWtl
TnVsbChjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBKU1dy
YXBwYWJsZV9oCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAppbmRl
eCA1MTA2OTI0ZWJlMWQzZmExNWIwZjZjYWYyOTZmZDMyMmMzNDQzZmM5Li4yMjE4NDRmMTMzMTk0
NTVhMjNkNTlmMDgwMmU5Yjg3NDUwYTMyZDFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCisr
KyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2Ny
aXB0Q29udHJvbGxlci5pZGwKQEAgLTI2LDggKzI2LDcgQEAKIGludGVyZmFjZSBVSVNjcmlwdENv
bnRyb2xsZXIgewogCiAgICAgdm9pZCBkb0FzeW5jVGFzayhvYmplY3QgY2FsbGJhY2spOyAvLyBV
c2VkIHRvIHRlc3QgdGhlIGhhcm5lc3MuCi0KLSAgICB2b2lkIHpvb21Ub1NjYWxlKGRvdWJsZSBz
Y2FsZSwgb2JqZWN0IGNhbGxiYWNrKTsKKyAgICB2b2lkIGRvQWZ0ZXJQcmVzZW50YXRpb25VcGRh
dGUob2JqZWN0IGNhbGxiYWNrKTsgLy8gQ2FsbCB0aGUgY2FsbGJhY2sgYWZ0ZXIgc2VuZGluZyBh
IG1lc3NhZ2UgdG8gdGhlIFdlYlByb2Nlc3MgYW5kIHJlY2VpdmluZyBhIHN1YnNlcXVlbnQgdXBk
YXRlLgogCiAgICAgLy8gSW50ZXJhY3Rpb24uCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHBvc3Qg
ZXZlbnRzIGFzeW5jaHJvbm91c2x5LiBUaGUgY2FsbGJhY2sgaXMgZmlyZWQgd2hlbiB0aGUgZXZl
bnRzIGhhdmUgYmVlbiBkaXNwYXRjaGVkLCBidXQgYW55CkBAIC0xNDQsMTQgKzE0MywyMyBAQCBp
bnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKICAgICBhdHRyaWJ1dGUgb2JqZWN0IHdpbGxC
ZWdpblpvb21pbmdDYWxsYmFjazsKICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEVuZFpvb21pbmdD
YWxsYmFjazsKIAorICAgIHZvaWQgem9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBvYmplY3QgY2Fs
bGJhY2spOworCiAgICAgdm9pZCBzY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7IC8vIElu
aXRpYXRlIGFuIGFuaW1hdGVkIHNjcm9sbCBpbiB0aGUgVUkgcHJvY2Vzcy4KICAgICBhdHRyaWJ1
dGUgb2JqZWN0IGRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrOwogCisgICAgdm9pZCBpbW1lZGlhdGVT
Y3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7IC8vIFNldCB0aGUgc2Nyb2xsIHBvc2l0aW9u
IGluIHRoZSBVSSBwcm9jZXNzIHdpdGhvdXQgYW5pbWF0aW9uLgorICAgIHZvaWQgaW1tZWRpYXRl
Wm9vbVRvU2NhbGUoZG91YmxlIHNjYWxlKTsgLy8gU2V0IHRoZSB6b29tIHNjYWxlIGluIHRoZSBV
SSBwcm9jZXNzIHdpdGhvdXQgYW5pbWF0aW9uLgorCiAgICAgLy8gVmlldyBzdGF0ZQogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgem9vbVNjYWxlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBkb3VibGUgbWluaW11bVpvb21TY2FsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91Ymxl
IG1heGltdW1ab29tU2NhbGU7CiAKKyAgICAvLyBPdmVyaWRlcyB0aGUgImluIHN0YWJsZSBzdGF0
ZSIgYmVoYXZpb3Igb2YgV0tXZWJWaWV3IChvbmx5IGFwcGxpZXMgdG8gaU9TKQorICAgIC8vIFdo
ZW4gZmFsc2UsIGNvbnRlbnQgcmVjdCB1cGRhdGVzIHRvIHRoZSB3ZWIgcHJvY2VzcyBoYXZlIGlu
U3RhYmxlU3RhdGU9ZmFsc2UsIGFzIGlmIGEgc2Nyb2xsIG9yIHpvb20gd2VyZSBpbiBwcm9ncmVz
cy4KKyAgICBhdHRyaWJ1dGUgYm9vbGVhbj8gc3RhYmxlU3RhdGVPdmVycmlkZTsKKwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBvYmplY3QgY29udGVudFZpc2libGVSZWN0OyAvLyBSZXR1cm5lZCBv
YmplY3QgaGFzICdsZWZ0JywgJ3RvcCcsICd3aWR0aCcsICdoZWlnaHQnIHByb3BlcnRpZXMuCiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgb2JqZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOyAv
LyBBbiBhcnJheSBvZiBvYmplY3RzIHdpdGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdo
ZWlnaHQnIHByb3BlcnRpZXMuCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNo
YXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkYzk0MmIx
OThiNDg1NWRmYzUzZmU3YTE4MDAxNGNlZDYxOGU3OWM3Li40YjA0MjQ3ZGJmZDA2NGYyYzdhMTg5
ZTNiMTc2NTM3M2YwOTc2NzE0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2LDYg
KzU2LDEwIEBAIEpTQ2xhc3NSZWYgVUlTY3JpcHRDb250cm9sbGVyOjp3cmFwcGVyQ2xhc3MoKQog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYpCiB7CiB9CisK
K3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFs
dWVSZWYpOworeworfQogI2VuZGlmCiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXREaWRT
dGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQpA
QCAtMjQ1LDYgKzI0OSwxNCBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2Nyb2xsVG9PZmZz
ZXQobG9uZyB4LCBsb25nIHkpCiB7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjppbW1l
ZGlhdGVTY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSkKK3sKK30KKwordm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkKK3sKK30KKwog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleWJvYXJkQWNjZXNzb3J5QmFyTmV4dCgpCiB7CiB9
CkBAIC0yNjgsNiArMjgwLDE1IEBAIGRvdWJsZSBVSVNjcmlwdENvbnRyb2xsZXI6Om1heGltdW1a
b29tU2NhbGUoKSBjb25zdAogICAgIHJldHVybiAxOwogfQogCitPcHRpb25hbDxib29sPiBVSVNj
cmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAoreworICAgIHJldHVy
biBOdWxsb3B0OworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVP
dmVycmlkZShPcHRpb25hbDxib29sPikKK3sKK30KKwogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250
cm9sbGVyOjpjb250ZW50VmlzaWJsZVJlY3QoKSBjb25zdAogewogICAgIHJldHVybiBudWxscHRy
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCA4MjBiY2MyZTY5ZmFlYTExNmI1MjFiZTM0NmQ2
ZjZiNTY0OTc1YTJjLi4zMGVhN2UyNzBhYjkyNTRiNDAzNDk0ZjRlNmY1ODc5MjFkYmZkNmU0IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlw
dENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4
dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSlNX
cmFwcGFibGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNTAsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYWtlV2luZG93
T2JqZWN0KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgd2luZG93T2JqZWN0LCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pOwogICAgIAogICAgIHZvaWQgZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxs
YmFjayk7CisgICAgdm9pZCBkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYgY2Fs
bGJhY2spOworCiAgICAgdm9pZCB6b29tVG9TY2FsZShkb3VibGUgc2NhbGUsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spOwogCiAgICAgdm9pZCB0b3VjaERvd25BdFBvaW50KGxvbmcgeCwgbG9uZyB5LCBs
b25nIHRvdWNoQ291bnQsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwpAQCAtODMsNiArODYsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBzY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7CiAK
KyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsKKyAgICB2
b2lkIGltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSk7CisKICAgICB2b2lkIHNldERp
ZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrKEpTVmFsdWVSZWYpOwogICAgIEpT
VmFsdWVSZWYgZGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2soKSBjb25zdDsK
IApAQCAtMTEzLDYgKzExOSw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgem9vbVNjYWxlKCkgY29u
c3Q7CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWF4
aW11bVpvb21TY2FsZSgpIGNvbnN0OworICAgIAorICAgIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0
YXRlT3ZlcnJpZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0
aW9uYWw8Ym9vbD4pOwogCiAgICAgSlNPYmplY3RSZWYgY29udGVudFZpc2libGVSZWN0KCkgY29u
c3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5w
bQppbmRleCBjZDllZDNmYTE4NmMxNzIyZTExOTc2NDBkMjdjYmNkMDFiMjk2YTJlLi45OGQzN2Rh
Yjk5Y2U3MzkyZDY3YWJhMWU0NDZkMDExMjI1MzAzY2Y5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVu
bmVyLnBtCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0KQEAgLTc3LDYgKzc3LDcgQEAgc3ViIF9jbGFz
c05hbWUKIHN1YiBfY2xhc3NSZWZHZXR0ZXIKIHsKICAgICBteSAoJHNlbGYsICR0eXBlKSA9IEBf
OworCiAgICAgcmV0dXJuICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+V0tfbGNmaXJzdChfaW1wbGVt
ZW50YXRpb25DbGFzc05hbWUoJHR5cGUpKSAuICJDbGFzcyI7CiB9CiAKQEAgLTQ0NCw2ICs0NDUs
NyBAQCBzdWIgX3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yCiB7CiAgICAgbXkgKCRzZWxmLCAkdHlw
ZSwgJGFyZ3VtZW50TmFtZSkgPSBAXzsKIAorICAgIHJldHVybiAiSlNWYWx1ZVRvTnVsbGFibGVC
b29sZWFuKGNvbnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYm9vbGVh
biIgJiYgJHR5cGUtPmlzTnVsbGFibGU7CiAgICAgcmV0dXJuICJKU1ZhbHVlVG9Cb29sZWFuKGNv
bnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYm9vbGVhbiI7CiAgICAg
cmV0dXJuICIkYXJndW1lbnROYW1lIiBpZiAkdHlwZS0+bmFtZSBlcSAib2JqZWN0IjsKICAgICBy
ZXR1cm4gIkpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCAkYXJndW1lbnROYW1lLCAwKSkiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+
SXNTdHJpbmdUeXBlKCR0eXBlKTsKQEAgLTQ4NCw2ICs0ODYsNyBAQCBzdWIgX3JldHVybkV4cHJl
c3Npb24KICAgICBteSAoJHNlbGYsICRyZXR1cm5UeXBlLCAkZXhwcmVzc2lvbikgPSBAXzsKIAog
ICAgIHJldHVybiAiSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkiIGlmICRyZXR1cm5UeXBl
LT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4gIkpTVmFsdWVNYWtlQm9vbGVhbk9yTnVsbChj
b250ZXh0LCAke2V4cHJlc3Npb259KSIgaWYgJHJldHVyblR5cGUtPm5hbWUgZXEgImJvb2xlYW4i
ICYmICRyZXR1cm5UeXBlLT5pc051bGxhYmxlOwogICAgIHJldHVybiAiSlNWYWx1ZU1ha2VCb29s
ZWFuKGNvbnRleHQsICR7ZXhwcmVzc2lvbn0pIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAiYm9v
bGVhbiI7CiAgICAgcmV0dXJuICIke2V4cHJlc3Npb259IiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBl
cSAib2JqZWN0IjsKICAgICByZXR1cm4gIkpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsICR7ZXhw
cmVzc2lvbn0pIiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzTm9uUG9pbnRlclR5cGUoJHJl
dHVyblR5cGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
UnVubmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3Lm1tCmluZGV4IDk2OTk3NDdiNzlmOTJhODc0NWE1NWRhMmE3ODA0YWVlNDcz
Zjc1YjUuLjQ4ZWVkOGViZGYzY2IzY2E2ODM0MWE5OGJkOGIwMmJlMDU4YWZmYjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0K
QEAgLTQ3LDYgKzQ3LDcgQEAgQGludGVyZmFjZSBUZXN0UnVubmVyV0tXZWJWaWV3ICgpCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXnpvb21Ub1NjYWxlQ29tcGxldGlvbkhhbmRs
ZXIpKHZvaWQpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5zaG93S2V5Ym9h
cmRDb21wbGV0aW9uSGFuZGxlcikodm9pZCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBp
c1Nob3dpbmdLZXlib2FyZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU051bWJlciAq
dGVzdFJ1bm5lclN0YWJsZVN0YXRlT3ZlcnJpZGU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBU
ZXN0UnVubmVyV0tXZWJWaWV3CkBAIC04Nyw2ICs4OCw4IEBAIC0gKHZvaWQpZGVhbGxvYwogICAg
IHNlbGYuem9vbVRvU2NhbGVDb21wbGV0aW9uSGFuZGxlciA9IG5pbDsKICAgICBzZWxmLnNob3dL
ZXlib2FyZENvbXBsZXRpb25IYW5kbGVyID0gbmlsOwogCisgICAgc2VsZi50ZXN0UnVubmVyU3Rh
YmxlU3RhdGVPdmVycmlkZSA9IG5pbDsKKwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAt
MTcwLDYgKzE3MywxNyBAQCAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGxpbmcKICAgICBpZiAoc2Vs
Zi5kaWRFbmRTY3JvbGxpbmdDYWxsYmFjaykKICAgICAgICAgc2VsZi5kaWRFbmRTY3JvbGxpbmdD
YWxsYmFjaygpOwogfQorCistIChOU051bWJlciAqKV9zdGFibGVTdGF0ZU92ZXJyaWRlCit7Cisg
ICAgcmV0dXJuIHNlbGYudGVzdFJ1bm5lclN0YWJsZVN0YXRlT3ZlcnJpZGU7Cit9CisKKy0gKHZv
aWQpX3NldFN0YWJsZVN0YXRlT3ZlcnJpZGU6KE5TTnVtYmVyICopb3ZlcnJpZGVCb29sZWFuCit7
CisgICAgc2VsZi50ZXN0UnVubmVyU3RhYmxlU3RhdGVPdmVycmlkZSA9IG92ZXJyaWRlQm9vbGVh
bjsKK30KKwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VGVzdENvbnRyb2xsZXJJT1MubW0KaW5kZXggNDUyYzQxMGM4Mzc5YjcwYzY1MTJkYWQyYzBmZDAx
NDYzMTFhZmJkYS4uZDg1YTZkNzdhNDE5OTMxZGJkY2VjMmEwZmE4OTJhNjQ3NWRhMGEyNCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KQEAg
LTg2LDYgKzg2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKCkKICAgICBjb2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMo
KTsKIAogICAgIGlmIChQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBtYWluV2ViVmlldygpKSB7
CisgICAgICAgIHdlYlZpZXctPnBsYXRmb3JtVmlldygpLl9zdGFibGVTdGF0ZU92ZXJyaWRlID0g
bmlsOwogICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSB3ZWJWaWV3LT5wbGF0Zm9y
bVZpZXcoKS5zY3JvbGxWaWV3OwogICAgICAgICBbc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6MSBh
bmltYXRlZDpOT107CiAgICAgICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQb2lu
dFplcm9dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tCmluZGV4IDgxODRiNmQ4MGExMGRlYjc2NGQwMzQ1MGI1YjE4ODJkZTMzOTM2
MDguLmEzMDIyMDI1MmViZDIwZGYyZTgxY2MyNzAyOWJkNDYzZmJkOTVmMTYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAg
LTU1LDYgKzU1LDE4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayhKU1Zh
bHVlUmVmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIFRl
c3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lE
ID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVO
b25QZXJzaXN0ZW50KTsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGU6XiB7CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAgIH1dOwor
fQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcg
PSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3
KCk7CkBAIC0zNDIsNiArMzU0LDE4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzY3JvbGxU
b09mZnNldChsb25nIHgsIGxvbmcgeSkKICAgICBbd2ViVmlldy5zY3JvbGxWaWV3IHNldENvbnRl
bnRPZmZzZXQ6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2Uod2ViVmlldy5zY3JvbGxW
aWV3LCBDR1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6WUVTXTsKIH0KIAordm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQorewor
ICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgW3dlYlZpZXcuc2Nyb2xs
VmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKHdl
YlZpZXcuc2Nyb2xsVmlldywgQ0dQb2ludE1ha2UoeCwgeSkpIGFuaW1hdGVkOk5PXTsKK30KKwor
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2Fs
ZSkKK3sKKyAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFt3ZWJWaWV3
LnNjcm9sbFZpZXcgc2V0Wm9vbVNjYWxlOnNjYWxlIGFuaW1hdGVkOk5PXTsKK30KKwogdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmtleWJvYXJkQWNjZXNzb3J5QmFyTmV4dCgpCiB7CiAgICAgVGVz
dFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKQEAgLTM2Niw2ICszOTAsMjQgQEAgZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHdlYlZpZXcuc2Nyb2xsVmlldy5tYXhpbXVtWm9vbVNjYWxlOwogfQogCitPcHRpb25hbDxib29s
PiBVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAoreworICAg
IFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgaWYgKHdlYlZpZXcuX3N0YWJs
ZVN0YXRlT3ZlcnJpZGUpCisgICAgICAgIHJldHVybiB3ZWJWaWV3Ll9zdGFibGVTdGF0ZU92ZXJy
aWRlLmJvb2xWYWx1ZTsKKworICAgIHJldHVybiBOdWxsb3B0OworfQorCit2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPiBvdmVycmlk
ZVZhbHVlKQoreworICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgaWYg
KG92ZXJyaWRlVmFsdWUpCisgICAgICAgIHdlYlZpZXcuX3N0YWJsZVN0YXRlT3ZlcnJpZGUgPSBA
KG92ZXJyaWRlVmFsdWUudmFsdWUoKSk7CisgICAgZWxzZQorICAgICAgICB3ZWJWaWV3Ll9zdGFi
bGVTdGF0ZU92ZXJyaWRlID0gbmlsOworfQorCiBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xs
ZXI6OmNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmll
dyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJ
U2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQppbmRleCBhMjNiMjcwZDkzZTE3ZGMyOTE4OWI4ODM5Y2UwZWQy
YmNkMTdiYTI0Li4yNjg1M2UwYzExZmMwMzE5MjZkMWQ2MjFmNThhMDU1NDhkYzgzYjY0IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tCkBAIC01Niw2ICs1NiwxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rh
c2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sK
KyAgICByZXR1cm4gZG9Bc3luY1Rhc2soY2FsbGJhY2spOworfQorCiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6aW5zZXJ0VGV4dChKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgbG9jYXRpb24sIGludCBs
ZW5ndGgpCiB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkOWJiNjJlYjFiOGI5YWU2MjUx
MWIyNTA5YmViMjM4MzI0NjJhM2RhLi5jNGIxODBkNjNjNmVkZmRlM2QyN2Y0MzdiZDZjNmJiYmY0
Njg2N2I5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTEtMTcgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0
ZXN0IG5vbi1zdGFibGUtc3RhdGUgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzY3JvbGxpbmdjb29yZGluYXRvci9pb3Mv
bm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzY3JvbGxpbmdjb29yZGluYXRvci9pb3Mvbm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwuaHRt
bDogQWRkZWQuCisKIDIwMTYtMTEtMTYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgc2xvdGNoYW5nZSBldmVudCBzaG91bGQgYnViYmxlIGFuZCBkaXNwYXRjaGVk
IG9uY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9u
b24tc3RhYmxlLXZpZXdwb3J0LXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zY3Jv
bGxpbmdjb29yZGluYXRvci9pb3Mvbm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhhMmY3OTExNmM1YmZjOTQ5MjljM2I5YmZkNjIzMjg0YzgzZDMzOWIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zY3JvbGxpbmdjb29yZGluYXRvci9pb3Mv
bm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzMgQEAK
K2ZpeGVkCisoR3JhcGhpY3NMYXllcgorICAoYW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyAz
MjAuMDAgNTAxMy4wMCkKKyAgKHZpc2libGUgcmVjdCAwLjAwLCAxMDAwLjAwIDEwNi42NyB4IDE4
OS4zMykKKyAgKGNvdmVyYWdlIHJlY3QgMC4wMCwgMTAwMC4wMCAxMDYuNjcgeCAxODkuMzMpCisg
IChpbnRlcnNlY3RzIGNvdmVyYWdlIHJlY3QgMSkKKyAgKGNvbnRlbnRzU2NhbGUgNi4wMCkKKyAg
KGNoaWxkcmVuIDEKKyAgICAoR3JhcGhpY3NMYXllcgorICAgICAgKGJvdW5kcyAzMjAuMDAgNTAx
My4wMCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgKHZpc2libGUgcmVjdCAwLjAw
LCAxMDAwLjAwIDEwNi42NyB4IDE4OS4zMykKKyAgICAgIChjb3ZlcmFnZSByZWN0IDAuMDAsIDEw
MDAuMDAgMTA2LjY3IHggMTg5LjMzKQorICAgICAgKGludGVyc2VjdHMgY292ZXJhZ2UgcmVjdCAx
KQorICAgICAgKGNvbnRlbnRzU2NhbGUgNi4wMCkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAg
IChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDEwLjAwIDAuMDApCisgICAgICAg
ICAgKGJvdW5kcyAxMDAuMDAgNTY4LjAwKQorICAgICAgICAgICh1c2luZ1RpbGVkTGF5ZXIgMSkK
KyAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEp
CisgICAgICAgICAgKHZpc2libGUgcmVjdCAwLjAwLCAwLjAwIDEwMC4wMCB4IDU2OC4wMCkKKyAg
ICAgICAgICAoY292ZXJhZ2UgcmVjdCAtMTAuMDAsIDAuMDAgMzIwLjAwIHggNTY4LjAwKQorICAg
ICAgICAgIChpbnRlcnNlY3RzIGNvdmVyYWdlIHJlY3QgMSkKKyAgICAgICAgICAoY29udGVudHNT
Y2FsZSA2LjAwKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9ub24tc3RhYmxlLXZpZXdw
b3J0LXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvc2Nyb2xsaW5nY29vcmRpbmF0b3IvaW9zL25v
bi1zdGFibGUtdmlld3BvcnQtc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE0YTk0NjAwZTdjZDY4
ZWExY2RlNTg4MjNjNjY3MTFhMzJkYWRjOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9ub24tc3RhYmxlLXZpZXdwb3J0LXNjcm9sbC5odG1s
CkBAIC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPiA8IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIHVzZUZsZXhpYmxlVmlld3BvcnQ9dHJ1ZSBdIC0tPgorCis8aHRtbD4KKzxoZWFkPgorICAg
IDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTEuMCI+CisgICAg
PHN0eWxlPgorICAgICAgICBib2R5IHsKKyAgICAgICAgICAgIGhlaWdodDogNTAwMHB4OworICAg
ICAgICAgICAgbWFyZ2luOiAwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAuZml4ZWQg
eworICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkOworICAgICAgICAgICAgdG9wOiAwOworICAg
ICAgICAgICAgbGVmdDogMTBweDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAgICAgICAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Cisg
ICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFNwZWN1bGF0aXZlVGlsaW5nRW5hYmxlZChmYWxzZSk7IC8vIE5lY2Vzc2FyeSB0byBhdm9pZCBm
bGFraW5lc3Mgd2l0aCBjb3ZlcmFnZSByZWN0cy4KKworICAgICAgICBmdW5jdGlvbiBnZXRVbnN0
YWJsZVNjcm9sbFNjcmlwdCh4LCB5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc3RhYmxlU3RhdGVPdmVy
cmlkZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbW1lZGlhdGVab29t
VG9TY2FsZSgzKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW1tZWRpYXRlU2Nyb2xs
VG9PZmZzZXQoMCwgMzAwMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9KSgpO2A7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VW5zdGFibGVTY3JvbGxTY3JpcHQo
KSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xheWVycycpLnRleHRDb250ZW50ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVu
dCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBk
b1Rlc3QsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFz
cz0iZml4ZWQiPmZpeGVkPC9kaXY+Cis8cHJlIGlkPSJsYXllcnMiPjwvcHJlPgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295135</attachid>
            <date>2016-11-17 22:16:48 -0800</date>
            <delta_ts>2016-11-19 10:00:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164905-20161117221641.patch</filename>
            <type>text/plain</type>
            <size>34884</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODBlYjYyNjI4ODA5ZWZj
ZWM1MGQ3YmViOThjNzhkMjliMmU5MjE2OC4uMDU0NWVjYTA3ODk4MzNiNjRiNmY3N2VkZDRhMDli
Y2IxY2VlMTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTExLTE3ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gdGVzdCBub24tc3RhYmxlLXN0YXRlIHNjcm9sbGluZyBvbiBpT1MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDkwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
Zm9yIGFuIGlPUyBsYXlvdXQgdGVzdCB0byBmb3JjZSBldmVyeSB2aXNpYmxlIHJlY3QgdXBkYXRl
CisgICAgICAgIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gdGhlIHdlYiBwcm9jZXNzIHRvIGJlIGlu
IGEgbm9uLXN0YWJsZSBzdGF0ZS4gVGhpcyBlbXVsYXRlcworICAgICAgICB3aGF0IGhhcHBlbnMg
ZHVyaW5nIHBhbm5pbmcgYW5kIHpvb21pbmcgaW50ZXJhY3Rpb25zLCBhbmQgYWxsb3dzIHVzIHRv
IHRlc3QgdGhlCisgICAgICAgIHNjcm9sbGluZyBhbmQgbGF5ZXIgdHJlZXMgaW4gdGhlc2UgdHJh
bnNpZW50cyBzdGF0ZXMuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBhIHRlc3Rp
bmcgcHJvcGVydHkgb24gV0tXZWJWaWV3LCBfc3RhYmxlU3RhdGVPdmVycmlkZSwgd2hvc2UKKyAg
ICAgICAgZ2V0dGVycyBhbmQgc2V0dGVycyBhcmUgb3ZlcnJpZGRlbiBpbiBUZXN0UnVubmVyV0tX
ZWJWaWV3LiBXaGVuIG5vbi1uaWwsIHdlIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBZnRlclNj
cm9sbEluVmlldworICAgICAgICBjb25zdWx0cyB0aGUgTlNOdW1iZXIncyBib29sVmFsdWUgYW5k
IHVzZXMgaXQgdG8gb3ZlcnJpZGUgdGhlIHN0YWJsZSBzdGF0ZS4KKworICAgICAgICBUbyBmYWNp
bGl0YXRlIHRoaXMga2luZCBvZiB0ZXN0aW5nLCBhbHNvIGFkZCBpbW1lZGlhdGVTY3JvbGxUb09m
ZnNldCgpIGFuZAorICAgICAgICBpbW1lZGlhdGVab29tVG9TY2FsZSgpIHRvIFVJU2NyaXB0Q29u
dHJvbGxlci4gRmluYWxseSwgYWRkIGRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoKQorICAgICAg
ICB3aGljaCBwcm92aWRlcyBhIGNhbGxiYWNrIHRoYXQgZmlyZXMgYWZ0ZXIgb25lIHRyaXAgdG8g
dGhlIHdlYiBwcm9jZXNzIGFuZCBiYWNrLgorCisgICAgICAgIFRoZSBhZGRlZCB0ZXN0IHByb3Zl
ZCBmbGFrZXksIGJlY2F1c2Ugb2Ygc3VidGxlIHRpbWluZyBpc3N1ZXMgd2hlcmUsIGRlcGVuZGlu
ZyBvbgorICAgICAgICB0aGUgZXN0aW1hdGVkIGxhdGVuY3kgYmV0d2VlbiB0aGUgVUkgcHJvY2Vz
cyBhbmQgd2ViIHByb2Nlc3MsIHdlIHdvdWxkIGRlY2lkZSBvciBub3QKKyAgICAgICAgdG8gZmly
ZSBhIHNjcm9sbCBldmVudCwgd2hpY2ggc2V0IEZyYW1lVmlldydzIHNjcm9sbGVkQnlVc2VyIGZs
YWcsIHdoaWNoIGluIHR1cm4gYWZmZWN0ZWQKKyAgICAgICAgc3BlY3VsYXRpdmUgdGlsaW5nLiBU
byByZW1vdmUgdGhpcyBzb3VyY2Ugb2YgZmxha2luZXNzLCBhZGQgYSBTZXR0aW5nIHdoaWNoIGFs
bG93cworICAgICAgICBzcGVjdWxhdGl2ZSB0aWxpbmcgdG8gYmUgZGlzYWJsZWQgZm9yIHRlc3Rp
bmcuCisKKyAgICAgICAgVGVzdDogc2Nyb2xsaW5nY29vcmRpbmF0b3IvaW9zL25vbi1zdGFibGUt
dmlld3BvcnQtc2Nyb2xsLmh0bWwKKworICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6ZW5hYmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRl
ZCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5pbjoKKwogMjAxNi0xMS0xNyAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYW4gZXhwZXJpbWVudGFsIEFQ
SSB0byBmaW5kIGVsZW1lbnRzIGFjcm9zcyBzaGFkb3cgYm91bmRhcmllcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDUxZWFlYzc4MDAzNzg4OTNmZGM3NDU1MjdlYmIwOTU2OGFmNDlhZjUuLjlkNTYwZDhlMjA3NTNi
OWFlODU1MjA4Mzc3NDQ0YmNkOWFjZDAyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAxNi0xMS0xNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAg
ICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHRlc3Qgbm9uLXN0YWJsZS1zdGF0ZSBzY3JvbGxpbmcg
b24gaU9TCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQ5MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
YWtlIGl0IHBvc3NpYmxlIGZvciBhbiBpT1MgbGF5b3V0IHRlc3QgdG8gZm9yY2UgZXZlcnkgdmlz
aWJsZSByZWN0IHVwZGF0ZQorICAgICAgICBmcm9tIHRoZSBVSSBwcm9jZXNzIHRvIHRoZSB3ZWIg
cHJvY2VzcyB0byBiZSBpbiBhIG5vbi1zdGFibGUgc3RhdGUuIFRoaXMgZW11bGF0ZXMKKyAgICAg
ICAgd2hhdCBoYXBwZW5zIGR1cmluZyBwYW5uaW5nIGFuZCB6b29taW5nIGludGVyYWN0aW9ucywg
YW5kIGFsbG93cyB1cyB0byB0ZXN0IHRoZQorICAgICAgICBzY3JvbGxpbmcgYW5kIGxheWVyIHRy
ZWVzIGluIHRoZXNlIHRyYW5zaWVudHMgc3RhdGVzLgorCisgICAgICAgIFRoaXMgaXMgZG9uZSBi
eSBhZGRpbmcgYSB0ZXN0aW5nIHByb3BlcnR5IG9uIFdLV2ViVmlldywgX3N0YWJsZVN0YXRlT3Zl
cnJpZGUsIHdob3NlCisgICAgICAgIGdldHRlcnMgYW5kIHNldHRlcnMgYXJlIG92ZXJyaWRkZW4g
aW4gVGVzdFJ1bm5lcldLV2ViVmlldy4gV2hlbiBub24tbmlsLCB3ZSBfdXBkYXRlVmlzaWJsZUNv
bnRlbnRSZWN0QWZ0ZXJTY3JvbGxJblZpZXcKKyAgICAgICAgY29uc3VsdHMgdGhlIE5TTnVtYmVy
J3MgYm9vbFZhbHVlIGFuZCB1c2VzIGl0IHRvIG92ZXJyaWRlIHRoZSBzdGFibGUgc3RhdGUuCisK
KyAgICAgICAgVG8gZmFjaWxpdGF0ZSB0aGlzIGtpbmQgb2YgdGVzdGluZywgYWxzbyBhZGQgaW1t
ZWRpYXRlU2Nyb2xsVG9PZmZzZXQoKSBhbmQKKyAgICAgICAgaW1tZWRpYXRlWm9vbVRvU2NhbGUo
KSB0byBVSVNjcmlwdENvbnRyb2xsZXIuIEZpbmFsbHksIGFkZCBkb0FmdGVyUHJlc2VudGF0aW9u
VXBkYXRlKCkKKyAgICAgICAgd2hpY2ggcHJvdmlkZXMgYSBjYWxsYmFjayB0aGF0IGZpcmVzIGFm
dGVyIG9uZSB0cmlwIHRvIHRoZSB3ZWIgcHJvY2VzcyBhbmQgYmFjay4KKworICAgICAgICBUaGUg
YWRkZWQgdGVzdCBwcm92ZWQgZmxha2V5LCBiZWNhdXNlIG9mIHN1YnRsZSB0aW1pbmcgaXNzdWVz
IHdoZXJlLCBkZXBlbmRpbmcgb24KKyAgICAgICAgdGhlIGVzdGltYXRlZCBsYXRlbmN5IGJldHdl
ZW4gdGhlIFVJIHByb2Nlc3MgYW5kIHdlYiBwcm9jZXNzLCB3ZSB3b3VsZCBkZWNpZGUgb3Igbm90
CisgICAgICAgIHRvIGZpcmUgYSBzY3JvbGwgZXZlbnQsIHdoaWNoIHNldCBGcmFtZVZpZXcncyBz
Y3JvbGxlZEJ5VXNlciBmbGFnLCB3aGljaCBpbiB0dXJuIGFmZmVjdGVkCisgICAgICAgIHNwZWN1
bGF0aXZlIHRpbGluZy4gVG8gcmVtb3ZlIHRoaXMgc291cmNlIG9mIGZsYWtpbmVzcywgYWRkIGEg
U2V0dGluZyB3aGljaCBhbGxvd3MKKyAgICAgICAgc3BlY3VsYXRpdmUgdGlsaW5nIHRvIGJlIGRp
c2FibGVkIGZvciB0ZXN0aW5nLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0
QWZ0ZXJTY3JvbGxJblZpZXc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RhYmxlU3RhdGVP
dmVycmlkZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFN0YWJsZVN0YXRlT3ZlcnJpZGU6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisK
IDIwMTYtMTEtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
V0tCdW5kbGVOb2RlSGFuZGxlU2V0SFRNTElucHV0RWxlbWVudFNwZWxsY2hlY2tFbmFibGVkIHNo
b3VsZCBrZWVwIHRleHQgcmVwbGFjZW1lbnQgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IDY5YWRkNGViNDEzZGE3OTBmZWM1NGY0MTM3ZDEzN2I4ODZlM2JiMDguLjg2MzZi
YmVlZmQ2MDE3YzY4ZjhmNDVkNjZmZmMzYzM3MTg0OTAzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKQEAgLTI4MzMsNiArMjgzMywxMCBAQCBzdGF0aWMgYm9vbCBzaG91bGRFbmFibGVT
cGVjdWxhdGl2ZVRpbGluZ0R1cmluZ0xvYWRpbmcoY29uc3QgRnJhbWVWaWV3JiB2aWV3KQogdm9p
ZCBGcmFtZVZpZXc6OmVuYWJsZVNwZWN1bGF0aXZlVGlsaW5nSWZOZWVkZWQoKQogewogICAgIEFT
U0VSVCghbV9zcGVjdWxhdGl2ZVRpbGluZ0VuYWJsZWQpOworICAgIAorICAgIGlmICghZnJhbWUo
KS5zZXR0aW5ncygpLnNwZWN1bGF0aXZlVGlsaW5nRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisgICAgCiAgICAgaWYgKG1fd2FzU2Nyb2xsZWRCeVVzZXIpIHsKICAgICAgICAgbV9zcGVjdWxh
dGl2ZVRpbGluZ0VuYWJsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5pbgppbmRleCBhYWUzNTY5NWI5ZmYyYTAzY2FmMDNjNjIyYjA3Y2ZjNjI4ZmRiNTIzLi44
OGQ5MDVkODBlZWQ2Y2U5Zjc2ZWY5MGJmMDk0OThlMDY5ZWZkNjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaW4KQEAgLTE0OSw2ICsxNDksMTAgQEAgc2Nyb2xsaW5nQ29vcmRpbmF0b3JFbmFibGVk
IGluaXRpYWw9ZmFsc2UKIHNjcm9sbGluZ1RyZWVJbmNsdWRlc0ZyYW1lcyBpbml0aWFsPWRlZmF1
bHRTY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXMKIHNjcm9sbEFuaW1hdG9yRW5hYmxlZCBpbml0
aWFsPXRydWUsIGNvbmRpdGlvbmFsPVNNT09USF9TQ1JPTExJTkcKIGZvcmNlVXBkYXRlU2Nyb2xs
YmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZyBpbml0aWFsPWZhbHNlCisKKyMg
U2hvdWxkIG9ubHkgYmUgZGlzYWJsZWQgZm9yIHRlc3RpbmcuCitzcGVjdWxhdGl2ZVRpbGluZ0Vu
YWJsZWQgaW5pdGlhbD10cnVlCisKIG5vdGlmaWNhdGlvbnNFbmFibGVkIGluaXRpYWw9dHJ1ZQog
CiAjIFNvbWUgYXBwcyBuZWVkcyBpc0xvYWRpbmdJbkFQSVNlbnNlIHRvIGFjY291bnQgZm9yIGFj
dGl2ZSBzdWJyZXNvdXJjZSBsb2FkZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA3Zjk3NmZiYmIxYjEyZDViNzQyZTI5OGFiMTY4
MTkxM2YyNmIzYWQwLi5hYTZiOTFiZTVmYTBkMWExMmM1Yzk3NWU0YTQ3MDAyMzRjNWUyODA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMjA2Nyw2ICsyMDY3LDkgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29uc3RyYWlu
Q29udGVudE9mZnNldChXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnRlbnRPZmYKICAgICBpZiAoaXNT
dGFibGVTdGF0ZSAmJiBbc2Nyb2xsVmlldyByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9p
c0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbildKQogICAgICAgICBpc1N0YWJsZVN0YXRlID0gIVtz
Y3JvbGxWaWV3IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2lzSW50ZXJydXB0aW5nRGVjZWxl
cmF0aW9uKV07CiAKKyAgICBpZiAoTlNOdW1iZXIgKnN0YWJsZU92ZXJyaWRlID0gc2VsZi5fc3Rh
YmxlU3RhdGVPdmVycmlkZSkKKyAgICAgICAgaXNTdGFibGVTdGF0ZSA9IHN0YWJsZU92ZXJyaWRl
LmJvb2xWYWx1ZTsKKwogICAgIFtzZWxmIF91cGRhdGVDb250ZW50UmVjdHNXaXRoU3RhdGU6aXNT
dGFibGVTdGF0ZV07CiB9CiAKQEAgLTQ3MjIsNiArNDcyNSwxNyBAQCBzdGF0aWMgV2ViQ29yZTo6
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24oVUlTZQogICAgIHJldHVybiBjb29yZGluYXRvci0+c2Nyb2xsaW5nVHJlZUFzVGV4dCgpOwog
fQogCistIChOU051bWJlciAqKV9zdGFibGVTdGF0ZU92ZXJyaWRlCit7CisgICAgLy8gRm9yIHN1
YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCisgICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZClfc2V0
U3RhYmxlU3RhdGVPdmVycmlkZTooTlNOdW1iZXIgKilvdmVycmlkZUJvb2xlYW4KK3sKKyAgICAv
LyBGb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4KK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKElP
UykKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYWJlYzRkMDE4YjJlY2I2N2Jh
Y2ZlYzgxNzAzNDg3NzZkNjA3ZDJiYy4uOTUyZjM2MDIzMDFkZDE3NzgyM2RiMjRiMGEzMjcxM2Qx
MDFhNGFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI5MCw3ICsyOTAsOSBAQCB0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBfV0tJbW1lZGlhdGVBY3Rpb25UeXBlKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNTdHJpbmcgKl9zY3JvbGxpbmdUcmVlQXNUZXh0IFdLX0FQSV9BVkFJ
TEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAotI2VuZGlmCitAcHJvcGVydHkgKG5vbmF0b21pYywg
c2V0dGVyPV9zZXRTdGFibGVTdGF0ZU92ZXJyaWRlOikgTlNOdW1iZXIgKl9zdGFibGVTdGF0ZU92
ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKworI2VuZGlmIC8vIFRB
UkdFVF9PU19JUEhPTkUKIAogI2lmICFUQVJHRVRfT1NfSVBIT05FCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIEJPT0wgX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEyKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTY2OTMxOGIxYzllNjFmZDZhMGVjNzEyYmI2YmU0
MGFjMGM1NWUyNS4uNjJjZGE4NjVjNmE3ODVkYjcwMTRmM2YxNTg1MTA3YmU1OTM2MTE4YSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDc4IEBACisyMDE2LTExLTE3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUgdG8gdGVzdCBub24tc3RhYmxlLXN0YXRlIHNj
cm9sbGluZyBvbiBpT1MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NDkwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1ha2UgaXQgcG9zc2libGUgZm9yIGFuIGlPUyBsYXlvdXQgdGVzdCB0byBmb3JjZSBl
dmVyeSB2aXNpYmxlIHJlY3QgdXBkYXRlCisgICAgICAgIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8g
dGhlIHdlYiBwcm9jZXNzIHRvIGJlIGluIGEgbm9uLXN0YWJsZSBzdGF0ZS4gVGhpcyBlbXVsYXRl
cworICAgICAgICB3aGF0IGhhcHBlbnMgZHVyaW5nIHBhbm5pbmcgYW5kIHpvb21pbmcgaW50ZXJh
Y3Rpb25zLCBhbmQgYWxsb3dzIHVzIHRvIHRlc3QgdGhlCisgICAgICAgIHNjcm9sbGluZyBhbmQg
bGF5ZXIgdHJlZXMgaW4gdGhlc2UgdHJhbnNpZW50cyBzdGF0ZXMuCisgICAgICAgIAorICAgICAg
ICBUaGlzIGlzIGRvbmUgYnkgYWRkaW5nIGEgdGVzdGluZyBwcm9wZXJ0eSBvbiBXS1dlYlZpZXcs
IF9zdGFibGVTdGF0ZU92ZXJyaWRlLCB3aG9zZQorICAgICAgICBnZXR0ZXJzIGFuZCBzZXR0ZXJz
IGFyZSBvdmVycmlkZGVuIGluIFRlc3RSdW5uZXJXS1dlYlZpZXcuIFdoZW4gbm9uLW5pbCwgd2Ug
X3VwZGF0ZVZpc2libGVDb250ZW50UmVjdEFmdGVyU2Nyb2xsSW5WaWV3CisgICAgICAgIGNvbnN1
bHRzIHRoZSBOU051bWJlcidzIGJvb2xWYWx1ZSBhbmQgdXNlcyBpdCB0byBvdmVycmlkZSB0aGUg
c3RhYmxlIHN0YXRlLgorICAgICAgICAKKyAgICAgICAgVG8gZmFjaWxpdGF0ZSB0aGlzIGtpbmQg
b2YgdGVzdGluZywgYWxzbyBhZGQgaW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQoKSBhbmQKKyAgICAg
ICAgaW1tZWRpYXRlWm9vbVRvU2NhbGUoKSB0byBVSVNjcmlwdENvbnRyb2xsZXIuIEZpbmFsbHks
IGFkZCBkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKCkKKyAgICAgICAgd2hpY2ggcHJvdmlkZXMg
YSBjYWxsYmFjayB0aGF0IGZpcmVzIGFmdGVyIG9uZSB0cmlwIHRvIHRoZSB3ZWIgcHJvY2VzcyBh
bmQgYmFjay4KKyAgICAgICAgCisgICAgICAgIFRoZSBhZGRlZCB0ZXN0IHByb3ZlZCBmbGFrZXks
IGJlY2F1c2Ugb2Ygc3VidGxlIHRpbWluZyBpc3N1ZXMgd2hlcmUsIGRlcGVuZGluZyBvbgorICAg
ICAgICB0aGUgZXN0aW1hdGVkIGxhdGVuY3kgYmV0d2VlbiB0aGUgVUkgcHJvY2VzcyBhbmQgd2Vi
IHByb2Nlc3MsIHdlIHdvdWxkIGRlY2lkZSBvciBub3QKKyAgICAgICAgdG8gZmlyZSBhIHNjcm9s
bCBldmVudCwgd2hpY2ggc2V0IEZyYW1lVmlldydzIHNjcm9sbGVkQnlVc2VyIGZsYWcsIHdoaWNo
IGluIHR1cm4gYWZmZWN0ZWQKKyAgICAgICAgc3BlY3VsYXRpdmUgdGlsaW5nLiBUbyByZW1vdmUg
dGhpcyBzb3VyY2Ugb2YgZmxha2luZXNzLCBhZGQgYSBTZXR0aW5nIHdoaWNoIGFsbG93cworICAg
ICAgICBzcGVjdWxhdGl2ZSB0aWxpbmcgdG8gYmUgZGlzYWJsZWQgZm9yIHRlc3RpbmcuCisKKyAg
ICAgICAgQWRkIGNvZGUgZ2VuZXJhdGlvbiBzdXBwb3J0IGZvciBvcHRpb25hbCBib29sZWFuIGF0
dHJpYnV0ZXMgaW4gSURMLgorCisgICAgICAgIEFsaWduIENvZGVHZW5lcmF0b3JEdW1wUmVuZGVy
VHJlZS5wbSBhbmQgQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0uCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG06CisgICAg
ICAgIChfZ2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZpbGUpOgorICAgICAgICAoX3BsYXRmb3JtVHlw
ZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKF9yZXR1cm5FeHByZXNzaW9uKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUpOgorICAgICAg
ICAoV1RSOjpjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZSk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNj
cmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdUUjo6
VUlTY3JpcHRDb250cm9sbGVyOjppbW1lZGlhdGVab29tVG9TY2FsZSk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKToKKyAgICAg
ICAgKiBUZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmg6CisgICAgICAgIChX
VFI6OkpTVmFsdWVNYWtlQm9vbGVhbk9yTnVsbCk6CisgICAgICAgIChXVFI6OkpTVmFsdWVUb051
bGxhYmxlQm9vbGVhbik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRl
eHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBUZXN0UnVubmVy
U2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjppbW1lZGlhdGVab29tVG9TY2FsZSk6CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAg
ICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZSk6Cisg
ICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9s
bGVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbToKKyAgICAgICAgKF9jbGFzc1JlZkdldHRlcik6
CisgICAgICAgIChfcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IpOgorICAgICAgICAoX3JldHVybkV4
cHJlc3Npb24pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBkZWFsbG9jXSk6Cisg
ICAgICAgICgtW1Rlc3RSdW5uZXJXS1dlYlZpZXcgX3N0YWJsZVN0YXRlT3ZlcnJpZGVdKToKKyAg
ICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBfc2V0U3RhYmxlU3RhdGVPdmVycmlkZTpdKToK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAg
ICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9s
bGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNr
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9u
VXBkYXRlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9TY2FsZSk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlU2Nyb2xsVG9PZmZz
ZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVpvb21Ub1Nj
YWxlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJy
aWRlKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92
ZXJyaWRlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xs
ZXJNYWMubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZG9BZnRlclByZXNl
bnRhdGlvblVwZGF0ZSk6CisKIDIwMTYtMTEtMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWRkIGFuIGV4cGVyaW1lbnRhbCBBUEkgdG8gZmluZCBlbGVtZW50
cyBhY3Jvc3Mgc2hhZG93IGJvdW5kYXJpZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQppbmRleCA1
ZjFjNTllM2MyOTQzZjE1M2JkNTFiZWJmZjE2Y2M1Y2FiNjk4OGRmLi5kMzlkNjhhMGYxYTViNDJh
YjI5YjNlNzZiOTkzYjVkOTU4ZDUwN2I3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCkBAIC0y
NDQsNyArMjQ0LDcgQEAgSlNDbGFzc1JlZiAke2NsYXNzTmFtZX06OiR7Y2xhc3NSZWZHZXR0ZXJ9
KCkKICAgICBzdGF0aWMgSlNDbGFzc1JlZiBqc0NsYXNzOwogICAgIGlmICghanNDbGFzcykgewog
ICAgICAgICBKU0NsYXNzRGVmaW5pdGlvbiBkZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZpbml0aW9u
RW1wdHk7Ci0gICAgICAgIGRlZmluaXRpb24uY2xhc3NOYW1lID0gIiR7dHlwZX0iOworICAgICAg
ICBkZWZpbml0aW9uLmNsYXNzTmFtZSA9ICJAe1skdHlwZS0+bmFtZV19IjsKICAgICAgICAgZGVm
aW5pdGlvbi5wYXJlbnRDbGFzcyA9IEB7WyRzZWxmLT5fcGFyZW50Q2xhc3NSZWZHZXR0ZXJFeHBy
ZXNzaW9uKCRpbnRlcmZhY2UpXX07CiAgICAgICAgIGRlZmluaXRpb24uc3RhdGljVmFsdWVzID0g
c3RhdGljVmFsdWVzKCk7CiAgICAgICAgIGRlZmluaXRpb24uc3RhdGljRnVuY3Rpb25zID0gc3Rh
dGljRnVuY3Rpb25zKCk7CkBAIC00MzEsNyArNDMxLDggQEAgc3ViIF9wbGF0Zm9ybVR5cGVDb25z
dHJ1Y3RvcgogewogICAgIG15ICgkc2VsZiwgJHR5cGUsICRhcmd1bWVudE5hbWUpID0gQF87CiAK
LSAgICByZXR1cm4gIkpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgJGFyZ3VtZW50TmFtZSkiIGlm
ICR0eXBlIGVxICJib29sZWFuIjsKKyAgICByZXR1cm4gIkpTVmFsdWVUb051bGxhYmxlQm9vbGVh
bihjb250ZXh0LCAkYXJndW1lbnROYW1lKSIgaWYgJHR5cGUtPm5hbWUgZXEgImJvb2xlYW4iICYm
ICR0eXBlLT5pc051bGxhYmxlOworICAgIHJldHVybiAiSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0
LCAkYXJndW1lbnROYW1lKSIgaWYgJHR5cGUtPm5hbWUgZXEgImJvb2xlYW4iOwogICAgIHJldHVy
biAiJGFyZ3VtZW50TmFtZSIgaWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CiAgICAgcmV0dXJu
ICJKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4oQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29u
dGV4dCwgJGFyZ3VtZW50TmFtZSwgMCkpIiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzU3Ry
aW5nVHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICJKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgJGFy
Z3VtZW50TmFtZSwgMCkiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+SXNOb25Qb2ludGVyVHlw
ZSgkdHlwZSk7CkBAIC00NzEsNiArNDcyLDcgQEAgc3ViIF9yZXR1cm5FeHByZXNzaW9uCiAgICAg
bXkgKCRzZWxmLCAkcmV0dXJuVHlwZSwgJGV4cHJlc3Npb24pID0gQF87CiAKICAgICByZXR1cm4g
IkpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAi
dm9pZCI7CisgICAgcmV0dXJuICJKU1ZhbHVlTWFrZUJvb2xlYW5Pck51bGwoY29udGV4dCwgJHtl
eHByZXNzaW9ufSkiIGlmICRyZXR1cm5UeXBlLT5uYW1lIGVxICJib29sZWFuIiAmJiAkcmV0dXJu
VHlwZS0+aXNOdWxsYWJsZTsKICAgICByZXR1cm4gIkpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0
LCAke2V4cHJlc3Npb259KSIgaWYgJHJldHVyblR5cGUtPm5hbWUgZXEgImJvb2xlYW4iOwogICAg
IHJldHVybiAiJHtleHByZXNzaW9ufSIgaWYgJHJldHVyblR5cGUtPm5hbWUgZXEgIm9iamVjdCI7
CiAgICAgcmV0dXJuICJKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCAke2V4cHJlc3Npb259KSIg
aWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc05vblBvaW50ZXJUeXBlKCRyZXR1cm5UeXBlKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1t
CmluZGV4IGRmZDg3ZDJkYzBjZTA3OTU1YmU0MGEyYzgyNTc5M2E0N2RmOTRjYTguLjk1YjE4MGZk
NjEyZTgzMjk4OWY1NDQ3ZjYyNjdmOWVhNmM1YTI5NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNDksNiArNDksMTEgQEAg
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2sp
CiAgICAgfSk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0
aW9uVXBkYXRlKEpTVmFsdWVSZWYgY2FsbGJhY2spCit7CisgICAgcmV0dXJuIGRvQXN5bmNUYXNr
KGNhbGxiYWNrKTsKK30KKwogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Onpvb21Ub1NjYWxlKGRv
dWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKIHsKICAgICBSZWZQdHI8VUlTY3JpcHRD
b250cm9sbGVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwpAQCAtMTQxLDggKzE0NiwzNSBAQCBKU09i
amVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRzT2ZVc2VySW50ZXJmYWNlSXRlbShK
U1N0cmluZ1JlZiBpbnRlcmZhYwogICAgIHJldHVybiBudWxscHRyOwogfQogCi12b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXQobG9uZywgbG9uZykKK3N0YXRpYyBDR1BvaW50
IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmll
dywgQ0dQb2ludCBjb250ZW50T2Zmc2V0KQoreworICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5z
ZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CisgICAgQ0dTaXplIGNvbnRlbnRTaXplID0g
c2Nyb2xsVmlldy5jb250ZW50U2l6ZTsKKyAgICBDR1NpemUgc2Nyb2xsVmlld1NpemUgPSBzY3Jv
bGxWaWV3LmJvdW5kcy5zaXplOworCisgICAgQ0dGbG9hdCBtYXhIb3Jpem9udGFsT2Zmc2V0ID0g
Y29udGVudFNpemUud2lkdGggKyBjb250ZW50SW5zZXRzLnJpZ2h0IC0gc2Nyb2xsVmlld1NpemUu
d2lkdGg7CisgICAgY29udGVudE9mZnNldC54ID0gc3RkOjptaW4obWF4SG9yaXpvbnRhbE9mZnNl
dCwgY29udGVudE9mZnNldC54KTsKKyAgICBjb250ZW50T2Zmc2V0LnggPSBzdGQ6Om1heCgtY29u
dGVudEluc2V0cy5sZWZ0LCBjb250ZW50T2Zmc2V0LngpOworCisgICAgQ0dGbG9hdCBtYXhWZXJ0
aWNhbE9mZnNldCA9IGNvbnRlbnRTaXplLmhlaWdodCArIGNvbnRlbnRJbnNldHMuYm90dG9tIC0g
c2Nyb2xsVmlld1NpemUuaGVpZ2h0OworICAgIGNvbnRlbnRPZmZzZXQueSA9IHN0ZDo6bWluKG1h
eFZlcnRpY2FsT2Zmc2V0LCBjb250ZW50T2Zmc2V0LnkpOworICAgIGNvbnRlbnRPZmZzZXQueSA9
IHN0ZDo6bWF4KC1jb250ZW50SW5zZXRzLnRvcCwgY29udGVudE9mZnNldC55KTsKKyAgICByZXR1
cm4gY29udGVudE9mZnNldDsKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbFRv
T2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQoreworICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50
T2Zmc2V0OmNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKGdXZWJTY3JvbGxWaWV3LCBD
R1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6WUVTXTsKK30KKwordm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQogeworICAgIFtn
V2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxp
ZFJhbmdlKGdXZWJTY3JvbGxWaWV3LCBDR1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6Tk9dOwor
fQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlWm9vbVRvU2NhbGUoZG91Ymxl
IHNjYWxlKQoreworICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRab29tU2NhbGU6c2NhbGUgYW5pbWF0
ZWQ6Tk9dOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5Ym9hcmRBY2Nlc3NvcnlC
YXJOZXh0KCkKQEAgLTE2Myw2ICsxOTUsMTYgQEAgZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6
bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1heGlt
dW1ab29tU2NhbGU7CiB9CiAKK09wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcjo6c3Rh
YmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK3Zv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJv
b2w+KQoreworfQorCisKIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudFZp
c2libGVSZWN0KCkgY29uc3QKIHsKICAgICBDR1JlY3QgY29udGVudFZpc2libGVSZWN0ID0gW2dX
ZWJCcm93c2VyVmlldyBkb2N1bWVudFZpc2libGVSZWN0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGI3ODI4ZTEzOWFjYzc3
Y2QxZTY0ZGQ0MzVhODRkZTUxOTgwYmI4OTUuLjU5OTRlMDM1MGMzNDgyNzM0OTRiNDE5OWI4Yjk4
ZTMzMzgxNDUzYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlw
dENvbnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0
Q29udHJvbGxlck1hYy5tbQpAQCAtNDYsNiArNDYsMTEgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAKK3ZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYg
Y2FsbGJhY2spCit7CisgICAgcmV0dXJuIGRvQXN5bmNUYXNrKGNhbGxiYWNrKTsKK30KKwogdm9p
ZCBVSVNjcmlwdENvbnRyb2xsZXI6Omluc2VydFRleHQoSlNTdHJpbmdSZWYsIGludCwgaW50KQog
ewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU1dyYXBw
YWJsZS5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oCmlu
ZGV4IDVlYzcxOTdjNTlkMGUxYWVmN2YyMzY0NDc1NDM5MDI4NmM1NWFmODYuLjE1YjM5MGRjNDE1
MmNkYjliZmNiMTVhMjBjNmQ3N2M3NzAzNjFmY2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvQmluZGluZ3MvSlNXcmFwcGFibGUuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hh
cmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmgKQEAgLTIzLDEwICsyMywxMCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgSlNXcmFwcGFibGVfaAot
I2RlZmluZSBKU1dyYXBwYWJsZV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHQuaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTM3LDExICszNywxOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBKU0NsYXNzUmVmIHdyYXBwZXJDbGFzcygpID0gMDsKIH07
CiAKK2lubGluZSBKU1ZhbHVlUmVmIEpTVmFsdWVNYWtlQm9vbGVhbk9yTnVsbChKU0NvbnRleHRS
ZWYgY29udGV4dCwgT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID8g
SlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHZhbHVlLnZhbHVlKCkpIDogSlNWYWx1ZU1ha2VO
dWxsKGNvbnRleHQpOworfQorCitpbmxpbmUgT3B0aW9uYWw8Ym9vbD4gSlNWYWx1ZVRvTnVsbGFi
bGVCb29sZWFuKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQoreworICAg
IHJldHVybiBKU1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpIHx8IEpTVmFsdWVJc051
bGwoY29udGV4dCwgdmFsdWUpID8gTnVsbG9wdCA6IE9wdGlvbmFsPGJvb2w+KEpTVmFsdWVUb0Jv
b2xlYW4oY29udGV4dCwgdmFsdWUpKTsKK30KKwogaW5saW5lIEpTVmFsdWVSZWYgSlNWYWx1ZU1h
a2VTdHJpbmdPck51bGwoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU3RyaW5nUmVmIHN0cmluZ09y
TnVsbCkKIHsKICAgICByZXR1cm4gc3RyaW5nT3JOdWxsID8gSlNWYWx1ZU1ha2VTdHJpbmcoY29u
dGV4dCwgc3RyaW5nT3JOdWxsKSA6IEpTVmFsdWVNYWtlTnVsbChjb250ZXh0KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV1RSCi0KLSNlbmRpZiAvLyBKU1dyYXBwYWJsZV9oCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENv
bnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmlu
ZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAppbmRleCA1MTA2OTI0ZWJlMWQzZmExNWIwZjZj
YWYyOTZmZDMyMmMzNDQzZmM5Li4yMjE4NDRmMTMzMTk0NTVhMjNkNTlmMDgwMmU5Yjg3NDUwYTMy
ZDFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9C
aW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKQEAgLTI2
LDggKzI2LDcgQEAKIGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgdm9pZCBk
b0FzeW5jVGFzayhvYmplY3QgY2FsbGJhY2spOyAvLyBVc2VkIHRvIHRlc3QgdGhlIGhhcm5lc3Mu
Ci0KLSAgICB2b2lkIHpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgb2JqZWN0IGNhbGxiYWNrKTsK
KyAgICB2b2lkIGRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUob2JqZWN0IGNhbGxiYWNrKTsgLy8g
Q2FsbCB0aGUgY2FsbGJhY2sgYWZ0ZXIgc2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIFdlYlByb2Nl
c3MgYW5kIHJlY2VpdmluZyBhIHN1YnNlcXVlbnQgdXBkYXRlLgogCiAgICAgLy8gSW50ZXJhY3Rp
b24uCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIHBvc3QgZXZlbnRzIGFzeW5jaHJvbm91c2x5LiBU
aGUgY2FsbGJhY2sgaXMgZmlyZWQgd2hlbiB0aGUgZXZlbnRzIGhhdmUgYmVlbiBkaXNwYXRjaGVk
LCBidXQgYW55CkBAIC0xNDQsMTQgKzE0MywyMyBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9s
bGVyIHsKICAgICBhdHRyaWJ1dGUgb2JqZWN0IHdpbGxCZWdpblpvb21pbmdDYWxsYmFjazsKICAg
ICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEVuZFpvb21pbmdDYWxsYmFjazsKIAorICAgIHZvaWQgem9v
bVRvU2NhbGUoZG91YmxlIHNjYWxlLCBvYmplY3QgY2FsbGJhY2spOworCiAgICAgdm9pZCBzY3Jv
bGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7IC8vIEluaXRpYXRlIGFuIGFuaW1hdGVkIHNjcm9s
bCBpbiB0aGUgVUkgcHJvY2Vzcy4KICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEVuZFNjcm9sbGlu
Z0NhbGxiYWNrOwogCisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxUb09mZnNldChsb25nIHgsIGxv
bmcgeSk7IC8vIFNldCB0aGUgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBVSSBwcm9jZXNzIHdpdGhv
dXQgYW5pbWF0aW9uLgorICAgIHZvaWQgaW1tZWRpYXRlWm9vbVRvU2NhbGUoZG91YmxlIHNjYWxl
KTsgLy8gU2V0IHRoZSB6b29tIHNjYWxlIGluIHRoZSBVSSBwcm9jZXNzIHdpdGhvdXQgYW5pbWF0
aW9uLgorCiAgICAgLy8gVmlldyBzdGF0ZQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUg
em9vbVNjYWxlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgbWluaW11bVpvb21TY2Fs
ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIG1heGltdW1ab29tU2NhbGU7CiAKKyAg
ICAvLyBPdmVyaWRlcyB0aGUgImluIHN0YWJsZSBzdGF0ZSIgYmVoYXZpb3Igb2YgV0tXZWJWaWV3
IChvbmx5IGFwcGxpZXMgdG8gaU9TKQorICAgIC8vIFdoZW4gZmFsc2UsIGNvbnRlbnQgcmVjdCB1
cGRhdGVzIHRvIHRoZSB3ZWIgcHJvY2VzcyBoYXZlIGluU3RhYmxlU3RhdGU9ZmFsc2UsIGFzIGlm
IGEgc2Nyb2xsIG9yIHpvb20gd2VyZSBpbiBwcm9ncmVzcy4KKyAgICBhdHRyaWJ1dGUgYm9vbGVh
bj8gc3RhYmxlU3RhdGVPdmVycmlkZTsKKwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBvYmplY3Qg
Y29udGVudFZpc2libGVSZWN0OyAvLyBSZXR1cm5lZCBvYmplY3QgaGFzICdsZWZ0JywgJ3RvcCcs
ICd3aWR0aCcsICdoZWlnaHQnIHByb3BlcnRpZXMuCiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
b2JqZWN0IHNlbGVjdGlvblJhbmdlVmlld1JlY3RzOyAvLyBBbiBhcnJheSBvZiBvYmplY3RzIHdp
dGggJ2xlZnQnLCAndG9wJywgJ3dpZHRoJywgYW5kICdoZWlnaHQnIHByb3BlcnRpZXMuCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXIuY3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBkYzk0MmIxOThiNDg1NWRmYzUzZmU3YTE4MDAxNGNl
ZDYxOGU3OWM3Li4wMmNjOGZhZmVmOGFmNWRiOTljODM2ZTY4NTlkMmU1Zjg4ZDcwNTI4IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTU2LDYgKzU2LDEwIEBAIEpTQ2xhc3NSZWYgVUlT
Y3JpcHRDb250cm9sbGVyOjp3cmFwcGVyQ2xhc3MoKQogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6
OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYpCiB7CiB9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVy
Ojpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYpCit7Cit9CiAjZW5kaWYKIAog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldERpZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlv
bkNhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCkBAIC0yNDUsNiArMjQ5LDE0IEBAIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSkKIHsKIH0K
IAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcg
eCwgbG9uZyB5KQoreworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlWm9v
bVRvU2NhbGUoZG91YmxlIHNjYWxlKQoreworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
a2V5Ym9hcmRBY2Nlc3NvcnlCYXJOZXh0KCkKIHsKIH0KQEAgLTI2OCw2ICsyODAsMTUgQEAgZG91
YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0
dXJuIDE7CiB9CiAKK09wdGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3Rh
dGVPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK3ZvaWQgVUlT
Y3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KQor
eworfQorCiBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xsZXI6OmNvbnRlbnRWaXNpYmxlUmVj
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmlu
ZGV4IDgyMGJjYzJlNjlmYWVhMTE2YjUyMWJlMzQ2ZDZmNmI1NjQ5NzVhMmMuLjMwZWE3ZTI3MGFi
OTI1NGI0MDM0OTRmNGU2ZjU4NzkyMWRiZmQ2ZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5u
ZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJKU1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01MCw2ICs1MSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIG1ha2VXaW5kb3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09i
amVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAgICAgCiAgICAg
dm9pZCBkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGRvQWZ0ZXJQ
cmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjayk7CisKICAgICB2b2lkIHpvb21U
b1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHRv
dWNoRG93bkF0UG9pbnQobG9uZyB4LCBsb25nIHksIGxvbmcgdG91Y2hDb3VudCwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CkBAIC04Myw2ICs4Niw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIHNj
cm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsKIAorICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xs
VG9PZmZzZXQobG9uZyB4LCBsb25nIHkpOworICAgIHZvaWQgaW1tZWRpYXRlWm9vbVRvU2NhbGUo
ZG91YmxlIHNjYWxlKTsKKwogICAgIHZvaWQgc2V0RGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0
aW9uQ2FsbGJhY2soSlNWYWx1ZVJlZik7CiAgICAgSlNWYWx1ZVJlZiBkaWRTdGFydEZvcm1Db250
cm9sSW50ZXJhY3Rpb25DYWxsYmFjaygpIGNvbnN0OwogCkBAIC0xMTMsNiArMTE5LDkgQEAgcHVi
bGljOgogICAgIGRvdWJsZSB6b29tU2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWluaW11bVpv
b21TY2FsZSgpIGNvbnN0OwogICAgIGRvdWJsZSBtYXhpbXVtWm9vbVNjYWxlKCkgY29uc3Q7Cisg
ICAgCisgICAgT3B0aW9uYWw8Ym9vbD4gc3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0OworICAg
IHZvaWQgc2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPik7CiAKICAgICBKU09i
amVjdFJlZiBjb250ZW50VmlzaWJsZVJlY3QoKSBjb25zdDsKICAgICAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRv
clRlc3RSdW5uZXIucG0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCmluZGV4IGNkOWVkM2ZhMTg2YzE3MjJl
MTE5NzY0MGQyN2NiY2QwMWIyOTZhMmUuLjk4ZDM3ZGFiOTljZTczOTJkNjdhYmExZTQ0NmQwMTEy
MjUzMDNjZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5l
ci5wbQpAQCAtNzcsNiArNzcsNyBAQCBzdWIgX2NsYXNzTmFtZQogc3ViIF9jbGFzc1JlZkdldHRl
cgogewogICAgIG15ICgkc2VsZiwgJHR5cGUpID0gQF87CisKICAgICByZXR1cm4gJCRzZWxme2Nv
ZGVHZW5lcmF0b3J9LT5XS19sY2ZpcnN0KF9pbXBsZW1lbnRhdGlvbkNsYXNzTmFtZSgkdHlwZSkp
IC4gIkNsYXNzIjsKIH0KIApAQCAtNDQ0LDYgKzQ0NSw3IEBAIHN1YiBfcGxhdGZvcm1UeXBlQ29u
c3RydWN0b3IKIHsKICAgICBteSAoJHNlbGYsICR0eXBlLCAkYXJndW1lbnROYW1lKSA9IEBfOwog
CisgICAgcmV0dXJuICJKU1ZhbHVlVG9OdWxsYWJsZUJvb2xlYW4oY29udGV4dCwgJGFyZ3VtZW50
TmFtZSkiIGlmICR0eXBlLT5uYW1lIGVxICJib29sZWFuIiAmJiAkdHlwZS0+aXNOdWxsYWJsZTsK
ICAgICByZXR1cm4gIkpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgJGFyZ3VtZW50TmFtZSkiIGlm
ICR0eXBlLT5uYW1lIGVxICJib29sZWFuIjsKICAgICByZXR1cm4gIiRhcmd1bWVudE5hbWUiIGlm
ICR0eXBlLT5uYW1lIGVxICJvYmplY3QiOwogICAgIHJldHVybiAiSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+KEFkb3B0LCBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsICRhcmd1bWVudE5hbWUs
IDApKSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwpAQCAt
NDg0LDYgKzQ4Niw3IEBAIHN1YiBfcmV0dXJuRXhwcmVzc2lvbgogICAgIG15ICgkc2VsZiwgJHJl
dHVyblR5cGUsICRleHByZXNzaW9uKSA9IEBfOwogCiAgICAgcmV0dXJuICJKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KSIgaWYgJHJldHVyblR5cGUtPm5hbWUgZXEgInZvaWQiOworICAgIHJl
dHVybiAiSlNWYWx1ZU1ha2VCb29sZWFuT3JOdWxsKGNvbnRleHQsICR7ZXhwcmVzc2lvbn0pIiBp
ZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiIgJiYgJHJldHVyblR5cGUtPmlzTnVsbGFi
bGU7CiAgICAgcmV0dXJuICJKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgJHtleHByZXNzaW9u
fSkiIGlmICRyZXR1cm5UeXBlLT5uYW1lIGVxICJib29sZWFuIjsKICAgICByZXR1cm4gIiR7ZXhw
cmVzc2lvbn0iIGlmICRyZXR1cm5UeXBlLT5uYW1lIGVxICJvYmplY3QiOwogICAgIHJldHVybiAi
SlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgJHtleHByZXNzaW9ufSkiIGlmICQkc2VsZntjb2Rl
R2VuZXJhdG9yfS0+SXNOb25Qb2ludGVyVHlwZSgkcmV0dXJuVHlwZSk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0gYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0KaW5kZXggOTY5
OTc0N2I3OWY5MmE4NzQ1YTU1ZGEyYTc4MDRhZWU0NzNmNzViNS4uNDhlZWQ4ZWJkZjNjYjNjYTY4
MzQxYTk4YmQ4YjAyYmUwNThhZmZiMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jb2NvYS9UZXN0UnVubmVyV0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQpAQCAtNDcsNiArNDcsNyBAQAogQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF56b29tVG9TY2FsZUNvbXBsZXRpb25IYW5kbGVy
KSh2b2lkKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChec2hvd0tleWJvYXJk
Q29tcGxldGlvbkhhbmRsZXIpKHZvaWQpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgaXNT
aG93aW5nS2V5Ym9hcmQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNOdW1iZXIgKnRl
c3RSdW5uZXJTdGFibGVTdGF0ZU92ZXJyaWRlOwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gVGVz
dFJ1bm5lcldLV2ViVmlldwpAQCAtODcsNiArODgsOCBAQAogICAgIHNlbGYuem9vbVRvU2NhbGVD
b21wbGV0aW9uSGFuZGxlciA9IG5pbDsKICAgICBzZWxmLnNob3dLZXlib2FyZENvbXBsZXRpb25I
YW5kbGVyID0gbmlsOwogCisgICAgc2VsZi50ZXN0UnVubmVyU3RhYmxlU3RhdGVPdmVycmlkZSA9
IG5pbDsKKwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAtMTcwLDYgKzE3MywxNyBAQAog
ICAgIGlmIChzZWxmLmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrKQogICAgICAgICBzZWxmLmRpZEVu
ZFNjcm9sbGluZ0NhbGxiYWNrKCk7CiB9CisKKy0gKE5TTnVtYmVyICopX3N0YWJsZVN0YXRlT3Zl
cnJpZGUKK3sKKyAgICByZXR1cm4gc2VsZi50ZXN0UnVubmVyU3RhYmxlU3RhdGVPdmVycmlkZTsK
K30KKworLSAodm9pZClfc2V0U3RhYmxlU3RhdGVPdmVycmlkZTooTlNOdW1iZXIgKilvdmVycmlk
ZUJvb2xlYW4KK3sKKyAgICBzZWxmLnRlc3RSdW5uZXJTdGFibGVTdGF0ZU92ZXJyaWRlID0gb3Zl
cnJpZGVCb29sZWFuOworfQorCiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbQppbmRleCA0NTJjNDEwYzgzNzliNzBjNjUx
MmRhZDJjMGZkMDE0NjMxMWFmYmRhLi5kODVhNmQ3N2E0MTk5MzFkYmRjZWMyYTBmYTg5MmE2NDc1
ZGEwYTI0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJv
bGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxl
cklPUy5tbQpAQCAtODYsNiArODYsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJl
c2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMoKQogICAgIGNvY29hUmVzZXRTdGF0ZVRvQ29uc2lz
dGVudFZhbHVlcygpOwogCiAgICAgaWYgKFBsYXRmb3JtV2ViVmlldyogd2ViVmlldyA9IG1haW5X
ZWJWaWV3KCkpIHsKKyAgICAgICAgd2ViVmlldy0+cGxhdGZvcm1WaWV3KCkuX3N0YWJsZVN0YXRl
T3ZlcnJpZGUgPSBuaWw7CiAgICAgICAgIFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IHdlYlZp
ZXctPnBsYXRmb3JtVmlldygpLnNjcm9sbFZpZXc7CiAgICAgICAgIFtzY3JvbGxWaWV3IHNldFpv
b21TY2FsZToxIGFuaW1hdGVkOk5PXTsKICAgICAgICAgW3Njcm9sbFZpZXcgc2V0Q29udGVudE9m
ZnNldDpDR1BvaW50WmVyb107CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggODE4NGI2ZDgwYTEwZGViNzY0ZDAzNDUwYjVi
MTg4MmRlMzM5MzYwOC4uYTMwMjIwMjUyZWJkMjBkZjJlODFjYzI3MDI5YmQ0NjNmYmQ5NWYxNiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxl
cklPUy5tbQpAQCAtNTUsNiArNTUsMTggQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5
bmNUYXNrKEpTVmFsdWVSZWYgY2FsbGJhY2spCiAgICAgfSk7CiB9CiAKK3ZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpTVmFsdWVSZWYgY2FsbGJhY2sp
Cit7CisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpz
aW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKworICAgIHVuc2lnbmVk
IGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENh
bGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworICAgIFt3ZWJWaWV3IF9kb0FmdGVyTmV4dFByZXNl
bnRhdGlvblVwZGF0ZTpeIHsKKyAgICAgICAgaWYgKCFtX2NvbnRleHQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7
CisgICAgfV07Cit9CisKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9TY2FsZShkb3Vi
bGUgc2NhbGUsIEpTVmFsdWVSZWYgY2FsbGJhY2spCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmll
dyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKTsKQEAgLTM0Miw2ICszNTQsMTggQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQogICAgIFt3ZWJWaWV3LnNjcm9sbFZp
ZXcgc2V0Q29udGVudE9mZnNldDpjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZSh3ZWJW
aWV3LnNjcm9sbFZpZXcsIENHUG9pbnRNYWtlKHgsIHkpKSBhbmltYXRlZDpZRVNdOwogfQogCit2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBs
b25nIHkpCit7CisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9s
bGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBbd2Vi
Vmlldy5zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNldEJvdW5kZWRJblZh
bGlkUmFuZ2Uod2ViVmlldy5zY3JvbGxWaWV3LCBDR1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6
Tk9dOworfQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlWm9vbVRvU2NhbGUo
ZG91YmxlIHNjYWxlKQoreworICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0
Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7Cisg
ICAgW3dlYlZpZXcuc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6c2NhbGUgYW5pbWF0ZWQ6Tk9dOwor
fQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5Ym9hcmRBY2Nlc3NvcnlCYXJOZXh0KCkK
IHsKICAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNp
bmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwpAQCAtMzY2LDYgKzM5MCwy
NCBAQCBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVyOjptYXhpbXVtWm9vbVNjYWxlKCkgY29uc3QK
ICAgICByZXR1cm4gd2ViVmlldy5zY3JvbGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CiB9CiAKK09w
dGlvbmFsPGJvb2w+IFVJU2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNv
bnN0Cit7CisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVy
OjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKKyAgICBpZiAod2Vi
Vmlldy5fc3RhYmxlU3RhdGVPdmVycmlkZSkKKyAgICAgICAgcmV0dXJuIHdlYlZpZXcuX3N0YWJs
ZVN0YXRlT3ZlcnJpZGUuYm9vbFZhbHVlOworCisgICAgcmV0dXJuIE51bGxvcHQ7Cit9CisKK3Zv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKE9wdGlvbmFsPGJv
b2w+IG92ZXJyaWRlVmFsdWUpCit7CisgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9
IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXco
KTsKKyAgICBpZiAob3ZlcnJpZGVWYWx1ZSkKKyAgICAgICAgd2ViVmlldy5fc3RhYmxlU3RhdGVP
dmVycmlkZSA9IEAob3ZlcnJpZGVWYWx1ZS52YWx1ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHdl
YlZpZXcuX3N0YWJsZVN0YXRlT3ZlcnJpZGUgPSBuaWw7Cit9CisKIEpTT2JqZWN0UmVmIFVJU2Ny
aXB0Q29udHJvbGxlcjo6Y29udGVudFZpc2libGVSZWN0KCkgY29uc3QKIHsKICAgICBUZXN0UnVu
bmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLm1haW5X
ZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCmluZGV4IGEyM2IyNzBkOTNlMTdkYzI5MTg5
Yjg4MzljZTBlZDJiY2QxN2JhMjQuLjI2ODUzZTBjMTFmYzAzMTkyNmQxZDYyMWY1OGEwNTU0OGRj
ODNiNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENv
bnRyb2xsZXJNYWMubW0KQEAgLTU2LDYgKzU2LDExIEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
Ojpkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCit2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNh
bGxiYWNrKQoreworICAgIHJldHVybiBkb0FzeW5jVGFzayhjYWxsYmFjayk7Cit9CisKIHZvaWQg
VUlTY3JpcHRDb250cm9sbGVyOjppbnNlcnRUZXh0KEpTU3RyaW5nUmVmIHRleHQsIGludCBsb2Nh
dGlvbiwgaW50IGxlbmd0aCkKIHsKICNpZiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGNjMDY3MGQ1
MWNkOGNhYzliNGFlZWIwN2E0NmU5NGNjZTg3YmEyMWYuLjdlOTcyYzU3NTM5YzRjMTQ2MTRlNzkx
NDIxYTlmMjMyMjBlYmVkMmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0xMS0xNyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBv
c3NpYmxlIHRvIHRlc3Qgbm9uLXN0YWJsZS1zdGF0ZSBzY3JvbGxpbmcgb24gaU9TCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5MDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNjcm9sbGluZ2Nvb3Jk
aW5hdG9yL2lvcy9ub24tc3RhYmxlLXZpZXdwb3J0LXNjcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHNjcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9ub24tc3RhYmxlLXZpZXdwb3J0
LXNjcm9sbC5odG1sOiBBZGRlZC4KKwogMjAxNi0xMS0xNyAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtXZWJJRExdIEFkZCBzdXBwb3J0IGZvciBCeXRlU3RyaW5nCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zY3JvbGxpbmdjb29yZGluYXRvci9pb3Mvbm9uLXN0YWJs
ZS12aWV3cG9ydC1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc2Nyb2xsaW5nY29v
cmRpbmF0b3IvaW9zL25vbi1zdGFibGUtdmlld3BvcnQtc2Nyb2xsLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44YTJmNzkxMTZjNWJmYzk0OTI5YzNiOWJmZDYyMzI4NGM4M2QzMzliCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc2Nyb2xsaW5nY29vcmRpbmF0b3IvaW9zL25vbi1zdGFi
bGUtdmlld3BvcnQtc2Nyb2xsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMzIEBACitmaXhlZAor
KEdyYXBoaWNzTGF5ZXIKKyAgKGFuY2hvciAwLjAwIDAuMDApCisgIChib3VuZHMgMzIwLjAwIDUw
MTMuMDApCisgICh2aXNpYmxlIHJlY3QgMC4wMCwgMTAwMC4wMCAxMDYuNjcgeCAxODkuMzMpCisg
IChjb3ZlcmFnZSByZWN0IDAuMDAsIDEwMDAuMDAgMTA2LjY3IHggMTg5LjMzKQorICAoaW50ZXJz
ZWN0cyBjb3ZlcmFnZSByZWN0IDEpCisgIChjb250ZW50c1NjYWxlIDYuMDApCisgIChjaGlsZHJl
biAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgMzIwLjAwIDUwMTMuMDApCisg
ICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMTAwMC4w
MCAxMDYuNjcgeCAxODkuMzMpCisgICAgICAoY292ZXJhZ2UgcmVjdCAwLjAwLCAxMDAwLjAwIDEw
Ni42NyB4IDE4OS4zMykKKyAgICAgIChpbnRlcnNlY3RzIGNvdmVyYWdlIHJlY3QgMSkKKyAgICAg
IChjb250ZW50c1NjYWxlIDYuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhp
Y3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAxMC4wMCAwLjAwKQorICAgICAgICAgIChib3Vu
ZHMgMTAwLjAwIDU2OC4wMCkKKyAgICAgICAgICAodXNpbmdUaWxlZExheWVyIDEpCisgICAgICAg
ICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAg
ICAgICh2aXNpYmxlIHJlY3QgMC4wMCwgMC4wMCAxMDAuMDAgeCA1NjguMDApCisgICAgICAgICAg
KGNvdmVyYWdlIHJlY3QgLTEwLjAwLCAwLjAwIDMyMC4wMCB4IDU2OC4wMCkKKyAgICAgICAgICAo
aW50ZXJzZWN0cyBjb3ZlcmFnZSByZWN0IDEpCisgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgNi4w
MCkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zY3JvbGxpbmdjb29yZGluYXRvci9pb3Mvbm9uLXN0YWJsZS12aWV3cG9ydC1zY3Jv
bGwuaHRtbCBiL0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9ub24tc3RhYmxl
LXZpZXdwb3J0LXNjcm9sbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkxNGE5NDYwMGU3Y2Q2OGVhMWNkZTU4
ODIzYzY2NzExYTMyZGFkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zY3JvbGxp
bmdjb29yZGluYXRvci9pb3Mvbm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwuaHRtbApAQCAtMCww
ICsxLDYyIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VG
bGV4aWJsZVZpZXdwb3J0PXRydWUgXSAtLT4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorICAgIDxzdHlsZT4K
KyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBoZWlnaHQ6IDUwMDBweDsKKyAgICAgICAgICAg
IG1hcmdpbjogMDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLmZpeGVkIHsKKyAgICAg
ICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgICAgICAgIHRvcDogMDsKKyAgICAgICAgICAg
IGxlZnQ6IDEwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICB3aWR0
aDogMTAwcHg7CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICB9
CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2lu
ZG93LmludGVybmFscykKKyAgICAgICAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRTcGVjdWxh
dGl2ZVRpbGluZ0VuYWJsZWQoZmFsc2UpOyAvLyBOZWNlc3NhcnkgdG8gYXZvaWQgZmxha2luZXNz
IHdpdGggY292ZXJhZ2UgcmVjdHMuCisKKyAgICAgICAgZnVuY3Rpb24gZ2V0VW5zdGFibGVTY3Jv
bGxTY3JpcHQoeCwgeSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGAoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLnN0YWJsZVN0YXRlT3ZlcnJpZGUgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW1tZWRpYXRlWm9vbVRvU2NhbGUo
Myk7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0
KDAsIDMwMDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHVpQ29udHJvbGxl
ci5kb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgIH0p
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSkoKTtgOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCF0ZXN0
UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGdldFVuc3RhYmxlU2Nyb2xsU2NyaXB0KCksIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMn
KS50ZXh0Q29udGVudCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQsIGludGVy
bmFscy5MQVlFUl9UUkVFX0lOQ0xVREVTX1ZJU0lCTEVfUkVDVFMpOworICAgICAgICAgICAgICAg
IHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBm
YWxzZSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgY2xhc3M9ImZpeGVk
Ij5maXhlZDwvZGl2PgorPHByZSBpZD0ibGF5ZXJzIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295264</attachid>
            <date>2016-11-19 10:01:00 -0800</date>
            <delta_ts>2016-11-19 10:22:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164905-20161119100051.patch</filename>
            <type>text/plain</type>
            <size>30788</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4OTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTJhNWEyOGZhYjRlYzhh
NmY0ZjkyYmUxYWZiN2RmM2U1YTc0OTVlNi4uMmUyYWI0MjZjNjZiNDFhNTVmZjlmMTY5NWYxNjZk
YWQ5ZGMyNzU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTExLTE4ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gdGVzdCBub24tc3RhYmxlLXN0YXRlIHNjcm9sbGluZyBvbiBpT1MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDkwNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
Zm9yIGFuIGlPUyBsYXlvdXQgdGVzdCB0byBmb3JjZSBldmVyeSB2aXNpYmxlIHJlY3QgdXBkYXRl
CisgICAgICAgIGZyb20gdGhlIFVJIHByb2Nlc3MgdG8gdGhlIHdlYiBwcm9jZXNzIHRvIGJlIGlu
IGEgbm9uLXN0YWJsZSBzdGF0ZS4gVGhpcyBlbXVsYXRlcworICAgICAgICB3aGF0IGhhcHBlbnMg
ZHVyaW5nIHBhbm5pbmcgYW5kIHpvb21pbmcgaW50ZXJhY3Rpb25zLCBhbmQgYWxsb3dzIHVzIHRv
IHRlc3QgdGhlCisgICAgICAgIHNjcm9sbGluZyBhbmQgbGF5ZXIgdHJlZXMgaW4gdGhlc2UgdHJh
bnNpZW50cyBzdGF0ZXMuCisKKyAgICAgICAgVGhpcyBpcyBkb25lIGJ5IGFkZGluZyBhIHRlc3Rp
bmcgcHJvcGVydHkgb24gV0tXZWJWaWV3LCBfc3RhYmxlU3RhdGVPdmVycmlkZSwgd2hvc2UKKyAg
ICAgICAgZ2V0dGVycyBhbmQgc2V0dGVycyBhcmUgb3ZlcnJpZGRlbiBpbiBUZXN0UnVubmVyV0tX
ZWJWaWV3LiBXaGVuIG5vbi1uaWwsIHdlIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RBZnRlclNj
cm9sbEluVmlldworICAgICAgICBjb25zdWx0cyB0aGUgTlNOdW1iZXIncyBib29sVmFsdWUgYW5k
IHVzZXMgaXQgdG8gb3ZlcnJpZGUgdGhlIHN0YWJsZSBzdGF0ZS4KKworICAgICAgICBUbyBmYWNp
bGl0YXRlIHRoaXMga2luZCBvZiB0ZXN0aW5nLCBhbHNvIGFkZCBpbW1lZGlhdGVTY3JvbGxUb09m
ZnNldCgpIGFuZAorICAgICAgICBpbW1lZGlhdGVab29tVG9TY2FsZSgpIHRvIFVJU2NyaXB0Q29u
dHJvbGxlci4gRmluYWxseSwgYWRkIGRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoKQorICAgICAg
ICB3aGljaCBwcm92aWRlcyBhIGNhbGxiYWNrIHRoYXQgZmlyZXMgYWZ0ZXIgb25lIHRyaXAgdG8g
dGhlIHdlYiBwcm9jZXNzIGFuZCBiYWNrLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfdXBkYXRlVmlzaWJsZUNvbnRl
bnRSZWN0QWZ0ZXJTY3JvbGxJblZpZXc6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfc3RhYmxl
U3RhdGVPdmVycmlkZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFN0YWJsZVN0YXRlT3Zl
cnJpZGU6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRl
Lmg6CisKKzIwMTYtMTEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKICAgICAgICAgW2lPUyBXSzJdIEVsaW1pbmF0ZSBhIHNvdXJjZSBvZiBmbGFraW5lc3MgaW4g
bGF5b3V0IHRlc3RzIGJ5IGZvcmNpbmcgV2ViUGFnZSBpbnRvICJyZXNwb25zaXZlIiBtb2RlIGZv
ciBhbGwgdGVzdHMsIHdpdGggYW4gaW50ZXJuYWxzIG92ZXJyaWRlCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5ODAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBkNzRkNDJjNmU0Mjll
NjhjZTk1NmQyMWI4NWM3OGI3YzAyYmYxYWVhLi4zM2MyZmQ5YTlhYjhhNWI4MTEwZjE2Mzc4MWNj
MzI2OTU3OTJiNDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQpAQCAtMjA3MSw2ICsyMDcxLDkgQEAgLSAodm9pZClfdXBkYXRlVmlzaWJs
ZUNvbnRlbnRSZWN0QWZ0ZXJTY3JvbGxJblZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcK
ICAgICBpZiAoaXNTdGFibGVTdGF0ZSAmJiBbc2Nyb2xsVmlldyByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF9pc0ludGVycnVwdGluZ0RlY2VsZXJhdGlvbildKQogICAgICAgICBpc1N0YWJs
ZVN0YXRlID0gIVtzY3JvbGxWaWV3IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2lzSW50ZXJy
dXB0aW5nRGVjZWxlcmF0aW9uKV07CiAKKyAgICBpZiAoTlNOdW1iZXIgKnN0YWJsZU92ZXJyaWRl
ID0gc2VsZi5fc3RhYmxlU3RhdGVPdmVycmlkZSkKKyAgICAgICAgaXNTdGFibGVTdGF0ZSA9IHN0
YWJsZU92ZXJyaWRlLmJvb2xWYWx1ZTsKKwogICAgIFtzZWxmIF91cGRhdGVDb250ZW50UmVjdHNX
aXRoU3RhdGU6aXNTdGFibGVTdGF0ZV07CiB9CiAKQEAgLTQ3MzEsNiArNDczNCwxNyBAQCAtIChO
U1N0cmluZyAqKV9zY3JvbGxpbmdUcmVlQXNUZXh0CiAgICAgcmV0dXJuIGNvb3JkaW5hdG9yLT5z
Y3JvbGxpbmdUcmVlQXNUZXh0KCk7CiB9CiAKKy0gKE5TTnVtYmVyICopX3N0YWJsZVN0YXRlT3Zl
cnJpZGUKK3sKKyAgICAvLyBGb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4KKyAgICByZXR1cm4g
bmlsOworfQorCistICh2b2lkKV9zZXRTdGFibGVTdGF0ZU92ZXJyaWRlOihOU051bWJlciAqKW92
ZXJyaWRlQm9vbGVhbgoreworICAgIC8vIEZvciBzdWJjbGFzc2VzIHRvIG92ZXJyaWRlLgorfQor
CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApp
bmRleCBhYmVjNGQwMThiMmVjYjY3YmFjZmVjODE3MDM0ODc3NmQ2MDdkMmJjLi45NTJmMzYwMjMw
MWRkMTc3ODIzZGIyNGIwYTMyNzEzZDEwMWE0YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMjkwLDcgKzI5
MCw5IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0ltbWVkaWF0ZUFjdGlvblR5cGUp
IHsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqX3Njcm9sbGlu
Z1RyZWVBc1RleHQgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9TX1RCQSkpOwogCi0jZW5kaWYK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFN0YWJsZVN0YXRlT3ZlcnJpZGU6KSBO
U051bWJlciAqX3N0YWJsZVN0YXRlT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShpb3MoV0tfSU9T
X1RCQSkpOworCisjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQogCiAjaWYgIVRBUkdFVF9PU19J
UEhPTkUKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfaGFzQWN0aXZlVmlk
ZW9Gb3JDb250cm9sc01hbmFnZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiMmFjYTJm
ODNjYmQyZjM5NzMxZjc3ZjhhN2Q1YzA0NjA0ZTYwMDExLi5jZDQ0N2I5OTU2ZjVmMzU0ODExOTk4
YjRlMmVlOGRjOTQwMDk2ZGQ4IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzQgQEAKIDIwMTYtMTEtMTggIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0
ZXN0IG5vbi1zdGFibGUtc3RhdGUgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSBmb3IgYW4gaU9T
IGxheW91dCB0ZXN0IHRvIGZvcmNlIGV2ZXJ5IHZpc2libGUgcmVjdCB1cGRhdGUKKyAgICAgICAg
ZnJvbSB0aGUgVUkgcHJvY2VzcyB0byB0aGUgd2ViIHByb2Nlc3MgdG8gYmUgaW4gYSBub24tc3Rh
YmxlIHN0YXRlLiBUaGlzIGVtdWxhdGVzCisgICAgICAgIHdoYXQgaGFwcGVucyBkdXJpbmcgcGFu
bmluZyBhbmQgem9vbWluZyBpbnRlcmFjdGlvbnMsIGFuZCBhbGxvd3MgdXMgdG8gdGVzdCB0aGUK
KyAgICAgICAgc2Nyb2xsaW5nIGFuZCBsYXllciB0cmVlcyBpbiB0aGVzZSB0cmFuc2llbnRzIHN0
YXRlcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgZG9uZSBieSBhZGRpbmcgYSB0ZXN0aW5n
IHByb3BlcnR5IG9uIFdLV2ViVmlldywgX3N0YWJsZVN0YXRlT3ZlcnJpZGUsIHdob3NlCisgICAg
ICAgIGdldHRlcnMgYW5kIHNldHRlcnMgYXJlIG92ZXJyaWRkZW4gaW4gVGVzdFJ1bm5lcldLV2Vi
Vmlldy4gV2hlbiBub24tbmlsLCB3ZSBfdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0QWZ0ZXJTY3Jv
bGxJblZpZXcKKyAgICAgICAgY29uc3VsdHMgdGhlIE5TTnVtYmVyJ3MgYm9vbFZhbHVlIGFuZCB1
c2VzIGl0IHRvIG92ZXJyaWRlIHRoZSBzdGFibGUgc3RhdGUuCisgICAgICAgIAorICAgICAgICBU
byBmYWNpbGl0YXRlIHRoaXMga2luZCBvZiB0ZXN0aW5nLCBhbHNvIGFkZCBpbW1lZGlhdGVTY3Jv
bGxUb09mZnNldCgpIGFuZAorICAgICAgICBpbW1lZGlhdGVab29tVG9TY2FsZSgpIHRvIFVJU2Ny
aXB0Q29udHJvbGxlci4gRmluYWxseSwgYWRkIGRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoKQor
ICAgICAgICB3aGljaCBwcm92aWRlcyBhIGNhbGxiYWNrIHRoYXQgZmlyZXMgYWZ0ZXIgb25lIHRy
aXAgdG8gdGhlIHdlYiBwcm9jZXNzIGFuZCBiYWNrLgorICAgICAgICAKKyAgICAgICAgQWRkIGNv
ZGUgZ2VuZXJhdGlvbiBzdXBwb3J0IGZvciBvcHRpb25hbCBib29sZWFuIGF0dHJpYnV0ZXMgaW4g
SURMLgorCisgICAgICAgIEFsaWduIENvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbSBhbmQg
Q29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0uCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9C
aW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG06CisgICAgICAgIChfZ2VuZXJh
dGVJbXBsZW1lbnRhdGlvbkZpbGUpOgorICAgICAgICAoX3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKF9yZXR1cm5FeHByZXNzaW9uKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUpOgorICAgICAgICAoV1RSOjpjb250
ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xs
ZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250
cm9sbGVyOjppbW1lZGlhdGVab29tVG9TY2FsZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29u
dHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKToKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL0JpbmRpbmdzL0pTV3JhcHBhYmxlLmg6CisgICAgICAgIChXVFI6OkpTVmFsdWVN
YWtlQm9vbGVhbk9yTnVsbCk6CisgICAgICAgIChXVFI6OkpTVmFsdWVUb051bGxhYmxlQm9vbGVh
bik6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3Mv
VUlTY3JpcHRDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpVSVNjcmlw
dENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjppbW1lZGlhdGVab29tVG9TY2FsZSk6CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZSk6CisgICAgICAgICogVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJh
dG9yVGVzdFJ1bm5lci5wbToKKyAgICAgICAgKF9jbGFzc1JlZkdldHRlcik6CisgICAgICAgIChf
cGxhdGZvcm1UeXBlQ29uc3RydWN0b3IpOgorICAgICAgICAoX3JldHVybkV4cHJlc3Npb24pOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bVGVzdFJ1bm5lcldLV2ViVmlldyBkZWFsbG9jXSk6CisgICAgICAgICgtW1Rl
c3RSdW5uZXJXS1dlYlZpZXcgX3N0YWJsZVN0YXRlT3ZlcnJpZGVdKToKKyAgICAgICAgKC1bVGVz
dFJ1bm5lcldLV2ViVmlldyBfc2V0U3RhYmxlU3RhdGVPdmVycmlkZTpdKToKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL2lvcy9UZXN0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyk6Cisg
ICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgor
ICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKToKKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjp6b29tVG9TY2FsZSk6CisgICAgICAgIChX
VFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQpOgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKToKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKToKKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0ZU92ZXJyaWRlKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW06Cisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0
ZSk6CisKKzIwMTYtMTEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CisKICAgICAgICAgW2lPUyBXSzJdIEVsaW1pbmF0ZSBhIHNvdXJjZSBvZiBmbGFraW5lc3MgaW4g
bGF5b3V0IHRlc3RzIGJ5IGZvcmNpbmcgV2ViUGFnZSBpbnRvICJyZXNwb25zaXZlIiBtb2RlIGZv
ciBhbGwgdGVzdHMsIHdpdGggYW4gaW50ZXJuYWxzIG92ZXJyaWRlCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5ODAKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBt
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJU
cmVlLnBtCmluZGV4IDVmMWM1OWUzYzI5NDNmMTUzYmQ1MWJlYmZmMTZjYzVjYWI2OTg4ZGYuLmQz
OWQ2OGEwZjFhNWI0MmFiMjliM2U3NmI5OTNiNWQ5NThkNTA3YjcgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRl
clRyZWUucG0KQEAgLTI0NCw3ICsyNDQsNyBAQCBKU0NsYXNzUmVmICR7Y2xhc3NOYW1lfTo6JHtj
bGFzc1JlZkdldHRlcn0oKQogICAgIHN0YXRpYyBKU0NsYXNzUmVmIGpzQ2xhc3M7CiAgICAgaWYg
KCFqc0NsYXNzKSB7CiAgICAgICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmluaXRpb24gPSBrSlND
bGFzc0RlZmluaXRpb25FbXB0eTsKLSAgICAgICAgZGVmaW5pdGlvbi5jbGFzc05hbWUgPSAiJHt0
eXBlfSI7CisgICAgICAgIGRlZmluaXRpb24uY2xhc3NOYW1lID0gIkB7WyR0eXBlLT5uYW1lXX0i
OwogICAgICAgICBkZWZpbml0aW9uLnBhcmVudENsYXNzID0gQHtbJHNlbGYtPl9wYXJlbnRDbGFz
c1JlZkdldHRlckV4cHJlc3Npb24oJGludGVyZmFjZSldfTsKICAgICAgICAgZGVmaW5pdGlvbi5z
dGF0aWNWYWx1ZXMgPSBzdGF0aWNWYWx1ZXMoKTsKICAgICAgICAgZGVmaW5pdGlvbi5zdGF0aWNG
dW5jdGlvbnMgPSBzdGF0aWNGdW5jdGlvbnMoKTsKQEAgLTQzMSw3ICs0MzEsOCBAQCBzdWIgX3Bs
YXRmb3JtVHlwZUNvbnN0cnVjdG9yCiB7CiAgICAgbXkgKCRzZWxmLCAkdHlwZSwgJGFyZ3VtZW50
TmFtZSkgPSBAXzsKIAotICAgIHJldHVybiAiSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCAkYXJn
dW1lbnROYW1lKSIgaWYgJHR5cGUgZXEgImJvb2xlYW4iOworICAgIHJldHVybiAiSlNWYWx1ZVRv
TnVsbGFibGVCb29sZWFuKGNvbnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkdHlwZS0+bmFtZSBl
cSAiYm9vbGVhbiIgJiYgJHR5cGUtPmlzTnVsbGFibGU7CisgICAgcmV0dXJuICJKU1ZhbHVlVG9C
b29sZWFuKGNvbnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYm9vbGVh
biI7CiAgICAgcmV0dXJuICIkYXJndW1lbnROYW1lIiBpZiAkdHlwZS0+bmFtZSBlcSAib2JqZWN0
IjsKICAgICByZXR1cm4gIkpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNWYWx1ZVRv
U3RyaW5nQ29weShjb250ZXh0LCAkYXJndW1lbnROYW1lLCAwKSkiIGlmICQkc2VsZntjb2RlR2Vu
ZXJhdG9yfS0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gIkpTVmFsdWVUb051bWJl
cihjb250ZXh0LCAkYXJndW1lbnROYW1lLCAwKSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5J
c05vblBvaW50ZXJUeXBlKCR0eXBlKTsKQEAgLTQ3MSw2ICs0NzIsNyBAQCBzdWIgX3JldHVybkV4
cHJlc3Npb24KICAgICBteSAoJHNlbGYsICRyZXR1cm5UeXBlLCAkZXhwcmVzc2lvbikgPSBAXzsK
IAogICAgIHJldHVybiAiSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkiIGlmICRyZXR1cm5U
eXBlLT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4gIkpTVmFsdWVNYWtlQm9vbGVhbk9yTnVs
bChjb250ZXh0LCAke2V4cHJlc3Npb259KSIgaWYgJHJldHVyblR5cGUtPm5hbWUgZXEgImJvb2xl
YW4iICYmICRyZXR1cm5UeXBlLT5pc051bGxhYmxlOwogICAgIHJldHVybiAiSlNWYWx1ZU1ha2VC
b29sZWFuKGNvbnRleHQsICR7ZXhwcmVzc2lvbn0pIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAi
Ym9vbGVhbiI7CiAgICAgcmV0dXJuICIke2V4cHJlc3Npb259IiBpZiAkcmV0dXJuVHlwZS0+bmFt
ZSBlcSAib2JqZWN0IjsKICAgICByZXR1cm4gIkpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsICR7
ZXhwcmVzc2lvbn0pIiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzTm9uUG9pbnRlclR5cGUo
JHJldHVyblR5cGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0KaW5kZXggM2ZjZmU0OTIyZDYwZjFmMWIxN2VjYzZjODgzZTMzYmExY2U3
MTkzMC4uYzZjYTBkNTUzZTVjMmJlNWY5MjU2OTdlNWMzZjJkMmFjYTM0ZTlkOCAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC00
OSw2ICs0OSwxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1
ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRv
QWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICByZXR1
cm4gZG9Bc3luY1Rhc2soY2FsbGJhY2spOworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIFJl
ZlB0cjxVSVNjcmlwdENvbnRyb2xsZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CkBAIC0xNDUsOCAr
MTUwLDM1IEBAIEpTT2JqZWN0UmVmIFVJU2NyaXB0Q29udHJvbGxlcjo6Y29udGVudHNPZlVzZXJJ
bnRlcmZhY2VJdGVtKEpTU3RyaW5nUmVmIGludGVyZmFjCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldChsb25nLCBsb25nKQor
c3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoVUlTY3JvbGxW
aWV3ICpzY3JvbGxWaWV3LCBDR1BvaW50IGNvbnRlbnRPZmZzZXQpCit7CisgICAgVUlFZGdlSW5z
ZXRzIGNvbnRlbnRJbnNldHMgPSBzY3JvbGxWaWV3LmNvbnRlbnRJbnNldDsKKyAgICBDR1NpemUg
Y29udGVudFNpemUgPSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplOworICAgIENHU2l6ZSBzY3JvbGxW
aWV3U2l6ZSA9IHNjcm9sbFZpZXcuYm91bmRzLnNpemU7CisKKyAgICBDR0Zsb2F0IG1heEhvcml6
b250YWxPZmZzZXQgPSBjb250ZW50U2l6ZS53aWR0aCArIGNvbnRlbnRJbnNldHMucmlnaHQgLSBz
Y3JvbGxWaWV3U2l6ZS53aWR0aDsKKyAgICBjb250ZW50T2Zmc2V0LnggPSBzdGQ6Om1pbihtYXhI
b3Jpem9udGFsT2Zmc2V0LCBjb250ZW50T2Zmc2V0LngpOworICAgIGNvbnRlbnRPZmZzZXQueCA9
IHN0ZDo6bWF4KC1jb250ZW50SW5zZXRzLmxlZnQsIGNvbnRlbnRPZmZzZXQueCk7CisKKyAgICBD
R0Zsb2F0IG1heFZlcnRpY2FsT2Zmc2V0ID0gY29udGVudFNpemUuaGVpZ2h0ICsgY29udGVudElu
c2V0cy5ib3R0b20gLSBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQ7CisgICAgY29udGVudE9mZnNldC55
ID0gc3RkOjptaW4obWF4VmVydGljYWxPZmZzZXQsIGNvbnRlbnRPZmZzZXQueSk7CisgICAgY29u
dGVudE9mZnNldC55ID0gc3RkOjptYXgoLWNvbnRlbnRJbnNldHMudG9wLCBjb250ZW50T2Zmc2V0
LnkpOworICAgIHJldHVybiBjb250ZW50T2Zmc2V0OworfQorCit2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6c2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpCit7CisgICAgW2dXZWJTY3JvbGxW
aWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoZ1dl
YlNjcm9sbFZpZXcsIENHUG9pbnRNYWtlKHgsIHkpKSBhbmltYXRlZDpZRVNdOworfQorCit2b2lk
IFVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25n
IHkpCiB7CisgICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNl
dEJvdW5kZWRJblZhbGlkUmFuZ2UoZ1dlYlNjcm9sbFZpZXcsIENHUG9pbnRNYWtlKHgsIHkpKSBh
bmltYXRlZDpOT107Cit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjppbW1lZGlhdGVab29t
VG9TY2FsZShkb3VibGUgc2NhbGUpCit7CisgICAgW2dXZWJTY3JvbGxWaWV3IHNldFpvb21TY2Fs
ZTpzY2FsZSBhbmltYXRlZDpOT107CiB9CiAKIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXli
b2FyZEFjY2Vzc29yeUJhck5leHQoKQpAQCAtMTY3LDYgKzE5OSwxNiBAQCBkb3VibGUgVUlTY3Jp
cHRDb250cm9sbGVyOjptYXhpbXVtWm9vbVNjYWxlKCkgY29uc3QKICAgICByZXR1cm4gZ1dlYlNj
cm9sbFZpZXcubWF4aW11bVpvb21TY2FsZTsKIH0KIAorT3B0aW9uYWw8Ym9vbD4gVUlTY3JpcHRD
b250cm9sbGVyOjpzdGFibGVTdGF0ZU92ZXJyaWRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gTnVs
bG9wdDsKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldFN0YWJsZVN0YXRlT3ZlcnJp
ZGUoT3B0aW9uYWw8Ym9vbD4pCit7Cit9CisKKwogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9s
bGVyOjpjb250ZW50VmlzaWJsZVJlY3QoKSBjb25zdAogewogICAgIENHUmVjdCBjb250ZW50Vmlz
aWJsZVJlY3QgPSBbZ1dlYkJyb3dzZXJWaWV3IGRvY3VtZW50VmlzaWJsZVJlY3RdOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMubW0KaW5kZXgg
NTVkYjRlZWI3ZTgyNDQ0MTY3MjA0MzI4YTY3ZDRjYzUwOThlMDk4OS4uOTdjYzZhNjg4MzZkNWU5
NTk3OTdmOGRmNjZhNmQzOWY0NjIyOTY2NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFjLm1tCkBAIC00Niw2ICs0NiwxMSBAQCB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rhc2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9
KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRh
dGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sKKyAgICByZXR1cm4gZG9Bc3luY1Rhc2soY2FsbGJh
Y2spOworfQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6aW5zZXJ0VGV4dChKU1N0cmluZ1Jl
ZiwgaW50LCBpbnQpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0Jp
bmRpbmdzL0pTV3JhcHBhYmxlLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL0JpbmRpbmdzL0pT
V3JhcHBhYmxlLmgKaW5kZXggNWVjNzE5N2M1OWQwZTFhZWY3ZjIzNjQ0NzU0MzkwMjg2YzU1YWY4
Ni4uMTViMzkwZGM0MTUyY2RiOWJmY2IxNWEyMGM2ZDc3Yzc3MDM2MWZjYiAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oCisrKyBiL1Rvb2xz
L1Rlc3RSdW5uZXJTaGFyZWQvQmluZGluZ3MvSlNXcmFwcGFibGUuaApAQCAtMjMsMTAgKzIzLDEw
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBK
U1dyYXBwYWJsZV9oCi0jZGVmaW5lIEpTV3JhcHBhYmxlX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVFIgewpAQCAt
MzcsMTEgKzM3LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEpTQ2xhc3NSZWYgd3JhcHBlckNs
YXNzKCkgPSAwOwogfTsKIAoraW5saW5lIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VCb29sZWFuT3JO
dWxsKEpTQ29udGV4dFJlZiBjb250ZXh0LCBPcHRpb25hbDxib29sPiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gdmFsdWUgPyBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgdmFsdWUudmFsdWUoKSkg
OiBKU1ZhbHVlTWFrZU51bGwoY29udGV4dCk7Cit9CisKK2lubGluZSBPcHRpb25hbDxib29sPiBK
U1ZhbHVlVG9OdWxsYWJsZUJvb2xlYW4oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
dmFsdWUpCit7CisgICAgcmV0dXJuIEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkg
fHwgSlNWYWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgPyBOdWxsb3B0IDogT3B0aW9uYWw8Ym9v
bD4oSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCB2YWx1ZSkpOworfQorCiBpbmxpbmUgSlNWYWx1
ZVJlZiBKU1ZhbHVlTWFrZVN0cmluZ09yTnVsbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTdHJp
bmdSZWYgc3RyaW5nT3JOdWxsKQogewogICAgIHJldHVybiBzdHJpbmdPck51bGwgPyBKU1ZhbHVl
TWFrZVN0cmluZyhjb250ZXh0LCBzdHJpbmdPck51bGwpIDogSlNWYWx1ZU1ha2VOdWxsKGNvbnRl
eHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKLQotI2VuZGlmIC8vIEpTV3JhcHBhYmxlX2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRp
bmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCmluZGV4IDBlZDQwYzAy
ZTMzMzlhNDA0NDlkYjExNWQwNDk3NzliOGEyYTJlZmIuLjI2YTI1ZmFiNzM1MWM0M2M2ZDk4N2Yw
ODlmMmUwMmIwYjhjMDdhN2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMv
VGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9s
bGVyLmlkbApAQCAtMjYsOCArMjYsNyBAQAogaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxlciB7
CiAKICAgICB2b2lkIGRvQXN5bmNUYXNrKG9iamVjdCBjYWxsYmFjayk7IC8vIFVzZWQgdG8gdGVz
dCB0aGUgaGFybmVzcy4KLQotICAgIHZvaWQgem9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBvYmpl
Y3QgY2FsbGJhY2spOworICAgIHZvaWQgZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShvYmplY3Qg
Y2FsbGJhY2spOyAvLyBDYWxsIHRoZSBjYWxsYmFjayBhZnRlciBzZW5kaW5nIGEgbWVzc2FnZSB0
byB0aGUgV2ViUHJvY2VzcyBhbmQgcmVjZWl2aW5nIGEgc3Vic2VxdWVudCB1cGRhdGUuCiAKICAg
ICB2b2lkIHNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKG9i
amVjdCBjYWxsYmFjayk7CiAKQEAgLTE0NiwxNCArMTQ1LDIzIEBAIGludGVyZmFjZSBVSVNjcmlw
dENvbnRyb2xsZXIgewogICAgIGF0dHJpYnV0ZSBvYmplY3Qgd2lsbEJlZ2luWm9vbWluZ0NhbGxi
YWNrOwogICAgIGF0dHJpYnV0ZSBvYmplY3QgZGlkRW5kWm9vbWluZ0NhbGxiYWNrOwogCisgICAg
dm9pZCB6b29tVG9TY2FsZShkb3VibGUgc2NhbGUsIG9iamVjdCBjYWxsYmFjayk7CisKICAgICB2
b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsgLy8gSW5pdGlhdGUgYW4gYW5pbWF0
ZWQgc2Nyb2xsIGluIHRoZSBVSSBwcm9jZXNzLgogICAgIGF0dHJpYnV0ZSBvYmplY3QgZGlkRW5k
U2Nyb2xsaW5nQ2FsbGJhY2s7CiAKKyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxv
bmcgeCwgbG9uZyB5KTsgLy8gU2V0IHRoZSBzY3JvbGwgcG9zaXRpb24gaW4gdGhlIFVJIHByb2Nl
c3Mgd2l0aG91dCBhbmltYXRpb24uCisgICAgdm9pZCBpbW1lZGlhdGVab29tVG9TY2FsZShkb3Vi
bGUgc2NhbGUpOyAvLyBTZXQgdGhlIHpvb20gc2NhbGUgaW4gdGhlIFVJIHByb2Nlc3Mgd2l0aG91
dCBhbmltYXRpb24uCisKICAgICAvLyBWaWV3IHN0YXRlCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGRvdWJsZSB6b29tU2NhbGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBtaW5pbXVt
Wm9vbVNjYWxlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgbWF4aW11bVpvb21TY2Fs
ZTsKIAorICAgIC8vIE92ZXJpZGVzIHRoZSAiaW4gc3RhYmxlIHN0YXRlIiBiZWhhdmlvciBvZiBX
S1dlYlZpZXcgKG9ubHkgYXBwbGllcyB0byBpT1MpCisgICAgLy8gV2hlbiBmYWxzZSwgY29udGVu
dCByZWN0IHVwZGF0ZXMgdG8gdGhlIHdlYiBwcm9jZXNzIGhhdmUgaW5TdGFibGVTdGF0ZT1mYWxz
ZSwgYXMgaWYgYSBzY3JvbGwgb3Igem9vbSB3ZXJlIGluIHByb2dyZXNzLgorICAgIGF0dHJpYnV0
ZSBib29sZWFuPyBzdGFibGVTdGF0ZU92ZXJyaWRlOworCiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IG9iamVjdCBjb250ZW50VmlzaWJsZVJlY3Q7IC8vIFJldHVybmVkIG9iamVjdCBoYXMgJ2xlZnQn
LCAndG9wJywgJ3dpZHRoJywgJ2hlaWdodCcgcHJvcGVydGllcy4KIAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBvYmplY3Qgc2VsZWN0aW9uUmFuZ2VWaWV3UmVjdHM7IC8vIEFuIGFycmF5IG9mIG9i
amVjdHMgd2l0aCAnbGVmdCcsICd0b3AnLCAnd2lkdGgnLCBhbmQgJ2hlaWdodCcgcHJvcGVydGll
cy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDI3ZGY1OWU2MzVlZGRhZTc1MWFjOGMw
NmE5NTM5ZWVmZTVmMTAwNzguLjlhY2UyMDJkMWQ4ZTAyZjVmODFlM2RhMWMxMzQ0MjkyZDliM2Uz
Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJ
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtNjAsNiArNjAsMTAgQEAgdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmRvQXN5bmNUYXNrKEpTVmFsdWVSZWYpCiB2b2lkIHNpbXVsYXRl
QWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hhbmdlTm90aWZpY2F0aW9uKEpTVmFsdWVSZWYpCiB7CiB9
CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FmdGVyUHJlc2VudGF0aW9uVXBkYXRlKEpT
VmFsdWVSZWYpCit7Cit9CiAjZW5kaWYKIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OnNldERp
ZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2sp
CkBAIC0yNTMsNiArMjU3LDE0IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzY3JvbGxUb09m
ZnNldChsb25nIHgsIGxvbmcgeSkKIHsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6Omlt
bWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQoreworfQorCit2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlWm9vbVRvU2NhbGUoZG91YmxlIHNjYWxlKQoreworfQor
CiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5Ym9hcmRBY2Nlc3NvcnlCYXJOZXh0KCkKIHsK
IH0KQEAgLTI3Niw2ICsyODgsMTUgQEAgZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11
bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJuIDE7CiB9CiAKK09wdGlvbmFsPGJvb2w+IFVJ
U2NyaXB0Q29udHJvbGxlcjo6c3RhYmxlU3RhdGVPdmVycmlkZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE51bGxvcHQ7Cit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzZXRTdGFibGVTdGF0
ZU92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KQoreworfQorCiBKU09iamVjdFJlZiBVSVNjcmlwdENv
bnRyb2xsZXI6OmNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxw
dHI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9V
SVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGU4ZDBmOGMxYzFjN2ZlNjA0NGQ2YmQ5ZjUw
NTkyOTZkZDlkZTUzNDguLmFmYzhjZmFlMGIxNDkzNzk4MDY1YjNhYzMzNWUxMDJjNWQ0NGMyNjYg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2Ny
aXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250
ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJK
U1dyYXBwYWJsZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01MCw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1ha2VXaW5k
b3dPYmplY3QoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiB3aW5kb3dPYmplY3QsIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbik7CiAgICAgCiAgICAgdm9pZCBkb0FzeW5jVGFzayhKU1ZhbHVlUmVmIGNh
bGxiYWNrKTsKKyAgICB2b2lkIGRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBj
YWxsYmFjayk7CisKICAgICB2b2lkIHpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CiAKICAgICB2b2lkIHNpbXVsYXRlQWNjZXNzaWJpbGl0eVNldHRpbmdzQ2hh
bmdlTm90aWZpY2F0aW9uKEpTVmFsdWVSZWYgY2FsbGJhY2spOwpAQCAtODUsNiArODgsOSBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBzY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSk7CiAK
KyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsKKyAgICB2
b2lkIGltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSk7CisKICAgICB2b2lkIHNldERp
ZFN0YXJ0Rm9ybUNvbnRyb2xJbnRlcmFjdGlvbkNhbGxiYWNrKEpTVmFsdWVSZWYpOwogICAgIEpT
VmFsdWVSZWYgZGlkU3RhcnRGb3JtQ29udHJvbEludGVyYWN0aW9uQ2FsbGJhY2soKSBjb25zdDsK
IApAQCAtMTE1LDYgKzEyMSw5IEBAIHB1YmxpYzoKICAgICBkb3VibGUgem9vbVNjYWxlKCkgY29u
c3Q7CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBjb25zdDsKICAgICBkb3VibGUgbWF4
aW11bVpvb21TY2FsZSgpIGNvbnN0OworICAgIAorICAgIE9wdGlvbmFsPGJvb2w+IHN0YWJsZVN0
YXRlT3ZlcnJpZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YWJsZVN0YXRlT3ZlcnJpZGUoT3B0
aW9uYWw8Ym9vbD4pOwogCiAgICAgSlNPYmplY3RSZWYgY29udGVudFZpc2libGVSZWN0KCkgY29u
c3Q7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5w
bQppbmRleCBjZDllZDNmYTE4NmMxNzIyZTExOTc2NDBkMjdjYmNkMDFiMjk2YTJlLi45OGQzN2Rh
Yjk5Y2U3MzkyZDY3YWJhMWU0NDZkMDExMjI1MzAzY2Y5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVu
bmVyLnBtCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0KQEAgLTc3LDYgKzc3LDcgQEAgc3ViIF9jbGFz
c05hbWUKIHN1YiBfY2xhc3NSZWZHZXR0ZXIKIHsKICAgICBteSAoJHNlbGYsICR0eXBlKSA9IEBf
OworCiAgICAgcmV0dXJuICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+V0tfbGNmaXJzdChfaW1wbGVt
ZW50YXRpb25DbGFzc05hbWUoJHR5cGUpKSAuICJDbGFzcyI7CiB9CiAKQEAgLTQ0NCw2ICs0NDUs
NyBAQCBzdWIgX3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yCiB7CiAgICAgbXkgKCRzZWxmLCAkdHlw
ZSwgJGFyZ3VtZW50TmFtZSkgPSBAXzsKIAorICAgIHJldHVybiAiSlNWYWx1ZVRvTnVsbGFibGVC
b29sZWFuKGNvbnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYm9vbGVh
biIgJiYgJHR5cGUtPmlzTnVsbGFibGU7CiAgICAgcmV0dXJuICJKU1ZhbHVlVG9Cb29sZWFuKGNv
bnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYm9vbGVhbiI7CiAgICAg
cmV0dXJuICIkYXJndW1lbnROYW1lIiBpZiAkdHlwZS0+bmFtZSBlcSAib2JqZWN0IjsKICAgICBy
ZXR1cm4gIkpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29w
eShjb250ZXh0LCAkYXJndW1lbnROYW1lLCAwKSkiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+
SXNTdHJpbmdUeXBlKCR0eXBlKTsKQEAgLTQ4NCw2ICs0ODYsNyBAQCBzdWIgX3JldHVybkV4cHJl
c3Npb24KICAgICBteSAoJHNlbGYsICRyZXR1cm5UeXBlLCAkZXhwcmVzc2lvbikgPSBAXzsKIAog
ICAgIHJldHVybiAiSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkiIGlmICRyZXR1cm5UeXBl
LT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4gIkpTVmFsdWVNYWtlQm9vbGVhbk9yTnVsbChj
b250ZXh0LCAke2V4cHJlc3Npb259KSIgaWYgJHJldHVyblR5cGUtPm5hbWUgZXEgImJvb2xlYW4i
ICYmICRyZXR1cm5UeXBlLT5pc051bGxhYmxlOwogICAgIHJldHVybiAiSlNWYWx1ZU1ha2VCb29s
ZWFuKGNvbnRleHQsICR7ZXhwcmVzc2lvbn0pIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAiYm9v
bGVhbiI7CiAgICAgcmV0dXJuICIke2V4cHJlc3Npb259IiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBl
cSAib2JqZWN0IjsKICAgICByZXR1cm4gIkpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsICR7ZXhw
cmVzc2lvbn0pIiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzTm9uUG9pbnRlclR5cGUoJHJl
dHVyblR5cGUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0
UnVubmVyV0tXZWJWaWV3Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0UnVu
bmVyV0tXZWJWaWV3Lm1tCmluZGV4IDk2OTk3NDdiNzlmOTJhODc0NWE1NWRhMmE3ODA0YWVlNDcz
Zjc1YjUuLjQ4ZWVkOGViZGYzY2IzY2E2ODM0MWE5OGJkOGIwMmJlMDU4YWZmYjIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdFJ1bm5lcldLV2ViVmlldy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RSdW5uZXJXS1dlYlZpZXcubW0K
QEAgLTQ3LDYgKzQ3LDcgQEAgQGludGVyZmFjZSBUZXN0UnVubmVyV0tXZWJWaWV3ICgpCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXnpvb21Ub1NjYWxlQ29tcGxldGlvbkhhbmRs
ZXIpKHZvaWQpOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5zaG93S2V5Ym9h
cmRDb21wbGV0aW9uSGFuZGxlcikodm9pZCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBp
c1Nob3dpbmdLZXlib2FyZDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU051bWJlciAq
dGVzdFJ1bm5lclN0YWJsZVN0YXRlT3ZlcnJpZGU7CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBU
ZXN0UnVubmVyV0tXZWJWaWV3CkBAIC04Nyw2ICs4OCw4IEBAIC0gKHZvaWQpZGVhbGxvYwogICAg
IHNlbGYuem9vbVRvU2NhbGVDb21wbGV0aW9uSGFuZGxlciA9IG5pbDsKICAgICBzZWxmLnNob3dL
ZXlib2FyZENvbXBsZXRpb25IYW5kbGVyID0gbmlsOwogCisgICAgc2VsZi50ZXN0UnVubmVyU3Rh
YmxlU3RhdGVPdmVycmlkZSA9IG5pbDsKKwogICAgIFtzdXBlciBkZWFsbG9jXTsKIH0KIApAQCAt
MTcwLDYgKzE3MywxNyBAQCAtICh2b2lkKV9kaWRGaW5pc2hTY3JvbGxpbmcKICAgICBpZiAoc2Vs
Zi5kaWRFbmRTY3JvbGxpbmdDYWxsYmFjaykKICAgICAgICAgc2VsZi5kaWRFbmRTY3JvbGxpbmdD
YWxsYmFjaygpOwogfQorCistIChOU051bWJlciAqKV9zdGFibGVTdGF0ZU92ZXJyaWRlCit7Cisg
ICAgcmV0dXJuIHNlbGYudGVzdFJ1bm5lclN0YWJsZVN0YXRlT3ZlcnJpZGU7Cit9CisKKy0gKHZv
aWQpX3NldFN0YWJsZVN0YXRlT3ZlcnJpZGU6KE5TTnVtYmVyICopb3ZlcnJpZGVCb29sZWFuCit7
CisgICAgc2VsZi50ZXN0UnVubmVyU3RhYmxlU3RhdGVPdmVycmlkZSA9IG92ZXJyaWRlQm9vbGVh
bjsKK30KKwogI2VuZGlmCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL1Rlc3RDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VGVzdENvbnRyb2xsZXJJT1MubW0KaW5kZXggNDUyYzQxMGM4Mzc5YjcwYzY1MTJkYWQyYzBmZDAx
NDYzMTFhZmJkYS4uZDg1YTZkNzdhNDE5OTMxZGJkY2VjMmEwZmE4OTJhNjQ3NWRhMGEyNCAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVGVzdENvbnRyb2xsZXJJT1MubW0KQEAg
LTg2LDYgKzg2LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1SZXNldFN0YXRlVG9D
b25zaXN0ZW50VmFsdWVzKCkKICAgICBjb2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMo
KTsKIAogICAgIGlmIChQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBtYWluV2ViVmlldygpKSB7
CisgICAgICAgIHdlYlZpZXctPnBsYXRmb3JtVmlldygpLl9zdGFibGVTdGF0ZU92ZXJyaWRlID0g
bmlsOwogICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcgPSB3ZWJWaWV3LT5wbGF0Zm9y
bVZpZXcoKS5zY3JvbGxWaWV3OwogICAgICAgICBbc2Nyb2xsVmlldyBzZXRab29tU2NhbGU6MSBh
bmltYXRlZDpOT107CiAgICAgICAgIFtzY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Q0dQb2lu
dFplcm9dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tCmluZGV4IDk5NGI2ZGE3YzgwZjFiZTYzMjE5ODllYzJmNDJkN2I2M2NjN2Ix
MjEuLmU4NjE2Yzk5YzM0ZjYxNTU1OGE2MzdlYWNiYzU1MGFkMWI2ZWU0NDUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAg
LTU1LDYgKzU1LDE4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzayhKU1Zh
bHVlUmVmIGNhbGxiYWNrKQogICAgIH0pOwogfQogCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6
ZG9BZnRlclByZXNlbnRhdGlvblVwZGF0ZShKU1ZhbHVlUmVmIGNhbGxiYWNrKQoreworICAgIFRl
c3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCku
bWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisKKyAgICB1bnNpZ25lZCBjYWxsYmFja0lE
ID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVO
b25QZXJzaXN0ZW50KTsKKyAgICBbd2ViVmlldyBfZG9BZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGU6XiB7CisgICAgICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOworICAgIH1dOwor
fQorCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBK
U1ZhbHVlUmVmIGNhbGxiYWNrKQogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcg
PSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3
KCk7CkBAIC0zNTcsNiArMzY5LDE4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjpzY3JvbGxU
b09mZnNldChsb25nIHgsIGxvbmcgeSkKICAgICBbd2ViVmlldy5zY3JvbGxWaWV3IHNldENvbnRl
bnRPZmZzZXQ6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2Uod2ViVmlldy5zY3JvbGxW
aWV3LCBDR1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6WUVTXTsKIH0KIAordm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQorewor
ICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xl
dG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgW3dlYlZpZXcuc2Nyb2xs
VmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKHdl
YlZpZXcuc2Nyb2xsVmlldywgQ0dQb2ludE1ha2UoeCwgeSkpIGFuaW1hdGVkOk5PXTsKK30KKwor
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2Fs
ZSkKK3sKKyAgICBUZXN0UnVubmVyV0tXZWJWaWV3ICp3ZWJWaWV3ID0gVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLm1haW5XZWJWaWV3KCktPnBsYXRmb3JtVmlldygpOworICAgIFt3ZWJWaWV3
LnNjcm9sbFZpZXcgc2V0Wm9vbVNjYWxlOnNjYWxlIGFuaW1hdGVkOk5PXTsKK30KKwogdm9pZCBV
SVNjcmlwdENvbnRyb2xsZXI6OmtleWJvYXJkQWNjZXNzb3J5QmFyTmV4dCgpCiB7CiAgICAgVGVz
dFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5t
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKTsKQEAgLTM4MSw2ICs0MDUsMjQgQEAgZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcjo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHdlYlZpZXcuc2Nyb2xsVmlldy5tYXhpbXVtWm9vbVNjYWxlOwogfQogCitPcHRpb25hbDxib29s
PiBVSVNjcmlwdENvbnRyb2xsZXI6OnN0YWJsZVN0YXRlT3ZlcnJpZGUoKSBjb25zdAoreworICAg
IFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9u
KCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgaWYgKHdlYlZpZXcuX3N0YWJs
ZVN0YXRlT3ZlcnJpZGUpCisgICAgICAgIHJldHVybiB3ZWJWaWV3Ll9zdGFibGVTdGF0ZU92ZXJy
aWRlLmJvb2xWYWx1ZTsKKworICAgIHJldHVybiBOdWxsb3B0OworfQorCit2b2lkIFVJU2NyaXB0
Q29udHJvbGxlcjo6c2V0U3RhYmxlU3RhdGVPdmVycmlkZShPcHRpb25hbDxib29sPiBvdmVycmlk
ZVZhbHVlKQoreworICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkubWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCk7CisgICAgaWYg
KG92ZXJyaWRlVmFsdWUpCisgICAgICAgIHdlYlZpZXcuX3N0YWJsZVN0YXRlT3ZlcnJpZGUgPSBA
KG92ZXJyaWRlVmFsdWUudmFsdWUoKSk7CisgICAgZWxzZQorICAgICAgICB3ZWJWaWV3Ll9zdGFi
bGVTdGF0ZU92ZXJyaWRlID0gbmlsOworfQorCiBKU09iamVjdFJlZiBVSVNjcmlwdENvbnRyb2xs
ZXI6OmNvbnRlbnRWaXNpYmxlUmVjdCgpIGNvbnN0CiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmll
dyAqd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5tYWluV2ViVmlldygpLT5w
bGF0Zm9ybVZpZXcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJ
U2NyaXB0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1VJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbQppbmRleCA3OWJlMGMyMTVhYTA0MzViZDQ0NTUyZjQxYWJmYmE1
YzRhYTFiMWIxLi5kNTAzYjRhZjUxYTU3M2I2M2JiYjc5ZmY1NDQxYzY2NDRmODQ5YjEyIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tCkBAIC01Niw2ICs1NiwxMSBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZG9Bc3luY1Rh
c2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKICAgICB9KTsKIH0KIAordm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3sK
KyAgICByZXR1cm4gZG9Bc3luY1Rhc2soY2FsbGJhY2spOworfQorCiB2b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6aW5zZXJ0VGV4dChKU1N0cmluZ1JlZiB0ZXh0LCBpbnQgbG9jYXRpb24sIGludCBs
ZW5ndGgpCiB7CiAjaWYgV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MGI0Y2ZkNzgwODk5MTFhNjEw
ZGQ0NDQ4NjU3NzAxM2UzN2Q4MTY2Li43M2VhMzEwYTY4ODJjZmY4NWIwNjI1ZmFlY2Q5ZWRhODg2
MWVmMzFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUgQEAKIDIwMTYtMTEtMTggIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0
ZXN0IG5vbi1zdGFibGUtc3RhdGUgc2Nyb2xsaW5nIG9uIGlPUworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTA1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzY3JvbGxpbmdjb29yZGluYXRvci9pb3Mv
bm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBzY3JvbGxpbmdjb29yZGluYXRvci9pb3Mvbm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwuaHRt
bDogQWRkZWQuCisKKzIwMTYtMTEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CisKICAgICAgICAgW2lPUyBXSzJdIEVsaW1pbmF0ZSBhIHNvdXJjZSBvZiBmbGFraW5l
c3MgaW4gbGF5b3V0IHRlc3RzIGJ5IGZvcmNpbmcgV2ViUGFnZSBpbnRvICJyZXNwb25zaXZlIiBt
b2RlIGZvciBhbGwgdGVzdHMsIHdpdGggYW4gaW50ZXJuYWxzIG92ZXJyaWRlCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ5ODAKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc2Nyb2xsaW5nY29vcmRpbmF0b3IvaW9zL25vbi1zdGFibGUtdmlld3Bv
cnQtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9y
L2lvcy9ub24tc3RhYmxlLXZpZXdwb3J0LXNjcm9sbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YWNlYmFmZWQ3MGVkOWY5ZmZjMjE0Y2I4OGFmMmQxZmEzY2ZhNWUwNQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9ub24tc3RhYmxlLXZpZXdw
b3J0LXNjcm9sbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMyBAQAorZml4ZWQKKyhHcmFwaGlj
c0xheWVyCisgIChhbmNob3IgMC4wMCAwLjAwKQorICAoYm91bmRzIDMyMC4wMCA1MDEzLjAwKQor
ICAodmlzaWJsZSByZWN0IDAuMDAsIDEwMDAuMDAgMTA2LjY3IHggMTg5LjMzKQorICAoY292ZXJh
Z2UgcmVjdCAwLjAwLCAxMDAwLjAwIDEwNi42NyB4IDE4OS4zMykKKyAgKGludGVyc2VjdHMgY292
ZXJhZ2UgcmVjdCAxKQorICAoY29udGVudHNTY2FsZSA2LjAwKQorICAoY2hpbGRyZW4gMQorICAg
IChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDMyMC4wMCA1MDEzLjAwKQorICAgICAgKGNv
bnRlbnRzT3BhcXVlIDEpCisgICAgICAodmlzaWJsZSByZWN0IDAuMDAsIDEwMDAuMDAgMTA2LjY3
IHggMTg5LjMzKQorICAgICAgKGNvdmVyYWdlIHJlY3QgMC4wMCwgOTU3LjMzIDE5Mi4wMCB4IDI3
NC42NykKKyAgICAgIChpbnRlcnNlY3RzIGNvdmVyYWdlIHJlY3QgMSkKKyAgICAgIChjb250ZW50
c1NjYWxlIDYuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgIChwb3NpdGlvbiAxMC4wMCAwLjAwKQorICAgICAgICAgIChib3VuZHMgMTAwLjAw
IDU2OC4wMCkKKyAgICAgICAgICAodXNpbmdUaWxlZExheWVyIDEpCisgICAgICAgICAgKGNvbnRl
bnRzT3BhcXVlIDEpCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICh2aXNp
YmxlIHJlY3QgMC4wMCwgMC4wMCAxMDAuMDAgeCA1NjguMDApCisgICAgICAgICAgKGNvdmVyYWdl
IHJlY3QgLTEwLjAwLCAwLjAwIDMyMC4wMCB4IDU2OC4wMCkKKyAgICAgICAgICAoaW50ZXJzZWN0
cyBjb3ZlcmFnZSByZWN0IDEpCisgICAgICAgICAgKGNvbnRlbnRzU2NhbGUgNi4wMCkKKyAgICAg
ICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
Y3JvbGxpbmdjb29yZGluYXRvci9pb3Mvbm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwuaHRtbCBi
L0xheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy9ub24tc3RhYmxlLXZpZXdwb3J0
LXNjcm9sbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNTMzNmZhOTFiMGI4NzRhODE1NjYxNDU3NjRiYjgx
MmU3YTgzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zY3JvbGxpbmdjb29yZGlu
YXRvci9pb3Mvbm9uLXN0YWJsZS12aWV3cG9ydC1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDU5IEBA
Cis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyB1c2VGbGV4aWJsZVZp
ZXdwb3J0PXRydWUgXSAtLT4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgorICAgIDxzdHlsZT4KKyAgICAgICAg
Ym9keSB7CisgICAgICAgICAgICBoZWlnaHQ6IDUwMDBweDsKKyAgICAgICAgICAgIG1hcmdpbjog
MDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLmZpeGVkIHsKKyAgICAgICAgICAgIHBv
c2l0aW9uOiBmaXhlZDsKKyAgICAgICAgICAgIHRvcDogMDsKKyAgICAgICAgICAgIGxlZnQ6IDEw
cHg7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgICB9CisgICAgPC9z
dHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBnZXRVbnN0
YWJsZVNjcm9sbFNjcmlwdCh4LCB5KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc3RhYmxlU3RhdGVPdmVy
cmlkZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbW1lZGlhdGVab29t
VG9TY2FsZSgzKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW1tZWRpYXRlU2Nyb2xs
VG9PZmZzZXQoMCwgMzAwMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdWlD
b250cm9sbGVyLmRvQWZ0ZXJQcmVzZW50YXRpb25VcGRhdGUoZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBsZXRlKCk7CisgICAgICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9KSgpO2A7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIXRlc3RSdW5uZXIucnVuVUlTY3JpcHQpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAg
ICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoZ2V0VW5zdGFibGVTY3JvbGxTY3JpcHQo
KSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2xheWVycycpLnRleHRDb250ZW50ID0gaW50ZXJuYWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVu
dCwgaW50ZXJuYWxzLkxBWUVSX1RSRUVfSU5DTFVERVNfVklTSUJMRV9SRUNUUyk7CisgICAgICAg
ICAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBk
b1Rlc3QsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFz
cz0iZml4ZWQiPmZpeGVkPC9kaXY+Cis8cHJlIGlkPSJsYXllcnMiPjwvcHJlPgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>
<flag name="review"
          id="317883"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>