<?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>116185</bug_id>
          
          <creation_ts>2013-05-15 13:58:47 -0700</creation_ts>
          <short_desc>Page::chrome() should return a reference.</short_desc>
          <delta_ts>2013-05-16 17:02:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>889501</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-15 13:58:47 -0700</bug_when>
    <thetext>Page::chrome() should return a reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889507</commentid>
    <comment_count>1</comment_count>
      <attachid>201880</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-15 14:05:51 -0700</bug_when>
    <thetext>Created attachment 201880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889510</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-15 14:08:09 -0700</bug_when>
    <thetext>Attachment 201880 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/webdatabase/DatabaseContext.cpp&apos;, u&apos;Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm&apos;, u&apos;Source/WebCore/bindings/js/JSDOMWindowBase.cpp&apos;, u&apos;Source/WebCore/css/CSSDefaultStyleSheets.cpp&apos;, u&apos;Source/WebCore/dom/ContainerNode.cpp&apos;, u&apos;Source/WebCore/dom/Document.cpp&apos;, u&apos;Source/WebCore/dom/Node.cpp&apos;, u&apos;Source/WebCore/editing/EditorCommand.cpp&apos;, u&apos;Source/WebCore/history/CachedFrame.cpp&apos;, u&apos;Source/WebCore/html/BaseChooserOnlyDateAndTimeInputType.cpp&apos;, u&apos;Source/WebCore/html/HTMLFormControlElementWithState.cpp&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLPlugInImageElement.cpp&apos;, u&apos;Source/WebCore/html/HTMLVideoElement.cpp&apos;, u&apos;Source/WebCore/html/InputType.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControls.cpp&apos;, u&apos;Source/WebCore/html/shadow/SpinButtonElement.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorFrontendClientLocal.cpp&apos;, u&apos;Source/WebCore/inspector/InspectorInputAgent.cpp&apos;, u&apos;Source/WebCore/loader/FrameLoader.cpp&apos;, u&apos;Source/WebCore/loader/FrameLoader.h&apos;, u&apos;Source/WebCore/loader/SubframeLoader.cpp&apos;, u&apos;Source/WebCore/loader/appcache/ApplicationCacheGroup.cpp&apos;, u&apos;Source/WebCore/page/AutoscrollController.cpp&apos;, u&apos;Source/WebCore/page/BarProp.cpp&apos;, u&apos;Source/WebCore/page/Chrome.cpp&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/ContextMenuController.cpp&apos;, u&apos;Source/WebCore/page/DOMWindow.cpp&apos;, u&apos;Source/WebCore/page/EventHandler.cpp&apos;, u&apos;Source/WebCore/page/FocusController.cpp&apos;, u&apos;Source/WebCore/page/Frame.cpp&apos;, u&apos;Source/WebCore/page/FrameView.cpp&apos;, u&apos;Source/WebCore/page/Page.h&apos;, u&apos;Source/WebCore/page/PageConsole.cpp&apos;, u&apos;Source/WebCore/page/PageGroup.cpp&apos;, u&apos;Source/WebCore/page/mac/EventHandlerMac.mm&apos;, u&apos;Source/WebCore/platform/mac/WidgetMac.mm&apos;, u&apos;Source/WebCore/platform/network/FormData.cpp&apos;, u&apos;Source/WebCore/rendering/InlineTextBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderBox.cpp&apos;, u&apos;Source/WebCore/rendering/RenderEmbeddedObject.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayer.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayerBacking.cpp&apos;, u&apos;Source/WebCore/rendering/RenderLayerCompositor.cpp&apos;, u&apos;Source/WebCore/rendering/RenderMenuList.cpp&apos;, u&apos;Source/WebCore/rendering/RenderSearchField.cpp&apos;, u&apos;Source/WebCore/rendering/RootInlineBox.cpp&apos;, u&apos;Source/WebCore/rendering/svg/RenderSVGRoot.cpp&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;, u&apos;Source/WebKit/blackberry/ChangeLog&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/ColorPickerClient.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/DatePickerClient.cpp&apos;, u&apos;Source/WebKit/blackberry/WebCoreSupport/SelectPopupClient.cpp&apos;, u&apos;Source/WebKit/blackberry/WebKitSupport/InputHandler.cpp&apos;, u&apos;Source/WebKit/efl/ChangeLog&apos;, u&apos;Source/WebKit/efl/WebCoreSupport/PopupMenuEfl.cpp&apos;, u&apos;Source/WebKit/efl/ewk/ewk_view.cpp&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitviewportattributes.cpp&apos;, u&apos;Source/WebKit/gtk/webkit/webkitwebview.cpp&apos;, u&apos;Source/WebKit/mac/ChangeLog&apos;, u&apos;Source/WebKit/mac/WebView/WebFrame.mm&apos;, u&apos;Source/WebKit/mac/WebView/WebHTMLView.mm&apos;, u&apos;Source/WebKit/qt/ChangeLog&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/InitWebCoreQt.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/PlatformStrategiesQt.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebFrameAdapter.cpp&apos;, u&apos;Source/WebKit/qt/WebCoreSupport/QWebPageAdapter.cpp&apos;, u&apos;Source/WebKit/win/ChangeLog&apos;, u&apos;Source/WebKit/win/WebView.cpp&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PDF/SimplePDFPlugin.mm&apos;, u&apos;Source/WebKit2/WebProcess/Plugins/PluginView.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp&apos;, u&apos;Source/WebKit2/WebProcess/WebPage/WebPage.cpp&apos;]&quot; exit_code: 1
Source/WebCore/page/FrameView.cpp:593:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 1 in 79 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889511</commentid>
    <comment_count>3</comment_count>
      <attachid>201880</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 14:12:18 -0700</bug_when>
    <thetext>Comment on attachment 201880
Patch

Attachment 201880 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/481195</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889513</commentid>
    <comment_count>4</comment_count>
      <attachid>201880</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-05-15 14:13:55 -0700</bug_when>
    <thetext>Comment on attachment 201880
Patch

Attachment 201880 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/471717</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889514</commentid>
    <comment_count>5</comment_count>
      <attachid>201881</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-15 14:15:23 -0700</bug_when>
    <thetext>Created attachment 201881
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889530</commentid>
    <comment_count>6</comment_count>
      <attachid>201881</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-05-15 14:29:49 -0700</bug_when>
    <thetext>Comment on attachment 201881
Patch v2

Attachment 201881 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/473666</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>889531</commentid>
    <comment_count>7</comment_count>
      <attachid>201884</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-15 14:32:02 -0700</bug_when>
    <thetext>Created attachment 201884
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890051</commentid>
    <comment_count>8</comment_count>
      <attachid>201884</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-16 17:02:29 -0700</bug_when>
    <thetext>Comment on attachment 201884
Patch v3

Clearing flags on attachment: 201884

Committed r150214: &lt;http://trac.webkit.org/changeset/150214&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890052</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-16 17:02:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201880</attachid>
            <date>2013-05-15 14:05:51 -0700</date>
            <delta_ts>2013-05-15 14:15:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116185.diff</filename>
            <type>text/plain</type>
            <size>100354</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNmM5OGI5Li4zMDkzYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBIFBhZ2UncyBjaHJvbWUoKSBjYW4gbmV2ZXIgYmUgbnVsbC4g
Q2hhbmdlIFBhZ2U6OmNocm9tZSgpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0IHRo
aXMuCisgICAgICAgIEFsc28sIG1ha2UgUGFnZTo6bV9jaHJvbWUgYSBjb25zdCBtZW1iZXIgdmFy
aWFibGUgc28gbm9ib2R5IHdpbGwgYWNjaWRlbnRhbGx5IHNldCBpdCB0byBudWxsLgorCiAyMDEz
LTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
RnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAppbmRl
eCA1YzczYjVkLi4yYjAzNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9p
ZCBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJpbmcmIG5h
bWUsIERhdGFiYXNlRGV0YWlscwogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKGRvY3VtZW50LT5mcmFtZSgpLCBuYW1lLCBkZXRhaWxzKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEoZG9j
dW1lbnQtPmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggOWYzYTk1OC4uYzRk
MGYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTE1MjIs
MTIgKzE1MjIsMTIgQEAgc3RhdGljIE5TTXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0FycmF5KGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHkKICAgICAgICAgCiAgICAgICAg
IC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgY2hyb21lIGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ug
c2hvdWxkIHVzZSB0aGUgcGFnZQogICAgICAgICAvLyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50
IHRvIGhlbHAgdXMgZ2V0IHRvIHRoZSBzY3JlZW4gcmVjdC4KLSAgICAgICAgaWYgKHBhcmVudCAm
JiBwYWdlICYmIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgp
KQorICAgICAgICBpZiAocGFyZW50ICYmIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkt
PmlzRW1wdHlDaHJvbWVDbGllbnQoKSkKICAgICAgICAgICAgIHBhZ2UgPSBwYXJlbnQtPnBhZ2Uo
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHJl
Y3QgPSBJbnRSZWN0KGludFBvaW50LCBJbnRTaXplKDAsIDApKTsgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCktPnJvb3RWaWV3VG9TY3JlZW4ocmVjdCku
bG9jYXRpb24oKTsKKyAgICAgICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZp
ZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gaW50UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAppbmRleCAwZDZmYzFlLi4xYjJiYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTE1MSw3ICsxNTEsNyBAQCBi
b29sIEpTRE9NV2luZG93QmFzZTo6c2hvdWxkSW50ZXJydXB0U2NyaXB0KGNvbnN0IEpTR2xvYmFs
T2JqZWN0KiBvYmplY3QpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAot
ICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwor
ICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5zaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KCk7CiB9
CiAKIGJvb2wgSlNET01XaW5kb3dCYXNlOjpqYXZhU2NyaXB0RXhwZXJpbWVudHNFbmFibGVkKGNv
bnN0IEpTR2xvYmFsT2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZh
dWx0U3R5bGVTaGVldHMuY3BwCmluZGV4IDNjOWMzMjcuLmQ0NmU3ODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NEZWZhdWx0U3R5bGVTaGVldHMuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAg
dm9pZCBDU1NEZWZhdWx0U3R5bGVTaGVldHM6OmVuc3VyZURlZmF1bHRTdHlsZVNoZWV0c0ZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCwKICNlbmRpZgogCiAgICAgaWYgKCFwbHVnSW5zU3R5bGVT
aGVldCAmJiAoZWxlbWVudC0+aGFzVGFnTmFtZShvYmplY3RUYWcpIHx8IGVsZW1lbnQtPmhhc1Rh
Z05hbWUoZW1iZWRUYWcpKSkgewotICAgICAgICBTdHJpbmcgcGx1Z0luc1J1bGVzID0gUmVuZGVy
VGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpLT5leHRyYVBs
dWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTdHlsZVNoZWV0KCk7CisgICAgICAgIFN0cmluZyBwbHVn
SW5zUnVsZXMgPSBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKGVsZW1lbnQtPmRvY3VtZW50KCkt
PnBhZ2UoKSktPmV4dHJhUGx1Z0luc1N0eWxlU2hlZXQoKSArIGVsZW1lbnQtPmRvY3VtZW50KCkt
PnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpOwogICAg
ICAgICBpZiAocGx1Z0luc1J1bGVzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHBsdWdJbnNSdWxl
cyA9IFN0cmluZyhwbHVnSW5zVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHBsdWdJbnNVc2Vy
QWdlbnRTdHlsZVNoZWV0KSk7CiAgICAgICAgIHBsdWdJbnNTdHlsZVNoZWV0ID0gcGFyc2VVQVNo
ZWV0KHBsdWdJbnNSdWxlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXgg
MDExMWZlNi4uOTA0M2JlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAt
OTk5LDcgKzk5OSw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0QWN0aXZlKGJvb2wgZG93biwg
Ym9vbCBwYXVzZSkKICAgICAgICAgLy8gVGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlvbiBpbXBsZW1l
bnRzIGEgZmVhdHVyZSB0aGF0IG9ubHkgd29ya3MgaWYgdGhlCiAgICAgICAgIC8vIHBsYXRmb3Jt
IHN1cHBvcnRzIGltbWVkaWF0ZSBpbnZhbGlkYXRpb25zIG9uIHRoZSBDaHJvbWVDbGllbnQsIHNv
IGJhaWwgaWYKICAgICAgICAgLy8gdGhhdCBpc24ndCBzdXBwb3J0ZWQuCi0gICAgICAgIGlmICgh
ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzSW1tZWRpYXRl
SW52YWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKS0+c3VwcG9ydHNJbW1lZGlhdGVJbnZhbGlkYXRpb24oKSkKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICBpZiAocmVhY3RzVG9QcmVzcyAmJiBwYXVzZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKaW5kZXggMTFjZjg1Ni4uZjQ4OGQ5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0yOTc1LDcgKzI5NzUsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVWaWV3cG9y
dEFyZ3VtZW50cygpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2RpZERpc3BhdGNoVmlld3Bv
cnRQcm9wZXJ0aWVzQ2hhbmdlZCA9IHRydWU7CiAjZW5kaWYKLSAgICAgICAgcGFnZSgpLT5jaHJv
bWUoKS0+ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UobV92aWV3cG9ydEFyZ3Vt
ZW50cyk7CisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRp
ZXNEaWRDaGFuZ2UobV92aWV3cG9ydEFyZ3VtZW50cyk7CiAgICAgfQogfQogCkBAIC0zNDM4LDcg
KzM0MzgsNyBAQCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNzUmVmUHRyPE5vZGU+
IHBycE5ld0ZvY3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbgogICAgIH0KIAogICAgIGlmICghZm9j
dXNDaGFuZ2VCbG9ja2VkKQotICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5mb2N1c2VkTm9kZUNo
YW5nZWQobV9mb2N1c2VkTm9kZS5nZXQoKSk7CisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuZm9j
dXNlZE5vZGVDaGFuZ2VkKG1fZm9jdXNlZE5vZGUuZ2V0KCkpOwogCiBTZXRGb2N1c2VkTm9kZURv
bmU6CiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpAQCAtNTAyOCwxMiArNTAyOCwxMiBAQCB2
b2lkIERvY3VtZW50OjpyZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCwgdW5zaWduZWQgc2hvcnQgZmxhZwogICAgICAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5z
ZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgaWYgKCFwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsU2NyZWVu
Rm9yRWxlbWVudChlbGVtZW50LCBmbGFncyAmIEVsZW1lbnQ6OkFMTE9XX0tFWUJPQVJEX0lOUFVU
KSkgeworICAgICAgICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPnN1cHBvcnRzRnVs
bFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCwgZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FS
RF9JTlBVVCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBuZXcgZnVsbCBzY3JlZW4gQVBJIGRvZXMg
bm90IGFjY2VwdCBhICJmbGFncyIgcGFyYW1ldGVyLCBzbyBmYWxsIGJhY2sgdG8gZGlzYWxsb3dp
bmcKICAgICAgICAgICAgIC8vIGtleWJvYXJkIGlucHV0IGlmIHRoZSBjaHJvbWUgY2xpZW50IHJl
ZnVzZXMgdG8gYWxsb3cga2V5Ym9hcmQgaW5wdXQuCiAgICAgICAgICAgICBpZiAoIWluTGVnYWN5
TW96aWxsYU1vZGUgJiYgZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVCkgewog
ICAgICAgICAgICAgICAgIGZsYWdzICY9IH5FbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVDsK
LSAgICAgICAgICAgICAgICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0
c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQsIGZhbHNlKSkKKyAgICAgICAgICAgICAgICBp
ZiAoIXBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCwgZmFsc2UpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTA4OCw3ICs1MDg4LDcgQEAg
dm9pZCBEb2N1bWVudDo6cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1l
bnQsIHVuc2lnbmVkIHNob3J0IGZsYWcKICAgICAgICAgLy8gNS4gUmV0dXJuLCBhbmQgcnVuIHRo
ZSByZW1haW5pbmcgc3RlcHMgYXN5bmNocm9ub3VzbHkuCiAgICAgICAgIC8vIDYuIE9wdGlvbmFs
bHksIHBlcmZvcm0gc29tZSBhbmltYXRpb24uCiAgICAgICAgIG1fYXJlS2V5c0VuYWJsZWRJbkZ1
bGxTY3JlZW4gPSBmbGFncyAmIEVsZW1lbnQ6OkFMTE9XX0tFWUJPQVJEX0lOUFVUOwotICAgICAg
ICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChl
bGVtZW50KTsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+ZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudChlbGVtZW50KTsKIAogICAgICAgICAvLyA3LiBPcHRpb25hbGx5LCBkaXNw
bGF5IGEgbWVzc2FnZSBpbmRpY2F0aW5nIGhvdyB0aGUgdXNlciBjYW4gZXhpdCBkaXNwbGF5aW5n
IHRoZSBjb250ZXh0IG9iamVjdCBmdWxsc2NyZWVuLgogICAgICAgICByZXR1cm47CkBAIC01MTc5
LDEyICs1MTc5LDEyIEBAIHZvaWQgRG9jdW1lbnQ6OndlYmtpdEV4aXRGdWxsc2NyZWVuKCkKICAg
ICAvLyBPbmx5IGV4aXQgb3V0IG9mIGZ1bGwgc2NyZWVuIHdpbmRvdyBtb2RlIGlmIHRoZXJlIGFy
ZSBubyByZW1haW5pbmcgZWxlbWVudHMgaW4gdGhlIAogICAgIC8vIGZ1bGwgc2NyZWVuIHN0YWNr
LgogICAgIGlmICghbmV3VG9wKSB7Ci0gICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgp
LT5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Cisg
ICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIC8vIE90aGVyd2lzZSwgbm90aWZ5IHRoZSBjaHJvbWUgb2YgdGhlIG5ldyBmdWxsIHNjcmVl
biBlbGVtZW50LgotICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KG5ld1RvcCk7ICAgICAgCisgICAgcGFnZSgpLT5jaHJvbWUoKS5jbGllbnQo
KS0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChuZXdUb3ApOwogfQogCiBib29sIERvY3VtZW50
Ojp3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZCgpIGNvbnN0CkBAIC01MzA5LDcgKzUzMDksNyBAQCB2
b2lkIERvY3VtZW50OjpzZXRGdWxsU2NyZWVuUmVuZGVyZXIoUmVuZGVyRnVsbFNjcmVlbiogcmVu
ZGVyZXIpCiAgICAgCiAgICAgLy8gVGhpcyBub3RpZmljYXRpb24gY2FuIGNvbWUgaW4gYWZ0ZXIg
dGhlIHBhZ2UgaGFzIGJlZW4gZGVzdHJveWVkLgogICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBh
Z2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5mdWxsU2NyZWVuUmVuZGVyZXJDaGFuZ2VkKG1fZnVs
bFNjcmVlblJlbmRlcmVyKTsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+ZnVs
bFNjcmVlblJlbmRlcmVyQ2hhbmdlZChtX2Z1bGxTY3JlZW5SZW5kZXJlcik7CiB9CiAKIHZvaWQg
RG9jdW1lbnQ6OmZ1bGxTY3JlZW5SZW5kZXJlckRlc3Ryb3llZCgpCkBAIC01MzE3LDcgKzUzMTcs
NyBAQCB2b2lkIERvY3VtZW50OjpmdWxsU2NyZWVuUmVuZGVyZXJEZXN0cm95ZWQoKQogICAgIG1f
ZnVsbFNjcmVlblJlbmRlcmVyID0gMDsKIAogICAgIGlmIChwYWdlKCkpCi0gICAgICAgIHBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5mdWxsU2NyZWVuUmVuZGVyZXJDaGFuZ2VkKDApOworICAg
ICAgICBwYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5mdWxsU2NyZWVuUmVuZGVyZXJDaGFuZ2Vk
KDApOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRGdWxsU2NyZWVuUmVuZGVyZXJTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCkBAIC01NjI3LDcgKzU2MjcsNyBAQCB2b2lkIERvY3VtZW50OjpkaWRB
ZGRUb3VjaEV2ZW50SGFuZGxlcihOb2RlKiBoYW5kbGVyKQogICAgICAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnRvdWNoRXZlbnRUYXJnZXRSZWN0c0RpZENoYW5nZSh0aGlzKTsKICNlbmRp
ZgogICAgICAgICBpZiAobV90b3VjaEV2ZW50VGFyZ2V0cy0+c2l6ZSgpID09IDEpCi0gICAgICAg
ICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0cnVlKTsKKyAg
ICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHModHJ1ZSk7
CiAgICAgfQogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaGFuZGxlcik7CkBAIC01NjU5LDcgKzU2
NTksNyBAQCB2b2lkIERvY3VtZW50OjpkaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcihOb2RlKiBo
YW5kbGVyKQogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50
KCktPmhhc1RvdWNoRXZlbnRIYW5kbGVycygpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyhmYWxzZSk7Cisg
ICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyhmYWxzZSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShoYW5kbGVyKTsKICNlbmRpZgpAQCAtNjAxMyw3ICs2MDEzLDcg
QEAgUGFzc1JlZlB0cjxGb250TG9hZGVyPiBEb2N1bWVudDo6Zm9udGxvYWRlcigpCiAKIHZvaWQg
RG9jdW1lbnQ6OmRpZEFzc29jaWF0ZUZvcm1Db250cm9sKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgaWYgKCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkgfHwgIWZyYW1lKCktPnBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5zaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKCkpCisgICAgaWYg
KCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkgfHwgIWZyYW1lKCktPnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCktPnNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fYXNzb2NpYXRlZEZvcm1Db250cm9scy5hZGQoZWxlbWVudCk7CiAgICAgaWYgKCFt
X2RpZEFzc29jaWF0ZUZvcm1Db250cm9sc1RpbWVyLmlzQWN0aXZlKCkpCkBAIC02MDI5LDcgKzYw
MjksNyBAQCB2b2lkIERvY3VtZW50OjpkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUaW1lckZpcmVk
KFRpbWVyPERvY3VtZW50PiogdGltZXIpCiAgICAgVmVjdG9yPFJlZlB0cjxFbGVtZW50PiA+IGFz
c29jaWF0ZWRGb3JtQ29udHJvbHM7CiAgICAgY29weVRvVmVjdG9yKG1fYXNzb2NpYXRlZEZvcm1D
b250cm9scywgYXNzb2NpYXRlZEZvcm1Db250cm9scyk7CiAKLSAgICBmcmFtZSgpLT5wYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKS0+ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKGFzc29jaWF0ZWRG
b3JtQ29udHJvbHMpOworICAgIGZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmRp
ZEFzc29jaWF0ZUZvcm1Db250cm9scyhhc3NvY2lhdGVkRm9ybUNvbnRyb2xzKTsKICAgICBtX2Fz
c29jaWF0ZWRGb3JtQ29udHJvbHMuY2xlYXIoKTsKIH0KIApAQCAtNjAzOSw3ICs2MDM5LDcgQEAg
dm9pZCBEb2N1bWVudDo6ZW5zdXJlUGx1Z0luc0luamVjdGVkU2NyaXB0KERPTVdyYXBwZXJXb3Js
ZCogd29ybGQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFVzZSB0aGUgSlMgZmlsZSBwcm92
aWRlZCBieSB0aGUgQ2hyb21lIGNsaWVudCwgb3IgZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHQgb25l
LgotICAgIFN0cmluZyBqc1N0cmluZyA9IHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVn
SW5FeHRyYVNjcmlwdCgpOworICAgIFN0cmluZyBqc1N0cmluZyA9IHBhZ2UoKS0+Y2hyb21lKCku
Y2xpZW50KCktPnBsdWdJbkV4dHJhU2NyaXB0KCk7CiAgICAgaWYgKCFqc1N0cmluZykKICAgICAg
ICAganNTdHJpbmcgPSBwbHVnSW5zSmF2YVNjcmlwdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDY4
MmU2NTEuLmI3NzFkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI0ODUsNyArMjQ4NSw3IEBAIGJv
b2wgTm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZl
bnQpCiB2b2lkIE5vZGU6OmRpc3BhdGNoRm9jdXNFdmVudChQYXNzUmVmUHRyPE5vZGU+IG9sZEZv
Y3VzZWROb2RlLCBGb2N1c0RpcmVjdGlvbikKIHsKICAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgp
KQotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZWxlbWVu
dERpZEZvY3VzKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLmNs
aWVudCgpLT5lbGVtZW50RGlkRm9jdXModGhpcyk7CiAKICAgICBSZWZQdHI8Rm9jdXNFdmVudD4g
ZXZlbnQgPSBGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNl
LCBmYWxzZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgMCwgb2xkRm9jdXNlZE5vZGUpOwog
ICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBGb2N1c0V2ZW50RGlzcGF0
Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50LnJlbGVhc2UoKSkpOwpAQCAtMjQ5NCw3ICsyNDk0LDcg
QEAgdm9pZCBOb2RlOjpkaXNwYXRjaEZvY3VzRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1
c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24pCiB2b2lkIE5vZGU6OmRpc3BhdGNoQmx1ckV2ZW50KFBh
c3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCiB7CiAgICAgaWYgKGRvY3VtZW50KCktPnBh
Z2UoKSkKLSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVs
ZW1lbnREaWRCbHVyKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LmNsaWVudCgpLT5lbGVtZW50RGlkQmx1cih0aGlzKTsKIAogICAgIFJlZlB0cjxGb2N1c0V2ZW50
PiBldmVudCA9IEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBmYWxz
ZSwgZmFsc2UsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIDAsIG5ld0ZvY3VzZWROb2RlKTsK
ICAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgQmx1ckV2ZW50RGlzcGF0
Y2hNZWRpYXRvcjo6Y3JlYXRlKGV2ZW50LnJlbGVhc2UoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggOThjMzAxYi4uODQyN2Y3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC05NTcsNyArOTU3LDcgQEAgc3RhdGlj
IGJvb2wgZXhlY3V0ZVByaW50KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+cHJp
bnQoZnJhbWUpOworICAgIHBhZ2UtPmNocm9tZSgpLnByaW50KGZyYW1lKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcAppbmRleCBlM2M0
NDBmLi5kZGE3NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcApAQCAt
MTQwLDcgKzE0MCw3IEBAIHZvaWQgQ2FjaGVkRnJhbWVCYXNlOjpyZXN0b3JlKCkKICAgICAKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChtX2RvY3VtZW50LT5oYXNUb3VjaEV2ZW50
SGFuZGxlcnMoKSkKLSAgICAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50
KCktPm5lZWRUb3VjaEV2ZW50cyh0cnVlKTsKKyAgICAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5j
aHJvbWUoKS5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogI2VuZGlmCiAKICAgICBt
X2RvY3VtZW50LT5kb2N1bWVudERpZFJlc3VtZUZyb21QYWdlQ2FjaGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0
VHlwZS5jcHAKaW5kZXggOWUyZGJhNi4uMmFiYWNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAK
QEAgLTUwLDEzICs1MCwxMCBAQCB2b2lkIEJhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRU
eXBlOjpoYW5kbGVET01BY3RpdmF0ZUV2ZW50KEV2ZW50KikKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghZWxlbWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBDaHJvbWUqIGNocm9tZSA9IGVsZW1lbnQoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KTsKLSAgICBpZiAoIWNocm9tZSkKLSAgICAgICAgcmV0dXJuOwogICAgIERhdGVUaW1lQ2hvb3Nl
clBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBpZiAoIWVsZW1lbnQoKS0+c2V0dXBEYXRlVGlt
ZUNob29zZXJQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9k
YXRlVGltZUNob29zZXIgPSBjaHJvbWUtPm9wZW5EYXRlVGltZUNob29zZXIodGhpcywgcGFyYW1l
dGVycyk7CisgICAgbV9kYXRlVGltZUNob29zZXIgPSBlbGVtZW50KCktPmRvY3VtZW50KCktPnBh
Z2UoKS0+Y2hyb21lKCkub3BlbkRhdGVUaW1lQ2hvb3Nlcih0aGlzLCBwYXJhbWV0ZXJzKTsKIH0K
IAogdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6Y3JlYXRlU2hhZG93
U3VidHJlZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnRXaXRoU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50V2l0aFN0YXRlLmNwcAppbmRleCA2NmYyMWIzLi40MGI2NTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0
ZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0
YXRlOjpub3RpZnlGb3JtU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPmZvcm1TdGF0ZURpZENoYW5nZSh0aGlzKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCktPmZvcm1TdGF0ZURpZENoYW5nZSh0aGlzKTsKIH0KIAogYm9vbCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50V2l0aFN0YXRlOjpzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXgg
YTg2M2ZlZi4uOTc0NzQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0xNjU2LDcgKzE2NTYsNyBAQCBzdGF0aWMgdm9pZCBsb2dNZWRpYUxvYWRSZXF1ZXN0
KFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVkaWFFbmdpbmUsIGNvbnN0IFN0cgogICAgIGlm
ICghcGFnZSB8fCAhcGFnZS0+c2V0dGluZ3MoKS0+ZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIENocm9tZUNsaWVudCogY2xpZW50ID0gcGFnZS0+Y2hy
b21lKCktPmNsaWVudCgpOworICAgIENocm9tZUNsaWVudCogY2xpZW50ID0gcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCk7CiAKICAgICBpZiAoIXN1Y2NlZWRlZCkgewogICAgICAgICBjbGllbnQtPmxv
Z0RpYWdub3N0aWNNZXNzYWdlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6bWVkaWFMb2FkaW5nRmFp
bGVkS2V5KCksIGVycm9yTWVzc2FnZSwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpmYWlsS2V5KCkp
OwpAQCAtMjY1Niw3ICsyNjU2LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpjb250cm9scygp
IGNvbnN0CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gYWx3YXlzIHNob3cgY29udHJv
bHMgZm9yIHZpZGVvIHdoZW4gZnVsbHNjcmVlbiBwbGF5YmFjayBpcyByZXF1aXJlZC4KLSAgICBp
ZiAoaXNWaWRlbygpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkt
PmNocm9tZSgpLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkpCisgICAgaWYg
KGlzVmlkZW8oKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5j
aHJvbWUoKS5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgLy8gQWx3YXlzIHNob3cgY29udHJvbHMgd2hlbiBpbiBmdWxsIHNj
cmVlbiBtb2RlLgpAQCAtMzc5MCw3ICszNzkwLDcgQEAgR3JhcGhpY3NEZXZpY2VBZGFwdGVyKiBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckdyYXBoaWNzRGV2aWNlQWRhcHRlcihjb25zdAog
ICAgIGlmICghZG9jdW1lbnQoKSB8fCAhZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQo
KS0+Z3JhcGhpY3NEZXZpY2VBZGFwdGVyKCk7CisgICAgcmV0dXJuIGRvY3VtZW50KCktPnBhZ2Uo
KS0+Y2hyb21lKCkuY2xpZW50KCktPmdyYXBoaWNzRGV2aWNlQWRhcHRlcigpOwogfQogI2VuZGlm
CiAKQEAgLTM5NzksNyArMzk3OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxh
eVN0YXRlKCkKICAgICAgICAgaW52YWxpZGF0ZUNhY2hlZFRpbWUoKTsKIAogICAgICAgICBpZiAo
cGxheWVyUGF1c2VkKSB7Ci0gICAgICAgICAgICBpZiAoIW1faXNGdWxsc2NyZWVuICYmIGlzVmlk
ZW8oKSAmJiBkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5w
YWdlKCktPmNocm9tZSgpLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkpCisg
ICAgICAgICAgICBpZiAoIW1faXNGdWxsc2NyZWVuICYmIGlzVmlkZW8oKSAmJiBkb2N1bWVudCgp
ICYmIGRvY3VtZW50KCktPnBhZ2UoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLnJl
cXVpcmVzRnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSkKICAgICAgICAgICAgICAgICBlbnRl
ckZ1bGxzY3JlZW4oKTsKIAogICAgICAgICAgICAgLy8gU2V0IHJhdGUsIG11dGVkIGJlZm9yZSBj
YWxsaW5nIHBsYXkgaW4gY2FzZSB0aGV5IHdlcmUgc2V0IGJlZm9yZSB0aGUgbWVkaWEgZW5naW5l
IHdhcyBzZXR1cC4KQEAgLTQzNTcsNyArNDM1Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
ZW50ZXJGdWxsc2NyZWVuKCkKICAgICBpZiAoaGFzTWVkaWFDb250cm9scygpKQogICAgICAgICBt
ZWRpYUNvbnRyb2xzKCktPmVudGVyZWRGdWxsc2NyZWVuKCk7CiAgICAgaWYgKGRvY3VtZW50KCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOworICAgICAgICBk
b2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JO
b2RlKHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRiZWdp
bmZ1bGxzY3JlZW5FdmVudCk7CiAgICAgfQogfQpAQCAtNDM3OCw5ICs0Mzc4LDkgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiAgICAgaWYgKGhhc01lZGlhQ29udHJv
bHMoKSkKICAgICAgICAgbWVkaWFDb250cm9scygpLT5leGl0ZWRGdWxsc2NyZWVuKCk7CiAgICAg
aWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGlmIChkb2N1
bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1BsYXli
YWNrKCkpCisgICAgICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLnJlcXVpcmVz
RnVsbHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSkKICAgICAgICAgICAgIHBhdXNlSW50ZXJuYWwo
KTsKLSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRG
dWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJv
bWUoKS5jbGllbnQoKS0+ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwogICAgICAgICBzY2hl
ZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDE0NDVjMzUuLjAxMjdlMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgY29uc3QgU3RyaW5n
IHRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUpCiAgICAgaWYgKCF0aXRsZVRl
eHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdGl0bGVUZXh0OwogCi0gICAgdGl0bGVUZXh0
ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsVGl0bGUobWltZVR5
cGUpOworICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5wbHVnSW5TdGFy
dExhYmVsVGl0bGUobWltZVR5cGUpOwogICAgIGlmICh0aXRsZVRleHQuaXNFbXB0eSgpKQogICAg
ICAgICB0aXRsZVRleHQgPSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsVGl0bGUoKTsKICAgICBtaW1l
VHlwZVRvTGFiZWxUaXRsZU1hcC5zZXQobWltZVR5cGUsIHRpdGxlVGV4dCk7CkBAIC05Miw3ICs5
Miw3IEBAIHN0YXRpYyBjb25zdCBTdHJpbmcgc3VidGl0bGVUZXh0KFBhZ2UqIHBhZ2UsIFN0cmlu
ZyBtaW1lVHlwZSkKICAgICBpZiAoIXN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBzdWJ0aXRsZVRleHQ7CiAKLSAgICBzdWJ0aXRsZVRleHQgPSBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRsZShtaW1lVHlwZSk7CisgICAgc3VidGl0
bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnBsdWdJblN0YXJ0TGFiZWxTdWJ0aXRs
ZShtaW1lVHlwZSk7CiAgICAgaWYgKHN1YnRpdGxlVGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHN1
YnRpdGxlVGV4dCA9IHNuYXBzaG90dGVkUGx1Z0luTGFiZWxTdWJ0aXRsZSgpOwogICAgIG1pbWVU
eXBlVG9MYWJlbFN1YnRpdGxlTWFwLnNldChtaW1lVHlwZSwgc3VidGl0bGVUZXh0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCmluZGV4IDAyZWMyYzQuLjIxNDQ3ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcApAQCAtMTM5LDE0ICsx
MzksMTQgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4oKSBjb25z
dAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAvLyBJZiB0aGUgZnVsbCBzY3JlZW4g
QVBJIGlzIGVuYWJsZWQgYW5kIGlzIHN1cHBvcnRlZCBmb3IgdGhlIGN1cnJlbnQgZWxlbWVudAog
ICAgIC8vIGRvIG5vdCByZXF1aXJlIHRoYXQgdGhlIHBsYXllciBoYXMgYSB2aWRlbyB0cmFjayB0
byBlbnRlciBmdWxsIHNjcmVlbi4KLSAgICBpZiAocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5z
dXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIGZhbHNlKSkKKyAgICBpZiAocGFnZS0+
Y2hyb21lKCkuY2xpZW50KCktPnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgZmFs
c2UpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgogCiAgICAgaWYgKCFwbGF5ZXIoKS0+
aGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICBy
ZXR1cm4gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUo
dGhpcyk7CiB9CiAKIHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1lbnQ6OnZpZGVvV2lkdGgoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDhhNDI5MTcuLjRhMDRmMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTUyMSw3ICs1MjEsNyBAQCB2b2lkIElucHV0VHlw
ZTo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGlja0lmQWN0aXZlKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBj
b25zdAogQ2hyb21lKiBJbnB1dFR5cGU6OmNocm9tZSgpIGNvbnN0CiB7CiAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBlbGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBh
Z2UtPmNocm9tZSgpOworICAgICAgICByZXR1cm4gJnBhZ2UtPmNocm9tZSgpOwogICAgIHJldHVy
biAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3Bw
CmluZGV4IDg4MDQxOWEuLjQ2Yjg3OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbHMuY3BwCkBAIC0yNzEsNyArMjcxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xz
OjplbnRlcmVkRnVsbHNjcmVlbigpCiAgICAgbV9mdWxsU2NyZWVuQnV0dG9uLT5zZXRJc0Z1bGxz
Y3JlZW4odHJ1ZSk7CiAKICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkK
LSAgICAgICAgcGFnZS0+Y2hyb21lKCktPnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyh0
cnVlKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1v
dmVzKHRydWUpOwogCiAgICAgc3RhcnRIaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXIoKTsKIH0K
QEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHM6OmhpZGVGdWxsc2NyZWVuQ29u
dHJvbHNUaW1lckZpcmVkKFRpbWVyPE1lZGlhQ29udHJvbHM+KikKICAgICAgICAgcmV0dXJuOwog
CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHBhZ2Ut
PmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7CisgICAgICAg
IHBhZ2UtPmNocm9tZSgpLnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyh0cnVlKTsKIAog
ICAgIG1ha2VUcmFuc3BhcmVudCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwCmluZGV4IGYyM2JhYjguLmJlNDFjZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTEy
MSwxMCArMTIxLDggQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CiAgICAgICAgICAgICAgICAg
ICAgIG1fY2FwdHVyaW5nID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBh
Z2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw
YWdlLT5jaHJvbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUo
KS0+cmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcih0aGlzKTsKLSAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBh
Z2UoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLnJlZ2lzdGVyUG9w
dXBPcGVuaW5nT2JzZXJ2ZXIodGhpcyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgVXBEb3duU3RhdGUgb2xkVXBEb3duU3RhdGUgPSBtX3VwRG93blN0YXRl
OwpAQCAtMTk5LDEwICsxOTcsOCBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpyZWxlYXNlQ2Fw
dHVyZSgpCiAgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpKSB7
CiAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZl
bnRzTm9kZSgwKTsKICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7Ci0gICAgICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICAgICAgICAg
IGlmIChwYWdlLT5jaHJvbWUoKSkKLSAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PnVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcih0aGlzKTsKLSAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLnVucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcih0aGlz
KTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBiMWM0Yjk1Li4y
OTc1N2JkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC0yMjgsOSArMjI4LDkgQEAgdm9pZCBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwp
CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6bW92ZVdpbmRvd0J5KGZsb2F0
IHgsIGZsb2F0IHkpCiB7Ci0gICAgRmxvYXRSZWN0IGZyYW1lUmVjdCA9IG1fZnJvbnRlbmRQYWdl
LT5jaHJvbWUoKS0+d2luZG93UmVjdCgpOworICAgIEZsb2F0UmVjdCBmcmFtZVJlY3QgPSBtX2Zy
b250ZW5kUGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOwogICAgIGZyYW1lUmVjdC5tb3ZlKHgs
IHkpOwotICAgIG1fZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChmcmFtZVJl
Y3QpOworICAgIG1fZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGZyYW1lUmVj
dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0YWNoZWRX
aW5kb3coRG9ja1NpZGUgZG9ja1NpZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5wdXRBZ2VudC5jcHAKaW5kZXggYjcxMDgwMy4uMjk5MGE0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcApAQCAtMTI2
LDcgKzEyNiw3IEBAIHZvaWQgSW5zcGVjdG9ySW5wdXRBZ2VudDo6ZGlzcGF0Y2hNb3VzZUV2ZW50
KEVycm9yU3RyaW5nKiBlcnJvciwgY29uc3QgU3RyaW5nJiB0CiAgICAgLy8gU29tZSBwbGF0Zm9y
bXMgbWF5IGhhdmUgZmxpcHBlZCBjb29yZGluYXRlIHN5c3RlbXMsIGJ1dCB0aGUgZ2l2ZW4gY29v
cmRpbmF0ZXMKICAgICAvLyBhc3N1bWUgdGhlIG9yaWdpbiBpcyBpbiB0aGUgdG9wLWxlZnQgb2Yg
dGhlIHdpbmRvdy4gQ29udmVydC4KICAgICBJbnRQb2ludCBjb252ZXJ0ZWRQb2ludCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Y29udmVydFRvQ29udGFpbmluZ1dpbmRvdyhJbnRQb2lu
dCh4LCB5KSk7Ci0gICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQgPSBtX3BhZ2UtPmNocm9tZSgpLT5y
b290Vmlld1RvU2NyZWVuKEludFJlY3QoSW50UG9pbnQoeCwgeSksIEludFNpemUoMCwgMCkpKS5s
b2NhdGlvbigpOworICAgIEludFBvaW50IGdsb2JhbFBvaW50ID0gbV9wYWdlLT5jaHJvbWUoKS5y
b290Vmlld1RvU2NyZWVuKEludFJlY3QoSW50UG9pbnQoeCwgeSksIEludFNpemUoMCwgMCkpKS5s
b2NhdGlvbigpOwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50IGV2ZW50KAogICAgICAgICBjb252
ZXJ0ZWRQb2ludCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGI0MjNl
YjIuLjkxNzJkZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTE2
Nyw3ICsxMTY3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKICAgICBGcmFtZSogdGFyZ2V0
RnJhbWUgPSBzb3VyY2VGcmFtZS0+bG9hZGVyKCktPmZpbmRGcmFtZUZvck5hdmlnYXRpb24ocmVx
dWVzdC5mcmFtZU5hbWUoKSk7CiAgICAgaWYgKHRhcmdldEZyYW1lICYmIHRhcmdldEZyYW1lICE9
IHNvdXJjZUZyYW1lKSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gdGFyZ2V0RnJhbWUtPnBh
Z2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOworICAgICAgICAgICAg
cGFnZS0+Y2hyb21lKCkuZm9jdXMoKTsKICAgICB9CiB9CiAKQEAgLTE4MDQsNyArMTgwNCw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZChQYXNzUmVmUHRyPENhY2hl
ZFBhZ2U+IGNhY2hlZFBhZ2UpCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGlmIChp
c0xvYWRpbmdNYWluRnJhbWUoKSkKLSAgICAgICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyhmYWxzZSk7CisgICAgICAgIG1fZnJhbWUtPnBhZ2Uo
KS0+Y2hyb21lKCkuY2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyhmYWxzZSk7CiAjZW5kaWYKIAog
ICAgIC8vIEhhbmRsZSBhZGRpbmcgdGhlIFVSTCB0byB0aGUgYmFjay9mb3J3YXJkIGxpc3QuCkBA
IC0yNjk2LDggKzI2OTYsOSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjYWxsQ29udGludWVMb2FkQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5KHZvaWQqIGFyZ3VtZW50LAogYm9vbCBGcmFtZUxvYWRlcjo6c2hv
dWxkQ2xvc2UoKQogewogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgQ2hy
b21lKiBjaHJvbWUgPSBwYWdlID8gcGFnZS0+Y2hyb21lKCkgOiAwOwotICAgIGlmICghY2hyb21l
IHx8ICFjaHJvbWUtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKQorICAgIGlmICgh
cGFnZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKCFwYWdlLT5jaHJvbWUoKS5jYW5S
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAg
ICAvLyBTdG9yZSBhbGwgcmVmZXJlbmNlcyB0byBlYWNoIHN1YmZyYW1lIGluIGFkdmFuY2Ugc2lu
Y2UgYmVmb3JldW5sb2FkJ3MgZXZlbnQgaGFuZGxlciBtYXkgbW9kaWZ5IGZyYW1lCkBAIC0yNzE0
LDcgKzI3MTUsNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiAgICAgICAgIGZv
ciAoaSA9IDA7IGkgPCB0YXJnZXRGcmFtZXMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgIGlm
ICghdGFyZ2V0RnJhbWVzW2ldLT50cmVlKCktPmlzRGVzY2VuZGFudE9mKG1fZnJhbWUpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZXNbaV0t
PmxvYWRlcigpLT5maXJlQmVmb3JlVW5sb2FkRXZlbnQoY2hyb21lKSkKKyAgICAgICAgICAgIGlm
ICghdGFyZ2V0RnJhbWVzW2ldLT5sb2FkZXIoKS0+ZmlyZUJlZm9yZVVubG9hZEV2ZW50KHBhZ2Ut
PmNocm9tZSgpKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNzI4
LDcgKzI3MjksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiAgICAgcmV0dXJu
IHNob3VsZENsb3NlOwogfQogCi1ib29sIEZyYW1lTG9hZGVyOjpmaXJlQmVmb3JlVW5sb2FkRXZl
bnQoQ2hyb21lKiBjaHJvbWUpCitib29sIEZyYW1lTG9hZGVyOjpmaXJlQmVmb3JlVW5sb2FkRXZl
bnQoQ2hyb21lJiBjaHJvbWUpCiB7CiAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKICAgICBpZiAoIWRvbVdpbmRvdykKQEAgLTI3NDks
NyArMjc1MCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmZpcmVCZWZvcmVVbmxvYWRFdmVudChDaHJv
bWUqIGNocm9tZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTdHJpbmcgdGV4dCA9IGRv
Y3VtZW50LT5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5nKGJlZm9yZVVubG9hZEV2ZW50
LT5yZXN1bHQoKSk7Ci0gICAgcmV0dXJuIGNocm9tZS0+cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKHRleHQsIG1fZnJhbWUpOworICAgIHJldHVybiBjaHJvbWUucnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKHRleHQsIG1fZnJhbWUpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51
ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1Jl
ZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgYm9vbCBzaG91bGRDb250aW51ZSkKQEAgLTMzMzMs
NyArMzMzNCw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVy
RnJhbWUsIEZyYW1lKiBsb29rdXBGcmFtZSwgY29uc3QgRnJhCiAgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBsb29rdXBGcmFtZS0+bG9hZGVyKCktPmZpbmRGcmFtZUZvck5hdmlnYXRpb24ocmVx
dWVzdC5mcmFtZU5hbWUoKSwgb3BlbmVyRnJhbWUtPmRvY3VtZW50KCkpKSB7CiAgICAgICAgICAg
ICBpZiAocmVxdWVzdC5mcmFtZU5hbWUoKSAhPSAiX3NlbGYiKSB7CiAgICAgICAgICAgICAgICAg
aWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgICAgICAgICBwYWdl
LT5jaHJvbWUoKS0+Zm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCku
Zm9jdXMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNyZWF0ZWQgPSBmYWxzZTsKICAg
ICAgICAgICAgIHJldHVybiBmcmFtZTsKQEAgLTMzNjQsNyArMzM2NSw3IEBAIFBhc3NSZWZQdHI8
RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUsIEZyYW1lKiBsb29rdXBGcmFt
ZSwgY29uc3QgRnJhCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbiBh
Y3Rpb24ocmVxdWVzdFdpdGhSZWZlcnJlci5yZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgUGFnZSog
cGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUsIHJlcXVl
c3RXaXRoUmVmZXJyZXIsIGZlYXR1cmVzLCBhY3Rpb24pOworICAgIFBhZ2UqIHBhZ2UgPSBvbGRQ
YWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3cob3BlbmVyRnJhbWUsIHJlcXVlc3RXaXRoUmVmZXJy
ZXIsIGZlYXR1cmVzLCBhY3Rpb24pOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7
CiAKQEAgLTMzNzUsMTggKzMzNzYsMTggQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93
KEZyYW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEKICAgICBp
ZiAocmVxdWVzdC5mcmFtZU5hbWUoKSAhPSAiX2JsYW5rIikKICAgICAgICAgZnJhbWUtPnRyZWUo
KS0+c2V0TmFtZShyZXF1ZXN0LmZyYW1lTmFtZSgpKTsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5z
ZXRUb29sYmFyc1Zpc2libGUoZmVhdHVyZXMudG9vbEJhclZpc2libGUgfHwgZmVhdHVyZXMubG9j
YXRpb25CYXJWaXNpYmxlKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0U3RhdHVzYmFyVmlzaWJs
ZShmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxlKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0U2Ny
b2xsYmFyc1Zpc2libGUoZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpOwotICAgIHBhZ2UtPmNo
cm9tZSgpLT5zZXRNZW51YmFyVmlzaWJsZShmZWF0dXJlcy5tZW51QmFyVmlzaWJsZSk7Ci0gICAg
cGFnZS0+Y2hyb21lKCktPnNldFJlc2l6YWJsZShmZWF0dXJlcy5yZXNpemFibGUpOworICAgIHBh
Z2UtPmNocm9tZSgpLnNldFRvb2xiYXJzVmlzaWJsZShmZWF0dXJlcy50b29sQmFyVmlzaWJsZSB8
fCBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLnNldFN0
YXR1c2JhclZpc2libGUoZmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSk7CisgICAgcGFnZS0+Y2hy
b21lKCkuc2V0U2Nyb2xsYmFyc1Zpc2libGUoZmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGUpOwor
ICAgIHBhZ2UtPmNocm9tZSgpLnNldE1lbnViYXJWaXNpYmxlKGZlYXR1cmVzLm1lbnVCYXJWaXNp
YmxlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zZXRSZXNpemFibGUoZmVhdHVyZXMucmVzaXphYmxl
KTsKIAogICAgIC8vICd4JyBhbmQgJ3knIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIHRoZSB3aW5k
b3csIHdoaWxlICd3aWR0aCcgYW5kICdoZWlnaHQnCiAgICAgLy8gc3BlY2lmeSB0aGUgc2l6ZSBv
ZiB0aGUgdmlld3BvcnQuIFdlIGNhbiBvbmx5IHJlc2l6ZSB0aGUgd2luZG93LCBzbyBhZGp1c3QK
ICAgICAvLyBmb3IgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgd2luZG93IHNpemUgYW5kIHRo
ZSB2aWV3cG9ydCBzaXplLgogCi0gICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QgPSBwYWdlLT5jaHJv
bWUoKS0+d2luZG93UmVjdCgpOwotICAgIEZsb2F0U2l6ZSB2aWV3cG9ydFNpemUgPSBwYWdlLT5j
aHJvbWUoKS0+cGFnZVJlY3QoKS5zaXplKCk7CisgICAgRmxvYXRSZWN0IHdpbmRvd1JlY3QgPSBw
YWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CisgICAgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZSA9
IHBhZ2UtPmNocm9tZSgpLnBhZ2VSZWN0KCkuc2l6ZSgpOwogCiAgICAgaWYgKGZlYXR1cmVzLnhT
ZXQpCiAgICAgICAgIHdpbmRvd1JlY3Quc2V0WChmZWF0dXJlcy54KTsKQEAgLTM0MDAsOCArMzQw
MSw4IEBAIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUs
IEZyYW1lKiBsb29rdXBGcmFtZSwgY29uc3QgRnJhCiAgICAgLy8gRW5zdXJlIG5vbi1OYU4gdmFs
dWVzLCBtaW5pbXVtIHNpemUgYXMgd2VsbCBhcyBiZWluZyB3aXRoaW4gdmFsaWQgc2NyZWVuIGFy
ZWEuCiAgICAgRmxvYXRSZWN0IG5ld1dpbmRvd1JlY3QgPSBET01XaW5kb3c6OmFkanVzdFdpbmRv
d1JlY3QocGFnZSwgd2luZG93UmVjdCk7CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93
UmVjdChuZXdXaW5kb3dSZWN0KTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2hvdygpOworICAgIHBh
Z2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QobmV3V2luZG93UmVjdCk7CisgICAgcGFnZS0+Y2hy
b21lKCkuc2hvdygpOwogCiAgICAgY3JlYXRlZCA9IHRydWU7CiAgICAgcmV0dXJuIGZyYW1lOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRleCAxMDliMTZjLi5kZWVhZjBkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KHZv
aWQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGNvbnN0
IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRD
b250aW51ZSk7CiAgICAgc3RhdGljIHZvaWQgY2FsbENvbnRpbnVlRnJhZ21lbnRTY3JvbGxBZnRl
ck5hdmlnYXRpb25Qb2xpY3kodm9pZCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQ
dHI8Rm9ybVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAgICAgCi0gICAgYm9vbCBmaXJl
QmVmb3JlVW5sb2FkRXZlbnQoQ2hyb21lKik7CisgICAgYm9vbCBmaXJlQmVmb3JlVW5sb2FkRXZl
bnQoQ2hyb21lJik7CiAKICAgICB2b2lkIGNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGlj
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4sIGJvb2wgc2hv
dWxkQ29udGludWUpOwogICAgIHZvaWQgY29udGludWVMb2FkQWZ0ZXJOZXdXaW5kb3dQb2xpY3ko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGlu
dWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKaW5kZXggMWFlYWE5
NS4uYzk3OTdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCkBA
IC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIHZvaWQgbG9nUGx1Z2luUmVxdWVzdChQYWdlKiBwYWdl
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHUKICAgICBTdHJpbmcgcGx1
Z2luRmlsZSA9IHBsdWdpbkRhdGEgPyBwbHVnaW5EYXRhLT5wbHVnaW5GaWxlRm9yTWltZVR5cGUo
bmV3TUlNRVR5cGUpIDogU3RyaW5nKCk7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gIXBsdWdp
bkZpbGUgPyBuZXdNSU1FVHlwZSA6IHBsdWdpbkZpbGU7CiAKLSAgICBDaHJvbWVDbGllbnQqIGNs
aWVudCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKTsKKyAgICBDaHJvbWVDbGllbnQqIGNsaWVu
dCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpOwogICAgIGNsaWVudC0+bG9nRGlhZ25vc3RpY01l
c3NhZ2Uoc3VjY2VzcyA/IERpYWdub3N0aWNMb2dnaW5nS2V5czo6cGx1Z2luTG9hZGVkS2V5KCkg
OiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnBsdWdpbkxvYWRpbmdGYWlsZWRLZXkoKSwgZGVzY3Jp
cHRpb24sIERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm9vcEtleSgpKTsKIAogICAgIGlmICghcGFn
ZS0+aGFzU2VlbkFueVBsdWdpbigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCBlMGYwMDEwLi42ZWI5
MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtODIxLDcgKzgyMSw3IEBAIHZvaWQgQXBwbGljYXRp
b25DYWNoZUdyb3VwOjpkaWRSZWFjaE1heEFwcENhY2hlU2l6ZSgpCiB7CiAgICAgQVNTRVJUKG1f
ZnJhbWUpOwogICAgIEFTU0VSVChtX2NhY2hlQmVpbmdVcGRhdGVkKTsKLSAgICBtX2ZyYW1lLT5w
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cmVhY2hlZE1heEFwcENhY2hlU2l6ZShjYWNoZVN0
b3JhZ2UoKS5zcGFjZU5lZWRlZChtX2NhY2hlQmVpbmdVcGRhdGVkLT5lc3RpbWF0ZWRTaXplSW5T
dG9yYWdlKCkpKTsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5yZWFj
aGVkTWF4QXBwQ2FjaGVTaXplKGNhY2hlU3RvcmFnZSgpLnNwYWNlTmVlZGVkKG1fY2FjaGVCZWlu
Z1VwZGF0ZWQtPmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSkpOwogICAgIG1fY2FsbGVkUmVhY2hl
ZE1heEFwcENhY2hlU2l6ZSA9IHRydWU7CiAgICAgY2hlY2tJZkxvYWRJc0NvbXBsZXRlKCk7CiB9
CkBAIC04MzAsNyArODMwLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNo
T3JpZ2luUXVvdGEoaW50NjRfdCB0b3RhbFNwYWNlTmVlZGVkKQogewogICAgIC8vIEluZm9ybSB0
aGUgY2xpZW50IHRoZSBvcmlnaW4gcXVvdGEgaGFzIGJlZW4gcmVhY2hlZCwgdGhleSBtYXkgZGVj
aWRlIHRvIGluY3JlYXNlIHRoZSBxdW90YS4KICAgICAvLyBXZSBleHBlY3QgcXVvdGEgdG8gYmUg
aW5jcmVhc2VkIHN5bmNocm9ub3VzbHkgd2hpbGUgd2FpdGluZyBmb3IgdGhlIGNhbGwgdG8gcmV0
dXJuLgotICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWFjaGVkQXBw
bGljYXRpb25DYWNoZU9yaWdpblF1b3RhKG1fb3JpZ2luLmdldCgpLCB0b3RhbFNwYWNlTmVlZGVk
KTsKKyAgICBtX2ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5yZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKG1fb3JpZ2luLmdldCgpLCB0b3RhbFNwYWNlTmVlZGVkKTsK
IH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlVXBkYXRlRmFpbGVkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXV0b3Njcm9sbENvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxlci5jcHAKaW5kZXggNmQxZjU3
Mi4uYWI3YzQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xsQ29udHJvbGxl
ci5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIEF1dG9zY3JvbGxDb250cm9sbGVyOjp1cGRh
dGVEcmFnQW5kRHJvcChOb2RlKiBkcm9wVGFyZ2V0Tm9kZSwgY29uc3QgSW50UG9pbgogICAgIH0K
IAogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFnZSB8fCAhcGFn
ZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zaG91bGRBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3Aoc2Ny
b2xsYWJsZSkpIHsKKyAgICBpZiAoIXBhZ2UgfHwgIXBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5z
aG91bGRBdXRvc2Nyb2xsRm9yRHJhZ0FuZERyb3Aoc2Nyb2xsYWJsZSkpIHsKICAgICAgICAgc3Rv
cEF1dG9zY3JvbGxUaW1lcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9CYXJQcm9wLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQmFy
UHJvcC5jcHAKaW5kZXggNGI3ZDkzNi4uM2JlNGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9CYXJQcm9wLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3AuY3Bw
CkBAIC01OCwxMyArNTgsMTMgQEAgYm9vbCBCYXJQcm9wOjp2aXNpYmxlKCkgY29uc3QKICAgICBj
YXNlIExvY2F0aW9uYmFyOgogICAgIGNhc2UgUGVyc29uYWxiYXI6CiAgICAgY2FzZSBUb29sYmFy
OgotICAgICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPnRvb2xiYXJzVmlzaWJsZSgpOworICAg
ICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkudG9vbGJhcnNWaXNpYmxlKCk7CiAgICAgY2FzZSBN
ZW51YmFyOgotICAgICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPm1lbnViYXJWaXNpYmxlKCk7
CisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5tZW51YmFyVmlzaWJsZSgpOwogICAgIGNh
c2UgU2Nyb2xsYmFyczoKLSAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5zY3JvbGxiYXJz
VmlzaWJsZSgpOworICAgICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkuc2Nyb2xsYmFyc1Zpc2li
bGUoKTsKICAgICBjYXNlIFN0YXR1c2JhcjoKLSAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgp
LT5zdGF0dXNiYXJWaXNpYmxlKCk7CisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5zdGF0
dXNiYXJWaXNpYmxlKCk7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZS5jcHAKaW5kZXggMzI2NzUyNy4uZDlmYTI0MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcApAQCAtMjE0LDcgKzIxNCw3IEBAIHN0YXRpYyBib29sIGNhblJ1bk1vZGFsSWZEdXJpbmdQ
YWdlRGlzbWlzc2FsKFBhZ2UqIHBhZ2UsIENocm9tZUNsaWVudDo6RGlhbG9nVHlwCiAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXI6OlBhZ2VEaXNt
aXNzYWxUeXBlIGRpc21pc3NhbCA9IGZyYW1lLT5sb2FkZXIoKS0+cGFnZURpc21pc3NhbEV2ZW50
QmVpbmdEaXNwYXRjaGVkKCk7CiAgICAgICAgIGlmIChkaXNtaXNzYWwgIT0gRnJhbWVMb2FkZXI6
Ok5vRGlzbWlzc2FsKQotICAgICAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+c2hvdWxkUnVuTW9kYWxEaWFsb2dEdXJpbmdQYWdlRGlzbWlzc2FsKGRpYWxvZywgbWVzc2Fn
ZSwgZGlzbWlzc2FsKTsKKyAgICAgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS0+c2hvdWxkUnVuTW9kYWxEaWFsb2dEdXJpbmdQYWdlRGlzbWlzc2FsKGRpYWxvZywgbWVzc2Fn
ZSwgZGlzbWlzc2FsKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db25z
b2xlLmNwcAppbmRleCBiODgxNjZiLi40ZTRmMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAK
QEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIHZvaWQgaW50ZXJuYWxBZGRNZXNzYWdlKFBhZ2UqIHBh
Z2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGdvdE1lc3NhZ2UpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+YWRkTWVzc2FnZVRvQ29uc29sZShDb25zb2xlQVBJTWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2
ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJlcigpLCBsYXN0Q2FsbGVyLmNvbHVtbk51
bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2UsIHR5
cGUsIGxldmVsLCBtZXNzYWdlLCBsYXN0Q2FsbGVyLmxpbmVOdW1iZXIoKSwgbGFzdENhbGxlci5j
b2x1bW5OdW1iZXIoKSwgbGFzdENhbGxlci5zb3VyY2VVUkwoKSk7CiAKICAgICBpZiAoIXBhZ2Ut
PnNldHRpbmdzKCktPmxvZ3NQYWdlTWVzc2FnZXNUb1N5c3RlbUNvbnNvbGVFbmFibGVkKCkgJiYg
IVBhZ2VDb25zb2xlOjpzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDQ5
ZGExZGEuLjYwZjJjMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKQEAgLTE4NCwxMCArMTg0LDEwIEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5k
b3coY29uc3QgS1VSTCYgdXJsVG9Mb2FkLCBGcmFtZSogZnJhbWUpCiAgICAgICAgIEZyYW1lTG9h
ZFJlcXVlc3QgcmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVz
b3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVy
KCkpKTsKICAgICAgICAgUGFnZSogbmV3UGFnZSA9IG9sZFBhZ2U7CiAgICAgICAgIGlmICghZnJh
bWUtPnNldHRpbmdzKCkgfHwgZnJhbWUtPnNldHRpbmdzKCktPnN1cHBvcnRzTXVsdGlwbGVXaW5k
b3dzKCkpIHsKLSAgICAgICAgICAgIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRl
V2luZG93KGZyYW1lLCByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcygpLCBOYXZpZ2F0aW9uQWN0aW9u
KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKTsKKyAgICAgICAgICAgIG5ld1BhZ2UgPSBvbGRQ
YWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVz
KCksIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpOwogICAgICAg
ICAgICAgaWYgKCFuZXdQYWdlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IG5ld1BhZ2UtPmNocm9tZSgpLT5zaG93KCk7CisgICAgICAgICAgICBuZXdQYWdlLT5jaHJvbWUo
KS5zaG93KCk7CiAgICAgICAgIH0KICAgICAgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmxvYWRl
cigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwgMCwgTWF5YmVT
ZW5kUmVmZXJyZXIpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBkN2I4
ZWNiLi5mMzFmN2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0zMTcsNyArMzE3
LDcgQEAgRmxvYXRSZWN0IERPTVdpbmRvdzo6YWRqdXN0V2luZG93UmVjdChQYWdlKiBwYWdlLCBj
b25zdCBGbG9hdFJlY3QmIHBlbmRpbmdDaGFuZ2UKICAgICBBU1NFUlQocGFnZSk7CiAKICAgICBG
bG9hdFJlY3Qgc2NyZWVuID0gc2NyZWVuQXZhaWxhYmxlUmVjdChwYWdlLT5tYWluRnJhbWUoKS0+
dmlldygpKTsKLSAgICBGbG9hdFJlY3Qgd2luZG93ID0gcGFnZS0+Y2hyb21lKCktPndpbmRvd1Jl
Y3QoKTsKKyAgICBGbG9hdFJlY3Qgd2luZG93ID0gcGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgp
OwogCiAgICAgLy8gTWFrZSBzdXJlIHdlJ3JlIGluIGEgdmFsaWQgc3RhdGUgYmVmb3JlIGFkanVz
dGluZyBkaW1lbnNpb25zLgogICAgIEFTU0VSVChzdGQ6OmlzZmluaXRlKHNjcmVlbi54KCkpKTsK
QEAgLTMzOSw3ICszMzksNyBAQCBGbG9hdFJlY3QgRE9NV2luZG93OjphZGp1c3RXaW5kb3dSZWN0
KFBhZ2UqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcGVuZGluZ0NoYW5nZQogICAgIGlmICghc3Rk
Ojppc25hbihwZW5kaW5nQ2hhbmdlcy5oZWlnaHQoKSkpCiAgICAgICAgIHdpbmRvdy5zZXRIZWln
aHQocGVuZGluZ0NoYW5nZXMuaGVpZ2h0KCkpOwogCi0gICAgRmxvYXRTaXplIG1pbmltdW1TaXpl
ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5taW5pbXVtV2luZG93U2l6ZSgpOworICAgIEZs
b2F0U2l6ZSBtaW5pbXVtU2l6ZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5taW5pbXVtV2lu
ZG93U2l6ZSgpOwogICAgIC8vIExldCBzaXplIDAgcGFzcyB0aHJvdWdoLCBzaW5jZSB0aGF0IGlu
ZGljYXRlcyBkZWZhdWx0IHNpemUsIG5vdCBtaW5pbXVtIHNpemUuCiAgICAgaWYgKHdpbmRvdy53
aWR0aCgpKQogICAgICAgICB3aW5kb3cuc2V0V2lkdGgobWluKG1heChtaW5pbXVtU2l6ZS53aWR0
aCgpLCB3aW5kb3cud2lkdGgoKSksIHNjcmVlbi53aWR0aCgpKSk7CkBAIC0zNzYsNyArMzc2LDcg
QEAgYm9vbCBET01XaW5kb3c6OmNhblNob3dNb2RhbERpYWxvZyhjb25zdCBGcmFtZSogZnJhbWUp
CiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5jYW5SdW5Nb2RhbCgp
OworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jYW5SdW5Nb2RhbCgpOwogfQogCiBib29sIERP
TVdpbmRvdzo6Y2FuU2hvd01vZGFsRGlhbG9nTm93KGNvbnN0IEZyYW1lKiBmcmFtZSkKQEAgLTM4
Niw3ICszODYsNyBAQCBib29sIERPTVdpbmRvdzo6Y2FuU2hvd01vZGFsRGlhbG9nTm93KGNvbnN0
IEZyYW1lKiBmcmFtZSkKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCkt
PmNhblJ1bk1vZGFsTm93KCk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNhblJ1bk1vZGFs
Tm93KCk7CiB9CiAKIERPTVdpbmRvdzo6RE9NV2luZG93KERvY3VtZW50KiBkb2N1bWVudCkKQEAg
LTkzNiw3ICs5MzYsNyBAQCB2b2lkIERPTVdpbmRvdzo6Zm9jdXMoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKIAogICAgIC8vIElmIHdlJ3JlIGEgdG9wIGxldmVsIHdpbmRvdywgYnJp
bmcgdGhlIHdpbmRvdyB0byB0aGUgZnJvbnQuCiAgICAgaWYgKG1fZnJhbWUgPT0gcGFnZS0+bWFp
bkZyYW1lKCkgJiYgYWxsb3dGb2N1cykKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3VzKCk7
CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzKCk7CiAKICAgICBpZiAoIW1fZnJhbWUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTk2NSw3ICs5NjUsNyBAQCB2b2lkIERPTVdpbmRvdzo6Ymx1cigp
CiAgICAgaWYgKG1fZnJhbWUgIT0gcGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHBhZ2UtPmNocm9tZSgpLT51bmZvY3VzKCk7CisgICAgcGFnZS0+Y2hyb21lKCkudW5m
b2N1cygpOwogfQogCiB2b2lkIERPTVdpbmRvdzo6Y2xvc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKQEAgLTk5OSw3ICs5OTksNyBAQCB2b2lkIERPTVdpbmRvdzo6Y2xvc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigp
LT5zaG91bGRDbG9zZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+
Y2xvc2VXaW5kb3dTb29uKCk7CisgICAgcGFnZS0+Y2hyb21lKCkuY2xvc2VXaW5kb3dTb29uKCk7
CiB9CiAKIHZvaWQgRE9NV2luZG93OjpwcmludCgpCkBAIC0xMDE2LDcgKzEwMTYsNyBAQCB2b2lk
IERPTVdpbmRvdzo6cHJpbnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fc2hvdWxk
UHJpbnRXaGVuRmluaXNoZWRMb2FkaW5nID0gZmFsc2U7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnBy
aW50KG1fZnJhbWUpOworICAgIHBhZ2UtPmNocm9tZSgpLnByaW50KG1fZnJhbWUpOwogfQogCiB2
b2lkIERPTVdpbmRvdzo6c3RvcCgpCkBAIC0xMDQwLDcgKzEwNDAsNyBAQCB2b2lkIERPTVdpbmRv
dzo6YWxlcnQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPnJ1bkphdmFTY3JpcHRBbGVydChtX2ZyYW1l
LCBtZXNzYWdlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5ydW5KYXZhU2NyaXB0QWxlcnQobV9mcmFt
ZSwgbWVzc2FnZSk7CiB9CiAKIGJvb2wgRE9NV2luZG93Ojpjb25maXJtKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKQEAgLTEwNTQsNyArMTA1NCw3IEBAIGJvb2wgRE9NV2luZG93Ojpjb25maXJtKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+cnVuSmF2YVNjcmlwdENvbmZpcm0obV9m
cmFtZSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLnJ1bkphdmFTY3JpcHRD
b25maXJtKG1fZnJhbWUsIG1lc3NhZ2UpOwogfQogCiBTdHJpbmcgRE9NV2luZG93Ojpwcm9tcHQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKQEAgLTEw
NjksNyArMTA2OSw3IEBAIFN0cmluZyBET01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBTdHJpbmcgcmV0dXJuVmFsdWU7Ci0gICAgaWYgKHBhZ2UtPmNocm9tZSgpLT5y
dW5KYXZhU2NyaXB0UHJvbXB0KG1fZnJhbWUsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgcmV0dXJu
VmFsdWUpKQorICAgIGlmIChwYWdlLT5jaHJvbWUoKS5ydW5KYXZhU2NyaXB0UHJvbXB0KG1fZnJh
bWUsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwgcmV0dXJuVmFsdWUpKQogICAgICAgICByZXR1cm4g
cmV0dXJuVmFsdWU7CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xMTMwLDcgKzExMzAsNyBA
QCBpbnQgRE9NV2luZG93OjpvdXRlckhlaWdodCgpIGNvbnN0CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBhZ2UtPmNocm9t
ZSgpLT53aW5kb3dSZWN0KCkuaGVpZ2h0KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+
KHBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKS5oZWlnaHQoKSk7CiB9CiAKIGludCBET01XaW5k
b3c6Om91dGVyV2lkdGgoKSBjb25zdApAQCAtMTE0Miw3ICsxMTQyLDcgQEAgaW50IERPTVdpbmRv
dzo6b3V0ZXJXaWR0aCgpIGNvbnN0CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0
KCkud2lkdGgoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hyb21lKCku
d2luZG93UmVjdCgpLndpZHRoKCkpOwogfQogCiBpbnQgRE9NV2luZG93Ojppbm5lckhlaWdodCgp
IGNvbnN0CkBAIC0xMTgyLDcgKzExODIsNyBAQCBpbnQgRE9NV2luZG93OjpzY3JlZW5YKCkgY29u
c3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PGludD4ocGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS54KCkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxpbnQ+KHBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKS54KCkpOwogfQog
CiBpbnQgRE9NV2luZG93OjpzY3JlZW5ZKCkgY29uc3QKQEAgLTExOTQsNyArMTE5NCw3IEBAIGlu
dCBET01XaW5kb3c6OnNjcmVlblkoKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYWdlLT5jaHJvbWUoKS0+d2lu
ZG93UmVjdCgpLnkoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hyb21l
KCkud2luZG93UmVjdCgpLnkoKSk7CiB9CiAKIGludCBET01XaW5kb3c6OnNjcm9sbFgoKSBjb25z
dApAQCAtMTI2Nyw3ICsxMjY3LDcgQEAgdm9pZCBET01XaW5kb3c6OnNldFN0YXR1cyhjb25zdCBT
dHJpbmcmIHN0cmluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOyAvLyBDbGllbnQgY2FsbHMgc2hvdWxkbid0IGJlIG1hZGUgd2hlbiB0aGUgZnJh
bWUgaXMgaW4gaW5jb25zaXN0ZW50IHN0YXRlLgotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTdGF0
dXNiYXJUZXh0KG1fZnJhbWUsIG1fc3RhdHVzKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zZXRTdGF0
dXNiYXJUZXh0KG1fZnJhbWUsIG1fc3RhdHVzKTsKIH0gCiAgICAgCiB2b2lkIERPTVdpbmRvdzo6
c2V0RGVmYXVsdFN0YXR1cyhjb25zdCBTdHJpbmcmIHN0cmluZykgCkBAIC0xMjgyLDcgKzEyODIs
NyBAQCB2b2lkIERPTVdpbmRvdzo6c2V0RGVmYXVsdFN0YXR1cyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOyAv
LyBDbGllbnQgY2FsbHMgc2hvdWxkbid0IGJlIG1hZGUgd2hlbiB0aGUgZnJhbWUgaXMgaW4gaW5j
b25zaXN0ZW50IHN0YXRlLgotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNiYXJUZXh0KG1f
ZnJhbWUsIG1fZGVmYXVsdFN0YXR1cyk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0U3RhdHVzYmFy
VGV4dChtX2ZyYW1lLCBtX2RlZmF1bHRTdGF0dXMpOwogfQogCiBET01XaW5kb3cqIERPTVdpbmRv
dzo6c2VsZigpIGNvbnN0CkBAIC0xNDc2LDExICsxNDc2LDExIEBAIHZvaWQgRE9NV2luZG93Ojpt
b3ZlQnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFn
ZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKLSAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJv
bWUoKS0+d2luZG93UmVjdCgpOworICAgIEZsb2F0UmVjdCBmciA9IHBhZ2UtPmNocm9tZSgpLndp
bmRvd1JlY3QoKTsKICAgICBGbG9hdFJlY3QgdXBkYXRlID0gZnI7CiAgICAgdXBkYXRlLm1vdmUo
eCwgeSk7CiAgICAgLy8gU2VjdXJpdHkgY2hlY2sgKHRoZSBzcGVjIHRhbGtzIGFib3V0IFVuaXZl
cnNhbEJyb3dzZXJXcml0ZSB0byBkaXNhYmxlIHRoaXMgY2hlY2suLi4pCi0gICAgcGFnZS0+Y2hy
b21lKCktPnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdChwYWdlLCB1cGRhdGUpKTsKKyAg
ICBwYWdlLT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGFkanVzdFdpbmRvd1JlY3QocGFnZSwgdXBk
YXRlKSk7CiB9CiAKIHZvaWQgRE9NV2luZG93Ojptb3ZlVG8oZmxvYXQgeCwgZmxvYXQgeSkgY29u
c3QKQEAgLTE0ODksMTMgKzE0ODksMTMgQEAgdm9pZCBET01XaW5kb3c6Om1vdmVUbyhmbG9hdCB4
LCBmbG9hdCB5KSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwotICAgIEZsb2F0UmVjdCBmciA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dS
ZWN0KCk7CisgICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOwog
ICAgIEZsb2F0UmVjdCBzciA9IHNjcmVlbkF2YWlsYWJsZVJlY3QocGFnZS0+bWFpbkZyYW1lKCkt
PnZpZXcoKSk7CiAgICAgZnIuc2V0TG9jYXRpb24oc3IubG9jYXRpb24oKSk7CiAgICAgRmxvYXRS
ZWN0IHVwZGF0ZSA9IGZyOwogICAgIHVwZGF0ZS5tb3ZlKHgsIHkpOwogICAgIC8vIFNlY3VyaXR5
IGNoZWNrICh0aGUgc3BlYyB0YWxrcyBhYm91dCBVbml2ZXJzYWxCcm93c2VyV3JpdGUgdG8gZGlz
YWJsZSB0aGlzIGNoZWNrLi4uKQotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRXaW5kb3dSZWN0KGFk
anVzdFdpbmRvd1JlY3QocGFnZSwgdXBkYXRlKSk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0V2lu
ZG93UmVjdChhZGp1c3RXaW5kb3dSZWN0KHBhZ2UsIHVwZGF0ZSkpOwogfQogCiB2b2lkIERPTVdp
bmRvdzo6cmVzaXplQnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKQEAgLTE1MDQsMTAgKzE1MDQs
MTAgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZUJ5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0CiAg
ICAgICAgIHJldHVybjsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAg
RmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFJl
Y3QgZnIgPSBwYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CiAgICAgRmxvYXRTaXplIGRlc3Qg
PSBmci5zaXplKCkgKyBGbG9hdFNpemUoeCwgeSk7CiAgICAgRmxvYXRSZWN0IHVwZGF0ZShmci5s
b2NhdGlvbigpLCBkZXN0KTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChhZGp1
c3RXaW5kb3dSZWN0KHBhZ2UsIHVwZGF0ZSkpOworICAgIHBhZ2UtPmNocm9tZSgpLnNldFdpbmRv
d1JlY3QoYWRqdXN0V2luZG93UmVjdChwYWdlLCB1cGRhdGUpKTsKIH0KIAogdm9pZCBET01XaW5k
b3c6OnJlc2l6ZVRvKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIGNvbnN0CkBAIC0xNTE2LDEw
ICsxNTE2LDEwIEBAIHZvaWQgRE9NV2luZG93OjpyZXNpemVUbyhmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0KSBjb25zdAogICAgICAgICByZXR1cm47CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFt
ZS0+cGFnZSgpOwotICAgIEZsb2F0UmVjdCBmciA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0
KCk7CisgICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOwogICAg
IEZsb2F0U2l6ZSBkZXN0ID0gRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpOwogICAgIEZsb2F0UmVj
dCB1cGRhdGUoZnIubG9jYXRpb24oKSwgZGVzdCk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldFdp
bmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdChwYWdlLCB1cGRhdGUpKTsKKyAgICBwYWdlLT5jaHJv
bWUoKS5zZXRXaW5kb3dSZWN0KGFkanVzdFdpbmRvd1JlY3QocGFnZSwgdXBkYXRlKSk7CiB9CiAK
IGludCBET01XaW5kb3c6OnNldFRpbWVvdXQoUGFzc093blB0cjxTY2hlZHVsZWRBY3Rpb24+IGFj
dGlvbiwgaW50IHRpbWVvdXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjAwMywxOSArMjAwMywx
OSBAQCB2b2lkIERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIGRpYWxvZ0ZlYQogICAgIGlmICghZGlhbG9nRnJhbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvckRpc2FibGVyIGRpc2FibGVyOwot
ICAgIGRpYWxvZ0ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5ydW5Nb2RhbCgpOworICAgIGRpYWxv
Z0ZyYW1lLT5wYWdlKCktPmNocm9tZSgpLnJ1bk1vZGFsKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93
OjplbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpCiB7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSB0aGlz
LT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLT5lbmFibGVTdWRkZW5UZXJtaW5hdGlv
bigpOworICAgICAgICBwYWdlLT5jaHJvbWUoKS5lbmFibGVTdWRkZW5UZXJtaW5hdGlvbigpOwog
fQogCiB2b2lkIERPTVdpbmRvdzo6ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkKIHsKICAgICBp
ZiAoUGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmRp
c2FibGVTdWRkZW5UZXJtaW5hdGlvbigpOworICAgICAgICBwYWdlLT5jaHJvbWUoKS5kaXNhYmxl
U3VkZGVuVGVybWluYXRpb24oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmluZGV4IDU2ZGNhNGMuLmY1NGRlZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTE3MTgsOCArMTcxOCw4IEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjptb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiAg
ICAgICAgIGZyYW1lVmlldy0+bW91c2VNb3ZlZEluQ29udGVudEFyZWEoKTsgIAogCiAgICAgaG92
ZXJlZE5vZGUuc2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5t
b3VzZURpZE1vdmVPdmVyRWxlbWVudChob3ZlcmVkTm9kZSwgZXZlbnQubW9kaWZpZXJGbGFncygp
KTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0VG9vbFRpcChob3ZlcmVkTm9kZSk7CisgICAgcGFn
ZS0+Y2hyb21lKCkubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoaG92ZXJlZE5vZGUsIGV2ZW50Lm1v
ZGlmaWVyRmxhZ3MoKSk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0VG9vbFRpcChob3ZlcmVkTm9k
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzY2NSw3ICszNjY1LDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OnRhYnNUb0xpbmtzKEtleWJvYXJkRXZlbnQqIGV2ZW50KSBjb25zdAogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCB0YWJzVG9MaW5r
c0NsaWVudENhbGxSZXN1bHQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmtleWJvYXJkVUlN
b2RlKCkgJiBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzOworICAgIGJvb2wgdGFic1RvTGlua3ND
bGllbnRDYWxsUmVzdWx0ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmtleWJvYXJkVUlNb2Rl
KCkgJiBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzOwogICAgIHJldHVybiBldmVudEludmVydHNU
YWJzVG9MaW5rc0NsaWVudENhbGxSZXN1bHQoZXZlbnQpID8gIXRhYnNUb0xpbmtzQ2xpZW50Q2Fs
bFJlc3VsdCA6IHRhYnNUb0xpbmtzQ2xpZW50Q2FsbFJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IDdiNmI5M2EuLjUzZGFlYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lk
IEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKFBhc3NSZWZQdHI8RnJhbWU+IGZyYW1l
KQogICAgICAgICBuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVu
dDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICB9
CiAKLSAgICBtX3BhZ2UtPmNocm9tZSgpLT5mb2N1c2VkRnJhbWVDaGFuZ2VkKG5ld0ZyYW1lLmdl
dCgpKTsKKyAgICBtX3BhZ2UtPmNocm9tZSgpLmZvY3VzZWRGcmFtZUNoYW5nZWQobmV3RnJhbWUu
Z2V0KCkpOwogCiAgICAgbV9pc0NoYW5naW5nRm9jdXNlZEZyYW1lID0gZmFsc2U7CiB9CkBAIC0y
OTUsMTAgKzI5NSwxMCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzSW5Eb2N1
bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5YgogCiAgICAgaWYgKCFub2Rl
KSB7CiAgICAgICAgIC8vIFdlIGRpZG4ndCBmaW5kIGEgbm9kZSB0byBmb2N1cywgc28gd2Ugc2hv
dWxkIHRyeSB0byBwYXNzIGZvY3VzIHRvIENocm9tZS4KLSAgICAgICAgaWYgKCFpbml0aWFsRm9j
dXMgJiYgbV9wYWdlLT5jaHJvbWUoKS0+Y2FuVGFrZUZvY3VzKGRpcmVjdGlvbikpIHsKKyAgICAg
ICAgaWYgKCFpbml0aWFsRm9jdXMgJiYgbV9wYWdlLT5jaHJvbWUoKS5jYW5UYWtlRm9jdXMoZGly
ZWN0aW9uKSkgewogICAgICAgICAgICAgZG9jdW1lbnQtPnNldEZvY3VzZWROb2RlKDApOwogICAg
ICAgICAgICAgc2V0Rm9jdXNlZEZyYW1lKDApOwotICAgICAgICAgICAgbV9wYWdlLT5jaHJvbWUo
KS0+dGFrZUZvY3VzKGRpcmVjdGlvbik7CisgICAgICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLnRh
a2VGb2N1cyhkaXJlY3Rpb24pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBlODg4YzdkLi43MGU3MTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgRnJhbWU6OnNldERvY3VtZW50KFBhc3NS
ZWZQdHI8RG9jdW1lbnQ+IG5ld0RvYykKICAgICAgICAgbm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoKTsKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAg
ICAgICBpZiAobV9kb2MgJiYgbV9kb2MtPmhhc1RvdWNoRXZlbnRIYW5kbGVycygpKQotICAgICAg
ICAgICAgbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0cnVlKTsK
KyAgICAgICAgICAgIG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0
cnVlKTsKICNlbmRpZgogICAgIH0KIApAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgRnJhbWU6OnRp
bGVkQmFja2luZ1N0b3JlUGFpbnRFbmQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBwYWludGVkQXJl
YSkKICAgICB1bnNpZ25lZCBzaXplID0gcGFpbnRlZEFyZWEuc2l6ZSgpOwogICAgIC8vIFJlcXVl
c3QgcmVwYWludCBmcm9tIHRoZSBzeXN0ZW0KICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwg
c2l6ZTsgKytuKQotICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLT5pbnZhbGlkYXRlQ29udGVudHNB
bmRSb290VmlldyhtX3ZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhwYWludGVkQXJlYVtuXSksIGZh
bHNlKTsKKyAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS5pbnZhbGlkYXRlQ29udGVudHNBbmRSb290
VmlldyhtX3ZpZXctPmNvbnRlbnRzVG9Sb290VmlldyhwYWludGVkQXJlYVtuXSksIGZhbHNlKTsK
IH0KIAogSW50UmVjdCBGcmFtZTo6dGlsZWRCYWNraW5nU3RvcmVDb250ZW50c1JlY3QoKQpAQCAt
ODUxLDcgKzg1MSw3IEBAIEludFJlY3QgRnJhbWU6OnRpbGVkQmFja2luZ1N0b3JlVmlzaWJsZVJl
Y3QoKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotICAg
IHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+dmlzaWJsZVJlY3RGb3JUaWxlZEJh
Y2tpbmdTdG9yZSgpOworICAgIHJldHVybiBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT52aXNp
YmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCk7CiB9CiAKIENvbG9yIEZyYW1lOjp0aWxlZEJh
Y2tpbmdTdG9yZUJhY2tncm91bmRDb2xvcigpIGNvbnN0CkBAIC05OTcsNyArOTk3LDcgQEAgdm9p
ZCBGcmFtZTo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKICAgICBpZiAocm9vdCAm
JiByb290LT5jb21wb3NpdG9yKCkpCiAgICAgICAgIHJvb3QtPmNvbXBvc2l0b3IoKS0+ZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAKLSAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgbV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiB9CiAjZW5k
aWYKIHZvaWQgRnJhbWU6Om5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRD
aGFuZ2VkKCkgY29uc3QKQEAgLTEwMTEsNyArMTAxMSw3IEBAIHZvaWQgRnJhbWU6Om5vdGlmeUNo
cm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCkgY29uc3QKICAgICAgICAg
ICAgIGNvdW50ICs9IGZyYW1lLT5kb2N1bWVudCgpLT53aGVlbEV2ZW50SGFuZGxlckNvdW50KCk7
CiAgICAgfQogCi0gICAgbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm51bVdoZWVsRXZlbnRI
YW5kbGVyc0NoYW5nZWQoY291bnQpOworICAgIG1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm51
bVdoZWVsRXZlbnRIYW5kbGVyc0NoYW5nZWQoY291bnQpOwogfQogCiBib29sIEZyYW1lOjppc1VS
TEFsbG93ZWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CmluZGV4IGFhNzE3NDQuLjJiN2M3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTU5MCw3ICs1OTAsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0Q29udGVudHNTaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiAKICAgICB1cGRhdGVTY3JvbGxhYmxlQXJlYVNldCgpOwogCi0gICAgcGFn
ZS0+Y2hyb21lKCktPmNvbnRlbnRzU2l6ZUNoYW5nZWQoZnJhbWUoKSwgc2l6ZSk7IC8vbm90aWZ5
IG9ubHkKKyAgICBwYWdlLT5jaHJvbWUoKS5jb250ZW50c1NpemVDaGFuZ2VkKGZyYW1lKCksIHNp
emUpOyAvL25vdGlmeSBvbmx5CiAKICAgICBtX2RlZmVyU2V0TmVlZHNMYXlvdXRzLS07CiAgICAg
CkBAIC05NDUsNyArOTQ1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldE5lZWRzT25lU2hvdERyYXdp
bmdTeW5jaHJvbml6YXRpb24oKQogewogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpID8gZnJhbWUo
KS0+cGFnZSgpIDogMDsKICAgICBpZiAocGFnZSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT5zZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCk7CisgICAgICAg
IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5zZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25p
emF0aW9uKCk7CiB9CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBA
IC0xNDA4LDcgKzE0MDgsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0
cmVlKQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT5sYXlvdXRVcGRhdGVkKGZyYW1lKCkpOworICAgIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLT5sYXlvdXRVcGRhdGVkKGZyYW1lKCkpOwogfQogCiBSZW5kZXJCb3gqIEZyYW1l
Vmlldzo6ZW1iZWRkZWRDb250ZW50Qm94KCkgY29uc3QKQEAgLTIwNDIsNyArMjA0Miw3IEBAIGJv
b2wgRnJhbWVWaWV3OjpzaG91bGRSdWJiZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9u
IGRpcmVjdGlvbikgY29uc3QKICAgICBQYWdlKiBwYWdlID0gZnJhbWUoKSA/IGZyYW1lKCktPnBh
Z2UoKSA6IDA7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gU2Nyb2xsVmlldzo6c2hv
dWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKGRpcmVjdGlvbik7Ci0gICAgcmV0dXJuIHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKGRpcmVjdGlvbik7
CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5zaG91bGRSdWJiZXJCYW5kSW5E
aXJlY3Rpb24oZGlyZWN0aW9uKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OmlzUnViYmVyQmFuZElu
UHJvZ3Jlc3MoKSBjb25zdApAQCAtMjA5Miw3ICsyMDkyLDcgQEAgSG9zdFdpbmRvdyogRnJhbWVW
aWV3Ojpob3N0V2luZG93KCkgY29uc3QKICAgICBQYWdlKiBwYWdlID0gZnJhbWUoKSA/IGZyYW1l
KCktPnBhZ2UoKSA6IDA7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsKLSAgICBy
ZXR1cm4gcGFnZS0+Y2hyb21lKCk7CisgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKIH0KIAog
Y29uc3QgdW5zaWduZWQgY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQgPSAyNTsKQEAgLTMwNDgs
NyArMzA0OCw3IEBAIEludFJlY3QgRnJhbWVWaWV3Ojp3aW5kb3dSZXNpemVyUmVjdCgpIGNvbnN0
CiAgICAgUGFnZSogcGFnZSA9IGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlKCkgOiAwOwogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKLSAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCktPndpbmRvd1Jlc2l6ZXJSZWN0KCk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLndp
bmRvd1Jlc2l6ZXJSZWN0KCk7CiB9CiAKIGZsb2F0IEZyYW1lVmlldzo6dmlzaWJsZUNvbnRlbnRT
Y2FsZUZhY3RvcigpIGNvbnN0CkBAIC0zMDY5LDcgKzMwNjksNyBAQCB2b2lkIEZyYW1lVmlldzo6
c2V0VmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KGNvbnN0IEludFJlY3QmIHNjcm9sbGVyVGh1bWIp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkgIT0gbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bm90aWZ5U2Ny
b2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChzY3JvbGxlclRodW1iKTsKKyAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+bm90aWZ5U2Nyb2xsZXJUaHVtYklzVmlzaWJsZUluUmVjdChzY3JvbGxl
clRodW1iKTsKIH0KIAogYm9vbCBGcmFtZVZpZXc6OnNjcm9sbGJhcnNDYW5CZUFjdGl2ZSgpIGNv
bnN0CkBAIC0zMTYyLDcgKzMxNjIsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsYmFyU3R5bGVD
aGFuZ2VkKGludCBuZXdTdHlsZSwgYm9vbCBmb3JjZVVwZGF0ZSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKSAhPSBtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0g
ICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWNvbW1lbmRlZFNjcm9sbGJhclN0eWxlRGlk
Q2hhbmdlKG5ld1N0eWxlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+cmVjb21tZW5k
ZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShuZXdTdHlsZSk7CiAKICAgICBpZiAoZm9yY2VVcGRh
dGUpCiAgICAgICAgIFNjcm9sbFZpZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChuZXdTdHlsZSwg
Zm9yY2VVcGRhdGUpOwpAQCAtMzIzMyw3ICszMjMzLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0
ZUFubm90YXRlZFJlZ2lvbnMoKQogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5hbm5vdGF0ZWRSZWdpb25zQ2hhbmdlZCgpOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5hbm5vdGF0ZWRSZWdpb25zQ2hhbmdlZCgpOwogfQogI2VuZGlmCiAKQEAgLTM2NDUsNyAr
MzY0NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5nQXJlYXMoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3JpCiAKICAgICBQYWdlKiBwYWdlID0gbV9m
cmFtZS0+cGFnZSgpOwogICAgIGlmIChwYWdlLT5tYWluRnJhbWUoKSA9PSBtX2ZyYW1lKSB7Ci0g
ICAgICAgIGlmIChwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhaW50Q3VzdG9tT3ZlcmhhbmdB
cmVhKGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIHZlcnRpY2FsT3ZlcmhhbmdBcmVh
LCBkaXJ0eVJlY3QpKQorICAgICAgICBpZiAocGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnBhaW50
Q3VzdG9tT3ZlcmhhbmdBcmVhKGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIHZlcnRp
Y2FsT3ZlcmhhbmdBcmVhLCBkaXJ0eVJlY3QpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAppbmRleCAxZGExNGQ0Li45MWRkYmM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAt
MTc5LDcgKzE3OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlY3JlbWVudFN1YmZyYW1lQ291bnQo
KSB7IEFTU0VSVChtX3N1YmZyYW1lQ291bnQpOyAtLW1fc3ViZnJhbWVDb3VudDsgfQogICAgIGlu
dCBzdWJmcmFtZUNvdW50KCkgY29uc3QgeyBjaGVja1N1YmZyYW1lQ291bnRDb25zaXN0ZW5jeSgp
OyByZXR1cm4gbV9zdWJmcmFtZUNvdW50OyB9CiAKLSAgICBDaHJvbWUqIGNocm9tZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY2hyb21lLmdldCgpOyB9CisgICAgQ2hyb21lJiBjaHJvbWUoKSBjb25zdCB7
IHJldHVybiAqbV9jaHJvbWU7IH0KICAgICBEcmFnQ2FyZXRDb250cm9sbGVyKiBkcmFnQ2FyZXRD
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnQ2FyZXRDb250cm9sbGVyLmdldCgpOyB9
CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBEcmFnQ29udHJvbGxlciogZHJhZ0NvbnRy
b2xsZXIoKSBjb25zdCB7IHJldHVybiBtX2RyYWdDb250cm9sbGVyLmdldCgpOyB9CkBAIC00MTIs
NyArNDEyLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgY29sbGVjdFBsdWdpblZpZXdzKFZlY3Rv
cjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4mIHBsdWdpblZpZXdCYXNlcyk7CiAKLSAgICBP
d25QdHI8Q2hyb21lPiBtX2Nocm9tZTsKKyAgICBjb25zdCBPd25QdHI8Q2hyb21lPiBtX2Nocm9t
ZTsKICAgICBPd25QdHI8RHJhZ0NhcmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVy
OwogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5j
cHAKaW5kZXggYWQ3NWE0Zi4uODkwYzRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uc29sZS5j
cHAKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFBhZ2VDb25zb2xlOjphZGRNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cgogICAgIGlmIChw
YWdlLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShz
b3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHVybCk7Cisg
ICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBs
ZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB1cmwpOwogCiAgICAgaWYg
KCFwYWdlLT5zZXR0aW5ncygpLT5sb2dzUGFnZU1lc3NhZ2VzVG9TeXN0ZW1Db25zb2xlRW5hYmxl
ZCgpICYmICFzaG91bGRQcmludEV4Y2VwdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlR3JvdXAuY3BwCmluZGV4IDA3YTZmODMuLjk4YTlhYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VHcm91cC5jcHAKQEAgLTE5NSw3ICsxOTUsNyBAQCBib29sIFBhZ2VHcm91cDo6aXNMaW5r
VmlzaXRlZChMaW5rSGFzaCB2aXNpdGVkTGlua0hhc2gpCiAgICAgaWYgKCFtX3Zpc2l0ZWRMaW5r
c1BvcHVsYXRlZCkgewogICAgICAgICBtX3Zpc2l0ZWRMaW5rc1BvcHVsYXRlZCA9IHRydWU7CiAg
ICAgICAgIEFTU0VSVCghbV9wYWdlcy5pc0VtcHR5KCkpOwotICAgICAgICAoKm1fcGFnZXMuYmVn
aW4oKSktPmNocm9tZSgpLT5jbGllbnQoKS0+cG9wdWxhdGVWaXNpdGVkTGlua3MoKTsKKyAgICAg
ICAgKCptX3BhZ2VzLmJlZ2luKCkpLT5jaHJvbWUoKS5jbGllbnQoKS0+cG9wdWxhdGVWaXNpdGVk
TGlua3MoKTsKICAgICB9CiAgICAgcmV0dXJuIG1fdmlzaXRlZExpbmtIYXNoZXMuY29udGFpbnMo
dmlzaXRlZExpbmtIYXNoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxl
ck1hYy5tbQppbmRleCBmMzY5YmQwLi4wZGRiMzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OndoZWVsRXZlbnQoTlNFdmVudCAqZXZlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIEN1cnJlbnRFdmVudFNjb3BlIHNjb3BlKGV2ZW50KTsKLSAgICByZXR1cm4gaGFuZGxlV2hl
ZWxFdmVudChQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1XaGVlbEV2ZW50KGV2
ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKKyAgICByZXR1cm4g
aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1XaGVl
bEV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogfQog
CiBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoTlNFdmVudCAqZXZlbnQpCkBAIC0xMjksNyAr
MTI5LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRWaWV3KCkKIAogICAgIGlm
IChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUtPnZpZXcoKSkgewogICAgICAgICBpZiAo
TlNWaWV3ICpkb2N1bWVudFZpZXcgPSBmcmFtZVZpZXctPmRvY3VtZW50VmlldygpKQotICAgICAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3VzTlNWaWV3KGRvY3VtZW50Vmlldyk7CisgICAgICAg
ICAgICBwYWdlLT5jaHJvbWUoKS5mb2N1c05TVmlldyhkb2N1bWVudFZpZXcpOwogICAgIH0KIAog
ICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5zZXRGb2N1c2VkRnJhbWUobV9mcmFtZSk7CkBA
IC0yMDMsMTEgKzIwMywxMSBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNlRG93bkV2ZW50
VG9XaWRnZXQoV2lkZ2V0KiBwV2lkZ2V0KQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBpZiAocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5maXJzdFJlc3BvbmRl
cigpICE9IHZpZXcpIHsKKyAgICBpZiAocGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmZpcnN0UmVz
cG9uZGVyKCkgIT0gdmlldykgewogICAgICAgICAvLyBOb3JtYWxseSBbTlNXaW5kb3cgc2VuZEV2
ZW50Ol0gaGFuZGxlcyBzZXR0aW5nIHRoZSBmaXJzdCByZXNwb25kZXIuCiAgICAgICAgIC8vIEJ1
dCBpbiBvdXIgY2FzZSwgdGhlIGV2ZW50IHdhcyBzZW50IHRvIHRoZSB2aWV3IHJlcHJlc2VudGlu
ZyB0aGUgZW50aXJlIHdlYiBwYWdlLgogICAgICAgICBpZiAoW2N1cnJlbnROU0V2ZW50KCkgY2xp
Y2tDb3VudF0gPD0gMSAmJiBbdmlldyBhY2NlcHRzRmlyc3RSZXNwb25kZXJdICYmIFt2aWV3IG5l
ZWRzUGFuZWxUb0JlY29tZUtleV0pCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50
KCktPm1ha2VGaXJzdFJlc3BvbmRlcih2aWV3KTsKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLT5tYWtlRmlyc3RSZXNwb25kZXIodmlldyk7CiAgICAgfQogCiAgICAgLy8gV2Ug
bmVlZCB0byAiZGVmZXIgbG9hZGluZyIgd2hpbGUgdHJhY2tpbmcgdGhlIG1vdXNlLCBiZWNhdXNl
IHRlYXJpbmcgZG93biB0aGUKQEAgLTY2MCw3ICs2NjAsNyBAQCBQbGF0Zm9ybU1vdXNlRXZlbnQg
RXZlbnRIYW5kbGVyOjpjdXJyZW50UGxhdGZvcm1Nb3VzZUV2ZW50KCkgY29uc3QKIHsKICAgICBO
U1ZpZXcgKndpbmRvd1ZpZXcgPSBuaWw7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCkpCi0gICAgICAgIHdpbmRvd1ZpZXcgPSBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdl
Q2xpZW50KCk7CisgICAgICAgIHdpbmRvd1ZpZXcgPSBwYWdlLT5jaHJvbWUoKS5wbGF0Zm9ybVBh
Z2VDbGllbnQoKTsKICAgICByZXR1cm4gUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRm
b3JtTW91c2VFdmVudChjdXJyZW50TlNFdmVudCgpLCB3aW5kb3dWaWV3KTsKIH0KIApAQCAtNjg4
LDcgKzY4OCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjp0YWJzVG9BbGxGb3JtQ29udHJvbHMoS2V5
Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBLZXlib2FyZFVJTW9kZSBrZXlib2FyZFVJTW9kZSA9IHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+a2V5Ym9hcmRVSU1vZGUoKTsKKyAgICBLZXlib2FyZFVJTW9kZSBrZXli
b2FyZFVJTW9kZSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5rZXlib2FyZFVJTW9kZSgpOwog
ICAgIGJvb2wgaGFuZGxpbmdPcHRpb25UYWIgPSBpc0tleWJvYXJkT3B0aW9uVGFiKGV2ZW50KTsK
IAogICAgIC8vIElmIHRhYi10by1saW5rcyBpcyBvZmYsIG9wdGlvbi10YWIgYWx3YXlzIGhpZ2hs
aWdodHMgYWxsIGNvbnRyb2xzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2lkZ2V0TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5t
bQppbmRleCBmM2RkYTQ4Li41ODAxOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9X
aWRnZXRNYWMubW0KQEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIFdpZGdldDo6c2V0Rm9jdXMoYm9v
bCBmb2N1c2VkKQogICAgIC8vIENhbGwgdGhpcyBldmVuIHdoZW4gdGhlcmUgaXMgbm8gcGxhdGZv
cm1XaWRnZXQoKS4gV0syIHdpbGwgZm9jdXMgb24gdGhlIHdpZGdldCBpbiB0aGUgVUlQcm9jZXNz
LgogICAgIE5TVmlldyAqdmlldyA9IFtwbGF0Zm9ybVdpZGdldCgpIF93ZWJjb3JlX2VmZmVjdGl2
ZUZpcnN0UmVzcG9uZGVyXTsKICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0g
ICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1c05TVmlldyh2aWV3KTsKKyAgICAgICAgcGFnZS0+
Y2hyb21lKCkuZm9jdXNOU1ZpZXcodmlldyk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcApp
bmRleCA3YzY1NDRkLi43MmJlNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgRm9ybURhdGE6OmFwcGVu
ZEtleVZhbHVlUGFpckl0ZW1zKGNvbnN0IEZvcm1EYXRhTGlzdCYgbGlzdCwgY29uc3QgVGV4dEVu
Y29kCiAgICAgICAgICAgICAgICAgICAgIGlmICghcGF0aC5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2UoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBnZW5lcmF0ZWRGaWxlTmFtZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRHZW5lcmF0ZUZpbGUgPSBwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnNob3VsZFJlcGxhY2VXaXRoR2VuZXJhdGVkRmlsZUZvclVwbG9hZChwYXRo
LCBnZW5lcmF0ZWRGaWxlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
R2VuZXJhdGVGaWxlID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnNob3VsZFJlcGxhY2VXaXRo
R2VuZXJhdGVkRmlsZUZvclVwbG9hZChwYXRoLCBnZW5lcmF0ZWRGaWxlTmFtZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEdlbmVyYXRlRmlsZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGdlbmVyYXRlZEZpbGVOYW1lOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgRm9ybURhdGE6OmdlbmVy
YXRlRmlsZXMoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+
cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIENocm9tZUNsaWVu
dCogY2xpZW50ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpOworICAgIENocm9tZUNsaWVudCog
Y2xpZW50ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCk7CiAKICAgICBzaXplX3QgbiA9IG1fZWxl
bWVudHMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKaW5kZXggNzAyNjk5Ni4uMjZl
ODRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcApAQCAt
OTI5LDcgKzkyOSw3IEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnRDdXN0b21IaWdobGlnaHQo
Y29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0LCBjb25zdCBBCiAgICAgRmxvYXRSZWN0IHJv
b3RSZWN0KHBhaW50T2Zmc2V0LngoKSArIHItPngoKSwgcGFpbnRPZmZzZXQueSgpICsgc2VsZWN0
aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0aCgpLCBzZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAgRmxv
YXRSZWN0IHRleHRSZWN0KHBhaW50T2Zmc2V0LngoKSArIHgoKSwgcm9vdFJlY3QueSgpLCBsb2dp
Y2FsV2lkdGgoKSwgcm9vdFJlY3QuaGVpZ2h0KCkpOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChyZW5kZXJlcigpLT5ub2RlKCksIHR5cGUsIHRl
eHRSZWN0LCByb290UmVjdCwgdHJ1ZSwgZmFsc2UpOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChyZW5kZXJlcigpLT5ub2RlKCksIHR5cGUsIHRleHRS
ZWN0LCByb290UmVjdCwgdHJ1ZSwgZmFsc2UpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYWI5Y2JjZi4uYTdjNzM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTE0OTAsMTAgKzE0OTAsMTAgQEAgdm9pZCBS
ZW5kZXJCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0KGNvbnN0IExheW91dFBvaW50JiBwYWludE9m
ZnNldCwgY29uc3QgQXRvbWkKICAgICBpZiAocikgewogICAgICAgICBGbG9hdFJlY3Qgcm9vdFJl
Y3QocGFpbnRPZmZzZXQueCgpICsgci0+eCgpLCBwYWludE9mZnNldC55KCkgKyByLT5zZWxlY3Rp
b25Ub3AoKSwgci0+bG9naWNhbFdpZHRoKCksIHItPnNlbGVjdGlvbkhlaWdodCgpKTsKICAgICAg
ICAgRmxvYXRSZWN0IGltYWdlUmVjdChwYWludE9mZnNldC54KCkgKyB4KCksIHJvb3RSZWN0Lnko
KSwgd2lkdGgoKSwgcm9vdFJlY3QuaGVpZ2h0KCkpOwotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPnBhaW50Q3VzdG9tSGlnaGxpZ2h0KG5vZGUoKSwgdHlwZSwgaW1hZ2VSZWN0LCBy
b290UmVjdCwgYmVoaW5kVGV4dCwgZmFsc2UpOworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS0+cGFpbnRDdXN0b21IaWdobGlnaHQobm9kZSgpLCB0eXBlLCBpbWFnZVJlY3QsIHJvb3RS
ZWN0LCBiZWhpbmRUZXh0LCBmYWxzZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgRmxvYXRSZWN0
IGltYWdlUmVjdChwYWludE9mZnNldC54KCkgKyB4KCksIHBhaW50T2Zmc2V0LnkoKSArIHkoKSwg
d2lkdGgoKSwgaGVpZ2h0KCkpOwotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBh
aW50Q3VzdG9tSGlnaGxpZ2h0KG5vZGUoKSwgdHlwZSwgaW1hZ2VSZWN0LCBpbWFnZVJlY3QsIGJl
aGluZFRleHQsIGZhbHNlKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnBhaW50
Q3VzdG9tSGlnaGxpZ2h0KG5vZGUoKSwgdHlwZSwgaW1hZ2VSZWN0LCBpbWFnZVJlY3QsIGJlaGlu
ZFRleHQsIGZhbHNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCmluZGV4IGY4Y2M4OWQuLmY5MTk2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcApA
QCAtNDMxLDcgKzQzMSw3IEBAIGJvb2wgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzSW5VbmF2YWls
YWJsZVBsdWdpbkluZGljYXRvcihNb3VzZUV2ZW50KiBldmVudCkgY29uCiBzdGF0aWMgYm9vbCBz
aG91bGRVbmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihEb2N1bWVudCogZG9jdW1lbnQs
IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiBwbHVnaW5V
bmF2YWlsYWJpbGl0eVJlYXNvbikKIHsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQtPnBhZ2Uo
KTsKLSAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNob3VsZFVu
YXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
KTsKKyAgICByZXR1cm4gcGFnZSAmJiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+c2hvdWxkVW5h
dmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24ocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24p
OwogfQogCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpoYW5kbGVVbmF2YWlsYWJsZVBsdWdp
bkluZGljYXRvckV2ZW50KEV2ZW50KiBldmVudCkKQEAgLTQ2NSw3ICs0NjUsNyBAQCB2b2lkIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpoYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50
KEV2ZW50KiBldmVudCkKICAgICAgICAgfQogICAgICAgICBpZiAobV9tb3VzZURvd25XYXNJblVu
YXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yICYmIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRv
cihtb3VzZUV2ZW50KSkgewogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgp
LT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT51bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoZWxlbWVudCwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbik7CisgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChlbGVtZW50LCBtX3BsdWdpblVuYXZhaWxhYmlsaXR5
UmVhc29uKTsKICAgICAgICAgfQogICAgICAgICBtX21vdXNlRG93bldhc0luVW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3IgPSBmYWxzZTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4MzlhMzQw
Li4wMWI1ZjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAg
LTIzNDcsNyArMjM0Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnNjcm9sbFJlY3RUb1Zpc2libGUo
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgU2Nyb2xsQWxpZ25tCiAgICAgICAgICAgICAg
ICAgLy8gVGhlIGNhbkF1dG9zY3JvbGwgZnVuY3Rpb24gaW4gRXZlbnRIYW5kbGVyIGFsc28ga25v
d3MgYWJvdXQgdGhpcy4KICAgICAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZnJhbWVW
aWV3LT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJh
bWUtPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5zY3Jv
bGxSZWN0SW50b1ZpZXcocGl4ZWxTbmFwcGVkSW50UmVjdChyZWN0KSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5zY3JvbGxSZWN0SW50b1ZpZXcocGl4ZWxTbmFwcGVk
SW50UmVjdChyZWN0KSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CmluZGV4IDhmNTdjZGMuLmI1Yzk5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgUGFzc093blB0cjxH
cmFwaGljc0xheWVyPiBSZW5kZXJMYXllckJhY2tpbmc6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoY29u
c3QgU3RyaW5nJgogewogICAgIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBncmFwaGljc0xheWVyRmFj
dG9yeSA9IDA7CiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSByZW5kZXJlcigpLT5mcmFtZSgpLT5wYWdl
KCkpCi0gICAgICAgIGdyYXBoaWNzTGF5ZXJGYWN0b3J5ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpOworICAgICAgICBncmFwaGljc0xheWVyRmFjdG9y
eSA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpOwogCiAg
ICAgT3duUHRyPEdyYXBoaWNzTGF5ZXI+IGdyYXBoaWNzTGF5ZXIgPSBHcmFwaGljc0xheWVyOjpj
cmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnksIHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IGVkZWIzMTQuLmE3
MWI4NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmNhY2hlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0ZsYWdzKCkKICAgICAgICAgLy8gb24gYSBj
aHJvbWUgdGhhdCBkb2Vzbid0IGFsbG93IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgogICAgICAg
ICBpZiAoaGFzQWNjZWxlcmF0ZWRDb21wb3NpdGluZykgewogICAgICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSB0aGlzLT5wYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBDaHJvbWVDbGllbnQqIGNo
cm9tZUNsaWVudCA9IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKTsKKyAgICAgICAgICAgICAgICBD
aHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpOwogICAg
ICAgICAgICAgICAgIG1fY29tcG9zaXRpbmdUcmlnZ2VycyA9IGNocm9tZUNsaWVudC0+YWxsb3dl
ZENvbXBvc2l0aW5nVHJpZ2dlcnMoKTsKICAgICAgICAgICAgICAgICBoYXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nID0gbV9jb21wb3NpdGluZ1RyaWdnZXJzOwogICAgICAgICAgICAgfQpAQCAtMzMw
LDcgKzMzMCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzY2hlZHVsZUxheWVyRmx1
c2hOb3coKQogewogICAgIG1faGFzUGVuZGluZ0xheWVyRmx1c2ggPSBmYWxzZTsKICAgICBpZiAo
UGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5zY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOworICAgICAgICBwYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKIH0KIAogdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjaGVkdWxlTGF5ZXJGbHVzaChib29sIGNhblRocm90
dGxlKQpAQCAtMjYyNyw3ICsyNjI3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVw
ZGF0ZU92ZXJmbG93Q29udHJvbHNMYXllcnMoKQogICAgICAgICAgICAgbV9sYXllckZvck92ZXJo
YW5nQXJlYXMtPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgICAgICAgICBtX2xheWVyRm9y
T3ZlcmhhbmdBcmVhcy0+c2V0U2l6ZShtX3JlbmRlclZpZXctPmZyYW1lVmlldygpLT5mcmFtZVJl
Y3QoKS5zaXplKCkpOwogCi0gICAgICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2V0
VXBPdmVyaGFuZ0FyZWFzTGF5ZXJDb250ZW50cyhtX2xheWVyRm9yT3ZlcmhhbmdBcmVhcy5nZXQo
KSwgdGhpcy0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnVuZGVybGF5Q29sb3IoKSk7Cisg
ICAgICAgICAgICBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2V0VXBPdmVyaGFuZ0FyZWFzTGF5
ZXJDb250ZW50cyhtX2xheWVyRm9yT3ZlcmhhbmdBcmVhcy5nZXQoKSwgdGhpcy0+cGFnZSgpLT5j
aHJvbWUoKS5jbGllbnQoKS0+dW5kZXJsYXlDb2xvcigpKTsKIAogICAgICAgICAgICAgLy8gV2Ug
d2FudCB0aGUgb3ZlcmhhbmcgYXJlYXMgbGF5ZXIgdG8gYmUgcG9zaXRpb25lZCBiZWxvdyB0aGUg
ZnJhbWUgY29udGVudHMsCiAgICAgICAgICAgICAvLyBzbyBpbnNlcnQgaXQgYmVsb3cgdGhlIGNs
aXAgbGF5ZXIuCkBAIC0yODUyLDcgKzI4NTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6YXR0YWNoUm9vdExheWVyKFJvb3RMYXllckF0dGFjaG1lbnQgYXR0YWNobWVudCkKICAgICAg
ICAgICAgIGlmICghcGFnZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIoZnJhbWUs
IHJvb3RHcmFwaGljc0xheWVyKCkpOworICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCktPmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKGZyYW1lLCByb290R3JhcGhpY3NMYXllcigpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgUm9vdExheWVyQXR0
YWNoZWRWaWFFbmNsb3NpbmdGcmFtZTogewpAQCAtMjg5Niw3ICsyODk2LDcgQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmRldGFjaFJvb3RMYXllcigpCiAgICAgICAgIGlmICghcGFnZSkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKGZyYW1lLCAwKTsKKyAgICAgICAgcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCktPmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKGZyYW1lLCAwKTsKICAgICB9CiAg
ICAgYnJlYWs7CiAgICAgY2FzZSBSb290TGF5ZXJVbmF0dGFjaGVkOgpAQCAtMzE3NCw3ICszMTc0
LDcgQEAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKSBjb25zdAogR3JhcGhpY3NMYXllckZhY3RvcnkqIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6Z3JhcGhpY3NMYXllckZhY3RvcnkoKSBjb25zdAogewogICAgIGlmIChQYWdl
KiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpOworICAgICAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCk7CiAKICAgICByZXR1cm4gMDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDdm
NmQyOTguLmZhMGQxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJNZW51TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcApAQCAtMTE2LDEzICsxMTYsMTMgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0
SW5uZXJTdHlsZSgpCiAgICAgaW5uZXJTdHlsZS0+c2V0UGFkZGluZ1RvcChMZW5ndGgodGhlbWUo
KS0+cG9wdXBJbnRlcm5hbFBhZGRpbmdUb3Aoc3R5bGUoKSksIEZpeGVkKSk7CiAgICAgaW5uZXJT
dHlsZS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgodGhlbWUoKS0+cG9wdXBJbnRlcm5hbFBhZGRp
bmdCb3R0b20oc3R5bGUoKSksIEZpeGVkKSk7CiAKLSAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgp
LT5jaHJvbWUoKS0+c2VsZWN0SXRlbVdyaXRpbmdEaXJlY3Rpb25Jc05hdHVyYWwoKSkgeworICAg
IGlmIChkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0
aW9uSXNOYXR1cmFsKCkpIHsKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBvcHVwIHdpbGwgbm90
IHJlc3BlY3QgdGhlIENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJvcGVydGllcywKICAg
ICAgICAgLy8gc28gd2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBtYXRjaC4KICAgICAg
ICAgaW5uZXJTdHlsZS0+c2V0VGV4dEFsaWduKExFRlQpOwogICAgICAgICBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCktPmRlZmF1
bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gV1RGOjpVbmljb2RlOjpSaWdodFRvTGVmdCkgPyBSVEwg
OiBMVFI7CiAgICAgICAgIGlubmVyU3R5bGUtPnNldERpcmVjdGlvbihkaXJlY3Rpb24pOwotICAg
IH0gZWxzZSBpZiAobV9vcHRpb25TdHlsZSAmJiBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LT5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKKyAg
ICB9IGVsc2UgaWYgKG1fb3B0aW9uU3R5bGUgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KS5zZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKICAg
ICAgICAgaWYgKChtX29wdGlvblN0eWxlLT5kaXJlY3Rpb24oKSAhPSBpbm5lclN0eWxlLT5kaXJl
Y3Rpb24oKSB8fCBtX29wdGlvblN0eWxlLT51bmljb2RlQmlkaSgpICE9IGlubmVyU3R5bGUtPnVu
aWNvZGVCaWRpKCkpKQogICAgICAgICAgICAgbV9pbm5lckJsb2NrLT5zZXROZWVkc0xheW91dEFu
ZFByZWZXaWR0aHNSZWNhbGMoKTsKICAgICAgICAgaW5uZXJTdHlsZS0+c2V0VGV4dEFsaWduKHN0
eWxlKCktPmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IExFRlQgOiBSSUdIVCk7CkBAIC0zMjMs
NyArMzIzLDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6c2hvd1BvcHVwKCkKICAgICBpZiAobV9w
b3B1cElzVmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGRvY3VtZW50KCktPnBh
Z2UoKS0+Y2hyb21lKCktPmhhc09wZW5lZFBvcHVwKCkpCisgICAgaWYgKGRvY3VtZW50KCktPnBh
Z2UoKS0+Y2hyb21lKCkuaGFzT3BlbmVkUG9wdXAoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gQ3JlYXRlIG1faW5uZXJCbG9jayBoZXJlIHNvIGl0IGVuZHMgdXAgYXMgdGhlIGZpcnN0IGNo
aWxkLgpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgp
CiAgICAgLy8gaW5zaWRlIHRoZSBzaG93UG9wdXAgY2FsbCBhbmQgaXQgd291bGQgZmFpbC4KICAg
ICBjcmVhdGVJbm5lckJsb2NrKCk7CiAgICAgaWYgKCFtX3BvcHVwKQotICAgICAgICBtX3BvcHVw
ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlUG9wdXBNZW51KHRoaXMpOwor
ICAgICAgICBtX3BvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5jcmVhdGVQb3B1
cE1lbnUodGhpcyk7CiAgICAgbV9wb3B1cElzVmlzaWJsZSA9IHRydWU7CiAKICAgICAvLyBDb21w
dXRlIHRoZSB0b3AgbGVmdCB0YWtpbmcgdHJhbnNmb3JtcyBpbnRvIGFjY291bnQsIGJ1dCB1c2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTZWFyY2hGaWVsZC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQuY3BwCmluZGV4
IGMzNmU4MzQuLjUwZDI5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTZWFyY2hGaWVsZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNlYXJjaEZpZWxkLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVuZGVyU2VhcmNoRmll
bGQ6OmFkZFNlYXJjaFJlc3VsdCgpCiAKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBh
dXRvc2F2ZU5hbWUoKTsKICAgICBpZiAoIW1fc2VhcmNoUG9wdXApCi0gICAgICAgIG1fc2VhcmNo
UG9wdXAgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jcmVhdGVTZWFyY2hQb3B1cE1l
bnUodGhpcyk7CisgICAgICAgIG1fc2VhcmNoUG9wdXAgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLmNyZWF0ZVNlYXJjaFBvcHVwTWVudSh0aGlzKTsKIAogICAgIG1fc2VhcmNoUG9wdXAt
PnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJjaGVzKTsKIH0KQEAgLTExOCw3
ICsxMTgsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZpZWxkOjpzaG93UG9wdXAoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoIW1fc2VhcmNoUG9wdXApCi0gICAgICAgIG1fc2VhcmNoUG9wdXAg
PSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhp
cyk7CisgICAgICAgIG1fc2VhcmNoUG9wdXAgPSBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LmNyZWF0ZVNlYXJjaFBvcHVwTWVudSh0aGlzKTsKIAogICAgIGlmICghbV9zZWFyY2hQb3B1cC0+
ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBSZW5k
ZXJTZWFyY2hGaWVsZDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJl
RXZlbnRzKQogICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gYXV0b3NhdmVO
YW1lKCk7CiAgICAgICAgICAgICBpZiAoIW5hbWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICAgICAgICAgICAgICBtX3NlYXJjaFBvcHVw
ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNoUG9wdXBNZW51KHRo
aXMpOworICAgICAgICAgICAgICAgICAgICBtX3NlYXJjaFBvcHVwID0gZG9jdW1lbnQoKS0+cGFn
ZSgpLT5jaHJvbWUoKS5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhpcyk7CiAgICAgICAgICAgICAg
ICAgbV9zZWFyY2hQb3B1cC0+c2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIG1fcmVjZW50U2VhcmNo
ZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
Um9vdElubGluZUJveC5jcHAKaW5kZXggNWUyNjk2Yi4uNDcwM2E2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcApAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQg
Um9vdElubGluZUJveDo6YWRkSGlnaGxpZ2h0T3ZlcmZsb3coKQogCiAgICAgLy8gSGlnaGxpZ2h0
IGFjdHMgYXMgYSBzZWxlY3Rpb24gaW5mbGF0aW9uLgogICAgIEZsb2F0UmVjdCByb290UmVjdCgw
LCBzZWxlY3Rpb25Ub3AoKSwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCgpKTsKLSAg
ICBJbnRSZWN0IGluZmxhdGVkUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QocGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+aGlnaGxpZ2h0KCksIHJvb3RSZWN0KSk7CisgICAgSW50UmVjdCBpbmZs
YXRlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jdXN0
b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgcmVuZGVyZXIoKS0+c3R5bGUoKS0+
aGlnaGxpZ2h0KCksIHJvb3RSZWN0KSk7CiAgICAgc2V0T3ZlcmZsb3dGcm9tTG9naWNhbFJlY3Rz
KGluZmxhdGVkUmVjdCwgaW5mbGF0ZWRSZWN0LCBsaW5lVG9wKCksIGxpbmVCb3R0b20oKSk7CiB9
CiAKQEAgLTIwMiw5ICsyMDIsOSBAQCB2b2lkIFJvb3RJbmxpbmVCb3g6OnBhaW50Q3VzdG9tSGln
aGxpZ2h0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludAogCiAgICAgLy8g
R2V0IHRoZSBpbmZsYXRlZCByZWN0IHNvIHRoYXQgd2UgY2FuIHByb3Blcmx5IGhpdCB0ZXN0Lgog
ICAgIEZsb2F0UmVjdCByb290UmVjdChwYWludE9mZnNldC54KCkgKyB4KCksIHBhaW50T2Zmc2V0
LnkoKSArIHNlbGVjdGlvblRvcCgpLCBsb2dpY2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0KCkp
OwotICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3QgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PmN1c3RvbUhpZ2hsaWdodFJlY3QocmVuZGVyZXIoKS0+bm9kZSgpLCBoaWdobGlnaHRUeXBlLCBy
b290UmVjdCk7CisgICAgRmxvYXRSZWN0IGluZmxhdGVkUmVjdCA9IHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLT5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxpZ2h0
VHlwZSwgcm9vdFJlY3QpOwogICAgIGlmIChpbmZsYXRlZFJlY3QuaW50ZXJzZWN0cyhwYWludElu
Zm8ucmVjdCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFpbnRDdXN0b21I
aWdobGlnaHQocmVuZGVyZXIoKS0+bm9kZSgpLCBoaWdobGlnaHRUeXBlLCByb290UmVjdCwgcm9v
dFJlY3QsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnBh
aW50Q3VzdG9tSGlnaGxpZ2h0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxpZ2h0VHlwZSwgcm9v
dFJlY3QsIHJvb3RSZWN0LCBmYWxzZSwgdHJ1ZSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggYWM2ZjVkOC4uMTBh
NjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
b290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwCkBAIC0xMzAsMTAgKzEzMCwxMCBAQCBib29sIFJlbmRlclNWR1Jvb3Q6OmlzRW1iZWRkZWRU
aHJvdWdoU1ZHSW1hZ2UoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBU
ZXN0IHdoZXRoZXIgd2UncmUgZW1iZWRkZWQgdGhyb3VnaCBhbiBpbWcuCi0gICAgaWYgKCFmcmFt
ZS0+cGFnZSgpIHx8ICFmcmFtZS0+cGFnZSgpLT5jaHJvbWUoKSkKKyAgICBpZiAoIWZyYW1lLT5w
YWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIENocm9tZUNsaWVudCogY2hyb21l
Q2xpZW50ID0gZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpOworICAgIENocm9tZUNs
aWVudCogY2hyb21lQ2xpZW50ID0gZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCk7CiAg
ICAgaWYgKCFjaHJvbWVDbGllbnQgfHwgIWNocm9tZUNsaWVudC0+aXNTVkdJbWFnZUNocm9tZUNs
aWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAppbmRleCBlOTQ1ZWYzLi5iNmYwOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0VG9Db25z
aXN0ZW50U3RhdGUoUGFnZSogcGFnZSkKICAgICBkZWxldGUgc19wYWdlUG9wdXBEcml2ZXI7CiAg
ICAgc19wYWdlUG9wdXBEcml2ZXIgPSAwOwogICAgIGlmIChwYWdlLT5jaHJvbWUoKSkKLSAgICAg
ICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZXNldFBhZ2VQb3B1cERyaXZlcigpOworICAg
ICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+cmVzZXRQYWdlUG9wdXBEcml2ZXIoKTsKICNl
bmRpZgogI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogICAgIGlmIChwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkpCkBAIC03NzUsMTIgKzc3NSwx
MiBAQCB2b2lkIEludGVybmFsczo6c2V0RW5hYmxlTW9ja1BhZ2VQb3B1cChib29sIGVuYWJsZWQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm47CiAgICAgUGFnZSogcGFnZSA9IGRv
Y3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKCFlbmFibGVkKSB7Ci0gICAgICAgIHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+cmVzZXRQYWdlUG9wdXBEcml2ZXIoKTsKKyAgICAgICAgcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnJlc2V0UGFnZVBvcHVwRHJpdmVyKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKCFzX3BhZ2VQb3B1cERyaXZlcikKICAgICAgICAgc19wYWdlUG9wdXBE
cml2ZXIgPSBNb2NrUGFnZVBvcHVwRHJpdmVyOjpjcmVhdGUocGFnZS0+bWFpbkZyYW1lKCkpLmxl
YWtQdHIoKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNldFBhZ2VQb3B1cERyaXZl
cihzX3BhZ2VQb3B1cERyaXZlcik7CisgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnNldFBh
Z2VQb3B1cERyaXZlcihzX3BhZ2VQb3B1cERyaXZlcik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShlbmFibGVkKTsKICAgICBVTlVTRURfUEFSQU0oZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9BcGkvV2ViUGFnZS5jcHAKaW5kZXggYzU0ZThlZC4uY2JjZWEyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCkBAIC0zMTUwLDcgKzMxNTAsNyBAQCB2b2lkIFdl
YlBhZ2VQcml2YXRlOjpzZXRWaXNpYmxlKGJvb2wgdmlzaWJsZSkKICAgICAgICAgICAgICAgICBt
X3BhZ2UtPnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKTsKIAogICAgICAgICAgICAgaWYgKG1f
d2ViUGFnZS0+aGFzT3BlbmVkUG9wdXAoKSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgICAgICAgICAgICAgbV9wYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBtX3Zpc2libGUgPSB2aXNpYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5k
ZXggYjQ1NDUzOC4uYjQzOTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAgQEAKKzIwMTMtMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgorCisgICAgICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisg
ICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKwogMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEg
cmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvQ29sb3JQaWNrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0NvbG9yUGlja2VyQ2xpZW50LmNwcAppbmRleCAyMGZiNjQ2Li4yNGRlMzVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQ29s
b3JQaWNrZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBDb2xv
clBpY2tlckNsaWVudDo6Z2VuZXJhdGVIVE1MKGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmcmIHZhbHVlKQogdm9pZCBDb2xvclBpY2tlckNsaWVudDo6Y2xvc2VQb3B1cCgpCiB7CiAg
ICAgQVNTRVJUKG1fd2ViUGFnZSk7Ci0gICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKIH0KIAogSW50U2l6ZSBDb2xvclBpY2tl
ckNsaWVudDo6Y29udGVudFNpemUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuY3BwCmluZGV4IDEwNzEx
MTkuLjllMjkxYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5jcHAKQEAgLTE0MSw3ICsxNDEsNyBA
QCB2b2lkIERhdGVQaWNrZXJDbGllbnQ6OmdlbmVyYXRlSFRNTChCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6QmxhY2tCZXJyeUlucHV0VHlwZSB0eQogdm9pZCBEYXRlUGlja2VyQ2xpZW50OjpjbG9zZVBv
cHVwKCkKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlKTsKLSAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKKyAgICBtX3dlYlBhZ2UtPm1f
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOwogfQogCiBJbnRTaXpl
IERhdGVQaWNrZXJDbGllbnQ6OmNvbnRlbnRTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3Bw
CmluZGV4IDA1YzA0MDYuLjY2OWNmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcApAQCAt
MTUxLDcgKzE1MSw3IEBAIHZvaWQgU2VsZWN0UG9wdXBDbGllbnQ6OmdlbmVyYXRlSFRNTChib29s
LCBpbnQgc2l6ZSwgY29uc3QgU2NvcGVBcnJheTxCbGFja0JlcnJ5CiB2b2lkIFNlbGVjdFBvcHVw
Q2xpZW50OjpjbG9zZVBvcHVwKCkKIHsKICAgICBBU1NFUlQobV93ZWJQYWdlKTsKLSAgICBtX3dl
YlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKKyAg
ICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDAp
OwogfQogCiBJbnRTaXplIFNlbGVjdFBvcHVwQ2xpZW50Ojpjb250ZW50U2l6ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcAppbmRleCBmZTJjM2IzLi41OTVlYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHAKQEAgLTEyMTMsMTQg
KzEyMTMsMTQgQEAgYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5EYXRlUG9wdXAoSFRNTElucHV0RWxl
bWVudCogZWxlbWVudCwgQmxhY2tCZXJyeUlucHV0VHlwZQogICAgICAgICBlbGVtZW50LT5kb2N1
bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0Q2FyZXRWaXNpYmxlKGZhbHNlKTsKIAog
ICAgICAgICAvLyBDaGVjayBpZiBwb3B1cCBhbHJlYWR5IGV4aXN0cywgY2xvc2UgaXQgaWYgZG9l
cy4KLSAgICAgICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+Y2xvc2VQ
YWdlUG9wdXAoMCk7CisgICAgICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS0+Y2xvc2VQYWdlUG9wdXAoMCk7CiAgICAgICAgIFdURjo6U3RyaW5nIHZhbHVlID0gZWxlbWVu
dC0+dmFsdWUoKTsKICAgICAgICAgV1RGOjpTdHJpbmcgbWluID0gZWxlbWVudC0+Z2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6bWluQXR0cikuc3RyaW5nKCk7CiAgICAgICAgIFdURjo6U3RyaW5nIG1h
eCA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6Om1heEF0dHIpLnN0cmluZygpOwog
ICAgICAgICBkb3VibGUgc3RlcCA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OnN0
ZXBBdHRyKS50b0RvdWJsZSgpOwogCiAgICAgICAgIERhdGVQaWNrZXJDbGllbnQqIGNsaWVudCA9
IG5ldyBEYXRlUGlja2VyQ2xpZW50KHR5cGUsIHZhbHVlLCBtaW4sIG1heCwgc3RlcCwgIG1fd2Vi
UGFnZSwgZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT5vcGVuUGFnZVBvcHVwKGNsaWVudCwgIFdlYkNvcmU6OkludFJlY3QoKSk7
CisgICAgICAgIHJldHVybiBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm9w
ZW5QYWdlUG9wdXAoY2xpZW50LCAgV2ViQ29yZTo6SW50UmVjdCgpKTsKICAgICAgICAgfQogICAg
IGRlZmF1bHQ6IC8vIE90aGVyIHR5cGVzIG5vdCBzdXBwb3J0ZWQKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTIzOSwxMCArMTIzOSwxMCBAQCBib29sIElucHV0SGFuZGxlcjo6b3BlbkNvbG9y
UG9wdXAoSFRNTElucHV0RWxlbWVudCogZWxlbWVudCkKICAgICBtX2N1cnJlbnRGb2N1c0VsZW1l
bnRUeXBlID0gVGV4dFBvcHVwOwogCiAgICAgLy8gQ2hlY2sgaWYgcG9wdXAgYWxyZWFkeSBleGlz
dHMsIGNsb3NlIGl0IGlmIGRvZXMuCi0gICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKIAogICAgIENvbG9yUGlja2VyQ2xpZW50
KiBjbGllbnQgPSBuZXcgQ29sb3JQaWNrZXJDbGllbnQoZWxlbWVudC0+dmFsdWUoKSwgbV93ZWJQ
YWdlLCBlbGVtZW50KTsKLSAgICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+b3BlblBhZ2VQb3B1cChjbGllbnQsICBXZWJDb3JlOjpJbnRSZWN0KCkpOworICAg
IHJldHVybiBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm9wZW5QYWdlUG9w
dXAoY2xpZW50LCAgV2ViQ29yZTo6SW50UmVjdCgpKTsKIH0KIAogdm9pZCBJbnB1dEhhbmRsZXI6
OnNldElucHV0VmFsdWUoY29uc3QgV1RGOjpTdHJpbmcmIHZhbHVlKQpAQCAtMTk3Miw3ICsxOTcy
LDcgQEAgYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5TZWxlY3RQb3B1cChIVE1MU2VsZWN0RWxlbWVu
dCogc2VsZWN0KQogICAgIGxhYmVscy5yZXNldChuZXcgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0
cmluZ1tzaXplXSk7CiAKICAgICAvLyBDaGVjayBpZiBwb3B1cCBhbHJlYWR5IGV4aXN0cywgY2xv
c2UgaXQgaWYgZG9lcy4KLSAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5jbG9zZVBhZ2VQb3B1cCgwKTsKKyAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOwogCiAgICAgYm9vbCogZW5hYmxlZHMgPSAwOwogICAg
IGludCogaXRlbVR5cGVzID0gMDsKQEAgLTIwMDYsNyArMjAwNiw3IEBAIGJvb2wgSW5wdXRIYW5k
bGVyOjpvcGVuU2VsZWN0UG9wdXAoSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCkKICAgICBTZWxl
Y3RQb3B1cENsaWVudCogc2VsZWN0Q2xpZW50ID0gbmV3IFNlbGVjdFBvcHVwQ2xpZW50KG11bHRp
cGxlLCBzaXplLCBsYWJlbHMsIGVuYWJsZWRzLCBpdGVtVHlwZXMsIHNlbGVjdGVkcywgbV93ZWJQ
YWdlLCBzZWxlY3QpOwogICAgIFdlYkNvcmU6OkludFJlY3QgZWxlbWVudFJlY3RJblJvb3RWaWV3
ID0gc2VsZWN0LT5kb2N1bWVudCgpLT52aWV3KCktPmNvbnRlbnRzVG9Sb290VmlldyhlbmNsb3Np
bmdJbnRSZWN0KHNlbGVjdC0+Z2V0UmVjdCgpKSk7CiAgICAgLy8gRmFpbCB0byBjcmVhdGUgSFRN
TCBwb3B1cCwgdXNlIHRoZSBvbGQgcGF0aAotICAgIGlmICghbV93ZWJQYWdlLT5tX3BhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cChzZWxlY3RDbGllbnQsIGVsZW1lbnRSZWN0
SW5Sb290VmlldykpCisgICAgaWYgKCFtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCktPm9wZW5QYWdlUG9wdXAoc2VsZWN0Q2xpZW50LCBlbGVtZW50UmVjdEluUm9vdFZpZXcpKQog
ICAgICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5vcGVuUG9wdXBMaXN0KG11bHRpcGxlLCBzaXpl
LCBsYWJlbHMsIGVuYWJsZWRzLCBpdGVtVHlwZXMsIHNlbGVjdGVkcyk7CiAgICAgZGVsZXRlW10g
ZW5hYmxlZHM7CiAgICAgZGVsZXRlW10gaXRlbVR5cGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDlh
YzRmNzUuLmE4YzZkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0w
NS0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6
Y2hyb21lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvMTE2MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CiAyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudUVmbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuY3BwCmluZGV4IDQ1
MzUwNmUuLmY3MDM0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BvcHVwTWVudUVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvUG9wdXBNZW51RWZsLmNwcApAQCAtNTEsNyArNTEsNyBAQCBQb3B1cE1lbnVFZmw6On5Qb3B1
cE1lbnVFZmwoKQogdm9pZCBQb3B1cE1lbnVFZmw6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwg
RnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB7CiAgICAgQVNTRVJUKG1fcG9wdXBDbGllbnQp
OwotICAgIENocm9tZUNsaWVudEVmbCogY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21l
Q2xpZW50RWZsKj4odmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkpOwor
ICAgIENocm9tZUNsaWVudEVmbCogY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xp
ZW50RWZsKj4odmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKSk7CiAgICAg
QVNTRVJUKGNocm9tZUNsaWVudCk7CiAKICAgICBtX3ZpZXcgPSB2aWV3OwpAQCAtNjEsNyArNjEs
NyBAQCB2b2lkIFBvcHVwTWVudUVmbDo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZp
ZXcqIHZpZXcsIGludCBpbmRleCkKIHZvaWQgUG9wdXBNZW51RWZsOjpoaWRlKCkKIHsKICAgICBB
U1NFUlQobV92aWV3KTsKLSAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRp
Y19jYXN0PENocm9tZUNsaWVudEVmbCo+KG1fdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUo
KS0+Y2xpZW50KCkpOworICAgIENocm9tZUNsaWVudEVmbCogY2hyb21lQ2xpZW50ID0gc3RhdGlj
X2Nhc3Q8Q2hyb21lQ2xpZW50RWZsKj4obV92aWV3LT5mcmFtZSgpLT5wYWdlKCktPmNocm9tZSgp
LmNsaWVudCgpKTsKICAgICBBU1NFUlQoY2hyb21lQ2xpZW50KTsKIAogICAgIGNocm9tZUNsaWVu
dC0+ZGVzdHJveVNlbGVjdFBvcHVwKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRl
eCA0YThhYWYzLi5hMzc1MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTEz
MjcsOCArMTMyNyw4IEBAIHN0YXRpYyBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgX2V3a192
aWV3X3ZpZXdwb3J0X2F0dHJpYnV0ZXNfY29tcHV0ZShFd2tfVmllCiAgICAgaW50IGRldmljZURQ
SSA9IFdlYkNvcmU6OmdldERQSSgpOwogICAgIHByaXYtPnNldHRpbmdzLmRldmljZVBpeGVsUmF0
aW8gPSBkZXZpY2VEUEkgLyBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6ZGVwcmVjYXRlZFRh
cmdldERQSTsKIAotICAgIFdlYkNvcmU6OkludFJlY3QgYXZhaWxhYmxlUmVjdCA9IGVuY2xvc2lu
Z0ludFJlY3QocHJpdi0+cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wYWdlUmVjdCgpKTsKLSAg
ICBXZWJDb3JlOjpJbnRSZWN0IGRldmljZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHByaXYtPnBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2luZG93UmVjdCgpKTsKKyAgICBXZWJDb3JlOjpJbnRS
ZWN0IGF2YWlsYWJsZVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHByaXYtPnBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLT5wYWdlUmVjdCgpKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGRldmljZVJlY3Qg
PSBlbmNsb3NpbmdJbnRSZWN0KHByaXYtPnBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT53aW5kb3dS
ZWN0KCkpOwogCiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBX
ZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKHByaXYtPnZpZXdwb3J0QXJndW1lbnRz
LCBkZXNrdG9wV2lkdGgsIGRldmljZVJlY3Qud2lkdGgoKSwgZGV2aWNlUmVjdC5oZWlnaHQoKSwg
cHJpdi0+c2V0dGluZ3MuZGV2aWNlUGl4ZWxSYXRpbywgYXZhaWxhYmxlUmVjdC5zaXplKCkpOwog
ICAgIFdlYkNvcmU6OnJlc3RyaWN0TWluaW11bVNjYWxlRmFjdG9yVG9WaWV3cG9ydFNpemUoYXR0
cmlidXRlcywgYXZhaWxhYmxlUmVjdC5zaXplKCksIHByaXYtPnNldHRpbmdzLmRldmljZVBpeGVs
UmF0aW8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDY5NjBkMGIuLmJlMjJmOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0wNS0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hyb21lKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2MTg1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCmluZGV4IDM3MGNk
MzEuLjQxNzRhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApAQCAtNDM4LDcgKzQzOCw3
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmb3JjZVdlYlZpZXdQYWludChXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKIAotICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50
Kj4oY29yZSh3ZWJWaWV3KS0+Y2hyb21lKCktPmNsaWVudCgpKS0+Zm9yY2VQYWludCgpOworICAg
IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4oY29yZSh3ZWJWaWV3KS0+Y2hyb21l
KCkuY2xpZW50KCkpLT5mb3JjZVBhaW50KCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0R3RrOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IGdjaGFyKiBzb3VyY2VPcmln
aW4sIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBnY2hhciogZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcAppbmRl
eCBkZjMxMzJiLi45NzcyNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcApAQCAtNTIxLDExICs1MjEsMTEgQEAgdm9p
ZCB3ZWJraXRWaWV3cG9ydEF0dHJpYnV0ZXNSZWNvbXB1dGUoV2ViS2l0Vmlld3BvcnRBdHRyaWJ1
dGVzKiB2aWV3cG9ydEF0dHJpYnUKICAgICBXZWJLaXRWaWV3cG9ydEF0dHJpYnV0ZXNQcml2YXRl
KiBwcml2ID0gdmlld3BvcnRBdHRyaWJ1dGVzLT5wcml2OwogICAgIFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcgPSBwcml2LT53ZWJWaWV3OwogCi0gICAgSW50UmVjdCB3aW5kb3dSZWN0KHdlYlZpZXct
PnByaXYtPmNvcmVQYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpKTsKKyAgICBJbnRSZWN0IHdp
bmRvd1JlY3Qod2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKSk7
CiAgICAgcHJpdi0+ZGV2aWNlV2lkdGggPSB3aW5kb3dSZWN0LndpZHRoKCk7CiAgICAgcHJpdi0+
ZGV2aWNlSGVpZ2h0ID0gd2luZG93UmVjdC5oZWlnaHQoKTsKIAotICAgIEludFJlY3QgcmVjdCh3
ZWJWaWV3LT5wcml2LT5jb3JlUGFnZS0+Y2hyb21lKCktPnBhZ2VSZWN0KCkpOworICAgIEludFJl
Y3QgcmVjdCh3ZWJWaWV3LT5wcml2LT5jb3JlUGFnZS0+Y2hyb21lKCkucGFnZVJlY3QoKSk7CiAg
ICAgcHJpdi0+YXZhaWxhYmxlV2lkdGggPSByZWN0LndpZHRoKCk7CiAgICAgcHJpdi0+YXZhaWxh
YmxlSGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCmluZGV4IGM1ODJiNjYuLjc5MTMzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQ3MSw3ICs0NzEsNyBAQCBzdGF0aWMg
dm9pZCBzZXRIb3Jpem9udGFsQWRqdXN0bWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtB
ZGp1c3RtZW50KiBhZGp1cwogICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxlZCBhZnRlciB0aGUgcGFn
ZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGluIHdoaWNoIGNhc2Ugd2UgZG8gbm90aGluZy4KICAgICBQ
YWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKICAgICBpZiAocGFnZSkKLSAgICAgICAgc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5h
ZGp1c3RtZW50V2F0Y2hlcigpLT5zZXRIb3Jpem9udGFsQWRqdXN0bWVudChhZGp1c3RtZW50KTsK
KyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUo
KS5jbGllbnQoKSktPmFkanVzdG1lbnRXYXRjaGVyKCktPnNldEhvcml6b250YWxBZGp1c3RtZW50
KGFkanVzdG1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRWZXJ0aWNhbEFkanVzdG1lbnQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRqdXN0bWVudCogYWRqdXN0bWVudCkKQEAgLTQ3OSw3
ICs0NzksNyBAQCBzdGF0aWMgdm9pZCBzZXRWZXJ0aWNhbEFkanVzdG1lbnQoV2ViS2l0V2ViVmll
dyogd2ViVmlldywgR3RrQWRqdXN0bWVudCogYWRqdXN0bQogICAgIC8vIFRoaXMgbWF5IGJlIGNh
bGxlZCBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGluIHdoaWNoIGNhc2Ugd2Ug
ZG8gbm90aGluZy4KICAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKICAgICBpZiAocGFn
ZSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT5zZXRWZXJ0aWNhbEFkanVzdG1l
bnQoYWRqdXN0bWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50
Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT5zZXRWZXJ0
aWNhbEFkanVzdG1lbnQoYWRqdXN0bWVudCk7CiB9CiAKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9O
XzIKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgR3RrQWRqdXN0bWVudCogZ2V0SG9yaXpvbnRh
bEFkanVzdG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBQYWdlKiBwYWdlID0g
Y29yZSh3ZWJWaWV3KTsKICAgICBpZiAocGFnZSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKS0+YWRqdXN0
bWVudFdhdGNoZXIoKS0+aG9yaXpvbnRhbEFkanVzdG1lbnQoKTsKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkp
LT5hZGp1c3RtZW50V2F0Y2hlcigpLT5ob3Jpem9udGFsQWRqdXN0bWVudCgpOwogICAgIHJldHVy
biAwOwogfQogCkBAIC00OTUsNyArNDk1LDcgQEAgc3RhdGljIEd0a0FkanVzdG1lbnQqIGdldFZl
cnRpY2FsQWRqdXN0bWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFBhZ2UqIHBh
Z2UgPSBjb3JlKHdlYlZpZXcpOwogICAgIGlmIChwYWdlKQotICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5h
ZGp1c3RtZW50V2F0Y2hlcigpLT52ZXJ0aWNhbEFkanVzdG1lbnQoKTsKKyAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50
KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT52ZXJ0aWNhbEFkanVzdG1lbnQoKTsKICAgICByZXR1
cm4gMDsKIH0KIApAQCAtODY4LDcgKzg2OCw3IEBAIHN0YXRpYyB2b2lkIHJlc2l6ZVdlYlZpZXdG
cm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtBbGxvY2F0aW9uKiBhCiAg
ICAgaWYgKCFzaXplQ2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViS2l0OjpDaHJv
bWVDbGllbnQqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50
Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKTsKKyAgICBXZWJLaXQ6OkNocm9tZUNsaWVudCog
Y2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5j
aHJvbWUoKS5jbGllbnQoKSk7CiAgICAgY2hyb21lQ2xpZW50LT53aWRnZXRTaXplQ2hhbmdlZChv
bGRTaXplLCBJbnRTaXplKGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0aW9uLT5oZWlnaHQpKTsK
ICAgICBjaHJvbWVDbGllbnQtPmFkanVzdG1lbnRXYXRjaGVyKCktPnVwZGF0ZUFkanVzdG1lbnRz
RnJvbVNjcm9sbGJhcnMoKTsKIH0KQEAgLTU1MzgsNyArNTUzOCw3IEBAIFdlYktpdFdlYlZpZXcq
IGtpdChXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBB
U1NFUlQoY29yZVBhZ2UtPmNocm9tZSgpKTsKLSAgICBXZWJLaXQ6OkNocm9tZUNsaWVudCogY2xp
ZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihjb3JlUGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpKTsKKyAgICBXZWJLaXQ6OkNocm9tZUNsaWVudCogY2xpZW50ID0gc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihjb3JlUGFnZS0+Y2hyb21lKCkuY2xpZW50KCkp
OwogICAgIHJldHVybiBjbGllbnQgPyBzdGF0aWNfY2FzdDxXZWJLaXRXZWJWaWV3Kj4oY2xpZW50
LT53ZWJWaWV3KCkpIDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFlNWI4ZDEuLjFjY2Ex
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0wNS0xNSAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hyb21lKCkgc2hv
dWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2
MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDEzLTA1LTEz
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWU6
OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lLm1tCmluZGV4IGEwMzU0YjQuLmVkNGE1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIFBhZ2UqIGNvcmUoV2ViVmlldyAq
d2ViVmlldykKIAogV2ViVmlldyAqa2l0KFBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHBhZ2Ug
PyBzdGF0aWNfY2FzdDxXZWJWaWV3Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT53ZWJWaWV3
KCkpIDogbmlsOworICAgIHJldHVybiBwYWdlID8gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLT53ZWJWaWV3KCkpIDogbmlsOwogfQogCiBXZWJWaWV3ICpnZXRX
ZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCmluZGV4IGUxNjY5ZDcuLmI2NTY2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzA5OCw3ICszMDk4LDcgQEAgc3RhdGljIHZvaWQgc2V0
TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIF9wcml2YXRlLT5oYW5kbGluZ01vdXNlRG93
bkV2ZW50ID0gWUVTOwogICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNv
bnRleHRNZW51KCk7CiAgICAgY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VEb3duKGV2
ZW50KTsKLSAgICBCT09MIGhhbmRsZWRFdmVudCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnNlbmRDb250ZXh0TWVudUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9y
bU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkp
OworICAgIEJPT0wgaGFuZGxlZEV2ZW50ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2Vu
ZENvbnRleHRNZW51RXZlbnQoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91
c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKICAg
ICBfcHJpdmF0ZS0+aGFuZGxpbmdNb3VzZURvd25FdmVudCA9IE5POwogCiAgICAgaWYgKCFoYW5k
bGVkRXZlbnQpCkBAIC0zNDk0LDcgKzM0OTQsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0
cyhOU01lbnUqIG1lbnUpCiAgICAgICAgICAgICBpZiAoW2hpdEhUTUxWaWV3IF9pc1NlbGVjdGlv
bkV2ZW50OmV2ZW50XSkgewogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgICAgICAgICAg
ICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWco
UGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFn
ZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKFBs
YXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2Ut
PmNocm9tZSgpLnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAjZW5kaWYKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAoW2hpdEhUTUxWaWV3IF9pc1Njcm9sbEJhckV2ZW50OmV2ZW50XSkKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSB0cnVlOwpAQCAtMzUyMSw3ICszNTIxLDcgQEAgc3RhdGljIHZvaWQg
c2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAg
ICAgICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW2hpdEhUTUxWaWV3IF9mcmFt
ZV0pKSB7CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3Jt
TW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7
CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1v
dXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAg
ICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIFtoaXRIVE1MVmlldyBfc2V0TW91c2VE
b3duRXZlbnQ6bmlsXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNTkxYWZjZC4uZGE4MmU5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0wNS0xNSAgQW5kcmVhcyBLbGluZyAgPGFr
bGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hyb21lKCkgc2hvdWxkIHJldHVybiBh
IHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2MTg1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDEzLTA1LTEzICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNo
b3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwCmluZGV4IGVlMjQwMjMuLjBlNDQ1MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcApAQCAt
NjQsNyArNjQsNyBAQCBzdGF0aWMgV2ViQ29yZTo6UVN0eWxlRmFjYWRlKiBjcmVhdGVTdHlsZUZv
clBhZ2UoV2ViQ29yZTo6UGFnZSogcGFnZSkKIHsKICAgICBRV2ViUGFnZUFkYXB0ZXIqIHBhZ2VB
ZGFwdGVyID0gMDsKICAgICBpZiAocGFnZSkKLSAgICAgICAgcGFnZUFkYXB0ZXIgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpDaHJvbWVDbGllbnRRdCo+KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSkt
Pm1fd2ViUGFnZTsKKyAgICAgICAgcGFnZUFkYXB0ZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpD
aHJvbWVDbGllbnRRdCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpKS0+bV93ZWJQYWdlOwogICAg
IHJldHVybiBpbml0Q2FsbGJhY2socGFnZUFkYXB0ZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCmlu
ZGV4IDcwYzg1MzIuLjAyZDBiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCkBAIC0xMzcsNyArMTM3LDcg
QEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6cmVmcmVzaFBsdWdpbnMoKQogCiB2b2lkIFBs
YXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdlYkNvcmU6OlBhZ2UqIHBh
Z2UsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgb3V0UGx1Z2lucykKIHsKLSAgICBRV2Vi
UGFnZUFkYXB0ZXIqIHFQYWdlID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPihwYWdlLT5j
aHJvbWUoKS0+Y2xpZW50KCkpLT5tX3dlYlBhZ2U7CisgICAgUVdlYlBhZ2VBZGFwdGVyKiBxUGFn
ZSA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudFF0Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkp
LT5tX3dlYlBhZ2U7CiAgICAgUVdlYlBsdWdpbkZhY3RvcnkqIGZhY3Rvcnk7CiAgICAgaWYgKHFQ
YWdlICYmIChmYWN0b3J5ID0gcVBhZ2UtPnBsdWdpbkZhY3RvcnkpKSB7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCmluZGV4
IGIzYzIzOTguLjYwNTQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcApAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQgUVdl
YkZyYW1lQWRhcHRlcjo6cmVuZGVyQ29tcG9zaXRlZExheWVycyhXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsCiAgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKFRleHR1cmVNYXBwZXJM
YXllckNsaWVudFF0KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRRdCo+KHBhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKSktPm1fdGV4dHVyZU1hcHBlckxheWVyQ2xpZW50LmdldCgpKQor
ICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8
Q2hyb21lQ2xpZW50UXQqPihwYWdlLT5jaHJvbWUoKS5jbGllbnQoKSktPm1fdGV4dHVyZU1hcHBl
ckxheWVyQ2xpZW50LmdldCgpKQogICAgICAgICBjbGllbnQtPnJlbmRlckNvbXBvc2l0ZWRMYXll
cnMoY29udGV4dCwgY2xpcCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAppbmRleCA0NzYwZDdmLi41YjI1NGQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDkgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhj
b25zdCBRVXJsJiB1cmwsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgV2luZG93RmVhdHVyZXMgZmVh
dHVyZXM7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uOwogICAgICAgICBGcmFtZUxv
YWRSZXF1ZXN0IHJlcXVlc3QgPSBmcmFtZUxvYWRSZXF1ZXN0KHVybCwgZnJhbWUpOwotICAgICAg
ICBpZiAoUGFnZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJh
bWUsIHJlcXVlc3QsIGZlYXR1cmVzLCBhY3Rpb24pKSB7CisgICAgICAgIGlmIChQYWdlKiBuZXdQ
YWdlID0gb2xkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KGZyYW1lLCByZXF1ZXN0LCBmZWF0
dXJlcywgYWN0aW9uKSkgewogICAgICAgICAgICAgbmV3UGFnZS0+bWFpbkZyYW1lKCktPmxvYWRl
cigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxzZSwgMCwgMCwgTWF5YmVT
ZW5kUmVmZXJyZXIpOwotICAgICAgICAgICAgbmV3UGFnZS0+Y2hyb21lKCktPnNob3coKTsKKyAg
ICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgpLnNob3coKTsKICAgICAgICAgfQogICAgIH0KIH0K
QEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6ZGVsZXRlUGFnZSgpCiAK
IFFXZWJQYWdlQWRhcHRlciogUVdlYlBhZ2VBZGFwdGVyOjpraXQoUGFnZSogcGFnZSkKIHsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPihwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCkpLT5tX3dlYlBhZ2U7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PENocm9tZUNsaWVudFF0
Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLT5tX3dlYlBhZ2U7CiB9CiAKIFZpZXdwb3J0QXJn
dW1lbnRzIFFXZWJQYWdlQWRhcHRlcjo6dmlld3BvcnRBcmd1bWVudHMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hh
bmdlTG9nCmluZGV4IDBkNmExYmIuLjRjN2NmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMCBAQAorMjAxMy0wNS0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUGFnZTo6Y2hyb21lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAg
ICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCiAyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZl
cmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYzE4YmE3Ni4uNTcyMmMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViVmlldy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgU3RyaW5nIHdlYktpdFZlcnNp
b25TdHJpbmcoKTsKIAogV2ViVmlldyoga2l0KFBhZ2UqIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIHBh
Z2UgPyBzdGF0aWNfY2FzdDxXZWJWaWV3Kj4oc3RhdGljX2Nhc3Q8V2ViQ2hyb21lQ2xpZW50Kj4o
cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKS0+d2ViVmlldygpKSA6IDA7CisgICAgcmV0dXJuIHBh
Z2UgPyBzdGF0aWNfY2FzdDxXZWJWaWV3Kj4oc3RhdGljX2Nhc3Q8V2ViQ2hyb21lQ2xpZW50Kj4o
cGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLT53ZWJWaWV3KCkpIDogMDsKIH0KIAogc3RhdGljIGlu
bGluZSBBdG9taWNTdHJpbmcgdG9BdG9taWNTdHJpbmcoQlNUUiBic3RyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4
IDQ2NDc4N2QuLmQyNTY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0wNS0x
NSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hy
b21lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQu
b3JnL2IvMTE2MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAy
MDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1t
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4u
bW0KaW5kZXggOGQ1NmZkNS4uODZkZWUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KQEAgLTMyNCw3ICsz
MjQsNyBAQCBKU1ZhbHVlUmVmIFNpbXBsZVBERlBsdWdpbjo6anNQREZEb2NQcmludChKU0NvbnRl
eHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbgogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAgICAgCi0gICAgcGFnZS0+Y2hyb21l
KCktPnByaW50KGNvcmVGcmFtZSk7CisgICAgcGFnZS0+Y2hyb21lKCkucHJpbnQoY29yZUZyYW1l
KTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBj
ZmU5YWRjLi41NmVhYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2b2lkIFBsdWdpblZpZXc6
OnNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNiYXJUZXh0KQogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPnNldFN0YXR1c2Jh
clRleHQoZnJhbWUoKSwgc3RhdHVzYmFyVGV4dCk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0U3Rh
dHVzYmFyVGV4dChmcmFtZSgpLCBzdGF0dXNiYXJUZXh0KTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3
Ojppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggMWM4MzM1Ny4uNDAxNjU0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCBGcmFtZSogV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0
aQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEp1c3QgY2FsbCB0aHJvdWdoIHRvIHRoZSBj
aHJvbWUgY2xpZW50LgotICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5j
aHJvbWUoKS0+Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFtZUxvYWRSZXF1
ZXN0KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSwg
V2luZG93RmVhdHVyZXMoKSwgbmF2aWdhdGlvbkFjdGlvbik7CisgICAgUGFnZSogbmV3UGFnZSA9
IHdlYlBhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhtX2ZyYW1lLT5jb3Jl
RnJhbWUoKSwgRnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSksIFdpbmRvd0ZlYXR1cmVzKCksIG5hdmlnYXRpb25BY3Rpb24p
OwogICAgIGlmICghbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjAxZDVjYS4uNzQ3
MGRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMTAyNCw3ICsxMDI0LDcgQEAgdm9pZCBXZWJQYWdlOjpsYXlvdXRJZk5lZWRlZCgpCiAK
IFdlYlBhZ2UqIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShQYWdlKiBwYWdlKQogewotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkp
LT5wYWdlKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNocm9tZUNsaWVudCo+KHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpKS0+cGFnZSgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldFNpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpCg==
</data>
<flag name="commit-queue"
          id="223260"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201881</attachid>
            <date>2013-05-15 14:15:23 -0700</date>
            <delta_ts>2013-05-15 14:32:02 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-116185-v2.diff</filename>
            <type>text/plain</type>
            <size>109874</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNmM5OGI5Li4zMDkzYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBIFBhZ2UncyBjaHJvbWUoKSBjYW4gbmV2ZXIgYmUgbnVsbC4g
Q2hhbmdlIFBhZ2U6OmNocm9tZSgpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0IHRo
aXMuCisgICAgICAgIEFsc28sIG1ha2UgUGFnZTo6bV9jaHJvbWUgYSBjb25zdCBtZW1iZXIgdmFy
aWFibGUgc28gbm9ib2R5IHdpbGwgYWNjaWRlbnRhbGx5IHNldCBpdCB0byBudWxsLgorCiAyMDEz
LTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
RnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAppbmRl
eCA1YzczYjVkLi4yYjAzNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9p
ZCBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJpbmcmIG5h
bWUsIERhdGFiYXNlRGV0YWlscwogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKGRvY3VtZW50LT5mcmFtZSgpLCBuYW1lLCBkZXRhaWxzKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEoZG9j
dW1lbnQtPmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggOWYzYTk1OC4uYzRk
MGYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTE1MjIs
MTIgKzE1MjIsMTIgQEAgc3RhdGljIE5TTXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0FycmF5KGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHkKICAgICAgICAgCiAgICAgICAg
IC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgY2hyb21lIGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ug
c2hvdWxkIHVzZSB0aGUgcGFnZQogICAgICAgICAvLyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50
IHRvIGhlbHAgdXMgZ2V0IHRvIHRoZSBzY3JlZW4gcmVjdC4KLSAgICAgICAgaWYgKHBhcmVudCAm
JiBwYWdlICYmIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgp
KQorICAgICAgICBpZiAocGFyZW50ICYmIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkt
PmlzRW1wdHlDaHJvbWVDbGllbnQoKSkKICAgICAgICAgICAgIHBhZ2UgPSBwYXJlbnQtPnBhZ2Uo
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHJl
Y3QgPSBJbnRSZWN0KGludFBvaW50LCBJbnRTaXplKDAsIDApKTsgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCktPnJvb3RWaWV3VG9TY3JlZW4ocmVjdCku
bG9jYXRpb24oKTsKKyAgICAgICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZp
ZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gaW50UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4uY3BwCmluZGV4IDhkYjczZGUuLmNmYmNjYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVX
aW4uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgQVhOb3RpZmljCiAgICAgICAg
IHJldHVybjsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwotICAgIGlmICgh
cGFnZSB8fCAhcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKQorICAgIGlmICgh
cGFnZSB8fCAhcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIERXT1JEIG1zYWFFdmVudDsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmosIEFYTm90aWZpYwogICAgIEFTU0VSVChvYmotPmF4T2JqZWN0SUQoKSA+PSAxKTsKICAg
ICBBU1NFUlQob2JqLT5heE9iamVjdElEKCkgPD0gbnVtZXJpY19saW1pdHM8TE9ORz46Om1heCgp
KTsKIAotICAgIE5vdGlmeVdpbkV2ZW50KG1zYWFFdmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRm
b3JtUGFnZUNsaWVudCgpLCBPQkpJRF9DTElFTlQsIC1zdGF0aWNfY2FzdDxMT05HPihvYmotPmF4
T2JqZWN0SUQoKSkpOworICAgIE5vdGlmeVdpbkV2ZW50KG1zYWFFdmVudCwgcGFnZS0+Y2hyb21l
KCkucGxhdGZvcm1QYWdlQ2xpZW50KCksIE9CSklEX0NMSUVOVCwgLXN0YXRpY19jYXN0PExPTkc+
KG9iai0+YXhPYmplY3RJRCgpKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hh
bmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqLCBOb2RlKiBu
ZXdGb2N1c2VkTm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG5ld0Zv
Y3VzZWROb2RlLT5kb2N1bWVudCgpLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5j
aHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpCisgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5j
aHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZm9jdXNlZE9iamVjdCA9IGZvY3VzZWRVSUVsZW1lbnRGb3JQYWdl
KHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKaW5kZXggMGQ2ZmMxZS4uMWIyYmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBKU0RPTVdp
bmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2Jq
ZWN0KQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4g
cGFnZS0+Y2hyb21lKCktPnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKKyAgICByZXR1cm4g
cGFnZS0+Y2hyb21lKCkuc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwogfQogCiBib29sIEpT
RE9NV2luZG93QmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1
bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcAppbmRleCAzYzljMzI3Li5kNDZlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQsCiAjZW5kaWYKIAogICAgIGlmICghcGx1Z0luc1N0eWxlU2hlZXQgJiYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVk
VGFnKSkpIHsKLSAgICAgICAgU3RyaW5nIHBsdWdJbnNSdWxlcyA9IFJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKS0+ZXh0cmFQbHVnSW5zU3R5bGVT
aGVldCgpICsgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpOworICAgICAgICBTdHJpbmcgcGx1Z0luc1J1bGVzID0g
UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpLT5l
eHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLT5wbHVnSW5FeHRyYVN0eWxlU2hlZXQoKTsKICAgICAgICAgaWYgKHBs
dWdJbnNSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBwbHVnSW5zUnVsZXMgPSBTdHJpbmco
cGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihwbHVnSW5zVXNlckFnZW50U3R5bGVT
aGVldCkpOwogICAgICAgICBwbHVnSW5zU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChwbHVnSW5z
UnVsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDAxMTFmZTYuLjkw
NDNiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTk5OSw3ICs5OTks
NyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEFjdGl2ZShib29sIGRvd24sIGJvb2wgcGF1c2Up
CiAgICAgICAgIC8vIFRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGZlYXR1
cmUgdGhhdCBvbmx5IHdvcmtzIGlmIHRoZQogICAgICAgICAvLyBwbGF0Zm9ybSBzdXBwb3J0cyBp
bW1lZGlhdGUgaW52YWxpZGF0aW9ucyBvbiB0aGUgQ2hyb21lQ2xpZW50LCBzbyBiYWlsIGlmCiAg
ICAgICAgIC8vIHRoYXQgaXNuJ3Qgc3VwcG9ydGVkLgotICAgICAgICBpZiAoIWRvY3VtZW50KCkt
PnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0ltbWVkaWF0ZUludmFsaWRhdGlv
bigpKQorICAgICAgICBpZiAoIWRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkt
PnN1cHBvcnRzSW1tZWRpYXRlSW52YWxpZGF0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKHJlYWN0c1RvUHJlc3MgJiYgcGF1c2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDExY2Y4NTYuLmY0ODhkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
Mjk3NSw3ICsyOTc1LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMo
KQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGll
c0NoYW5nZWQgPSB0cnVlOwogI2VuZGlmCi0gICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmRpc3Bh
dGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKG1fdmlld3BvcnRBcmd1bWVudHMpOworICAg
ICAgICBwYWdlKCktPmNocm9tZSgpLmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdl
KG1fdmlld3BvcnRBcmd1bWVudHMpOwogICAgIH0KIH0KIApAQCAtMzQzOCw3ICszNDM4LDcgQEAg
Ym9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdGb2N1
c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICB9CiAKICAgICBpZiAoIWZvY3VzQ2hhbmdlQmxv
Y2tlZCkKLSAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Zm9jdXNlZE5vZGVDaGFuZ2VkKG1fZm9j
dXNlZE5vZGUuZ2V0KCkpOworICAgICAgICBwYWdlKCktPmNocm9tZSgpLmZvY3VzZWROb2RlQ2hh
bmdlZChtX2ZvY3VzZWROb2RlLmdldCgpKTsKIAogU2V0Rm9jdXNlZE5vZGVEb25lOgogICAgIHVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTUwMjgsMTIgKzUwMjgsMTIgQEAgdm9pZCBEb2N1bWVu
dDo6cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVk
IHNob3J0IGZsYWcKICAgICAgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+
ZnVsbFNjcmVlbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmICgh
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQo
ZWxlbWVudCwgZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVCkpIHsKKyAgICAg
ICAgaWYgKCFwYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQsIGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpKSB7
CiAgICAgICAgICAgICAvLyBUaGUgbmV3IGZ1bGwgc2NyZWVuIEFQSSBkb2VzIG5vdCBhY2NlcHQg
YSAiZmxhZ3MiIHBhcmFtZXRlciwgc28gZmFsbCBiYWNrIHRvIGRpc2FsbG93aW5nCiAgICAgICAg
ICAgICAvLyBrZXlib2FyZCBpbnB1dCBpZiB0aGUgY2hyb21lIGNsaWVudCByZWZ1c2VzIHRvIGFs
bG93IGtleWJvYXJkIGlucHV0LgogICAgICAgICAgICAgaWYgKCFpbkxlZ2FjeU1vemlsbGFNb2Rl
ICYmIGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpIHsKICAgICAgICAgICAg
ICAgICBmbGFncyAmPSB+RWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsU2NyZWVu
Rm9yRWxlbWVudChlbGVtZW50LCBmYWxzZSkpCisgICAgICAgICAgICAgICAgaWYgKCFwYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQs
IGZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUwODgsNyArNTA4OCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25l
ZCBzaG9ydCBmbGFnCiAgICAgICAgIC8vIDUuIFJldHVybiwgYW5kIHJ1biB0aGUgcmVtYWluaW5n
IHN0ZXBzIGFzeW5jaHJvbm91c2x5LgogICAgICAgICAvLyA2LiBPcHRpb25hbGx5LCBwZXJmb3Jt
IHNvbWUgYW5pbWF0aW9uLgogICAgICAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0g
ZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVDsKLSAgICAgICAgcGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCk7CiAKICAgICAgICAgLy8gNy4gT3B0aW9uYWxseSwgZGlzcGxheSBhIG1lc3Nh
Z2UgaW5kaWNhdGluZyBob3cgdGhlIHVzZXIgY2FuIGV4aXQgZGlzcGxheWluZyB0aGUgY29udGV4
dCBvYmplY3QgZnVsbHNjcmVlbi4KICAgICAgICAgcmV0dXJuOwpAQCAtNTE3OSwxMiArNTE3OSwx
MiBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigpCiAgICAgLy8gT25seSBl
eGl0IG91dCBvZiBmdWxsIHNjcmVlbiB3aW5kb3cgbW9kZSBpZiB0aGVyZSBhcmUgbm8gcmVtYWlu
aW5nIGVsZW1lbnRzIGluIHRoZSAKICAgICAvLyBmdWxsIHNjcmVlbiBzdGFjay4KICAgICBpZiAo
IW5ld1RvcCkgewotICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAgICAgICBwYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLT5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2Ny
ZWVuRWxlbWVudC5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBPdGhl
cndpc2UsIG5vdGlmeSB0aGUgY2hyb21lIG9mIHRoZSBuZXcgZnVsbCBzY3JlZW4gZWxlbWVudC4K
LSAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChuZXdUb3ApOyAgICAgIAorICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQobmV3VG9wKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6d2Via2l0RnVs
bHNjcmVlbkVuYWJsZWQoKSBjb25zdApAQCAtNTMwOSw3ICs1MzA5LDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKFJlbmRlckZ1bGxTY3JlZW4qIHJlbmRlcmVyKQogICAg
IAogICAgIC8vIFRoaXMgbm90aWZpY2F0aW9uIGNhbiBjb21lIGluIGFmdGVyIHRoZSBwYWdlIGhh
cyBiZWVuIGRlc3Ryb3llZC4KICAgICBpZiAocGFnZSgpKQotICAgICAgICBwYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKS0+ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZChtX2Z1bGxTY3JlZW5SZW5k
ZXJlcik7CisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmZ1bGxTY3JlZW5SZW5k
ZXJlckNoYW5nZWQobV9mdWxsU2NyZWVuUmVuZGVyZXIpOwogfQogCiB2b2lkIERvY3VtZW50Ojpm
dWxsU2NyZWVuUmVuZGVyZXJEZXN0cm95ZWQoKQpAQCAtNTMxNyw3ICs1MzE3LDcgQEAgdm9pZCBE
b2N1bWVudDo6ZnVsbFNjcmVlblJlbmRlcmVyRGVzdHJveWVkKCkKICAgICBtX2Z1bGxTY3JlZW5S
ZW5kZXJlciA9IDA7CiAKICAgICBpZiAocGFnZSgpKQotICAgICAgICBwYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZCgwKTsKKyAgICAgICAgcGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS0+ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZCgwKTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQpAQCAtNTYyNyw3ICs1NjI3LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVu
dEhhbmRsZXIoTm9kZSogaGFuZGxlcikKICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT50b3VjaEV2ZW50VGFyZ2V0UmVjdHNEaWRDaGFuZ2UodGhpcyk7CiAjZW5kaWYKICAgICAgICAg
aWYgKG1fdG91Y2hFdmVudFRhcmdldHMtPnNpemUoKSA9PSAxKQotICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHModHJ1ZSk7CisgICAgICAgICAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogICAgIH0KICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwpAQCAtNTY1OSw3ICs1NjU5LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoTm9kZSogaGFuZGxlcikKICAg
ICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5oYXNUb3Vj
aEV2ZW50SGFuZGxlcnMoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHMoZmFsc2UpOworICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHMoZmFsc2UpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oaGFuZGxlcik7CiAjZW5kaWYKQEAgLTYwMTMsNyArNjAxMyw3IEBAIFBhc3NSZWZQ
dHI8Rm9udExvYWRlcj4gRG9jdW1lbnQ6OmZvbnRsb2FkZXIoKQogCiB2b2lkIERvY3VtZW50Ojpk
aWRBc3NvY2lhdGVGb3JtQ29udHJvbChFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmICghZnJh
bWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+c2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlcygpKQorICAgIGlmICghZnJhbWUoKSB8
fCAhZnJhbWUoKS0+cGFnZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LT5zaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Fz
c29jaWF0ZWRGb3JtQ29udHJvbHMuYWRkKGVsZW1lbnQpOwogICAgIGlmICghbV9kaWRBc3NvY2lh
dGVGb3JtQ29udHJvbHNUaW1lci5pc0FjdGl2ZSgpKQpAQCAtNjAyOSw3ICs2MDI5LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1
bWVudD4qIHRpbWVyKQogICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiBhc3NvY2lhdGVkRm9y
bUNvbnRyb2xzOwogICAgIGNvcHlUb1ZlY3RvcihtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMsIGFz
c29jaWF0ZWRGb3JtQ29udHJvbHMpOwogCi0gICAgZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmRpZEFzc29jaWF0ZUZvcm1Db250cm9scyhhc3NvY2lhdGVkRm9ybUNvbnRyb2xz
KTsKKyAgICBmcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5kaWRBc3NvY2lhdGVG
b3JtQ29udHJvbHMoYXNzb2NpYXRlZEZvcm1Db250cm9scyk7CiAgICAgbV9hc3NvY2lhdGVkRm9y
bUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKQEAgLTYwMzksNyArNjAzOSw3IEBAIHZvaWQgRG9jdW1l
bnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBVc2UgdGhlIEpTIGZpbGUgcHJvdmlkZWQgYnkgdGhl
IENocm9tZSBjbGllbnQsIG9yIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IG9uZS4KLSAgICBTdHJp
bmcganNTdHJpbmcgPSBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTY3Jp
cHQoKTsKKyAgICBTdHJpbmcganNTdHJpbmcgPSBwYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5w
bHVnSW5FeHRyYVNjcmlwdCgpOwogICAgIGlmICghanNTdHJpbmcpCiAgICAgICAgIGpzU3RyaW5n
ID0gcGx1Z0luc0phdmFTY3JpcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2ODJlNjUxLi5iNzcx
ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNDg1LDcgKzI0ODUsNyBAQCBib29sIE5vZGU6OmRp
c3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogdm9pZCBO
b2RlOjpkaXNwYXRjaEZvY3VzRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSwg
Rm9jdXNEaXJlY3Rpb24pCiB7CiAgICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVsZW1lbnREaWRGb2N1cyh0
aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+ZWxl
bWVudERpZEZvY3VzKHRoaXMpOwogCiAgICAgUmVmUHRyPEZvY3VzRXZlbnQ+IGV2ZW50ID0gRm9j
dXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBmYWxzZSwgZmFsc2UsIGRv
Y3VtZW50KCktPmRlZmF1bHRWaWV3KCksIDAsIG9sZEZvY3VzZWROb2RlKTsKICAgICBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgRm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3I6
OmNyZWF0ZShldmVudC5yZWxlYXNlKCkpKTsKQEAgLTI0OTQsNyArMjQ5NCw3IEBAIHZvaWQgTm9k
ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUsIEZv
Y3VzRGlyZWN0aW9uKQogdm9pZCBOb2RlOjpkaXNwYXRjaEJsdXJFdmVudChQYXNzUmVmUHRyPE5v
ZGU+IG5ld0ZvY3VzZWROb2RlKQogewogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAg
ICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbGVtZW50RGlkQmx1
cih0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+
ZWxlbWVudERpZEJsdXIodGhpcyk7CiAKICAgICBSZWZQdHI8Rm9jdXNFdmVudD4gZXZlbnQgPSBG
b2N1c0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgZmFsc2UsIGZhbHNlLCBk
b2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCAwLCBuZXdGb2N1c2VkTm9kZSk7CiAgICAgRXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KHRoaXMsIEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3I6
OmNyZWF0ZShldmVudC5yZWxlYXNlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwCmluZGV4IDk4YzMwMWIuLjg0MjdmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcApAQCAtOTU3LDcgKzk1Nyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVQcmludChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnByaW50KGZyYW1lKTsK
KyAgICBwYWdlLT5jaHJvbWUoKS5wcmludChmcmFtZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggZTNjNDQwZi4uZGRhNzQ1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIENhY2hlZEZyYW1lQmFzZTo6cmVzdG9yZSgpCiAgICAgCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICBpZiAobV9kb2N1bWVudC0+aGFzVG91Y2hFdmVudEhhbmRsZXJzKCkp
Ci0gICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91
Y2hFdmVudHModHJ1ZSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0cnVlKTsKICNlbmRpZgogCiAgICAgbV9kb2N1bWVudC0+
ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmlu
ZGV4IDllMmRiYTYuLjJhYmFjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC01MCwxMyAr
NTAsMTAgQEAgdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCopCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIWVsZW1l
bnQoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lKiBj
aHJvbWUgPSBlbGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCk7Ci0gICAgaWYg
KCFjaHJvbWUpCi0gICAgICAgIHJldHVybjsKICAgICBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CiAgICAgaWYgKCFlbGVtZW50KCktPnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycyhwYXJhbWV0ZXJzKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZGF0ZVRpbWVDaG9v
c2VyID0gY2hyb21lLT5vcGVuRGF0ZVRpbWVDaG9vc2VyKHRoaXMsIHBhcmFtZXRlcnMpOworICAg
IG1fZGF0ZVRpbWVDaG9vc2VyID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCktPmNocm9t
ZSgpLm9wZW5EYXRlVGltZUNob29zZXIodGhpcywgcGFyYW1ldGVycyk7CiB9CiAKIHZvaWQgQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZS5jcHAKaW5kZXggNjZmMjFiMy4uNDBiNjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6bm90aWZ5
Rm9ybVN0YXRlQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3Jt
U3RhdGVEaWRDaGFuZ2UodGhpcyk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5m
b3JtU3RhdGVEaWRDaGFuZ2UodGhpcyk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE4NjNmZWYuLjk3
NDc0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY1
Niw3ICsxNjU2LDcgQEAgc3RhdGljIHZvaWQgbG9nTWVkaWFMb2FkUmVxdWVzdChQYWdlKiBwYWdl
LCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lLCBjb25zdCBTdHIKICAgICBpZiAoIXBhZ2UgfHwg
IXBhZ2UtPnNldHRpbmdzKCktPmRpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDaHJvbWVDbGllbnQqIGNsaWVudCA9IHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKTsKKyAgICBDaHJvbWVDbGllbnQqIGNsaWVudCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
OwogCiAgICAgaWYgKCFzdWNjZWVkZWQpIHsKICAgICAgICAgY2xpZW50LT5sb2dEaWFnbm9zdGlj
TWVzc2FnZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om1lZGlhTG9hZGluZ0ZhaWxlZEtleSgpLCBl
cnJvck1lc3NhZ2UsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZmFpbEtleSgpKTsKQEAgLTI2NTYs
NyArMjY1Niw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbHMoKSBjb25zdAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIGFsd2F5cyBzaG93IGNvbnRyb2xzIGZvciB2aWRl
byB3aGVuIGZ1bGxzY3JlZW4gcGxheWJhY2sgaXMgcmVxdWlyZWQuCi0gICAgaWYgKGlzVmlkZW8o
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQorICAgIGlmIChpc1ZpZGVvKCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkucmVx
dWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIEFsd2F5cyBzaG93IGNvbnRyb2xzIHdoZW4gaW4gZnVsbCBzY3JlZW4gbW9kZS4K
QEAgLTM3OTAsNyArMzc5MCw3IEBAIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QKICAgICBpZiAoIWRv
Y3VtZW50KCkgfHwgIWRvY3VtZW50KCktPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmdyYXBoaWNz
RGV2aWNlQWRhcHRlcigpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LmNsaWVudCgpLT5ncmFwaGljc0RldmljZUFkYXB0ZXIoKTsKIH0KICNlbmRpZgogCkBAIC0zOTc5
LDcgKzM5NzksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAg
ICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAKICAgICAgICAgaWYgKHBsYXllclBhdXNl
ZCkgewotICAgICAgICAgICAgaWYgKCFtX2lzRnVsbHNjcmVlbiAmJiBpc1ZpZGVvKCkgJiYgZG9j
dW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJv
bWUoKS0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQorICAgICAgICAgICAg
aWYgKCFtX2lzRnVsbHNjcmVlbiAmJiBpc1ZpZGVvKCkgJiYgZG9jdW1lbnQoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5yZXF1aXJlc0Z1bGxz
Y3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkpCiAgICAgICAgICAgICAgICAgZW50ZXJGdWxsc2NyZWVu
KCk7CiAKICAgICAgICAgICAgIC8vIFNldCByYXRlLCBtdXRlZCBiZWZvcmUgY2FsbGluZyBwbGF5
IGluIGNhc2UgdGhleSB3ZXJlIHNldCBiZWZvcmUgdGhlIG1lZGlhIGVuZ2luZSB3YXMgc2V0dXAu
CkBAIC00MzU3LDcgKzQzNTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNj
cmVlbigpCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgbWVkaWFDb250cm9s
cygpLT5lbnRlcmVkRnVsbHNjcmVlbigpOwogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50
KCktPnBhZ2UoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGll
bnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsK
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVu
RXZlbnQpOwogICAgIH0KIH0KQEAgLTQzNzgsOSArNDM3OCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAg
ICAgIG1lZGlhQ29udHJvbHMoKS0+ZXhpdGVkRnVsbHNjcmVlbigpOwogICAgIGlmIChkb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBpZiAoZG9jdW1lbnQoKS0+cGFn
ZSgpLT5jaHJvbWUoKS0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQorICAg
ICAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5yZXF1aXJlc0Z1bGxzY3JlZW5G
b3JWaWRlb1BsYXliYWNrKCkpCiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7Ci0gICAgICAg
IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZv
ck5vZGUodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50
KCktPmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxNDQ1YzM1
Li4wMTI3ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGNvbnN0IFN0cmluZyB0aXRsZVRleHQo
UGFnZSogcGFnZSwgU3RyaW5nIG1pbWVUeXBlKQogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIAotICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKKyAgICB0
aXRsZVRleHQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxl
KG1pbWVUeXBlKTsKICAgICBpZiAodGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgdGl0bGVU
ZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7CiAgICAgbWltZVR5cGVUb0xhYmVs
VGl0bGVNYXAuc2V0KG1pbWVUeXBlLCB0aXRsZVRleHQpOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0
aWMgY29uc3QgU3RyaW5nIHN1YnRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUp
CiAgICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0
bGVUZXh0OwogCi0gICAgc3VidGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5w
bHVnSW5TdGFydExhYmVsU3VidGl0bGUobWltZVR5cGUpOworICAgIHN1YnRpdGxlVGV4dCA9IHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUobWltZVR5cGUp
OwogICAgIGlmIChzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICBzdWJ0aXRsZVRleHQg
PSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKICAgICBtaW1lVHlwZVRvTGFiZWxT
dWJ0aXRsZU1hcC5zZXQobWltZVR5cGUsIHN1YnRpdGxlVGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAwMmVjMmM0Li4yMTQ0N2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTEzOSwxNCArMTM5LDE0IEBAIGJv
b2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLy8gSWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBpcyBlbmFi
bGVkIGFuZCBpcyBzdXBwb3J0ZWQgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQKICAgICAvLyBkbyBu
b3QgcmVxdWlyZSB0aGF0IHRoZSBwbGF5ZXIgaGFzIGEgdmlkZW8gdHJhY2sgdG8gZW50ZXIgZnVs
bCBzY3JlZW4uCi0gICAgaWYgKHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxs
U2NyZWVuRm9yRWxlbWVudCh0aGlzLCBmYWxzZSkpCisgICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIGZhbHNlKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAogICAgIGlmICghcGxheWVyKCktPmhhc1ZpZGVvKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgcmV0dXJuIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwogfQog
CiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAppbmRleCA4YTQyOTE3Li40YTA0ZjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBJbnB1dFR5cGU6OmRpc3BhdGNo
U2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKIENocm9t
ZSogSW5wdXRUeXBlOjpjaHJvbWUoKSBjb25zdAogewogICAgIGlmIChQYWdlKiBwYWdlID0gZWxl
bWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KTsKKyAgICAgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKICAgICByZXR1cm4gMDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAppbmRleCA4ODA0
MTlhLi40NmI4NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6ZW50ZXJlZEZ1
bGxzY3JlZW4oKQogICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKHRydWUp
OwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHBh
Z2UtPmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7CisgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyh0cnVlKTsK
IAogICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CiB9CkBAIC0zMzEsNyAr
MzMxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xzPiopCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChQ
YWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+
c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKHRydWUpOworICAgICAgICBwYWdlLT5jaHJv
bWUoKS5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7CiAKICAgICBtYWtlVHJh
bnNwYXJlbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Bp
Y2tlckluZGljYXRvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUGlj
a2VySW5kaWNhdG9yRWxlbWVudC5jcHAKaW5kZXggZDk2OTAyNC4uZGMyZWM1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5j
cHAKQEAgLTExMCwxMyArMTEwLDEwIEBAIHZvaWQgUGlja2VySW5kaWNhdG9yRWxlbWVudDo6b3Bl
blBvcHVwKCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9waWNrZXJJbmRpY2F0b3JPd25l
cikKICAgICAgICAgcmV0dXJuOwotICAgIENocm9tZSogY2hyb21lID0gZG9jdW1lbnQoKS0+cGFn
ZSgpLT5jaHJvbWUoKTsKLSAgICBpZiAoIWNocm9tZSkKLSAgICAgICAgcmV0dXJuOwogICAgIERh
dGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBpZiAoIW1fcGlja2VySW5k
aWNhdG9yT3duZXItPnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fY2hvb3NlciA9IGNocm9tZS0+b3BlbkRhdGVUaW1lQ2hv
b3Nlcih0aGlzLCBwYXJhbWV0ZXJzKTsKKyAgICBtX2Nob29zZXIgPSBkb2N1bWVudCgpLT5wYWdl
KCktPmNocm9tZSgpLm9wZW5EYXRlVGltZUNob29zZXIodGhpcywgcGFyYW1ldGVycyk7CiB9CiAK
IHZvaWQgUGlja2VySW5kaWNhdG9yRWxlbWVudDo6Y2xvc2VQb3B1cCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjIzYmFiOC4u
YmU0MWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25F
bGVtZW50LmNwcApAQCAtMTIxLDEwICsxMjEsOCBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhZ2UtPmNocm9tZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKHRoaXMpOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hy
b21lKCkucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcih0aGlzKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBVcERvd25TdGF0ZSBvbGRVcERvd25TdGF0
ZSA9IG1fdXBEb3duU3RhdGU7CkBAIC0xOTksMTAgKzE5Nyw4IEBAIHZvaWQgU3BpbkJ1dHRvbkVs
ZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKCkKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0
Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSBm
YWxzZTsKLSAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHBhZ2UtPmNocm9tZSgpKQotICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKHRoaXMpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCkpCisgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3RlclBvcHVwT3Bl
bmluZ09ic2VydmVyKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CmluZGV4IGIxYzRiOTUuLjI5NzU3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTIyOCw5ICsy
MjgsOSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihj
b25zdCBTdHJpbmcmIHVybCkKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpt
b3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKIHsKLSAgICBGbG9hdFJlY3QgZnJhbWVSZWN0
ID0gbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7CisgICAgRmxvYXRSZWN0
IGZyYW1lUmVjdCA9IG1fZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CiAgICAg
ZnJhbWVSZWN0Lm1vdmUoeCwgeSk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLT5zZXRX
aW5kb3dSZWN0KGZyYW1lUmVjdCk7CisgICAgbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLnNldFdp
bmRvd1JlY3QoZnJhbWVSZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpzZXRBdHRhY2hlZFdpbmRvdyhEb2NrU2lkZSBkb2NrU2lkZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcAppbmRleCBiNzEwODAzLi4y
OTkwYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5w
dXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0
QWdlbnQuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnB1dEFnZW50Ojpk
aXNwYXRjaE1vdXNlRXZlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHQKICAg
ICAvLyBTb21lIHBsYXRmb3JtcyBtYXkgaGF2ZSBmbGlwcGVkIGNvb3JkaW5hdGUgc3lzdGVtcywg
YnV0IHRoZSBnaXZlbiBjb29yZGluYXRlcwogICAgIC8vIGFzc3VtZSB0aGUgb3JpZ2luIGlzIGlu
IHRoZSB0b3AtbGVmdCBvZiB0aGUgd2luZG93LiBDb252ZXJ0LgogICAgIEludFBvaW50IGNvbnZl
cnRlZFBvaW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5jb252ZXJ0VG9Db250YWlu
aW5nV2luZG93KEludFBvaW50KHgsIHkpKTsKLSAgICBJbnRQb2ludCBnbG9iYWxQb2ludCA9IG1f
cGFnZS0+Y2hyb21lKCktPnJvb3RWaWV3VG9TY3JlZW4oSW50UmVjdChJbnRQb2ludCh4LCB5KSwg
SW50U2l6ZSgwLCAwKSkpLmxvY2F0aW9uKCk7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQgPSBt
X3BhZ2UtPmNocm9tZSgpLnJvb3RWaWV3VG9TY3JlZW4oSW50UmVjdChJbnRQb2ludCh4LCB5KSwg
SW50U2l6ZSgwLCAwKSkpLmxvY2F0aW9uKCk7CiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZl
bnQoCiAgICAgICAgIGNvbnZlcnRlZFBvaW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggYjQyM2ViMi4uOTE3MmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC0xMTY3LDcgKzExNjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJh
bWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgbG9ja0hpcwog
ICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IHNvdXJjZUZyYW1lLT5sb2FkZXIoKS0+ZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihyZXF1ZXN0LmZyYW1lTmFtZSgpKTsKICAgICBpZiAodGFyZ2V0RnJhbWUg
JiYgdGFyZ2V0RnJhbWUgIT0gc291cmNlRnJhbWUpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSB0YXJnZXRGcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3Vz
KCk7CisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5mb2N1cygpOwogICAgIH0KIH0KIApAQCAt
MTgwNCw3ICsxODA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
KFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSkKIAogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiAgICAgaWYgKGlzTG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICBtX2ZyYW1lLT5w
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKGZhbHNlKTsKKyAgICAg
ICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKGZh
bHNlKTsKICNlbmRpZgogCiAgICAgLy8gSGFuZGxlIGFkZGluZyB0aGUgVVJMIHRvIHRoZSBiYWNr
L2ZvcndhcmQgbGlzdC4KQEAgLTI2OTYsOCArMjY5Niw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNh
bGxDb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsCiBib29s
IEZyYW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKLSAgICBDaHJvbWUqIGNocm9tZSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKSA6IDA7
Ci0gICAgaWYgKCFjaHJvbWUgfHwgIWNocm9tZS0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkpCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIXBh
Z2UtPmNocm9tZSgpLmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFN0b3JlIGFsbCByZWZlcmVuY2VzIHRvIGVhY2ggc3ViZnJh
bWUgaW4gYWR2YW5jZSBzaW5jZSBiZWZvcmV1bmxvYWQncyBldmVudCBoYW5kbGVyIG1heSBtb2Rp
ZnkgZnJhbWUKQEAgLTI3MTQsNyArMjcxNSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENs
b3NlKCkKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhcmdldEZyYW1lcy5zaXplKCk7IGkrKykg
ewogICAgICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZXNbaV0tPnRyZWUoKS0+aXNEZXNjZW5kYW50
T2YobV9mcmFtZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
IXRhcmdldEZyYW1lc1tpXS0+bG9hZGVyKCktPmZpcmVCZWZvcmVVbmxvYWRFdmVudChjaHJvbWUp
KQorICAgICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZXNbaV0tPmxvYWRlcigpLT5maXJlQmVmb3Jl
VW5sb2FkRXZlbnQocGFnZS0+Y2hyb21lKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKQEAgLTI3MjgsNyArMjcyOSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENs
b3NlKCkKICAgICByZXR1cm4gc2hvdWxkQ2xvc2U7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OmZp
cmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUqIGNocm9tZSkKK2Jvb2wgRnJhbWVMb2FkZXI6OmZp
cmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmIGNocm9tZSkKIHsKICAgICBET01XaW5kb3cqIGRv
bVdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9t
V2luZG93KQpAQCAtMjc0OSw3ICsyNzUwLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZmlyZUJlZm9y
ZVVubG9hZEV2ZW50KENocm9tZSogY2hyb21lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IFN0cmluZyB0ZXh0ID0gZG9jdW1lbnQtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
YmVmb3JlVW5sb2FkRXZlbnQtPnJlc3VsdCgpKTsKLSAgICByZXR1cm4gY2hyb21lLT5ydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwodGV4dCwgbV9mcmFtZSk7CisgICAgcmV0dXJuIGNocm9tZS5y
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGV4dCwgbV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBib29sIHNob3VsZENv
bnRpbnVlKQpAQCAtMzMzMyw3ICszMzM0LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlV2lu
ZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEKICAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGxvb2t1cEZyYW1lLT5sb2FkZXIoKS0+ZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihyZXF1ZXN0LmZyYW1lTmFtZSgpLCBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQo
KSkpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfc2VsZiIpIHsK
ICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOworICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5mb2N1cygpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY3Jl
YXRlZCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwpAQCAtMzM2NCw3ICszMzY1
LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwg
RnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBO
YXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihyZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVxdWVz
dCgpKTsKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhv
cGVuZXJGcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIGFjdGlvbik7CisgICAg
UGFnZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwg
cmVxdWVzdFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIGFjdGlvbik7CiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm4gMDsKIApAQCAtMzM3NSwxOCArMzM3NiwxOCBAQCBQYXNzUmVmUHRyPEZy
YW1lPiBjcmVhdGVXaW5kb3coRnJhbWUqIG9wZW5lckZyYW1lLCBGcmFtZSogbG9va3VwRnJhbWUs
IGNvbnN0IEZyYQogICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKQogICAg
ICAgICBmcmFtZS0+dHJlZSgpLT5zZXROYW1lKHJlcXVlc3QuZnJhbWVOYW1lKCkpOwogCi0gICAg
cGFnZS0+Y2hyb21lKCktPnNldFRvb2xiYXJzVmlzaWJsZShmZWF0dXJlcy50b29sQmFyVmlzaWJs
ZSB8fCBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5z
ZXRTdGF0dXNiYXJWaXNpYmxlKGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpOwotICAgIHBhZ2Ut
PmNocm9tZSgpLT5zZXRTY3JvbGxiYXJzVmlzaWJsZShmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJs
ZSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldE1lbnViYXJWaXNpYmxlKGZlYXR1cmVzLm1lbnVC
YXJWaXNpYmxlKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0UmVzaXphYmxlKGZlYXR1cmVzLnJl
c2l6YWJsZSk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0VG9vbGJhcnNWaXNpYmxlKGZlYXR1cmVz
LnRvb2xCYXJWaXNpYmxlIHx8IGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSk7CisgICAgcGFn
ZS0+Y2hyb21lKCkuc2V0U3RhdHVzYmFyVmlzaWJsZShmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxl
KTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zZXRTY3JvbGxiYXJzVmlzaWJsZShmZWF0dXJlcy5zY3Jv
bGxiYXJzVmlzaWJsZSk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0TWVudWJhclZpc2libGUoZmVh
dHVyZXMubWVudUJhclZpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLnNldFJlc2l6YWJsZShm
ZWF0dXJlcy5yZXNpemFibGUpOwogCiAgICAgLy8gJ3gnIGFuZCAneScgc3BlY2lmeSB0aGUgbG9j
YXRpb24gb2YgdGhlIHdpbmRvdywgd2hpbGUgJ3dpZHRoJyBhbmQgJ2hlaWdodCcKICAgICAvLyBz
cGVjaWZ5IHRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydC4gV2UgY2FuIG9ubHkgcmVzaXplIHRoZSB3
aW5kb3csIHNvIGFkanVzdAogICAgIC8vIGZvciB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB3
aW5kb3cgc2l6ZSBhbmQgdGhlIHZpZXdwb3J0IHNpemUuCiAKLSAgICBGbG9hdFJlY3Qgd2luZG93
UmVjdCA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7Ci0gICAgRmxvYXRTaXplIHZpZXdw
b3J0U2l6ZSA9IHBhZ2UtPmNocm9tZSgpLT5wYWdlUmVjdCgpLnNpemUoKTsKKyAgICBGbG9hdFJl
Y3Qgd2luZG93UmVjdCA9IHBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFNp
emUgdmlld3BvcnRTaXplID0gcGFnZS0+Y2hyb21lKCkucGFnZVJlY3QoKS5zaXplKCk7CiAKICAg
ICBpZiAoZmVhdHVyZXMueFNldCkKICAgICAgICAgd2luZG93UmVjdC5zZXRYKGZlYXR1cmVzLngp
OwpAQCAtMzQwMCw4ICszNDAxLDggQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZy
YW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEKICAgICAvLyBF
bnN1cmUgbm9uLU5hTiB2YWx1ZXMsIG1pbmltdW0gc2l6ZSBhcyB3ZWxsIGFzIGJlaW5nIHdpdGhp
biB2YWxpZCBzY3JlZW4gYXJlYS4KICAgICBGbG9hdFJlY3QgbmV3V2luZG93UmVjdCA9IERPTVdp
bmRvdzo6YWRqdXN0V2luZG93UmVjdChwYWdlLCB3aW5kb3dSZWN0KTsKIAotICAgIHBhZ2UtPmNo
cm9tZSgpLT5zZXRXaW5kb3dSZWN0KG5ld1dpbmRvd1JlY3QpOwotICAgIHBhZ2UtPmNocm9tZSgp
LT5zaG93KCk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0V2luZG93UmVjdChuZXdXaW5kb3dSZWN0
KTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zaG93KCk7CiAKICAgICBjcmVhdGVkID0gdHJ1ZTsKICAg
ICByZXR1cm4gZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDEwOWIx
NmMuLmRlZWFmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0zMTYsNyAr
MzE2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVMb2FkQWZ0ZXJO
ZXdXaW5kb3dQb2xpY3kodm9pZCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mLCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVG
cmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKICAg
ICAKLSAgICBib29sIGZpcmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUqKTsKKyAgICBib29sIGZp
cmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmKTsKIAogICAgIHZvaWQgY29udGludWVMb2FkQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAgICAgdm9pZCBjb250aW51ZUxvYWRBZnRl
ck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Ym9vbCBzaG91bGRDb250aW51ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcAppbmRleCAxYWVhYTk1Li5jOTc5N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCBsb2dQbHVnaW5S
ZXF1ZXN0KFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dQogICAgIFN0cmluZyBwbHVnaW5GaWxlID0gcGx1Z2luRGF0YSA/IHBsdWdpbkRhdGEtPnBsdWdp
bkZpbGVGb3JNaW1lVHlwZShuZXdNSU1FVHlwZSkgOiBTdHJpbmcoKTsKICAgICBTdHJpbmcgZGVz
Y3JpcHRpb24gPSAhcGx1Z2luRmlsZSA/IG5ld01JTUVUeXBlIDogcGx1Z2luRmlsZTsKIAotICAg
IENocm9tZUNsaWVudCogY2xpZW50ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpOworICAgIENo
cm9tZUNsaWVudCogY2xpZW50ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCk7CiAgICAgY2xpZW50
LT5sb2dEaWFnbm9zdGljTWVzc2FnZShzdWNjZXNzID8gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpw
bHVnaW5Mb2FkZWRLZXkoKSA6IERpYWdub3N0aWNMb2dnaW5nS2V5czo6cGx1Z2luTG9hZGluZ0Zh
aWxlZEtleSgpLCBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpub29wS2V5KCkp
OwogCiAgICAgaWYgKCFwYWdlLT5oYXNTZWVuQW55UGx1Z2luKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmlu
ZGV4IGUwZjAwMTAuLjZlYjkyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC04MjEsNyArODIxLDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXplKCkK
IHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQp
OwotICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWFjaGVkTWF4QXBw
Q2FjaGVTaXplKGNhY2hlU3RvcmFnZSgpLnNwYWNlTmVlZGVkKG1fY2FjaGVCZWluZ1VwZGF0ZWQt
PmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSkpOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCktPnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoY2FjaGVTdG9yYWdlKCkuc3BhY2VO
ZWVkZWQobV9jYWNoZUJlaW5nVXBkYXRlZC0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpKSk7CiAg
ICAgbV9jYWxsZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXplID0gdHJ1ZTsKICAgICBjaGVja0lmTG9h
ZElzQ29tcGxldGUoKTsKIH0KQEAgLTgzMCw3ICs4MzAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlkUmVhY2hPcmlnaW5RdW90YShpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpCiB7
CiAgICAgLy8gSW5mb3JtIHRoZSBjbGllbnQgdGhlIG9yaWdpbiBxdW90YSBoYXMgYmVlbiByZWFj
aGVkLCB0aGV5IG1heSBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHF1b3RhLgogICAgIC8vIFdlIGV4
cGVjdCBxdW90YSB0byBiZSBpbmNyZWFzZWQgc3luY2hyb25vdXNseSB3aGlsZSB3YWl0aW5nIGZv
ciB0aGUgY2FsbCB0byByZXR1cm4uCi0gICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEobV9vcmlnaW4uZ2V0KCks
IHRvdGFsU3BhY2VOZWVkZWQpOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50
KCktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEobV9vcmlnaW4uZ2V0KCksIHRv
dGFsU3BhY2VOZWVkZWQpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVV
cGRhdGVGYWlsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA2ZDFmNTcyLi5hYjdjNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1
dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgQXV0b3Njcm9s
bENvbnRyb2xsZXI6OnVwZGF0ZURyYWdBbmREcm9wKE5vZGUqIGRyb3BUYXJnZXROb2RlLCBjb25z
dCBJbnRQb2luCiAgICAgfQogCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAg
aWYgKCFwYWdlIHx8ICFwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNob3VsZEF1dG9zY3JvbGxG
b3JEcmFnQW5kRHJvcChzY3JvbGxhYmxlKSkgeworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcChzY3JvbGxhYmxl
KSkgewogICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3AuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9CYXJQcm9wLmNwcAppbmRleCA0YjdkOTM2Li4zYmU0ZmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQmFyUHJvcC5jcHAKQEAgLTU4LDEzICs1OCwxMyBAQCBib29sIEJhclByb3A6OnZpc2li
bGUoKSBjb25zdAogICAgIGNhc2UgTG9jYXRpb25iYXI6CiAgICAgY2FzZSBQZXJzb25hbGJhcjoK
ICAgICBjYXNlIFRvb2xiYXI6Ci0gICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+dG9vbGJh
cnNWaXNpYmxlKCk7CisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS50b29sYmFyc1Zpc2li
bGUoKTsKICAgICBjYXNlIE1lbnViYXI6Ci0gICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+
bWVudWJhclZpc2libGUoKTsKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLm1lbnViYXJW
aXNpYmxlKCk7CiAgICAgY2FzZSBTY3JvbGxiYXJzOgotICAgICAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCktPnNjcm9sbGJhcnNWaXNpYmxlKCk7CisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KS5zY3JvbGxiYXJzVmlzaWJsZSgpOwogICAgIGNhc2UgU3RhdHVzYmFyOgotICAgICAgICByZXR1
cm4gcGFnZS0+Y2hyb21lKCktPnN0YXR1c2JhclZpc2libGUoKTsKKyAgICAgICAgcmV0dXJuIHBh
Z2UtPmNocm9tZSgpLnN0YXR1c2JhclZpc2libGUoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAzMjY3NTI3Li5kOWZhMjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIGJvb2wgY2Fu
UnVuTW9kYWxJZkR1cmluZ1BhZ2VEaXNtaXNzYWwoUGFnZSogcGFnZSwgQ2hyb21lQ2xpZW50OjpE
aWFsb2dUeXAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBGcmFt
ZUxvYWRlcjo6UGFnZURpc21pc3NhbFR5cGUgZGlzbWlzc2FsID0gZnJhbWUtPmxvYWRlcigpLT5w
YWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKTsKICAgICAgICAgaWYgKGRpc21pc3Nh
bCAhPSBGcmFtZUxvYWRlcjo6Tm9EaXNtaXNzYWwpCi0gICAgICAgICAgICByZXR1cm4gcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5zaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VEaXNtaXNz
YWwoZGlhbG9nLCBtZXNzYWdlLCBkaXNtaXNzYWwpOworICAgICAgICAgICAgcmV0dXJuIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLT5zaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VEaXNtaXNz
YWwoZGlhbG9nLCBtZXNzYWdlLCBkaXNtaXNzYWwpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IGI4ODE2NmIuLjRlNGYwZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlcm5hbEFk
ZE1lc3NhZ2UoUGFnZSogcGFnZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVs
LAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZ290TWVzc2FnZSkKLSAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKENvbnNvbGVBUElNZXNzYWdl
U291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxh
c3RDYWxsZXIuY29sdW1uTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOworICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShDb25zb2xlQVBJ
TWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJl
cigpLCBsYXN0Q2FsbGVyLmNvbHVtbk51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsK
IAogICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+bG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29u
c29sZUVuYWJsZWQoKSAmJiAhUGFnZUNvbnNvbGU6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAKaW5kZXggNDlkYTFkYS4uNjBmMmMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTg0LDEwICsxODQsMTAgQEAgc3RhdGlj
IHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkK
ICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCkt
Pm91dGdvaW5nUmVmZXJyZXIoKSkpOwogICAgICAgICBQYWdlKiBuZXdQYWdlID0gb2xkUGFnZTsK
ICAgICAgICAgaWYgKCFmcmFtZS0+c2V0dGluZ3MoKSB8fCBmcmFtZS0+c2V0dGluZ3MoKS0+c3Vw
cG9ydHNNdWx0aXBsZVdpbmRvd3MoKSkgewotICAgICAgICAgICAgbmV3UGFnZSA9IG9sZFBhZ2Ut
PmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCks
IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgICAgICAg
ICAgbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVz
dCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpKSk7CiAgICAgICAgICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbmV3UGFnZS0+Y2hyb21lKCktPnNob3coKTsKKyAgICAgICAgICAg
IG5ld1BhZ2UtPmNocm9tZSgpLnNob3coKTsKICAgICAgICAgfQogICAgICAgICBuZXdQYWdlLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QocmVxdWVzdCwgZmFsc2UsIGZh
bHNlLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IGQ3YjhlY2IuLmYzMWY3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTMxNyw3ICszMTcsNyBAQCBGbG9hdFJlY3QgRE9NV2luZG93OjphZGp1c3RXaW5kb3dS
ZWN0KFBhZ2UqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcGVuZGluZ0NoYW5nZQogICAgIEFTU0VS
VChwYWdlKTsKIAogICAgIEZsb2F0UmVjdCBzY3JlZW4gPSBzY3JlZW5BdmFpbGFibGVSZWN0KHBh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCkpOwotICAgIEZsb2F0UmVjdCB3aW5kb3cgPSBwYWdlLT5j
aHJvbWUoKS0+d2luZG93UmVjdCgpOworICAgIEZsb2F0UmVjdCB3aW5kb3cgPSBwYWdlLT5jaHJv
bWUoKS53aW5kb3dSZWN0KCk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UncmUgaW4gYSB2YWxpZCBz
dGF0ZSBiZWZvcmUgYWRqdXN0aW5nIGRpbWVuc2lvbnMuCiAgICAgQVNTRVJUKHN0ZDo6aXNmaW5p
dGUoc2NyZWVuLngoKSkpOwpAQCAtMzM5LDcgKzMzOSw3IEBAIEZsb2F0UmVjdCBET01XaW5kb3c6
OmFkanVzdFdpbmRvd1JlY3QoUGFnZSogcGFnZSwgY29uc3QgRmxvYXRSZWN0JiBwZW5kaW5nQ2hh
bmdlCiAgICAgaWYgKCFzdGQ6OmlzbmFuKHBlbmRpbmdDaGFuZ2VzLmhlaWdodCgpKSkKICAgICAg
ICAgd2luZG93LnNldEhlaWdodChwZW5kaW5nQ2hhbmdlcy5oZWlnaHQoKSk7CiAKLSAgICBGbG9h
dFNpemUgbWluaW11bVNpemUgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm1pbmltdW1XaW5k
b3dTaXplKCk7CisgICAgRmxvYXRTaXplIG1pbmltdW1TaXplID0gcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCktPm1pbmltdW1XaW5kb3dTaXplKCk7CiAgICAgLy8gTGV0IHNpemUgMCBwYXNzIHRocm91
Z2gsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIGRlZmF1bHQgc2l6ZSwgbm90IG1pbmltdW0gc2l6ZS4K
ICAgICBpZiAod2luZG93LndpZHRoKCkpCiAgICAgICAgIHdpbmRvdy5zZXRXaWR0aChtaW4obWF4
KG1pbmltdW1TaXplLndpZHRoKCksIHdpbmRvdy53aWR0aCgpKSwgc2NyZWVuLndpZHRoKCkpKTsK
QEAgLTM3Niw3ICszNzYsNyBAQCBib29sIERPTVdpbmRvdzo6Y2FuU2hvd01vZGFsRGlhbG9nKGNv
bnN0IEZyYW1lKiBmcmFtZSkKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcGFnZS0+Y2hyb21l
KCktPmNhblJ1bk1vZGFsKCk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNhblJ1bk1vZGFs
KCk7CiB9CiAKIGJvb2wgRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2dOb3coY29uc3QgRnJh
bWUqIGZyYW1lKQpAQCAtMzg2LDcgKzM4Niw3IEBAIGJvb2wgRE9NV2luZG93OjpjYW5TaG93TW9k
YWxEaWFsb2dOb3coY29uc3QgRnJhbWUqIGZyYW1lKQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBwYWdlLT5jaHJvbWUoKS0+Y2FuUnVuTW9kYWxOb3coKTsKKyAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCkuY2FuUnVuTW9kYWxOb3coKTsKIH0KIAogRE9NV2luZG93OjpET01XaW5kb3coRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtOTM2LDcgKzkzNiw3IEBAIHZvaWQgRE9NV2luZG93Ojpmb2N1cyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogCiAgICAgLy8gSWYgd2UncmUgYSB0b3Ag
bGV2ZWwgd2luZG93LCBicmluZyB0aGUgd2luZG93IHRvIHRoZSBmcm9udC4KICAgICBpZiAobV9m
cmFtZSA9PSBwYWdlLT5tYWluRnJhbWUoKSAmJiBhbGxvd0ZvY3VzKQotICAgICAgICBwYWdlLT5j
aHJvbWUoKS0+Zm9jdXMoKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuZm9jdXMoKTsKIAogICAg
IGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTY1LDcgKzk2NSw3IEBAIHZvaWQg
RE9NV2luZG93OjpibHVyKCkKICAgICBpZiAobV9mcmFtZSAhPSBwYWdlLT5tYWluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPnVuZm9jdXMoKTsKKyAgICBw
YWdlLT5jaHJvbWUoKS51bmZvY3VzKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpjbG9zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgRE9N
V2luZG93OjpjbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICgh
bV9mcmFtZS0+bG9hZGVyKCktPnNob3VsZENsb3NlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBhZ2UtPmNocm9tZSgpLT5jbG9zZVdpbmRvd1Nvb24oKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5j
bG9zZVdpbmRvd1Nvb24oKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OnByaW50KCkKQEAgLTEwMTYs
NyArMTAxNiw3IEBAIHZvaWQgRE9NV2luZG93OjpwcmludCgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV9zaG91bGRQcmludFdoZW5GaW5pc2hlZExvYWRpbmcgPSBmYWxzZTsKLSAgICBw
YWdlLT5jaHJvbWUoKS0+cHJpbnQobV9mcmFtZSk7CisgICAgcGFnZS0+Y2hyb21lKCkucHJpbnQo
bV9mcmFtZSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzdG9wKCkKQEAgLTEwNDAsNyArMTA0MCw3
IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+cnVuSmF2YVNj
cmlwdEFsZXJ0KG1fZnJhbWUsIG1lc3NhZ2UpOworICAgIHBhZ2UtPmNocm9tZSgpLnJ1bkphdmFT
Y3JpcHRBbGVydChtX2ZyYW1lLCBtZXNzYWdlKTsKIH0KIAogYm9vbCBET01XaW5kb3c6OmNvbmZp
cm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTA1NCw3ICsxMDU0LDcgQEAgYm9vbCBET01X
aW5kb3c6OmNvbmZpcm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5ydW5KYXZh
U2NyaXB0Q29uZmlybShtX2ZyYW1lLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gcGFnZS0+Y2hyb21l
KCkucnVuSmF2YVNjcmlwdENvbmZpcm0obV9mcmFtZSwgbWVzc2FnZSk7CiB9CiAKIFN0cmluZyBE
T01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlKQpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6cHJvbXB0
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZyByZXR1cm5WYWx1ZTsKLSAgICBpZiAo
cGFnZS0+Y2hyb21lKCktPnJ1bkphdmFTY3JpcHRQcm9tcHQobV9mcmFtZSwgbWVzc2FnZSwgZGVm
YXVsdFZhbHVlLCByZXR1cm5WYWx1ZSkpCisgICAgaWYgKHBhZ2UtPmNocm9tZSgpLnJ1bkphdmFT
Y3JpcHRQcm9tcHQobV9mcmFtZSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCByZXR1cm5WYWx1ZSkp
CiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKQEAg
LTExMzAsNyArMTEzMCw3IEBAIGludCBET01XaW5kb3c6Om91dGVySGVpZ2h0KCkgY29uc3QKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4ocGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpLmhlaWdodCgpKTsK
IH0KIAogaW50IERPTVdpbmRvdzo6b3V0ZXJXaWR0aCgpIGNvbnN0CkBAIC0xMTQyLDcgKzExNDIs
NyBAQCBpbnQgRE9NV2luZG93OjpvdXRlcldpZHRoKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hy
b21lKCktPndpbmRvd1JlY3QoKS53aWR0aCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihwYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCkud2lkdGgoKSk7CiB9CiAKIGludCBET01XaW5k
b3c6OmlubmVySGVpZ2h0KCkgY29uc3QKQEAgLTExODIsNyArMTE4Miw3IEBAIGludCBET01XaW5k
b3c6OnNjcmVlblgoKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgp
LngoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hyb21lKCkud2luZG93
UmVjdCgpLngoKSk7CiB9CiAKIGludCBET01XaW5kb3c6OnNjcmVlblkoKSBjb25zdApAQCAtMTE5
NCw3ICsxMTk0LDcgQEAgaW50IERPTVdpbmRvdzo6c2NyZWVuWSgpIGNvbnN0CiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBh
Z2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCkueSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihwYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCkueSgpKTsKIH0KIAogaW50IERPTVdpbmRv
dzo6c2Nyb2xsWCgpIGNvbnN0CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIERPTVdpbmRvdzo6
c2V0U3RhdHVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUg
bWFkZSB3aGVuIHRoZSBmcmFtZSBpcyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgcGFnZS0+
Y2hyb21lKCktPnNldFN0YXR1c2JhclRleHQobV9mcmFtZSwgbV9zdGF0dXMpOworICAgIHBhZ2Ut
PmNocm9tZSgpLnNldFN0YXR1c2JhclRleHQobV9mcmFtZSwgbV9zdGF0dXMpOwogfSAKICAgICAK
IHZvaWQgRE9NV2luZG93OjpzZXREZWZhdWx0U3RhdHVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAK
QEAgLTEyODIsNyArMTI4Miw3IEBAIHZvaWQgRE9NV2luZG93OjpzZXREZWZhdWx0U3RhdHVzKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFt
ZS0+ZG9jdW1lbnQoKSk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUgbWFkZSB3aGVuIHRo
ZSBmcmFtZSBpcyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgcGFnZS0+Y2hyb21lKCktPnNl
dFN0YXR1c2JhclRleHQobV9mcmFtZSwgbV9kZWZhdWx0U3RhdHVzKTsKKyAgICBwYWdlLT5jaHJv
bWUoKS5zZXRTdGF0dXNiYXJUZXh0KG1fZnJhbWUsIG1fZGVmYXVsdFN0YXR1cyk7CiB9CiAKIERP
TVdpbmRvdyogRE9NV2luZG93OjpzZWxmKCkgY29uc3QKQEAgLTE0NzYsMTEgKzE0NzYsMTEgQEAg
dm9pZCBET01XaW5kb3c6Om1vdmVCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIEZsb2F0UmVj
dCBmciA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7CisgICAgRmxvYXRSZWN0IGZyID0g
cGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOwogICAgIEZsb2F0UmVjdCB1cGRhdGUgPSBmcjsK
ICAgICB1cGRhdGUubW92ZSh4LCB5KTsKICAgICAvLyBTZWN1cml0eSBjaGVjayAodGhlIHNwZWMg
dGFsa3MgYWJvdXQgVW5pdmVyc2FsQnJvd3NlcldyaXRlIHRvIGRpc2FibGUgdGhpcyBjaGVjay4u
LikKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChhZGp1c3RXaW5kb3dSZWN0KHBh
Z2UsIHVwZGF0ZSkpOworICAgIHBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2lu
ZG93UmVjdChwYWdlLCB1cGRhdGUpKTsKIH0KIAogdm9pZCBET01XaW5kb3c6Om1vdmVUbyhmbG9h
dCB4LCBmbG9hdCB5KSBjb25zdApAQCAtMTQ4OSwxMyArMTQ4OSwxMyBAQCB2b2lkIERPTVdpbmRv
dzo6bW92ZVRvKGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAg
IFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+
Y2hyb21lKCktPndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUo
KS53aW5kb3dSZWN0KCk7CiAgICAgRmxvYXRSZWN0IHNyID0gc2NyZWVuQXZhaWxhYmxlUmVjdChw
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICBmci5zZXRMb2NhdGlvbihzci5sb2NhdGlv
bigpKTsKICAgICBGbG9hdFJlY3QgdXBkYXRlID0gZnI7CiAgICAgdXBkYXRlLm1vdmUoeCwgeSk7
CiAgICAgLy8gU2VjdXJpdHkgY2hlY2sgKHRoZSBzcGVjIHRhbGtzIGFib3V0IFVuaXZlcnNhbEJy
b3dzZXJXcml0ZSB0byBkaXNhYmxlIHRoaXMgY2hlY2suLi4pCi0gICAgcGFnZS0+Y2hyb21lKCkt
PnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdChwYWdlLCB1cGRhdGUpKTsKKyAgICBwYWdl
LT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGFkanVzdFdpbmRvd1JlY3QocGFnZSwgdXBkYXRlKSk7
CiB9CiAKIHZvaWQgRE9NV2luZG93OjpyZXNpemVCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdApA
QCAtMTUwNCwxMCArMTUwNCwxMCBAQCB2b2lkIERPTVdpbmRvdzo6cmVzaXplQnkoZmxvYXQgeCwg
ZmxvYXQgeSkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKLSAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVj
dCgpOworICAgIEZsb2F0UmVjdCBmciA9IHBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKICAg
ICBGbG9hdFNpemUgZGVzdCA9IGZyLnNpemUoKSArIEZsb2F0U2l6ZSh4LCB5KTsKICAgICBGbG9h
dFJlY3QgdXBkYXRlKGZyLmxvY2F0aW9uKCksIGRlc3QpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5z
ZXRXaW5kb3dSZWN0KGFkanVzdFdpbmRvd1JlY3QocGFnZSwgdXBkYXRlKSk7CisgICAgcGFnZS0+
Y2hyb21lKCkuc2V0V2luZG93UmVjdChhZGp1c3RXaW5kb3dSZWN0KHBhZ2UsIHVwZGF0ZSkpOwog
fQogCiB2b2lkIERPTVdpbmRvdzo6cmVzaXplVG8oZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkg
Y29uc3QKQEAgLTE1MTYsMTAgKzE1MTYsMTAgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hy
b21lKCktPndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUoKS53
aW5kb3dSZWN0KCk7CiAgICAgRmxvYXRTaXplIGRlc3QgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdo
dCk7CiAgICAgRmxvYXRSZWN0IHVwZGF0ZShmci5sb2NhdGlvbigpLCBkZXN0KTsKLSAgICBwYWdl
LT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChhZGp1c3RXaW5kb3dSZWN0KHBhZ2UsIHVwZGF0ZSkp
OworICAgIHBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdChwYWdl
LCB1cGRhdGUpKTsKIH0KIAogaW50IERPTVdpbmRvdzo6c2V0VGltZW91dChQYXNzT3duUHRyPFNj
aGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0yMDAzLDE5ICsyMDAzLDE5IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhCiAgICAgaWYgKCFk
aWFsb2dGcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yRGlz
YWJsZXIgZGlzYWJsZXI7Ci0gICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPnJ1bk1v
ZGFsKCk7CisgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkucnVuTW9kYWwoKTsKIH0K
IAogdm9pZCBET01XaW5kb3c6OmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkKIHsKICAgICBpZiAo
UGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmVuYWJs
ZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmVuYWJsZVN1ZGRl
blRlcm1pbmF0aW9uKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpkaXNhYmxlU3VkZGVuVGVybWlu
YXRpb24oKQogewogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICBw
YWdlLT5jaHJvbWUoKS0+ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgICAgIHBhZ2Ut
PmNocm9tZSgpLmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNTZkY2E0Yy4u
ZjU0ZGVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTcxOCw4ICsx
NzE4LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICAgICAgZnJhbWVWaWV3LT5tb3VzZU1vdmVkSW5Db250ZW50QXJl
YSgpOyAgCiAKICAgICBob3ZlcmVkTm9kZS5zZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7Ci0gICAg
cGFnZS0+Y2hyb21lKCktPm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGhvdmVyZWROb2RlLCBldmVu
dC5tb2RpZmllckZsYWdzKCkpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRUb29sVGlwKGhvdmVy
ZWROb2RlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5tb3VzZURpZE1vdmVPdmVyRWxlbWVudChob3Zl
cmVkTm9kZSwgZXZlbnQubW9kaWZpZXJGbGFncygpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zZXRU
b29sVGlwKGhvdmVyZWROb2RlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zNjY1LDcg
KzM2NjUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dGFic1RvTGlua3MoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpIGNvbnN0CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBib29sIHRhYnNUb0xpbmtzQ2xpZW50Q2FsbFJlc3VsdCA9IHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+a2V5Ym9hcmRVSU1vZGUoKSAmIEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3M7CisgICAg
Ym9vbCB0YWJzVG9MaW5rc0NsaWVudENhbGxSZXN1bHQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS0+a2V5Ym9hcmRVSU1vZGUoKSAmIEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3M7CiAgICAgcmV0
dXJuIGV2ZW50SW52ZXJ0c1RhYnNUb0xpbmtzQ2xpZW50Q2FsbFJlc3VsdChldmVudCkgPyAhdGFi
c1RvTGlua3NDbGllbnRDYWxsUmVzdWx0IDogdGFic1RvTGlua3NDbGllbnRDYWxsUmVzdWx0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggN2I2YjkzYS4u
NTNkYWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMTk2
LDcgKzE5Niw3IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoUGFzc1Jl
ZlB0cjxGcmFtZT4gZnJhbWUpCiAgICAgICAgIG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRj
aFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIG1fcGFnZS0+Y2hyb21lKCktPmZvY3VzZWRGcmFtZUNo
YW5nZWQobmV3RnJhbWUuZ2V0KCkpOworICAgIG1fcGFnZS0+Y2hyb21lKCkuZm9jdXNlZEZyYW1l
Q2hhbmdlZChuZXdGcmFtZS5nZXQoKSk7CiAKICAgICBtX2lzQ2hhbmdpbmdGb2N1c2VkRnJhbWUg
PSBmYWxzZTsKIH0KQEAgLTI5NSwxMCArMjk1LDEwIEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjph
ZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXli
CiAKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBub2RlIHRv
IGZvY3VzLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIHBhc3MgZm9jdXMgdG8gQ2hyb21lLgotICAgICAg
ICBpZiAoIWluaXRpYWxGb2N1cyAmJiBtX3BhZ2UtPmNocm9tZSgpLT5jYW5UYWtlRm9jdXMoZGly
ZWN0aW9uKSkgeworICAgICAgICBpZiAoIWluaXRpYWxGb2N1cyAmJiBtX3BhZ2UtPmNocm9tZSgp
LmNhblRha2VGb2N1cyhkaXJlY3Rpb24pKSB7CiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0Rm9j
dXNlZE5vZGUoMCk7CiAgICAgICAgICAgICBzZXRGb2N1c2VkRnJhbWUoMCk7Ci0gICAgICAgICAg
ICBtX3BhZ2UtPmNocm9tZSgpLT50YWtlRm9jdXMoZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIG1f
cGFnZS0+Y2hyb21lKCkudGFrZUZvY3VzKGRpcmVjdGlvbik7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGU4ODhjN2QuLjcwZTcx
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBGcmFtZTo6
c2V0RG9jdW1lbnQoUGFzc1JlZlB0cjxEb2N1bWVudD4gbmV3RG9jKQogICAgICAgICBub3RpZnlD
aHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgpOwogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgICAgIGlmIChtX2RvYyAmJiBtX2RvYy0+aGFzVG91Y2hFdmVudEhh
bmRsZXJzKCkpCi0gICAgICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bmVlZFRv
dWNoRXZlbnRzKHRydWUpOworICAgICAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+
bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogI2VuZGlmCiAgICAgfQogCkBAIC04MzcsNyArODM3LDcg
QEAgdm9pZCBGcmFtZTo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50
UmVjdD4mIHBhaW50ZWRBcmVhKQogICAgIHVuc2lnbmVkIHNpemUgPSBwYWludGVkQXJlYS5zaXpl
KCk7CiAgICAgLy8gUmVxdWVzdCByZXBhaW50IGZyb20gdGhlIHN5c3RlbQogICAgIGZvciAodW5z
aWduZWQgbiA9IDA7IG4gPCBzaXplOyArK24pCi0gICAgICAgIG1fcGFnZS0+Y2hyb21lKCktPmlu
dmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KG1fdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHBh
aW50ZWRBcmVhW25dKSwgZmFsc2UpOworICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLmludmFsaWRh
dGVDb250ZW50c0FuZFJvb3RWaWV3KG1fdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHBhaW50ZWRB
cmVhW25dKSwgZmFsc2UpOwogfQogCiBJbnRSZWN0IEZyYW1lOjp0aWxlZEJhY2tpbmdTdG9yZUNv
bnRlbnRzUmVjdCgpCkBAIC04NTEsNyArODUxLDcgQEAgSW50UmVjdCBGcmFtZTo6dGlsZWRCYWNr
aW5nU3RvcmVWaXNpYmxlUmVjdCgpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
biBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT52aXNp
YmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCktPnZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKTsKIH0KIAogQ29s
b3IgRnJhbWU6OnRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKQEAgLTk5
Nyw3ICs5OTcsNyBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQo
KQogICAgIGlmIChyb290ICYmIHJvb3QtPmNvbXBvc2l0b3IoKSkKICAgICAgICAgcm9vdC0+Y29t
cG9zaXRvcigpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKIAotICAgIG1fcGFn
ZS0+Y2hyb21lKCktPmNsaWVudCgpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsK
KyAgICBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKTsKIH0KICNlbmRpZgogdm9pZCBGcmFtZTo6bm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoKSBjb25zdApAQCAtMTAxMSw3ICsxMDExLDcgQEAgdm9p
ZCBGcmFtZTo6bm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQo
KSBjb25zdAogICAgICAgICAgICAgY291bnQgKz0gZnJhbWUtPmRvY3VtZW50KCktPndoZWVsRXZl
bnRIYW5kbGVyQ291bnQoKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChjb3VudCk7CisgICAgbV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChjb3VudCk7CiB9CiAK
IGJvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYWE3MTc0NC4uNWYyMGY4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRDb250
ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIHVwZGF0ZVNjcm9sbGFibGVBcmVh
U2V0KCk7CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+Y29udGVudHNTaXplQ2hhbmdlZChmcmFtZSgp
LCBzaXplKTsgLy9ub3RpZnkgb25seQorICAgIHBhZ2UtPmNocm9tZSgpLmNvbnRlbnRzU2l6ZUNo
YW5nZWQoZnJhbWUoKSwgc2l6ZSk7IC8vIE5vdGlmeSBvbmx5LgogCiAgICAgbV9kZWZlclNldE5l
ZWRzTGF5b3V0cy0tOwogICAgIApAQCAtOTQ1LDcgKzk0NSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
ZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkKIHsKICAgICBQYWdlKiBwYWdl
ID0gZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2UoKSA6IDA7CiAgICAgaWYgKHBhZ2UpCi0gICAgICAg
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+c2V0TmVlZHNPbmVT
aG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpAQCAtMTQwOCw3ICsxNDA4LDcgQEAgdm9pZCBGcmFtZVZpZXc6Omxh
eW91dChib29sIGFsbG93U3VidHJlZSkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bGF5b3V0VXBkYXRlZChmcmFtZSgpKTsK
KyAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+bGF5b3V0VXBkYXRlZChmcmFtZSgpKTsKIH0K
IAogUmVuZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CkBAIC0y
MDQyLDcgKzIwNDIsNyBAQCBib29sIEZyYW1lVmlldzo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0
aW9uKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgUGFnZSogcGFnZSA9IGZy
YW1lKCkgPyBmcmFtZSgpLT5wYWdlKCkgOiAwOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIFNjcm9sbFZpZXc6OnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihkaXJlY3Rpb24pOwot
ICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNob3VsZFJ1YmJlckJhbmRJbkRp
cmVjdGlvbihkaXJlY3Rpb24pOworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+
c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKGRpcmVjdGlvbik7CiB9CiAKIGJvb2wgRnJhbWVW
aWV3Ojppc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3QKQEAgLTIwOTIsNyArMjA5Miw3IEBA
IEhvc3RXaW5kb3cqIEZyYW1lVmlldzo6aG9zdFdpbmRvdygpIGNvbnN0CiAgICAgUGFnZSogcGFn
ZSA9IGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlKCkgOiAwOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpOworICAgIHJldHVybiAmcGFn
ZS0+Y2hyb21lKCk7CiB9CiAKIGNvbnN0IHVuc2lnbmVkIGNSZXBhaW50UmVjdFVuaW9uVGhyZXNo
b2xkID0gMjU7CkBAIC0zMDQ4LDcgKzMwNDgsNyBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2luZG93
UmVzaXplclJlY3QoKSBjb25zdAogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpID8gZnJhbWUoKS0+
cGFnZSgpIDogMDsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0g
ICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZXNpemVyUmVjdCgpOworICAgIHJldHVy
biBwYWdlLT5jaHJvbWUoKS53aW5kb3dSZXNpemVyUmVjdCgpOwogfQogCiBmbG9hdCBGcmFtZVZp
ZXc6OnZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdApAQCAtMzA2OSw3ICszMDY5LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRS
ZWN0JiBzY3JvbGxlclRodW1iKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHBhZ2UtPm1haW5G
cmFtZSgpICE9IG1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPm5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3Qoc2Nyb2xsZXJUaHVt
Yik7CisgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zp
c2libGVJblJlY3Qoc2Nyb2xsZXJUaHVtYik7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxi
YXJzQ2FuQmVBY3RpdmUoKSBjb25zdApAQCAtMzE2Miw3ICszMTYyLDcgQEAgdm9pZCBGcmFtZVZp
ZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkgIT0gbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cmVjb21tZW5k
ZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShuZXdTdHlsZSk7CisgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCktPnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UobmV3U3R5bGUpOwog
CiAgICAgaWYgKGZvcmNlVXBkYXRlKQogICAgICAgICBTY3JvbGxWaWV3OjpzY3JvbGxiYXJTdHls
ZUNoYW5nZWQobmV3U3R5bGUsIGZvcmNlVXBkYXRlKTsKQEAgLTMyMzMsNyArMzIzMyw3IEBAIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVBbm5vdGF0ZWRSZWdpb25zKCkKICAgICBQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+YW5ub3RhdGVkUmVnaW9uc0NoYW5nZWQoKTsKKyAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+YW5ub3RhdGVkUmVnaW9uc0NoYW5nZWQoKTsKIH0KICNl
bmRpZgogCkBAIC0zNjQ1LDcgKzM2NDUsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaQogCiAg
ICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAocGFnZS0+bWFpbkZyYW1l
KCkgPT0gbV9mcmFtZSkgewotICAgICAgICBpZiAocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5w
YWludEN1c3RvbU92ZXJoYW5nQXJlYShjb250ZXh0LCBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCB2
ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgZGlydHlSZWN0KSkKKyAgICAgICAgaWYgKHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLT5wYWludEN1c3RvbU92ZXJoYW5nQXJlYShjb250ZXh0LCBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgZGlydHlSZWN0KSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMWRhMTRkNC4uOTFkZGJjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNy
ZW1lbnRTdWJmcmFtZUNvdW50KCkgeyBBU1NFUlQobV9zdWJmcmFtZUNvdW50KTsgLS1tX3N1YmZy
YW1lQ291bnQ7IH0KICAgICBpbnQgc3ViZnJhbWVDb3VudCgpIGNvbnN0IHsgY2hlY2tTdWJmcmFt
ZUNvdW50Q29uc2lzdGVuY3koKTsgcmV0dXJuIG1fc3ViZnJhbWVDb3VudDsgfQogCi0gICAgQ2hy
b21lKiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiBtX2Nocm9tZS5nZXQoKTsgfQorICAgIENocm9t
ZSYgY2hyb21lKCkgY29uc3QgeyByZXR1cm4gKm1fY2hyb21lOyB9CiAgICAgRHJhZ0NhcmV0Q29u
dHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0NhcmV0
Q29udHJvbGxlci5nZXQoKTsgfQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgRHJhZ0Nv
bnRyb2xsZXIqIGRyYWdDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnQ29udHJvbGxl
ci5nZXQoKTsgfQpAQCAtNDEyLDcgKzQxMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbGxl
Y3RQbHVnaW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVnaW5W
aWV3QmFzZXMpOwogCi0gICAgT3duUHRyPENocm9tZT4gbV9jaHJvbWU7CisgICAgY29uc3QgT3du
UHRyPENocm9tZT4gbV9jaHJvbWU7CiAgICAgT3duUHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1f
ZHJhZ0NhcmV0Q29udHJvbGxlcjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IGFkNzVhNGYuLjg5MGM0YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBQYWdlQ29uc29s
ZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHIKICAgICBpZiAocGFnZS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCB1cmwpOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5hZGRNZXNzYWdl
VG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgdXJsKTsKIAogICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+bG9nc1BhZ2VNZXNzYWdlc1Rv
U3lzdGVtQ29uc29sZUVuYWJsZWQoKSAmJiAhc2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCAwN2E2ZjgzLi45OGE5
YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9v
bCBQYWdlR3JvdXA6OmlzTGlua1Zpc2l0ZWQoTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKQogICAg
IGlmICghbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQpIHsKICAgICAgICAgbV92aXNpdGVkTGlua3NQ
b3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICBBU1NFUlQoIW1fcGFnZXMuaXNFbXB0eSgpKTsKLSAg
ICAgICAgKCptX3BhZ2VzLmJlZ2luKCkpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBvcHVsYXRlVmlz
aXRlZExpbmtzKCk7CisgICAgICAgICgqbV9wYWdlcy5iZWdpbigpKS0+Y2hyb21lKCkuY2xpZW50
KCktPnBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CiAgICAgfQogICAgIHJldHVybiBtX3Zpc2l0ZWRM
aW5rSGFzaGVzLmNvbnRhaW5zKHZpc2l0ZWRMaW5rSGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKaW5kZXggNjNmOTY1Yi4uOTc0Yjk4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcApAQCAt
NjgsNyArNjgsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJM
b2NrKEVsZW1lbnQqIHRhcmdldCkKICAgICAgICAgfQogICAgICAgICBlbnF1ZXVlRXZlbnQoZXZl
bnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlRXZlbnQsIHRhcmdldCk7CiAgICAgICAg
IG1fZWxlbWVudCA9IHRhcmdldDsKLSAgICB9IGVsc2UgaWYgKG1fcGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT5yZXF1ZXN0UG9pbnRlckxvY2soKSkgeworICAgIH0gZWxzZSBpZiAobV9wYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS0+cmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKICAgICAgICAgbV9sb2Nr
UGVuZGluZyA9IHRydWU7CiAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKICAgICB9IGVsc2Ug
ewpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBv
aW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCkKIAogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIHsKLSAgICByZXR1cm4gbV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CiB9CiAKIHZvaWQgUG9pbnRl
ckxvY2tDb250cm9sbGVyOjplbGVtZW50UmVtb3ZlZChFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGYzNjliZDAuLjBkZGIz
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTEw
NCw3ICsxMDQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudChOU0V2ZW50ICpldmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ3VycmVudEV2ZW50U2NvcGUgc2NvcGUo
ZXZlbnQpOwotICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5
OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKSkpOworICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtRXZl
bnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgp
LnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVu
dChOU0V2ZW50ICpldmVudCkKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
Zm9jdXNEb2N1bWVudFZpZXcoKQogCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9m
cmFtZS0+dmlldygpKSB7CiAgICAgICAgIGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IGZyYW1l
Vmlldy0+ZG9jdW1lbnRWaWV3KCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXNO
U1ZpZXcoZG9jdW1lbnRWaWV3KTsKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzTlNW
aWV3KGRvY3VtZW50Vmlldyk7CiAgICAgfQogCiAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PnNldEZvY3VzZWRGcmFtZShtX2ZyYW1lKTsKQEAgLTIwMywxMSArMjAzLDExIEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChXaWRnZXQqIHBXaWRnZXQpCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPmZpcnN0UmVzcG9uZGVyKCkgIT0gdmlldykgeworICAgIGlmIChwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS0+Zmlyc3RSZXNwb25kZXIoKSAhPSB2aWV3KSB7CiAgICAgICAg
IC8vIE5vcm1hbGx5IFtOU1dpbmRvdyBzZW5kRXZlbnQ6XSBoYW5kbGVzIHNldHRpbmcgdGhlIGZp
cnN0IHJlc3BvbmRlci4KICAgICAgICAgLy8gQnV0IGluIG91ciBjYXNlLCB0aGUgZXZlbnQgd2Fz
IHNlbnQgdG8gdGhlIHZpZXcgcmVwcmVzZW50aW5nIHRoZSBlbnRpcmUgd2ViIHBhZ2UuCiAgICAg
ICAgIGlmIChbY3VycmVudE5TRXZlbnQoKSBjbGlja0NvdW50XSA8PSAxICYmIFt2aWV3IGFjY2Vw
dHNGaXJzdFJlc3BvbmRlcl0gJiYgW3ZpZXcgbmVlZHNQYW5lbFRvQmVjb21lS2V5XSkKLSAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bWFrZUZpcnN0UmVzcG9uZGVyKHZpZXcp
OworICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm1ha2VGaXJzdFJlc3BvbmRl
cih2aWV3KTsKICAgICB9CiAKICAgICAvLyBXZSBuZWVkIHRvICJkZWZlciBsb2FkaW5nIiB3aGls
ZSB0cmFja2luZyB0aGUgbW91c2UsIGJlY2F1c2UgdGVhcmluZyBkb3duIHRoZQpAQCAtNjYwLDcg
KzY2MCw3IEBAIFBsYXRmb3JtTW91c2VFdmVudCBFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9y
bU1vdXNlRXZlbnQoKSBjb25zdAogewogICAgIE5TVmlldyAqd2luZG93VmlldyA9IG5pbDsKICAg
ICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgd2luZG93VmlldyA9
IHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgd2luZG93Vmll
dyA9IHBhZ2UtPmNocm9tZSgpLnBsYXRmb3JtUGFnZUNsaWVudCgpOwogICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGN1cnJlbnROU0V2ZW50
KCksIHdpbmRvd1ZpZXcpOwogfQogCkBAIC02ODgsNyArNjg4LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnRhYnNUb0FsbEZvcm1Db250cm9scyhLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtleWJvYXJkVUlNb2Rl
IGtleWJvYXJkVUlNb2RlID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5rZXlib2FyZFVJTW9k
ZSgpOworICAgIEtleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlID0gcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCktPmtleWJvYXJkVUlNb2RlKCk7CiAgICAgYm9vbCBoYW5kbGluZ09wdGlvblRhYiA9
IGlzS2V5Ym9hcmRPcHRpb25UYWIoZXZlbnQpOwogCiAgICAgLy8gSWYgdGFiLXRvLWxpbmtzIGlz
IG9mZiwgb3B0aW9uLXRhYiBhbHdheXMgaGlnaGxpZ2h0cyBhbGwgY29udHJvbHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmls
ZVN5c3RlbUJsYWNrQmVycnkuY3BwCmluZGV4IGY4ODQ0N2UuLmUxNWFmMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbEZp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBvcGVu
RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGJhc2VQYQogICAgICAgICBpbnQgcGxheWVySWQgPSAwOwogICAgICAgICBQYWdlKiBwYWdlID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpOwogICAgICAgICBpZiAocGFn
ZSkKLSAgICAgICAgICAgIHBsYXllcklkID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbGF0
Zm9ybVBhZ2VDbGllbnQoKS0+cGxheWVySUQoKTsKKyAgICAgICAgICAgIHBsYXllcklkID0gcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5wbGF5ZXJJRCgpOwog
ICAgICAgICBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpvcGVuRmlsZVN5c3RlbShyb290VVJM
LCBiYXNlUGF0aCwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVy
KCksIHR5cGUsIHNpemUsIGNyZWF0ZSwgcGxheWVySWQsIGNhbGxiYWNrcyk7CiAgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCA3NmE5NzU0Li43MzA1NmQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC05NSw5
ICs5NSw3IEBAIHN0YXRpYyBpbmxpbmUgR2RrRGlzcGxheSogZGlzcGxheUZyb21GcmFtZShGcmFt
ZSogZnJhbWUpCiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBh
Z2UoKTsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAgQ2hyb21lKiBjaHJvbWUgPSBwYWdlLT5jaHJv
bWUoKTsKLSAgICBBU1NFUlQoY2hyb21lKTsKLSAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgY2xpZW50
ID0gY2hyb21lLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQg
Y2xpZW50ID0gcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkoY2xpZW50KSA6IGdka19kaXNwbGF5X2dl
dF9kZWZhdWx0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1t
CmluZGV4IGYzZGRhNDguLjU4MDE4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dp
ZGdldE1hYy5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cyhib29s
IGZvY3VzZWQpCiAgICAgLy8gQ2FsbCB0aGlzIGV2ZW4gd2hlbiB0aGVyZSBpcyBubyBwbGF0Zm9y
bVdpZGdldCgpLiBXSzIgd2lsbCBmb2N1cyBvbiB0aGUgd2lkZ2V0IGluIHRoZSBVSVByb2Nlc3Mu
CiAgICAgTlNWaWV3ICp2aWV3ID0gW3BsYXRmb3JtV2lkZ2V0KCkgX3dlYmNvcmVfZWZmZWN0aXZl
Rmlyc3RSZXNwb25kZXJdOwogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKLSAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3VzTlNWaWV3KHZpZXcpOworICAgICAgICBwYWdlLT5j
aHJvbWUoKS5mb2N1c05TVmlldyh2aWV3KTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmlu
ZGV4IDdjNjU0NGQuLjcyYmU2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5k
S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5j
b2QKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVOYW1lOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEdlbmVyYXRlRmlsZSA9IHBhZ2UtPmNocm9tZSgp
LT5jbGllbnQoKS0+c2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgs
IGdlbmVyYXRlZEZpbGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRH
ZW5lcmF0ZUZpbGUgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+c2hvdWxkUmVwbGFjZVdpdGhH
ZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgsIGdlbmVyYXRlZEZpbGVOYW1lKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkR2VuZXJhdGVGaWxlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lID0gZ2VuZXJhdGVkRmlsZU5hbWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBGb3JtRGF0YTo6Z2VuZXJh
dGVGaWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5w
YWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lQ2xpZW50
KiBjbGllbnQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCk7CisgICAgQ2hyb21lQ2xpZW50KiBj
bGllbnQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKTsKIAogICAgIHNpemVfdCBuID0gbV9lbGVt
ZW50cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3Jr
Sm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3
b3JrSm9iLmNwcAppbmRleCBhNTMyNzBkLi40NTM1MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3BwCkBA
IC04OTcsNyArODk3LDcgQEAgTmV0d29ya0pvYjo6U2VuZFJlcXVlc3RSZXN1bHQgTmV0d29ya0pv
Yjo6c2VuZFJlcXVlc3RXaXRoQ3JlZGVudGlhbHMoUHJvdGVjdGlvblMKICAgICAgICAgICAgIHVw
ZGF0ZURlZmVyTG9hZGluZ0NvdW50KDEpOwogCiAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKCktPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5ld1VS
TCwgcHJvdGVjdGlvblNwYWNlLAotICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoKSwgdGhpcywg
bV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgp
KTsKKyAgICAgICAgICAgICAgICBDcmVkZW50aWFsKCksIHRoaXMsIG1fZnJhbWUtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKICAgICAgICAgICAgIHJl
dHVybiBTZW5kUmVxdWVzdFdhaXRpbmc7CiAgICAgICAgIH0KIApAQCAtOTUzLDcgKzk1Myw3IEBA
IHZvaWQgTmV0d29ya0pvYjo6c3RvcmVDcmVkZW50aWFscyhBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQogCiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6
aW5zdGFuY2UoKS0+c3RvcmVQcm94eUNyZWRlbnRpYWxzKHByb3h5SW5mbyk7CiAgICAgICAgIGlm
IChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c3luY1Byb3h5Q3Jl
ZGVudGlhbChjaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpOworICAgICAgICAgICAgbV9m
cmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPnN5
bmNQcm94eUNyZWRlbnRpYWwoY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UVN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUVN0eWxl
LmNwcAppbmRleCBlNTVjNzVjLi42ODA1MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCkBAIC0xMzQsOCArMTM0LDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVFTdHlsZTo6c2V0UGFsZXR0ZUZyb21QYWdlQ2xpZW50SWZFeGlzdHMoUVBhbGV0
dGUmIHBhbGV0dGUpIGNvbnMKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQVNTRVJUKG1fcGFnZS0+Y2hyb21lKCkpOwotICAgIENocm9tZUNsaWVudCogY2hyb21lQ2xp
ZW50ID0gbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCk7CisgICAgQ2hyb21lQ2xpZW50KiBjaHJv
bWVDbGllbnQgPSBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpOwogICAgIGlmICghY2hyb21lQ2xp
ZW50KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVu
ZGVyVGhlbWVRdC5jcHAKaW5kZXggMWY3NzljOC4uNjY4YjYyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTUzOSw3ICs1MzksNyBAQCBTdHJp
bmcgUmVuZGVyVGhlbWVRdDo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCiB7CiAgICAg
U3RyaW5nIHJlc3VsdCA9IFN0cmluZyhtZWRpYUNvbnRyb2xzUXRVc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YobWVkaWFDb250cm9sc1F0VXNlckFnZW50U3R5bGVTaGVldCkpOwogCi0gICAgaWYg
KG1fcGFnZSAmJiBtX3BhZ2UtPmNocm9tZSgpLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1Bs
YXliYWNrKCkpCisgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmNocm9tZSgpLnJlcXVpcmVzRnVs
bHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmco
bWVkaWFDb250cm9sc1F0RnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRp
YUNvbnRyb2xzUXRGdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5MmE4Mzkw
Li4wOTg4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYxMSw3
ICs2MTEsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmRlc3Ryb3lTdHJlYW0oTlBTdHJlYW0qIHN0
cmVhbSwgTlBSZWFzb24gcmVhc29uKQogdm9pZCBQbHVnaW5WaWV3OjpzdGF0dXMoY29uc3QgY2hh
ciogbWVzc2FnZSkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPnNldFN0YXR1c2JhclRleHQobV9wYXJlbnRGcmFt
ZS5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSk7CisgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLnNldFN0YXR1c2JhclRleHQobV9wYXJlbnRGcmFtZS5nZXQoKSwgU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlKSk7CiB9CiAKIE5QRXJyb3IgUGx1Z2luVmlldzo6c2V0VmFsdWUoTlBQVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKaW5kZXggNmEyMWRh
YS4uY2MzYWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5
L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Js
YWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCkBAIC0xMDczLDcgKzEwNzMsNyBAQCBi
b29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQogICAgIH0KIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9wYXJlbnRGcmFtZS0+cGFnZSgpLT5jaHJvbWUo
KS0+Y2xpZW50KCktPmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQorICAgIGlmIChtX3Bh
cmVudEZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5hbGxvd3NBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkKICAgICAgICAgJiYgbV9wYXJlbnRGcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygp
CiAgICAgICAgICYmIG1fcGFyZW50RnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkgewogICAgICAgICBtX3ByaXZhdGUtPm1fcGxhdGZvcm1M
YXllciA9IFBsdWdpbkxheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGUodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDkxNTliYjkuLmEyYTE3
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCkBA
IC03NTUsNyArNzU1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNl
RXZlbnQqIGV2ZW50KQogICAgIC8vIGFuZCBzaW5jZSB3ZSBkb24ndCB3YW50IHRoYXQgd2Ugc2V0
IGlnbm9yZU5leHRTZXRDdXJzb3IgdG8gdHJ1ZSBoZXJlIHRvIHByZXZlbnQgdGhhdC4KICAgICBp
Z25vcmVOZXh0U2V0Q3Vyc29yID0gdHJ1ZTsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fcGFyZW50
RnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zZXRMYXN0
U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5zZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDcwMjY5OTYuLjI2
ZTg0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAg
LTkyOSw3ICs5MjksNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0
KGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgQQogICAgIEZsb2F0UmVjdCBy
b290UmVjdChwYWludE9mZnNldC54KCkgKyByLT54KCksIHBhaW50T2Zmc2V0LnkoKSArIHNlbGVj
dGlvblRvcCgpLCByLT5sb2dpY2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIEZs
b2F0UmVjdCB0ZXh0UmVjdChwYWludE9mZnNldC54KCkgKyB4KCksIHJvb3RSZWN0LnkoKSwgbG9n
aWNhbFdpZHRoKCksIHJvb3RSZWN0LmhlaWdodCgpKTsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+cGFpbnRDdXN0b21IaWdobGlnaHQocmVuZGVyZXIoKS0+bm9kZSgpLCB0eXBlLCB0
ZXh0UmVjdCwgcm9vdFJlY3QsIHRydWUsIGZhbHNlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS0+cGFpbnRDdXN0b21IaWdobGlnaHQocmVuZGVyZXIoKS0+bm9kZSgpLCB0eXBlLCB0ZXh0
UmVjdCwgcm9vdFJlY3QsIHRydWUsIGZhbHNlKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGFiOWNiY2YuLmE3YzczNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNDkwLDEwICsxNDkwLDEwIEBAIHZvaWQg
UmVuZGVyQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IEF0b21pCiAgICAgaWYgKHIpIHsKICAgICAgICAgRmxvYXRSZWN0IHJvb3RS
ZWN0KHBhaW50T2Zmc2V0LngoKSArIHItPngoKSwgcGFpbnRPZmZzZXQueSgpICsgci0+c2VsZWN0
aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0aCgpLCByLT5zZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAg
ICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QocGFpbnRPZmZzZXQueCgpICsgeCgpLCByb290UmVjdC55
KCksIHdpZHRoKCksIHJvb3RSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwg
cm9vdFJlY3QsIGJlaGluZFRleHQsIGZhbHNlKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCktPnBhaW50Q3VzdG9tSGlnaGxpZ2h0KG5vZGUoKSwgdHlwZSwgaW1hZ2VSZWN0LCByb290
UmVjdCwgYmVoaW5kVGV4dCwgZmFsc2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEZsb2F0UmVj
dCBpbWFnZVJlY3QocGFpbnRPZmZzZXQueCgpICsgeCgpLCBwYWludE9mZnNldC55KCkgKyB5KCks
IHdpZHRoKCksIGhlaWdodCgpKTsKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5w
YWludEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwgaW1hZ2VSZWN0LCBi
ZWhpbmRUZXh0LCBmYWxzZSk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5wYWlu
dEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwgaW1hZ2VSZWN0LCBiZWhp
bmRUZXh0LCBmYWxzZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBmOGNjODlkLi5mOTE5NjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
QEAgLTQzMSw3ICs0MzEsNyBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0luVW5hdmFp
bGFibGVQbHVnaW5JbmRpY2F0b3IoTW91c2VFdmVudCogZXZlbnQpIGNvbgogc3RhdGljIGJvb2wg
c2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24oRG9jdW1lbnQqIGRvY3VtZW50
LCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb24pCiB7CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdl
KCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zaG91bGRV
bmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
bik7CisgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnNob3VsZFVu
YXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
KTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JFdmVudChFdmVudCogZXZlbnQpCkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JFdmVu
dChFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5V
bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvciAmJiBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0
b3IobW91c2VFdmVudCkpIHsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQo
KS0+cGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+dW5h
dmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKGVsZW1lbnQsIG1fcGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb24pOworICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT51bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoZWxlbWVudCwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbik7CiAgICAgICAgIH0KICAgICAgICAgbV9tb3VzZURvd25XYXNJblVuYXZhaWxhYmxl
UGx1Z2luSW5kaWNhdG9yID0gZmFsc2U7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggODM5YTM0
MC4uMDFiNWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC0yMzQ3LDcgKzIzNDcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxl
KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubQogICAgICAgICAgICAg
ICAgIC8vIFRoZSBjYW5BdXRvc2Nyb2xsIGZ1bmN0aW9uIGluIEV2ZW50SGFuZGxlciBhbHNvIGtu
b3dzIGFib3V0IHRoaXMuCiAgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGZyYW1l
Vmlldy0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZy
YW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2Ny
b2xsUmVjdEludG9WaWV3KHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuc2Nyb2xsUmVjdEludG9WaWV3KHBpeGVsU25hcHBl
ZEludFJlY3QocmVjdCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAppbmRleCA4ZjU3Y2RjLi5iNWM5OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIFBhc3NPd25QdHI8
R3JhcGhpY3NMYXllcj4gUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xheWVyKGNv
bnN0IFN0cmluZyYKIHsKICAgICBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZh
Y3RvcnkgPSAwOwogICAgIGlmIChQYWdlKiBwYWdlID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+cGFn
ZSgpKQotICAgICAgICBncmFwaGljc0xheWVyRmFjdG9yeSA9IHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKKyAgICAgICAgZ3JhcGhpY3NMYXllckZhY3Rv
cnkgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKIAog
ICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBncmFwaGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5LCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBlZGViMzE0Li5h
NzFiODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpjYWNoZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGbGFncygpCiAgICAgICAgIC8vIG9uIGEg
Y2hyb21lIHRoYXQgZG9lc24ndCBhbGxvdyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4KICAgICAg
ICAgaWYgKGhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcpIHsKICAgICAgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgQ2hyb21lQ2xpZW50KiBj
aHJvbWVDbGllbnQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICAgICAg
Q2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKTsKICAg
ICAgICAgICAgICAgICBtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgPSBjaHJvbWVDbGllbnQtPmFsbG93
ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCk7CiAgICAgICAgICAgICAgICAgaGFzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZyA9IG1fY29tcG9zaXRpbmdUcmlnZ2VyczsKICAgICAgICAgICAgIH0KQEAgLTMz
MCw3ICszMzAsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVMYXllckZs
dXNoTm93KCkKIHsKICAgICBtX2hhc1BlbmRpbmdMYXllckZsdXNoID0gZmFsc2U7CiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKKyAgICAgICAgcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzY2hlZHVsZUxheWVyRmx1c2goYm9vbCBjYW5UaHJv
dHRsZSkKQEAgLTI2MjcsNyArMjYyNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAgICAgIG1fbGF5ZXJGb3JPdmVy
aGFuZ0FyZWFzLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAgICAgICAgICAgbV9sYXllckZv
ck92ZXJoYW5nQXJlYXMtPnNldFNpemUobV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+ZnJhbWVS
ZWN0KCkuc2l6ZSgpKTsKIAotICAgICAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNl
dFVwT3ZlcmhhbmdBcmVhc0xheWVyQ29udGVudHMobV9sYXllckZvck92ZXJoYW5nQXJlYXMuZ2V0
KCksIHRoaXMtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT51bmRlcmxheUNvbG9yKCkpOwor
ICAgICAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNldFVwT3ZlcmhhbmdBcmVhc0xh
eWVyQ29udGVudHMobV9sYXllckZvck92ZXJoYW5nQXJlYXMuZ2V0KCksIHRoaXMtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCktPnVuZGVybGF5Q29sb3IoKSk7CiAKICAgICAgICAgICAgIC8vIFdl
IHdhbnQgdGhlIG92ZXJoYW5nIGFyZWFzIGxheWVyIHRvIGJlIHBvc2l0aW9uZWQgYmVsb3cgdGhl
IGZyYW1lIGNvbnRlbnRzLAogICAgICAgICAgICAgLy8gc28gaW5zZXJ0IGl0IGJlbG93IHRoZSBj
bGlwIGxheWVyLgpAQCAtMjg1Miw3ICsyODUyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmF0dGFjaFJvb3RMYXllcihSb290TGF5ZXJBdHRhY2htZW50IGF0dGFjaG1lbnQpCiAgICAg
ICAgICAgICBpZiAoIXBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKGZyYW1l
LCByb290R3JhcGhpY3NMYXllcigpKTsKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihmcmFtZSwgcm9vdEdyYXBoaWNzTGF5ZXIoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJvb3RMYXllckF0
dGFjaGVkVmlhRW5jbG9zaW5nRnJhbWU6IHsKQEAgLTI4OTYsNyArMjg5Niw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXRhY2hSb290TGF5ZXIoKQogICAgICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihmcmFtZSwgMCk7CisgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihmcmFtZSwgMCk7CiAgICAgfQog
ICAgIGJyZWFrOwogICAgIGNhc2UgUm9vdExheWVyVW5hdHRhY2hlZDoKQEAgLTMxNzQsNyArMzE3
NCw3IEBAIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkgY29uc3QKIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3QKIHsKICAgICBpZiAoUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpOwogCiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA3
ZjZkMjk4Li5mYTBkMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHAKQEAgLTExNiwxMyArMTE2LDEzIEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVz
dElubmVyU3R5bGUoKQogICAgIGlubmVyU3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKHRoZW1l
KCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKHN0eWxlKCkpLCBGaXhlZCkpOwogICAgIGlubmVy
U3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHRoZW1lKCktPnBvcHVwSW50ZXJuYWxQYWRk
aW5nQm90dG9tKHN0eWxlKCkpLCBGaXhlZCkpOwogCi0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2Uo
KS0+Y2hyb21lKCktPnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkpIHsKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtV3JpdGluZ0RpcmVj
dGlvbklzTmF0dXJhbCgpKSB7CiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5v
dCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAg
ICAgICAgIC8vIHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAgICAg
ICAgIGlubmVyU3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKICAgICAgICAgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLT5kZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpID8gUlRM
IDogTFRSOwogICAgICAgICBpbm5lclN0eWxlLT5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKLSAg
ICB9IGVsc2UgaWYgKG1fb3B0aW9uU3R5bGUgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KS0+c2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7Cisg
ICAgfSBlbHNlIGlmIChtX29wdGlvblN0eWxlICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21l
KCkuc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7CiAg
ICAgICAgIGlmICgobV9vcHRpb25TdHlsZS0+ZGlyZWN0aW9uKCkgIT0gaW5uZXJTdHlsZS0+ZGly
ZWN0aW9uKCkgfHwgbV9vcHRpb25TdHlsZS0+dW5pY29kZUJpZGkoKSAhPSBpbm5lclN0eWxlLT51
bmljb2RlQmlkaSgpKSkKICAgICAgICAgICAgIG1faW5uZXJCbG9jay0+c2V0TmVlZHNMYXlvdXRB
bmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIGlubmVyU3R5bGUtPnNldFRleHRBbGlnbihz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOwpAQCAtMzIz
LDcgKzMyMyw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpCiAgICAgaWYgKG1f
cG9wdXBJc1Zpc2libGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChkb2N1bWVudCgpLT5w
YWdlKCktPmNocm9tZSgpLT5oYXNPcGVuZWRQb3B1cCgpKQorICAgIGlmIChkb2N1bWVudCgpLT5w
YWdlKCktPmNocm9tZSgpLmhhc09wZW5lZFBvcHVwKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIENyZWF0ZSBtX2lubmVyQmxvY2sgaGVyZSBzbyBpdCBlbmRzIHVwIGFzIHRoZSBmaXJzdCBj
aGlsZC4KQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjpzaG93UG9wdXAo
KQogICAgIC8vIGluc2lkZSB0aGUgc2hvd1BvcHVwIGNhbGwgYW5kIGl0IHdvdWxkIGZhaWwuCiAg
ICAgY3JlYXRlSW5uZXJCbG9jaygpOwogICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAgbV9wb3B1
cCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNyZWF0ZVBvcHVwTWVudSh0aGlzKTsK
KyAgICAgICAgbV9wb3B1cCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkuY3JlYXRlUG9w
dXBNZW51KHRoaXMpOwogICAgIG1fcG9wdXBJc1Zpc2libGUgPSB0cnVlOwogCiAgICAgLy8gQ29t
cHV0ZSB0aGUgdG9wIGxlZnQgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LCBidXQgdXNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRl
eCBjMzZlODM0Li41MGQyOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZp
ZWxkOjphZGRTZWFyY2hSZXN1bHQoKQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
YXV0b3NhdmVOYW1lKCk7CiAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICBtX3NlYXJj
aFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KHRoaXMpOworICAgICAgICBtX3NlYXJjaFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5j
aHJvbWUoKS5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhpcyk7CiAKICAgICBtX3NlYXJjaFBvcHVw
LT5zYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgbV9yZWNlbnRTZWFyY2hlcyk7CiB9CkBAIC0xMTgs
NyArMTE4LDcgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6c2hvd1BvcHVwKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICBtX3NlYXJjaFBvcHVw
ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNoUG9wdXBNZW51KHRo
aXMpOworICAgICAgICBtX3NlYXJjaFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KS5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhpcyk7CiAKICAgICBpZiAoIW1fc2VhcmNoUG9wdXAt
PmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgUmVu
ZGVyU2VhcmNoRmllbGQ6OnZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmly
ZUV2ZW50cykKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGF1dG9zYXZl
TmFtZSgpOwogICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
ICAgIGlmICghbV9zZWFyY2hQb3B1cCkKLSAgICAgICAgICAgICAgICAgICAgbV9zZWFyY2hQb3B1
cCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNyZWF0ZVNlYXJjaFBvcHVwTWVudSh0
aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zZWFyY2hQb3B1cCA9IGRvY3VtZW50KCktPnBh
Z2UoKS0+Y2hyb21lKCkuY3JlYXRlU2VhcmNoUG9wdXBNZW51KHRoaXMpOwogICAgICAgICAgICAg
ICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJj
aGVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDVlMjY5NmIuLjQ3MDNhNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lk
IFJvb3RJbmxpbmVCb3g6OmFkZEhpZ2hsaWdodE92ZXJmbG93KCkKIAogICAgIC8vIEhpZ2hsaWdo
dCBhY3RzIGFzIGEgc2VsZWN0aW9uIGluZmxhdGlvbi4KICAgICBGbG9hdFJlY3Qgcm9vdFJlY3Qo
MCwgc2VsZWN0aW9uVG9wKCksIGxvZ2ljYWxXaWR0aCgpLCBzZWxlY3Rpb25IZWlnaHQoKSk7Ci0g
ICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHBhZ2UtPmNocm9tZSgp
LT5jbGllbnQoKS0+Y3VzdG9tSGlnaGxpZ2h0UmVjdChyZW5kZXJlcigpLT5ub2RlKCksIHJlbmRl
cmVyKCktPnN0eWxlKCktPmhpZ2hsaWdodCgpLCByb290UmVjdCkpOworICAgIEludFJlY3QgaW5m
bGF0ZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+Y3Vz
dG9tSGlnaGxpZ2h0UmVjdChyZW5kZXJlcigpLT5ub2RlKCksIHJlbmRlcmVyKCktPnN0eWxlKCkt
PmhpZ2hsaWdodCgpLCByb290UmVjdCkpOwogICAgIHNldE92ZXJmbG93RnJvbUxvZ2ljYWxSZWN0
cyhpbmZsYXRlZFJlY3QsIGluZmxhdGVkUmVjdCwgbGluZVRvcCgpLCBsaW5lQm90dG9tKCkpOwog
fQogCkBAIC0yMDIsOSArMjAyLDkgQEAgdm9pZCBSb290SW5saW5lQm94OjpwYWludEN1c3RvbUhp
Z2hsaWdodChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKIAogICAgIC8v
IEdldCB0aGUgaW5mbGF0ZWQgcmVjdCBzbyB0aGF0IHdlIGNhbiBwcm9wZXJseSBoaXQgdGVzdC4K
ICAgICBGbG9hdFJlY3Qgcm9vdFJlY3QocGFpbnRPZmZzZXQueCgpICsgeCgpLCBwYWludE9mZnNl
dC55KCkgKyBzZWxlY3Rpb25Ub3AoKSwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCgp
KTsKLSAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxpZ2h0VHlwZSwg
cm9vdFJlY3QpOworICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3QgPSBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS0+Y3VzdG9tSGlnaGxpZ2h0UmVjdChyZW5kZXJlcigpLT5ub2RlKCksIGhpZ2hsaWdo
dFR5cGUsIHJvb3RSZWN0KTsKICAgICBpZiAoaW5mbGF0ZWRSZWN0LmludGVyc2VjdHMocGFpbnRJ
bmZvLnJlY3QpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhaW50Q3VzdG9t
SGlnaGxpZ2h0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxpZ2h0VHlwZSwgcm9vdFJlY3QsIHJv
b3RSZWN0LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5w
YWludEN1c3RvbUhpZ2hsaWdodChyZW5kZXJlcigpLT5ub2RlKCksIGhpZ2hsaWdodFR5cGUsIHJv
b3RSZWN0LCByb290UmVjdCwgZmFsc2UsIHRydWUpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IGFjNmY1ZDguLjEw
YTYxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcApAQCAtMTMwLDEwICsxMzAsMTAgQEAgYm9vbCBSZW5kZXJTVkdSb290Ojppc0VtYmVkZGVk
VGhyb3VnaFNWR0ltYWdlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
VGVzdCB3aGV0aGVyIHdlJ3JlIGVtYmVkZGVkIHRocm91Z2ggYW4gaW1nLgotICAgIGlmICghZnJh
bWUtPnBhZ2UoKSB8fCAhZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkpCisgICAgaWYgKCFmcmFtZS0+
cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDaHJvbWVDbGllbnQqIGNocm9t
ZUNsaWVudCA9IGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKTsKKyAgICBDaHJvbWVD
bGllbnQqIGNocm9tZUNsaWVudCA9IGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpOwog
ICAgIGlmICghY2hyb21lQ2xpZW50IHx8ICFjaHJvbWVDbGllbnQtPmlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggZTk0NWVmMy4uYjZmMDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlKFBhZ2UqIHBhZ2UpCiAgICAgZGVsZXRlIHNfcGFnZVBvcHVwRHJpdmVyOwog
ICAgIHNfcGFnZVBvcHVwRHJpdmVyID0gMDsKICAgICBpZiAocGFnZS0+Y2hyb21lKCkpCi0gICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cmVzZXRQYWdlUG9wdXBEcml2ZXIoKTsKKyAg
ICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnJlc2V0UGFnZVBvcHVwRHJpdmVyKCk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICBpZiAocGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQpAQCAtNzc1LDEyICs3NzUs
MTIgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEVuYWJsZU1vY2tQYWdlUG9wdXAoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgpOwogICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICBwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPnJlc2V0UGFnZVBvcHVwRHJpdmVyKCk7CisgICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLT5yZXNldFBhZ2VQb3B1cERyaXZlcigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmICghc19wYWdlUG9wdXBEcml2ZXIpCiAgICAgICAgIHNfcGFnZVBvcHVw
RHJpdmVyID0gTW9ja1BhZ2VQb3B1cERyaXZlcjo6Y3JlYXRlKHBhZ2UtPm1haW5GcmFtZSgpKS5s
ZWFrUHRyKCk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zZXRQYWdlUG9wdXBEcml2
ZXIoc19wYWdlUG9wdXBEcml2ZXIpOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5zZXRQ
YWdlUG9wdXBEcml2ZXIoc19wYWdlUG9wdXBEcml2ZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZW5hYmxlZCk7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGM1NGU4ZWQuLmNiY2VhMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMzE1MCw3ICszMTUwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgICAgICAgICAgICAg
bV9wYWdlLT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAKICAgICAgICAgICAgIGlmICht
X3dlYlBhZ2UtPmhhc09wZW5lZFBvcHVwKCkpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOworICAgICAgICAgICAgICAgIG1fcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOwogICAgICAgICB9CiAKICAg
ICAgICAgbV92aXNpYmxlID0gdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmlu
ZGV4IGI0NTQ1MzguLmI0MzkzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwIEBACisyMDEzLTA1LTE1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KKworICAgICAgICBQYWdlOjpjaHJvbWUoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlLgor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTYxODU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKIDIwMTMtMDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGcmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBh
IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0NvbG9yUGlja2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5jcHAKaW5kZXggMjBmYjY0Ni4uMjRkZTM1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nv
bG9yUGlja2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQ29sb3JQaWNrZXJDbGllbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgQ29s
b3JQaWNrZXJDbGllbnQ6OmdlbmVyYXRlSFRNTChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U3RyaW5nJiB2YWx1ZSkKIHZvaWQgQ29sb3JQaWNrZXJDbGllbnQ6OmNsb3NlUG9wdXAoKQogewog
ICAgIEFTU0VSVChtX3dlYlBhZ2UpOwotICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOworICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CiB9CiAKIEludFNpemUgQ29sb3JQaWNr
ZXJDbGllbnQ6OmNvbnRlbnRTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50LmNwcAppbmRleCAxMDcx
MTE5Li45ZTI5MWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBEYXRlUGlja2VyQ2xpZW50OjpnZW5lcmF0ZUhUTUwoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkJsYWNrQmVycnlJbnB1dFR5cGUgdHkKIHZvaWQgRGF0ZVBpY2tlckNsaWVudDo6Y2xvc2VQ
b3B1cCgpCiB7CiAgICAgQVNTRVJUKG1fd2ViUGFnZSk7Ci0gICAgbV93ZWJQYWdlLT5tX3BhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgbV93ZWJQYWdlLT5t
X3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKIH0KIAogSW50U2l6
ZSBEYXRlUGlja2VyQ2xpZW50Ojpjb250ZW50U2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNw
cAppbmRleCAwNWMwNDA2Li42NjljZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAKQEAg
LTE1MSw3ICsxNTEsNyBAQCB2b2lkIFNlbGVjdFBvcHVwQ2xpZW50OjpnZW5lcmF0ZUhUTUwoYm9v
bCwgaW50IHNpemUsIGNvbnN0IFNjb3BlQXJyYXk8QmxhY2tCZXJyeQogdm9pZCBTZWxlY3RQb3B1
cENsaWVudDo6Y2xvc2VQb3B1cCgpCiB7CiAgICAgQVNTRVJUKG1fd2ViUGFnZSk7Ci0gICAgbV93
ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7Cisg
ICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgw
KTsKIH0KIAogSW50U2l6ZSBTZWxlY3RQb3B1cENsaWVudDo6Y29udGVudFNpemUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxl
ci5jcHAKaW5kZXggZmUyYzNiMy4uNTk1ZWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC0xMjEzLDE0
ICsxMjEzLDE0IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuRGF0ZVBvcHVwKEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQsIEJsYWNrQmVycnlJbnB1dFR5cGUKICAgICAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldENhcmV0VmlzaWJsZShmYWxzZSk7CiAK
ICAgICAgICAgLy8gQ2hlY2sgaWYgcG9wdXAgYWxyZWFkeSBleGlzdHMsIGNsb3NlIGl0IGlmIGRv
ZXMuCi0gICAgICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmNsb3Nl
UGFnZVBvcHVwKDApOworICAgICAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCktPmNsb3NlUGFnZVBvcHVwKDApOwogICAgICAgICBXVEY6OlN0cmluZyB2YWx1ZSA9IGVsZW1l
bnQtPnZhbHVlKCk7CiAgICAgICAgIFdURjo6U3RyaW5nIG1pbiA9IGVsZW1lbnQtPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6Om1pbkF0dHIpLnN0cmluZygpOwogICAgICAgICBXVEY6OlN0cmluZyBt
YXggPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjptYXhBdHRyKS5zdHJpbmcoKTsK
ICAgICAgICAgZG91YmxlIHN0ZXAgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpz
dGVwQXR0cikudG9Eb3VibGUoKTsKIAogICAgICAgICBEYXRlUGlja2VyQ2xpZW50KiBjbGllbnQg
PSBuZXcgRGF0ZVBpY2tlckNsaWVudCh0eXBlLCB2YWx1ZSwgbWluLCBtYXgsIHN0ZXAsICBtX3dl
YlBhZ2UsIGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cChjbGllbnQsICBXZWJDb3JlOjpJbnRSZWN0KCkp
OworICAgICAgICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5v
cGVuUGFnZVBvcHVwKGNsaWVudCwgIFdlYkNvcmU6OkludFJlY3QoKSk7CiAgICAgICAgIH0KICAg
ICBkZWZhdWx0OiAvLyBPdGhlciB0eXBlcyBub3Qgc3VwcG9ydGVkCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEyMzksMTAgKzEyMzksMTAgQEAgYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5Db2xv
clBvcHVwKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9jdXJyZW50Rm9jdXNFbGVt
ZW50VHlwZSA9IFRleHRQb3B1cDsKIAogICAgIC8vIENoZWNrIGlmIHBvcHVwIGFscmVhZHkgZXhp
c3RzLCBjbG9zZSBpdCBpZiBkb2VzLgotICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOworICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CiAKICAgICBDb2xvclBpY2tlckNsaWVu
dCogY2xpZW50ID0gbmV3IENvbG9yUGlja2VyQ2xpZW50KGVsZW1lbnQtPnZhbHVlKCksIG1fd2Vi
UGFnZSwgZWxlbWVudCk7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPm9wZW5QYWdlUG9wdXAoY2xpZW50LCAgV2ViQ29yZTo6SW50UmVjdCgpKTsKKyAg
ICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5vcGVuUGFnZVBv
cHVwKGNsaWVudCwgIFdlYkNvcmU6OkludFJlY3QoKSk7CiB9CiAKIHZvaWQgSW5wdXRIYW5kbGVy
OjpzZXRJbnB1dFZhbHVlKGNvbnN0IFdURjo6U3RyaW5nJiB2YWx1ZSkKQEAgLTE5NzIsNyArMTk3
Miw3IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuU2VsZWN0UG9wdXAoSFRNTFNlbGVjdEVsZW1l
bnQqIHNlbGVjdCkKICAgICBsYWJlbHMucmVzZXQobmV3IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmdbc2l6ZV0pOwogCiAgICAgLy8gQ2hlY2sgaWYgcG9wdXAgYWxyZWFkeSBleGlzdHMsIGNs
b3NlIGl0IGlmIGRvZXMuCi0gICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKIAogICAgIGJvb2wqIGVuYWJsZWRzID0gMDsKICAg
ICBpbnQqIGl0ZW1UeXBlcyA9IDA7CkBAIC0yMDA2LDcgKzIwMDYsNyBAQCBib29sIElucHV0SGFu
ZGxlcjo6b3BlblNlbGVjdFBvcHVwKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAgU2Vs
ZWN0UG9wdXBDbGllbnQqIHNlbGVjdENsaWVudCA9IG5ldyBTZWxlY3RQb3B1cENsaWVudChtdWx0
aXBsZSwgc2l6ZSwgbGFiZWxzLCBlbmFibGVkcywgaXRlbVR5cGVzLCBzZWxlY3RlZHMsIG1fd2Vi
UGFnZSwgc2VsZWN0KTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290Vmll
dyA9IHNlbGVjdC0+ZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZW5jbG9z
aW5nSW50UmVjdChzZWxlY3QtPmdldFJlY3QoKSkpOwogICAgIC8vIEZhaWwgdG8gY3JlYXRlIEhU
TUwgcG9wdXAsIHVzZSB0aGUgb2xkIHBhdGgKLSAgICBpZiAoIW1fd2ViUGFnZS0+bV9wYWdlLT5j
aHJvbWUoKS0+Y2xpZW50KCktPm9wZW5QYWdlUG9wdXAoc2VsZWN0Q2xpZW50LCBlbGVtZW50UmVj
dEluUm9vdFZpZXcpKQorICAgIGlmICghbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5vcGVuUGFnZVBvcHVwKHNlbGVjdENsaWVudCwgZWxlbWVudFJlY3RJblJvb3RWaWV3KSkK
ICAgICAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+b3BlblBvcHVwTGlzdChtdWx0aXBsZSwgc2l6
ZSwgbGFiZWxzLCBlbmFibGVkcywgaXRlbVR5cGVzLCBzZWxlY3RlZHMpOwogICAgIGRlbGV0ZVtd
IGVuYWJsZWRzOwogICAgIGRlbGV0ZVtdIGl0ZW1UeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5
YWM0Zjc1Li5hOGM2ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTMt
MDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2U6
OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KwogMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmNwcAppbmRleCA0
NTM1MDZlLi5mNzAzNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Qb3B1cE1lbnVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BvcHVwTWVudUVmbC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUG9wdXBNZW51RWZsOjp+UG9w
dXBNZW51RWZsKCkKIHZvaWQgUG9wdXBNZW51RWZsOjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3Qs
IEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQogewogICAgIEFTU0VSVChtX3BvcHVwQ2xpZW50
KTsKLSAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9t
ZUNsaWVudEVmbCo+KHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsK
KyAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNs
aWVudEVmbCo+KHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkpOwogICAg
IEFTU0VSVChjaHJvbWVDbGllbnQpOwogCiAgICAgbV92aWV3ID0gdmlldzsKQEAgLTYxLDcgKzYx
LDcgQEAgdm9pZCBQb3B1cE1lbnVFZmw6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVW
aWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB2b2lkIFBvcHVwTWVudUVmbDo6aGlkZSgpCiB7CiAgICAg
QVNTRVJUKG1fdmlldyk7Ci0gICAgQ2hyb21lQ2xpZW50RWZsKiBjaHJvbWVDbGllbnQgPSBzdGF0
aWNfY2FzdDxDaHJvbWVDbGllbnRFZmwqPihtX3ZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpKTsKKyAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRp
Y19jYXN0PENocm9tZUNsaWVudEVmbCo+KG1fdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKSk7CiAgICAgQVNTRVJUKGNocm9tZUNsaWVudCk7CiAKICAgICBjaHJvbWVDbGll
bnQtPmRlc3Ryb3lTZWxlY3RQb3B1cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5k
ZXggNGE4YWFmMy4uYTM3NTM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0x
MzI3LDggKzEzMjcsOCBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tf
dmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoRXdrX1ZpZQogICAgIGludCBkZXZpY2VE
UEkgPSBXZWJDb3JlOjpnZXREUEkoKTsKICAgICBwcml2LT5zZXR0aW5ncy5kZXZpY2VQaXhlbFJh
dGlvID0gZGV2aWNlRFBJIC8gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OmRlcHJlY2F0ZWRU
YXJnZXREUEk7CiAKLSAgICBXZWJDb3JlOjpJbnRSZWN0IGF2YWlsYWJsZVJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKSk7Ci0g
ICAgV2ViQ29yZTo6SW50UmVjdCBkZXZpY2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKSk7CisgICAgV2ViQ29yZTo6SW50
UmVjdCBhdmFpbGFibGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS0+cGFnZVJlY3QoKSk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBkZXZpY2VSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+d2luZG93
UmVjdCgpKTsKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0g
V2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhwcml2LT52aWV3cG9ydEFyZ3VtZW50
cywgZGVza3RvcFdpZHRoLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCks
IHByaXYtPnNldHRpbmdzLmRldmljZVBpeGVsUmF0aW8sIGF2YWlsYWJsZVJlY3Quc2l6ZSgpKTsK
ICAgICBXZWJDb3JlOjpyZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplKGF0
dHJpYnV0ZXMsIGF2YWlsYWJsZVJlY3Quc2l6ZSgpLCBwcml2LT5zZXR0aW5ncy5kZXZpY2VQaXhl
bFJhdGlvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCA2OTYwZDBiLi5iZTIyZjlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTMtMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91
bGQgcmV0dXJuIGEgcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwIGIvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAppbmRleCAzNzBj
ZDMxLi40MTc0YTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKQEAgLTQzOCw3ICs0Mzgs
NyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Zm9yY2VXZWJWaWV3UGFpbnQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19X
RUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVu
dCo+KGNvcmUod2ViVmlldyktPmNocm9tZSgpLT5jbGllbnQoKSktPmZvcmNlUGFpbnQoKTsKKyAg
ICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudCo+KGNvcmUod2ViVmlldyktPmNocm9t
ZSgpLmNsaWVudCgpKS0+Zm9yY2VQYWludCgpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBnY2hhciogc291cmNlT3Jp
Z2luLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgZ2NoYXIqIGRlc3Rp
bmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2aWV3cG9ydGF0dHJpYnV0ZXMuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAKaW5k
ZXggZGYzMTMyYi4uOTc3MjQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHZpZXdwb3J0YXR0cmlidXRlcy5jcHAKQEAgLTUyMSwxMSArNTIxLDExIEBAIHZv
aWQgd2Via2l0Vmlld3BvcnRBdHRyaWJ1dGVzUmVjb21wdXRlKFdlYktpdFZpZXdwb3J0QXR0cmli
dXRlcyogdmlld3BvcnRBdHRyaWJ1CiAgICAgV2ViS2l0Vmlld3BvcnRBdHRyaWJ1dGVzUHJpdmF0
ZSogcHJpdiA9IHZpZXdwb3J0QXR0cmlidXRlcy0+cHJpdjsKICAgICBXZWJLaXRXZWJWaWV3KiB3
ZWJWaWV3ID0gcHJpdi0+d2ViVmlldzsKIAotICAgIEludFJlY3Qgd2luZG93UmVjdCh3ZWJWaWV3
LT5wcml2LT5jb3JlUGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKSk7CisgICAgSW50UmVjdCB3
aW5kb3dSZWN0KHdlYlZpZXctPnByaXYtPmNvcmVQYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCkp
OwogICAgIHByaXYtPmRldmljZVdpZHRoID0gd2luZG93UmVjdC53aWR0aCgpOwogICAgIHByaXYt
PmRldmljZUhlaWdodCA9IHdpbmRvd1JlY3QuaGVpZ2h0KCk7CiAKLSAgICBJbnRSZWN0IHJlY3Qo
d2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPmNocm9tZSgpLT5wYWdlUmVjdCgpKTsKKyAgICBJbnRS
ZWN0IHJlY3Qod2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPmNocm9tZSgpLnBhZ2VSZWN0KCkpOwog
ICAgIHByaXYtPmF2YWlsYWJsZVdpZHRoID0gcmVjdC53aWR0aCgpOwogICAgIHByaXYtPmF2YWls
YWJsZUhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBjNTgyYjY2Li43OTEzM2JjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC00NzEsNyArNDcxLDcgQEAgc3RhdGlj
IHZvaWQgc2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3Rr
QWRqdXN0bWVudCogYWRqdXMKICAgICAvLyBUaGlzIG1heSBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHBh
Z2UgaGFzIGJlZW4gZGVzdHJveWVkLCBpbiB3aGljaCBjYXNlIHdlIGRvIG5vdGhpbmcuCiAgICAg
UGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CiAgICAgaWYgKHBhZ2UpCi0gICAgICAgIHN0YXRp
Y19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKS0+
YWRqdXN0bWVudFdhdGNoZXIoKS0+c2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoYWRqdXN0bWVudCk7
CisgICAgICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21l
KCkuY2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT5zZXRIb3Jpem9udGFsQWRqdXN0bWVu
dChhZGp1c3RtZW50KTsKIH0KIAogc3RhdGljIHZvaWQgc2V0VmVydGljYWxBZGp1c3RtZW50KFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQpCkBAIC00Nzks
NyArNDc5LDcgQEAgc3RhdGljIHZvaWQgc2V0VmVydGljYWxBZGp1c3RtZW50KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIEd0a0FkanVzdG1lbnQqIGFkanVzdG0KICAgICAvLyBUaGlzIG1heSBiZSBj
YWxsZWQgYWZ0ZXIgdGhlIHBhZ2UgaGFzIGJlZW4gZGVzdHJveWVkLCBpbiB3aGljaCBjYXNlIHdl
IGRvIG5vdGhpbmcuCiAgICAgUGFnZSogcGFnZSA9IGNvcmUod2ViVmlldyk7CiAgICAgaWYgKHBh
Z2UpCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hy
b21lKCktPmNsaWVudCgpKS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+c2V0VmVydGljYWxBZGp1c3Rt
ZW50KGFkanVzdG1lbnQpOworICAgICAgICBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVu
dCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpKS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+c2V0VmVy
dGljYWxBZGp1c3RtZW50KGFkanVzdG1lbnQpOwogfQogCiAjaWZuZGVmIEdUS19BUElfVkVSU0lP
Tl8yCkBAIC00ODcsNyArNDg3LDcgQEAgc3RhdGljIEd0a0FkanVzdG1lbnQqIGdldEhvcml6b250
YWxBZGp1c3RtZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgUGFnZSogcGFnZSA9
IGNvcmUod2ViVmlldyk7CiAgICAgaWYgKHBhZ2UpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJLaXQ6OkNocm9tZUNsaWVudCo+KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSktPmFkanVz
dG1lbnRXYXRjaGVyKCktPmhvcml6b250YWxBZGp1c3RtZW50KCk7CisgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
KS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+aG9yaXpvbnRhbEFkanVzdG1lbnQoKTsKICAgICByZXR1
cm4gMDsKIH0KIApAQCAtNDk1LDcgKzQ5NSw3IEBAIHN0YXRpYyBHdGtBZGp1c3RtZW50KiBnZXRW
ZXJ0aWNhbEFkanVzdG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBQYWdlKiBw
YWdlID0gY29yZSh3ZWJWaWV3KTsKICAgICBpZiAocGFnZSkKLSAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKS0+
YWRqdXN0bWVudFdhdGNoZXIoKS0+dmVydGljYWxBZGp1c3RtZW50KCk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVudCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpKS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+dmVydGljYWxBZGp1c3RtZW50KCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKQEAgLTg2OCw3ICs4NjgsNyBAQCBzdGF0aWMgdm9pZCByZXNpemVXZWJWaWV3
RnJvbUFsbG9jYXRpb24oV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWxsb2NhdGlvbiogYQog
ICAgIGlmICghc2l6ZUNoYW5nZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYktpdDo6Q2hy
b21lQ2xpZW50KiBjaHJvbWVDbGllbnQgPSBzdGF0aWNfY2FzdDxXZWJLaXQ6OkNocm9tZUNsaWVu
dCo+KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSk7CisgICAgV2ViS2l0OjpDaHJvbWVDbGllbnQq
IGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkpOwogICAgIGNocm9tZUNsaWVudC0+d2lkZ2V0U2l6ZUNoYW5nZWQo
b2xkU2l6ZSwgSW50U2l6ZShhbGxvY2F0aW9uLT53aWR0aCwgYWxsb2NhdGlvbi0+aGVpZ2h0KSk7
CiAgICAgY2hyb21lQ2xpZW50LT5hZGp1c3RtZW50V2F0Y2hlcigpLT51cGRhdGVBZGp1c3RtZW50
c0Zyb21TY3JvbGxiYXJzKCk7CiB9CkBAIC01NTM4LDcgKzU1MzgsNyBAQCBXZWJLaXRXZWJWaWV3
KiBraXQoV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAg
QVNTRVJUKGNvcmVQYWdlLT5jaHJvbWUoKSk7Ci0gICAgV2ViS2l0OjpDaHJvbWVDbGllbnQqIGNs
aWVudCA9IHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4oY29yZVBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKSk7CisgICAgV2ViS2l0OjpDaHJvbWVDbGllbnQqIGNsaWVudCA9IHN0YXRp
Y19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4oY29yZVBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
KTsKICAgICByZXR1cm4gY2xpZW50ID8gc3RhdGljX2Nhc3Q8V2ViS2l0V2ViVmlldyo+KGNsaWVu
dC0+d2ViVmlldygpKSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCBhZTViOGQxLi4xY2Nh
MWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTMtMDUtMTUgIEFuZHJl
YXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2U6OmNocm9tZSgpIHNo
b3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzEx
NjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAxMy0wNS0x
MyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZyYW1l
OjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQppbmRleCBhMDM1NGI0Li5lZDRhNWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWUubW0KQEAgLTIzNiw3ICsyMzYsNyBAQCBQYWdlKiBjb3JlKFdlYlZpZXcg
KndlYlZpZXcpCiAKIFdlYlZpZXcgKmtpdChQYWdlKiBwYWdlKQogewotICAgIHJldHVybiBwYWdl
ID8gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+d2ViVmll
dygpKSA6IG5pbDsKKyAgICByZXR1cm4gcGFnZSA/IHN0YXRpY19jYXN0PFdlYlZpZXcqPihwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS0+d2ViVmlldygpKSA6IG5pbDsKIH0KIAogV2ViVmlldyAqZ2V0
V2ViVmlldyhXZWJGcmFtZSAqd2ViRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQppbmRleCBlMTY2OWQ3Li5iNjU2NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KQEAgLTMwOTgsNyArMzA5OCw3IEBAIHN0YXRpYyB2b2lkIHNl
dE1lbnVUYXJnZXRzKE5TTWVudSogbWVudSkKICAgICBfcHJpdmF0ZS0+aGFuZGxpbmdNb3VzZURv
d25FdmVudCA9IFlFUzsKICAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJD
b250ZXh0TWVudSgpOwogICAgIGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlRG93bihl
dmVudCk7Ci0gICAgQk9PTCBoYW5kbGVkRXZlbnQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZW5kQ29udGV4dE1lbnVFdmVudChQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZv
cm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkp
KTsKKyAgICBCT09MIGhhbmRsZWRFdmVudCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNl
bmRDb250ZXh0TWVudUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1v
dXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAg
ICAgX3ByaXZhdGUtPmhhbmRsaW5nTW91c2VEb3duRXZlbnQgPSBOTzsKIAogICAgIGlmICghaGFu
ZGxlZEV2ZW50KQpAQCAtMzQ5NCw3ICszNDk0LDcgQEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdl
dHMoTlNNZW51KiBtZW51KQogICAgICAgICAgICAgaWYgKFtoaXRIVE1MVmlldyBfaXNTZWxlY3Rp
b25FdmVudDpldmVudF0pIHsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgICAgICAgICAg
ICAgIGlmIChQYWdlKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFn
KFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBh
Z2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5ldmVudE1heVN0YXJ0RHJhZyhQ
bGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCBwYWdl
LT5jaHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwogI2VuZGlmCiAgICAgICAgICAgICB9
IGVsc2UgaWYgKFtoaXRIVE1MVmlldyBfaXNTY3JvbGxCYXJFdmVudDpldmVudF0pCiAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKQEAgLTM1MjEsNyArMzUyMSw3IEBAIHN0YXRpYyB2b2lk
IHNldE1lbnVUYXJnZXRzKE5TTWVudSogbWVudSkKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtoaXRIVE1MVmlldyBfZnJh
bWVdKSkgewogICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gY29yZUZyYW1lLT5wYWdl
KCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVy
KCktPmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9y
bU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkp
OworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjb3JlRnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5ldmVudE1heVN0YXJ0RHJhZyhQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1N
b3VzZUV2ZW50KGV2ZW50LCBwYWdlLT5jaHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwog
ICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBbaGl0SFRNTFZpZXcgX3NldE1vdXNl
RG93bkV2ZW50Om5pbF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDU5MWFmY2QuLmRhODJlOTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTMtMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxh
a2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4g
YSByZWZlcmVuY2UuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogMjAxMy0wNS0xMyAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEZyYW1lOjplZGl0b3IoKSBz
aG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9Jbml0V2ViQ29yZVF0LmNwcAppbmRleCBlZTI0MDIzLi4wZTQ0NTEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAgc3RhdGljIFdlYkNvcmU6OlFTdHlsZUZhY2FkZSogY3JlYXRlU3R5bGVG
b3JQYWdlKFdlYkNvcmU6OlBhZ2UqIHBhZ2UpCiB7CiAgICAgUVdlYlBhZ2VBZGFwdGVyKiBwYWdl
QWRhcHRlciA9IDA7CiAgICAgaWYgKHBhZ2UpCi0gICAgICAgIHBhZ2VBZGFwdGVyID0gc3RhdGlj
X2Nhc3Q8V2ViQ29yZTo6Q2hyb21lQ2xpZW50UXQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkp
LT5tX3dlYlBhZ2U7CisgICAgICAgIHBhZ2VBZGFwdGVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
Q2hyb21lQ2xpZW50UXQqPihwYWdlLT5jaHJvbWUoKS5jbGllbnQoKSktPm1fd2ViUGFnZTsKICAg
ICByZXR1cm4gaW5pdENhbGxiYWNrKHBhZ2VBZGFwdGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcApp
bmRleCA3MGM4NTMyLi4wMmQwYjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcApAQCAtMTM3LDcgKzEzNyw3
IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnJlZnJlc2hQbHVnaW5zKCkKIAogdm9pZCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UGx1Z2luSW5mbyhjb25zdCBXZWJDb3JlOjpQYWdlKiBw
YWdlLCBWZWN0b3I8V2ViQ29yZTo6UGx1Z2luSW5mbz4mIG91dFBsdWdpbnMpCiB7Ci0gICAgUVdl
YlBhZ2VBZGFwdGVyKiBxUGFnZSA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudFF0Kj4ocGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpKS0+bV93ZWJQYWdlOworICAgIFFXZWJQYWdlQWRhcHRlciogcVBh
Z2UgPSBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRRdCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
KS0+bV93ZWJQYWdlOwogICAgIFFXZWJQbHVnaW5GYWN0b3J5KiBmYWN0b3J5OwogICAgIGlmIChx
UGFnZSAmJiAoZmFjdG9yeSA9IHFQYWdlLT5wbHVnaW5GYWN0b3J5KSkgewogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAppbmRl
eCBiM2MyMzk4Li42MDU0OGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L1FXZWJGcmFtZUFkYXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKQEAgLTQ0Myw3ICs0NDMsNyBAQCB2b2lkIFFX
ZWJGcmFtZUFkYXB0ZXI6OnJlbmRlckNvbXBvc2l0ZWRMYXllcnMoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LAogICAgIFdlYkNvcmU6OlBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
OwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChUZXh0dXJlTWFwcGVy
TGF5ZXJDbGllbnRRdCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPihwYWdl
LT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5tX3RleHR1cmVNYXBwZXJMYXllckNsaWVudC5nZXQoKSkK
KyAgICBpZiAoVGV4dHVyZU1hcHBlckxheWVyQ2xpZW50UXQqIGNsaWVudCA9IHN0YXRpY19jYXN0
PENocm9tZUNsaWVudFF0Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLT5tX3RleHR1cmVNYXBw
ZXJMYXllckNsaWVudC5nZXQoKSkKICAgICAgICAgY2xpZW50LT5yZW5kZXJDb21wb3NpdGVkTGF5
ZXJzKGNvbnRleHQsIGNsaXApOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKaW5kZXggNDc2MGQ3Zi4uNWIyNTRk
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFk
YXB0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VB
ZGFwdGVyLmNwcApAQCAtMTYxLDkgKzE2MSw5IEBAIHN0YXRpYyB2b2lkIG9wZW5OZXdXaW5kb3co
Y29uc3QgUVVybCYgdXJsLCBGcmFtZSogZnJhbWUpCiAgICAgICAgIFdpbmRvd0ZlYXR1cmVzIGZl
YXR1cmVzOwogICAgICAgICBOYXZpZ2F0aW9uQWN0aW9uIGFjdGlvbjsKICAgICAgICAgRnJhbWVM
b2FkUmVxdWVzdCByZXF1ZXN0ID0gZnJhbWVMb2FkUmVxdWVzdCh1cmwsIGZyYW1lKTsKLSAgICAg
ICAgaWYgKFBhZ2UqIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KGZy
YW1lLCByZXF1ZXN0LCBmZWF0dXJlcywgYWN0aW9uKSkgeworICAgICAgICBpZiAoUGFnZSogbmV3
UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVzdCwgZmVh
dHVyZXMsIGFjdGlvbikpIHsKICAgICAgICAgICAgIG5ld1BhZ2UtPm1haW5GcmFtZSgpLT5sb2Fk
ZXIoKS0+bG9hZEZyYW1lUmVxdWVzdChyZXF1ZXN0LCBmYWxzZSwgZmFsc2UsIDAsIDAsIE1heWJl
U2VuZFJlZmVycmVyKTsKLSAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgpLT5zaG93KCk7Cisg
ICAgICAgICAgICBuZXdQYWdlLT5jaHJvbWUoKS5zaG93KCk7CiAgICAgICAgIH0KICAgICB9CiB9
CkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBRV2ViUGFnZUFkYXB0ZXI6OmRlbGV0ZVBhZ2UoKQog
CiBRV2ViUGFnZUFkYXB0ZXIqIFFXZWJQYWdlQWRhcHRlcjo6a2l0KFBhZ2UqIHBhZ2UpCiB7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENocm9tZUNsaWVudFF0Kj4ocGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpKS0+bV93ZWJQYWdlOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxDaHJvbWVDbGllbnRR
dCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpKS0+bV93ZWJQYWdlOwogfQogCiBWaWV3cG9ydEFy
Z3VtZW50cyBRV2ViUGFnZUFkYXB0ZXI6OnZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCAwZDZhMWJiLi40YzdjZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTAgQEAKKzIwMTMtMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAg
ICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKwogMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVm
ZXJlbmNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IGMxOGJhNzYuLjU3MjJjMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgc3RhdGljIFN0cmluZyB3ZWJLaXRWZXJz
aW9uU3RyaW5nKCk7CiAKIFdlYlZpZXcqIGtpdChQYWdlKiBwYWdlKQogewotICAgIHJldHVybiBw
YWdlID8gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KHN0YXRpY19jYXN0PFdlYkNocm9tZUNsaWVudCo+
KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSktPndlYlZpZXcoKSkgOiAwOworICAgIHJldHVybiBw
YWdlID8gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KHN0YXRpY19jYXN0PFdlYkNocm9tZUNsaWVudCo+
KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpKS0+d2ViVmlldygpKSA6IDA7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKEJTVFIgYnN0cikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCA0NjQ3ODdkLi5kMjU2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTMtMDUt
MTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2U6OmNo
cm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwog
MjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1NpbXBsZVBERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2lu
Lm1tCmluZGV4IDhkNTZmZDUuLjg2ZGVlMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2ltcGxlUERGUGx1Z2luLm1tCkBAIC0zMjQsNyAr
MzI0LDcgQEAgSlNWYWx1ZVJlZiBTaW1wbGVQREZQbHVnaW46OmpzUERGRG9jUHJpbnQoSlNDb250
ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOwogICAgIAotICAgIHBhZ2UtPmNocm9t
ZSgpLT5wcmludChjb3JlRnJhbWUpOworICAgIHBhZ2UtPmNocm9tZSgpLnByaW50KGNvcmVGcmFt
ZSk7CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXgg
Y2ZlOWFkYy4uNTZlYWM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMTM2Nyw3ICsxMzY3LDcgQEAgdm9pZCBQbHVnaW5WaWV3
OjpzZXRTdGF0dXNiYXJUZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzYmFyVGV4dCkKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRTdGF0dXNi
YXJUZXh0KGZyYW1lKCksIHN0YXR1c2JhclRleHQpOworICAgIHBhZ2UtPmNocm9tZSgpLnNldFN0
YXR1c2JhclRleHQoZnJhbWUoKSwgc3RhdHVzYmFyVGV4dCk7CiB9CiAKIGJvb2wgUGx1Z2luVmll
dzo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDFjODMzNTcuLjQwMTY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC01OTYsNyArNTk2LDcgQEAgRnJhbWUqIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdh
dGkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBKdXN0IGNhbGwgdGhyb3VnaCB0byB0aGUg
Y2hyb21lIGNsaWVudC4KLSAgICBQYWdlKiBuZXdQYWdlID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhtX2ZyYW1lLT5jb3JlRnJhbWUoKSwgRnJhbWVMb2FkUmVx
dWVzdChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSks
IFdpbmRvd0ZlYXR1cmVzKCksIG5hdmlnYXRpb25BY3Rpb24pOworICAgIFBhZ2UqIG5ld1BhZ2Ug
PSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3cobV9mcmFtZS0+Y29y
ZUZyYW1lKCksIEZyYW1lTG9hZFJlcXVlc3QobV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpLCBXaW5kb3dGZWF0dXJlcygpLCBuYXZpZ2F0aW9uQWN0aW9u
KTsKICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJldHVybiAwOwogICAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGYwMWQ1Y2EuLjc0
NzBkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTEwMjQsNyArMTAyNCw3IEBAIHZvaWQgV2ViUGFnZTo6bGF5b3V0SWZOZWVkZWQoKQog
CiBXZWJQYWdlKiBXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoUGFnZSogcGFnZSkKIHsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViQ2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
KS0+cGFnZSgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDaHJvbWVDbGllbnQqPihwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKSktPnBhZ2UoKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpzZXRTaXpl
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdTaXplKQo=
</data>
<flag name="commit-queue"
          id="223264"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>201884</attachid>
            <date>2013-05-15 14:32:02 -0700</date>
            <delta_ts>2013-05-16 17:02:29 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>bug-116185-v3.diff</filename>
            <type>text/plain</type>
            <size>110458</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNmM5OGI5Li4zMDkzYmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTMtMDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFBhZ2U6OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBIFBhZ2UncyBjaHJvbWUoKSBjYW4gbmV2ZXIgYmUgbnVsbC4g
Q2hhbmdlIFBhZ2U6OmNocm9tZSgpIHRvIHJldHVybiBhIHJlZmVyZW5jZSB0byByZWZsZWN0IHRo
aXMuCisgICAgICAgIEFsc28sIG1ha2UgUGFnZTo6bV9jaHJvbWUgYSBjb25zdCBtZW1iZXIgdmFy
aWFibGUgc28gbm9ib2R5IHdpbGwgYWNjaWRlbnRhbGx5IHNldCBpdCB0byBudWxsLgorCiAyMDEz
LTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAg
RnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VDb250ZXh0LmNwcAppbmRl
eCA1YzczYjVkLi4yYjAzNDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZUNvbnRleHQuY3BwCkBAIC0yMjAsNyArMjIwLDcgQEAgdm9p
ZCBEYXRhYmFzZUNvbnRleHQ6OmRhdGFiYXNlRXhjZWVkZWRRdW90YShjb25zdCBTdHJpbmcmIG5h
bWUsIERhdGFiYXNlRGV0YWlscwogICAgIGlmIChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1l
bnQtPnBhZ2UoKSkKLSAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhjZWVk
ZWREYXRhYmFzZVF1b3RhKGRvY3VtZW50LT5mcmFtZSgpLCBuYW1lLCBkZXRhaWxzKTsKKyAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5leGNlZWRlZERhdGFiYXNlUXVvdGEoZG9j
dW1lbnQtPmZyYW1lKCksIG5hbWUsIGRldGFpbHMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggOWYzYTk1OC4uYzRk
MGYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTE1MjIs
MTIgKzE1MjIsMTIgQEAgc3RhdGljIE5TTXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0FycmF5KGNv
bnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHkKICAgICAgICAgCiAgICAgICAg
IC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgY2hyb21lIGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ug
c2hvdWxkIHVzZSB0aGUgcGFnZQogICAgICAgICAvLyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50
IHRvIGhlbHAgdXMgZ2V0IHRvIHRoZSBzY3JlZW4gcmVjdC4KLSAgICAgICAgaWYgKHBhcmVudCAm
JiBwYWdlICYmIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgp
KQorICAgICAgICBpZiAocGFyZW50ICYmIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkt
PmlzRW1wdHlDaHJvbWVDbGllbnQoKSkKICAgICAgICAgICAgIHBhZ2UgPSBwYXJlbnQtPnBhZ2Uo
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChwYWdlKSB7CiAgICAgICAgICAgICBJbnRSZWN0IHJl
Y3QgPSBJbnRSZWN0KGludFBvaW50LCBJbnRTaXplKDAsIDApKTsgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCktPnJvb3RWaWV3VG9TY3JlZW4ocmVjdCku
bG9jYXRpb24oKTsKKyAgICAgICAgICAgIGludFBvaW50ID0gcGFnZS0+Y2hyb21lKCkucm9vdFZp
ZXdUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gaW50UG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L3dpbi9BWE9iamVjdENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4uY3BwCmluZGV4IDhkYjczZGUuLmNmYmNjYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvd2luL0FYT2JqZWN0Q2FjaGVX
aW4uY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFBsYXRmb3Jt
Tm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiwgQVhOb3RpZmljCiAgICAgICAg
IHJldHVybjsKIAogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwotICAgIGlmICgh
cGFnZSB8fCAhcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKQorICAgIGlmICgh
cGFnZSB8fCAhcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIERXT1JEIG1zYWFFdmVudDsKQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmosIEFYTm90aWZpYwogICAgIEFTU0VSVChvYmotPmF4T2JqZWN0SUQoKSA+PSAxKTsKICAg
ICBBU1NFUlQob2JqLT5heE9iamVjdElEKCkgPD0gbnVtZXJpY19saW1pdHM8TE9ORz46Om1heCgp
KTsKIAotICAgIE5vdGlmeVdpbkV2ZW50KG1zYWFFdmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRm
b3JtUGFnZUNsaWVudCgpLCBPQkpJRF9DTElFTlQsIC1zdGF0aWNfY2FzdDxMT05HPihvYmotPmF4
T2JqZWN0SUQoKSkpOworICAgIE5vdGlmeVdpbkV2ZW50KG1zYWFFdmVudCwgcGFnZS0+Y2hyb21l
KCkucGxhdGZvcm1QYWdlQ2xpZW50KCksIE9CSklEX0NMSUVOVCwgLXN0YXRpY19jYXN0PExPTkc+
KG9iai0+YXhPYmplY3RJRCgpKSk7CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hh
bmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEFY
T2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKE5vZGUqLCBOb2RlKiBu
ZXdGb2N1c2VkTm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG5ld0Zv
Y3VzZWROb2RlLT5kb2N1bWVudCgpLT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5j
aHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpCisgICAgaWYgKCFwYWdlIHx8ICFwYWdlLT5j
aHJvbWUoKS5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogZm9jdXNlZE9iamVjdCA9IGZvY3VzZWRVSUVsZW1lbnRGb3JQYWdl
KHBhZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5j
cHAKaW5kZXggMGQ2ZmMxZS4uMWIyYmI0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBKU0RPTVdp
bmRvd0Jhc2U6OnNob3VsZEludGVycnVwdFNjcmlwdChjb25zdCBKU0dsb2JhbE9iamVjdCogb2Jq
ZWN0KQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4g
cGFnZS0+Y2hyb21lKCktPnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKTsKKyAgICByZXR1cm4g
cGFnZS0+Y2hyb21lKCkuc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCgpOwogfQogCiBib29sIEpT
RE9NV2luZG93QmFzZTo6amF2YVNjcmlwdEV4cGVyaW1lbnRzRW5hYmxlZChjb25zdCBKU0dsb2Jh
bE9iamVjdCogb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0RlZmF1
bHRTdHlsZVNoZWV0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmNwcAppbmRleCAzYzljMzI3Li5kNDZlNzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmNwcApAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgQ1NTRGVm
YXVsdFN0eWxlU2hlZXRzOjplbnN1cmVEZWZhdWx0U3R5bGVTaGVldHNGb3JFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQsCiAjZW5kaWYKIAogICAgIGlmICghcGx1Z0luc1N0eWxlU2hlZXQgJiYgKGVs
ZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVk
VGFnKSkpIHsKLSAgICAgICAgU3RyaW5nIHBsdWdJbnNSdWxlcyA9IFJlbmRlclRoZW1lOjp0aGVt
ZUZvclBhZ2UoZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKS0+ZXh0cmFQbHVnSW5zU3R5bGVT
aGVldCgpICsgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnBsdWdJbkV4dHJhU3R5bGVTaGVldCgpOworICAgICAgICBTdHJpbmcgcGx1Z0luc1J1bGVzID0g
UmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpLT5l
eHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgKyBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLmNsaWVudCgpLT5wbHVnSW5FeHRyYVN0eWxlU2hlZXQoKTsKICAgICAgICAgaWYgKHBs
dWdJbnNSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBwbHVnSW5zUnVsZXMgPSBTdHJpbmco
cGx1Z0luc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihwbHVnSW5zVXNlckFnZW50U3R5bGVT
aGVldCkpOwogICAgICAgICBwbHVnSW5zU3R5bGVTaGVldCA9IHBhcnNlVUFTaGVldChwbHVnSW5z
UnVsZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDAxMTFmZTYuLjkw
NDNiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTk5OSw3ICs5OTks
NyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnNldEFjdGl2ZShib29sIGRvd24sIGJvb2wgcGF1c2Up
CiAgICAgICAgIC8vIFRoZSByZXN0IG9mIHRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGZlYXR1
cmUgdGhhdCBvbmx5IHdvcmtzIGlmIHRoZQogICAgICAgICAvLyBwbGF0Zm9ybSBzdXBwb3J0cyBp
bW1lZGlhdGUgaW52YWxpZGF0aW9ucyBvbiB0aGUgQ2hyb21lQ2xpZW50LCBzbyBiYWlsIGlmCiAg
ICAgICAgIC8vIHRoYXQgaXNuJ3Qgc3VwcG9ydGVkLgotICAgICAgICBpZiAoIWRvY3VtZW50KCkt
PnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0ltbWVkaWF0ZUludmFsaWRhdGlv
bigpKQorICAgICAgICBpZiAoIWRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkt
PnN1cHBvcnRzSW1tZWRpYXRlSW52YWxpZGF0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgaWYgKHJlYWN0c1RvUHJlc3MgJiYgcGF1c2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IDExY2Y4NTYuLmY0ODhkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
Mjk3NSw3ICsyOTc1LDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMo
KQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGll
c0NoYW5nZWQgPSB0cnVlOwogI2VuZGlmCi0gICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmRpc3Bh
dGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdlKG1fdmlld3BvcnRBcmd1bWVudHMpOworICAg
ICAgICBwYWdlKCktPmNocm9tZSgpLmRpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVzRGlkQ2hhbmdl
KG1fdmlld3BvcnRBcmd1bWVudHMpOwogICAgIH0KIH0KIApAQCAtMzQzOCw3ICszNDM4LDcgQEAg
Ym9vbCBEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBwcnBOZXdGb2N1
c2VkTm9kZSwgRm9jdXNEaXJlY3Rpb24KICAgICB9CiAKICAgICBpZiAoIWZvY3VzQ2hhbmdlQmxv
Y2tlZCkKLSAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Zm9jdXNlZE5vZGVDaGFuZ2VkKG1fZm9j
dXNlZE5vZGUuZ2V0KCkpOworICAgICAgICBwYWdlKCktPmNocm9tZSgpLmZvY3VzZWROb2RlQ2hh
bmdlZChtX2ZvY3VzZWROb2RlLmdldCgpKTsKIAogU2V0Rm9jdXNlZE5vZGVEb25lOgogICAgIHVw
ZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTUwMjgsMTIgKzUwMjgsMTIgQEAgdm9pZCBEb2N1bWVu
dDo6cmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVk
IHNob3J0IGZsYWcKICAgICAgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+
ZnVsbFNjcmVlbkVuYWJsZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGlmICgh
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQo
ZWxlbWVudCwgZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVCkpIHsKKyAgICAg
ICAgaWYgKCFwYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQsIGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpKSB7
CiAgICAgICAgICAgICAvLyBUaGUgbmV3IGZ1bGwgc2NyZWVuIEFQSSBkb2VzIG5vdCBhY2NlcHQg
YSAiZmxhZ3MiIHBhcmFtZXRlciwgc28gZmFsbCBiYWNrIHRvIGRpc2FsbG93aW5nCiAgICAgICAg
ICAgICAvLyBrZXlib2FyZCBpbnB1dCBpZiB0aGUgY2hyb21lIGNsaWVudCByZWZ1c2VzIHRvIGFs
bG93IGtleWJvYXJkIGlucHV0LgogICAgICAgICAgICAgaWYgKCFpbkxlZ2FjeU1vemlsbGFNb2Rl
ICYmIGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQpIHsKICAgICAgICAgICAg
ICAgICBmbGFncyAmPSB+RWxlbWVudDo6QUxMT1dfS0VZQk9BUkRfSU5QVVQ7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsU2NyZWVu
Rm9yRWxlbWVudChlbGVtZW50LCBmYWxzZSkpCisgICAgICAgICAgICAgICAgaWYgKCFwYWdlKCkt
PmNocm9tZSgpLmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQs
IGZhbHNlKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUwODgsNyArNTA4OCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25l
ZCBzaG9ydCBmbGFnCiAgICAgICAgIC8vIDUuIFJldHVybiwgYW5kIHJ1biB0aGUgcmVtYWluaW5n
IHN0ZXBzIGFzeW5jaHJvbm91c2x5LgogICAgICAgICAvLyA2LiBPcHRpb25hbGx5LCBwZXJmb3Jt
IHNvbWUgYW5pbWF0aW9uLgogICAgICAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0g
ZmxhZ3MgJiBFbGVtZW50OjpBTExPV19LRVlCT0FSRF9JTlBVVDsKLSAgICAgICAgcGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoZWxlbWVudCk7CiAKICAgICAgICAgLy8gNy4gT3B0aW9uYWxseSwgZGlzcGxheSBhIG1lc3Nh
Z2UgaW5kaWNhdGluZyBob3cgdGhlIHVzZXIgY2FuIGV4aXQgZGlzcGxheWluZyB0aGUgY29udGV4
dCBvYmplY3QgZnVsbHNjcmVlbi4KICAgICAgICAgcmV0dXJuOwpAQCAtNTE3OSwxMiArNTE3OSwx
MiBAQCB2b2lkIERvY3VtZW50Ojp3ZWJraXRFeGl0RnVsbHNjcmVlbigpCiAgICAgLy8gT25seSBl
eGl0IG91dCBvZiBmdWxsIHNjcmVlbiB3aW5kb3cgbW9kZSBpZiB0aGVyZSBhcmUgbm8gcmVtYWlu
aW5nIGVsZW1lbnRzIGluIHRoZSAKICAgICAvLyBmdWxsIHNjcmVlbiBzdGFjay4KICAgICBpZiAo
IW5ld1RvcCkgewotICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAgICAgICBwYWdl
KCktPmNocm9tZSgpLmNsaWVudCgpLT5leGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2Ny
ZWVuRWxlbWVudC5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBPdGhl
cndpc2UsIG5vdGlmeSB0aGUgY2hyb21lIG9mIHRoZSBuZXcgZnVsbCBzY3JlZW4gZWxlbWVudC4K
LSAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChuZXdUb3ApOyAgICAgIAorICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQobmV3VG9wKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6d2Via2l0RnVs
bHNjcmVlbkVuYWJsZWQoKSBjb25zdApAQCAtNTMwOSw3ICs1MzA5LDcgQEAgdm9pZCBEb2N1bWVu
dDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyKFJlbmRlckZ1bGxTY3JlZW4qIHJlbmRlcmVyKQogICAg
IAogICAgIC8vIFRoaXMgbm90aWZpY2F0aW9uIGNhbiBjb21lIGluIGFmdGVyIHRoZSBwYWdlIGhh
cyBiZWVuIGRlc3Ryb3llZC4KICAgICBpZiAocGFnZSgpKQotICAgICAgICBwYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKS0+ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZChtX2Z1bGxTY3JlZW5SZW5k
ZXJlcik7CisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCktPmZ1bGxTY3JlZW5SZW5k
ZXJlckNoYW5nZWQobV9mdWxsU2NyZWVuUmVuZGVyZXIpOwogfQogCiB2b2lkIERvY3VtZW50Ojpm
dWxsU2NyZWVuUmVuZGVyZXJEZXN0cm95ZWQoKQpAQCAtNTMxNyw3ICs1MzE3LDcgQEAgdm9pZCBE
b2N1bWVudDo6ZnVsbFNjcmVlblJlbmRlcmVyRGVzdHJveWVkKCkKICAgICBtX2Z1bGxTY3JlZW5S
ZW5kZXJlciA9IDA7CiAKICAgICBpZiAocGFnZSgpKQotICAgICAgICBwYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZCgwKTsKKyAgICAgICAgcGFnZSgp
LT5jaHJvbWUoKS5jbGllbnQoKS0+ZnVsbFNjcmVlblJlbmRlcmVyQ2hhbmdlZCgwKTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6c2V0RnVsbFNjcmVlblJlbmRlcmVyU2l6ZShjb25zdCBJbnRTaXplJiBz
aXplKQpAQCAtNTYyNyw3ICs1NjI3LDcgQEAgdm9pZCBEb2N1bWVudDo6ZGlkQWRkVG91Y2hFdmVu
dEhhbmRsZXIoTm9kZSogaGFuZGxlcikKICAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
LT50b3VjaEV2ZW50VGFyZ2V0UmVjdHNEaWRDaGFuZ2UodGhpcyk7CiAjZW5kaWYKICAgICAgICAg
aWYgKG1fdG91Y2hFdmVudFRhcmdldHMtPnNpemUoKSA9PSAxKQotICAgICAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHModHJ1ZSk7CisgICAgICAgICAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogICAgIH0KICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGhhbmRsZXIpOwpAQCAtNTY1OSw3ICs1NjU5LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoTm9kZSogaGFuZGxlcikKICAg
ICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5oYXNUb3Vj
aEV2ZW50SGFuZGxlcnMoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHMoZmFsc2UpOworICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHMoZmFsc2UpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oaGFuZGxlcik7CiAjZW5kaWYKQEAgLTYwMTMsNyArNjAxMyw3IEBAIFBhc3NSZWZQ
dHI8Rm9udExvYWRlcj4gRG9jdW1lbnQ6OmZvbnRsb2FkZXIoKQogCiB2b2lkIERvY3VtZW50Ojpk
aWRBc3NvY2lhdGVGb3JtQ29udHJvbChFbGVtZW50KiBlbGVtZW50KQogewotICAgIGlmICghZnJh
bWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+c2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlcygpKQorICAgIGlmICghZnJhbWUoKSB8
fCAhZnJhbWUoKS0+cGFnZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgp
LT5zaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKCkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Fz
c29jaWF0ZWRGb3JtQ29udHJvbHMuYWRkKGVsZW1lbnQpOwogICAgIGlmICghbV9kaWRBc3NvY2lh
dGVGb3JtQ29udHJvbHNUaW1lci5pc0FjdGl2ZSgpKQpAQCAtNjAyOSw3ICs2MDI5LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzVGltZXJGaXJlZChUaW1lcjxEb2N1
bWVudD4qIHRpbWVyKQogICAgIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiBhc3NvY2lhdGVkRm9y
bUNvbnRyb2xzOwogICAgIGNvcHlUb1ZlY3RvcihtX2Fzc29jaWF0ZWRGb3JtQ29udHJvbHMsIGFz
c29jaWF0ZWRGb3JtQ29udHJvbHMpOwogCi0gICAgZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmRpZEFzc29jaWF0ZUZvcm1Db250cm9scyhhc3NvY2lhdGVkRm9ybUNvbnRyb2xz
KTsKKyAgICBmcmFtZSgpLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5kaWRBc3NvY2lhdGVG
b3JtQ29udHJvbHMoYXNzb2NpYXRlZEZvcm1Db250cm9scyk7CiAgICAgbV9hc3NvY2lhdGVkRm9y
bUNvbnRyb2xzLmNsZWFyKCk7CiB9CiAKQEAgLTYwMzksNyArNjAzOSw3IEBAIHZvaWQgRG9jdW1l
bnQ6OmVuc3VyZVBsdWdJbnNJbmplY3RlZFNjcmlwdChET01XcmFwcGVyV29ybGQqIHdvcmxkKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBVc2UgdGhlIEpTIGZpbGUgcHJvdmlkZWQgYnkgdGhl
IENocm9tZSBjbGllbnQsIG9yIGZhbGxiYWNrIHRvIHRoZSBkZWZhdWx0IG9uZS4KLSAgICBTdHJp
bmcganNTdHJpbmcgPSBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luRXh0cmFTY3Jp
cHQoKTsKKyAgICBTdHJpbmcganNTdHJpbmcgPSBwYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5w
bHVnSW5FeHRyYVNjcmlwdCgpOwogICAgIGlmICghanNTdHJpbmcpCiAgICAgICAgIGpzU3RyaW5n
ID0gcGx1Z0luc0phdmFTY3JpcHQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA2ODJlNjUxLi5iNzcx
ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNDg1LDcgKzI0ODUsNyBAQCBib29sIE5vZGU6OmRp
c3BhdGNoV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogdm9pZCBO
b2RlOjpkaXNwYXRjaEZvY3VzRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBvbGRGb2N1c2VkTm9kZSwg
Rm9jdXNEaXJlY3Rpb24pCiB7CiAgICAgaWYgKGRvY3VtZW50KCktPnBhZ2UoKSkKLSAgICAgICAg
ZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVsZW1lbnREaWRGb2N1cyh0
aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+ZWxl
bWVudERpZEZvY3VzKHRoaXMpOwogCiAgICAgUmVmUHRyPEZvY3VzRXZlbnQ+IGV2ZW50ID0gRm9j
dXNFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBmYWxzZSwgZmFsc2UsIGRv
Y3VtZW50KCktPmRlZmF1bHRWaWV3KCksIDAsIG9sZEZvY3VzZWROb2RlKTsKICAgICBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgRm9jdXNFdmVudERpc3BhdGNoTWVkaWF0b3I6
OmNyZWF0ZShldmVudC5yZWxlYXNlKCkpKTsKQEAgLTI0OTQsNyArMjQ5NCw3IEBAIHZvaWQgTm9k
ZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gb2xkRm9jdXNlZE5vZGUsIEZv
Y3VzRGlyZWN0aW9uKQogdm9pZCBOb2RlOjpkaXNwYXRjaEJsdXJFdmVudChQYXNzUmVmUHRyPE5v
ZGU+IG5ld0ZvY3VzZWROb2RlKQogewogICAgIGlmIChkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAg
ICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbGVtZW50RGlkQmx1
cih0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+
ZWxlbWVudERpZEJsdXIodGhpcyk7CiAKICAgICBSZWZQdHI8Rm9jdXNFdmVudD4gZXZlbnQgPSBG
b2N1c0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJsdXJFdmVudCwgZmFsc2UsIGZhbHNlLCBk
b2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCAwLCBuZXdGb2N1c2VkTm9kZSk7CiAgICAgRXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KHRoaXMsIEJsdXJFdmVudERpc3BhdGNoTWVkaWF0b3I6
OmNyZWF0ZShldmVudC5yZWxlYXNlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwCmluZGV4IDk4YzMwMWIuLjg0MjdmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcApAQCAtOTU3LDcgKzk1Nyw3IEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVQcmludChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3Qg
U3RyaW5nCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnByaW50KGZyYW1lKTsK
KyAgICBwYWdlLT5jaHJvbWUoKS5wcmludChmcmFtZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKaW5kZXggZTNjNDQwZi4uZGRhNzQ1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHAKQEAgLTE0MCw3ICsxNDAs
NyBAQCB2b2lkIENhY2hlZEZyYW1lQmFzZTo6cmVzdG9yZSgpCiAgICAgCiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKICAgICBpZiAobV9kb2N1bWVudC0+aGFzVG91Y2hFdmVudEhhbmRsZXJzKCkp
Ci0gICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91
Y2hFdmVudHModHJ1ZSk7CisgICAgICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuY2xp
ZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0cnVlKTsKICNlbmRpZgogCiAgICAgbV9kb2N1bWVudC0+
ZG9jdW1lbnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VDaG9vc2VyT25seURhdGVBbmRUaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmlu
ZGV4IDllMmRiYTYuLjJhYmFjZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCkBAIC01MCwxMyAr
NTAsMTAgQEAgdm9pZCBCYXNlQ2hvb3Nlck9ubHlEYXRlQW5kVGltZUlucHV0VHlwZTo6aGFuZGxl
RE9NQWN0aXZhdGVFdmVudChFdmVudCopCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIWVsZW1l
bnQoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpKQogICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lKiBj
aHJvbWUgPSBlbGVtZW50KCktPmRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCk7Ci0gICAgaWYg
KCFjaHJvbWUpCi0gICAgICAgIHJldHVybjsKICAgICBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJz
IHBhcmFtZXRlcnM7CiAgICAgaWYgKCFlbGVtZW50KCktPnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycyhwYXJhbWV0ZXJzKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fZGF0ZVRpbWVDaG9v
c2VyID0gY2hyb21lLT5vcGVuRGF0ZVRpbWVDaG9vc2VyKHRoaXMsIHBhcmFtZXRlcnMpOworICAg
IG1fZGF0ZVRpbWVDaG9vc2VyID0gZWxlbWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCktPmNocm9t
ZSgpLm9wZW5EYXRlVGltZUNob29zZXIodGhpcywgcGFyYW1ldGVycyk7CiB9CiAKIHZvaWQgQmFz
ZUNob29zZXJPbmx5RGF0ZUFuZFRpbWVJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0
aFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudFdp
dGhTdGF0ZS5jcHAKaW5kZXggNjZmMjFiMy4uNDBiNjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50V2l0aFN0YXRlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGUuY3BwCkBAIC02
Nyw3ICs2Nyw3IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudFdpdGhTdGF0ZTo6bm90aWZ5
Rm9ybVN0YXRlQ2hhbmdlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChQYWdlKiBwYWdl
ID0gZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5mb3Jt
U3RhdGVEaWRDaGFuZ2UodGhpcyk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5m
b3JtU3RhdGVEaWRDaGFuZ2UodGhpcyk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZTo6c2hvdWxkU2F2ZUFuZFJlc3RvcmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGE4NjNmZWYuLjk3
NDc0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTY1
Niw3ICsxNjU2LDcgQEAgc3RhdGljIHZvaWQgbG9nTWVkaWFMb2FkUmVxdWVzdChQYWdlKiBwYWdl
LCBjb25zdCBTdHJpbmcmIG1lZGlhRW5naW5lLCBjb25zdCBTdHIKICAgICBpZiAoIXBhZ2UgfHwg
IXBhZ2UtPnNldHRpbmdzKCktPmRpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBDaHJvbWVDbGllbnQqIGNsaWVudCA9IHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKTsKKyAgICBDaHJvbWVDbGllbnQqIGNsaWVudCA9IHBhZ2UtPmNocm9tZSgpLmNsaWVudCgp
OwogCiAgICAgaWYgKCFzdWNjZWVkZWQpIHsKICAgICAgICAgY2xpZW50LT5sb2dEaWFnbm9zdGlj
TWVzc2FnZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om1lZGlhTG9hZGluZ0ZhaWxlZEtleSgpLCBl
cnJvck1lc3NhZ2UsIERpYWdub3N0aWNMb2dnaW5nS2V5czo6ZmFpbEtleSgpKTsKQEAgLTI2NTYs
NyArMjY1Niw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbHMoKSBjb25zdAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIGFsd2F5cyBzaG93IGNvbnRyb2xzIGZvciB2aWRl
byB3aGVuIGZ1bGxzY3JlZW4gcGxheWJhY2sgaXMgcmVxdWlyZWQuCi0gICAgaWYgKGlzVmlkZW8o
KSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQorICAgIGlmIChpc1ZpZGVvKCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkucmVx
dWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAogICAgIC8vIEFsd2F5cyBzaG93IGNvbnRyb2xzIHdoZW4gaW4gZnVsbCBzY3JlZW4gbW9kZS4K
QEAgLTM3OTAsNyArMzc5MCw3IEBAIEdyYXBoaWNzRGV2aWNlQWRhcHRlciogSFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJHcmFwaGljc0RldmljZUFkYXB0ZXIoY29uc3QKICAgICBpZiAoIWRv
Y3VtZW50KCkgfHwgIWRvY3VtZW50KCktPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAg
ICByZXR1cm4gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmdyYXBoaWNz
RGV2aWNlQWRhcHRlcigpOworICAgIHJldHVybiBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgp
LmNsaWVudCgpLT5ncmFwaGljc0RldmljZUFkYXB0ZXIoKTsKIH0KICNlbmRpZgogCkBAIC0zOTc5
LDcgKzM5NzksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZSgpCiAg
ICAgICAgIGludmFsaWRhdGVDYWNoZWRUaW1lKCk7CiAKICAgICAgICAgaWYgKHBsYXllclBhdXNl
ZCkgewotICAgICAgICAgICAgaWYgKCFtX2lzRnVsbHNjcmVlbiAmJiBpc1ZpZGVvKCkgJiYgZG9j
dW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJv
bWUoKS0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQorICAgICAgICAgICAg
aWYgKCFtX2lzRnVsbHNjcmVlbiAmJiBpc1ZpZGVvKCkgJiYgZG9jdW1lbnQoKSAmJiBkb2N1bWVu
dCgpLT5wYWdlKCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5yZXF1aXJlc0Z1bGxz
Y3JlZW5Gb3JWaWRlb1BsYXliYWNrKCkpCiAgICAgICAgICAgICAgICAgZW50ZXJGdWxsc2NyZWVu
KCk7CiAKICAgICAgICAgICAgIC8vIFNldCByYXRlLCBtdXRlZCBiZWZvcmUgY2FsbGluZyBwbGF5
IGluIGNhc2UgdGhleSB3ZXJlIHNldCBiZWZvcmUgdGhlIG1lZGlhIGVuZ2luZSB3YXMgc2V0dXAu
CkBAIC00MzU3LDcgKzQzNTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNj
cmVlbigpCiAgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKICAgICAgICAgbWVkaWFDb250cm9s
cygpLT5lbnRlcmVkRnVsbHNjcmVlbigpOwogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50
KCktPnBhZ2UoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGll
bnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsK
ICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVu
RXZlbnQpOwogICAgIH0KIH0KQEAgLTQzNzgsOSArNDM3OCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgIGlmIChoYXNNZWRpYUNvbnRyb2xzKCkpCiAgICAg
ICAgIG1lZGlhQ29udHJvbHMoKS0+ZXhpdGVkRnVsbHNjcmVlbigpOwogICAgIGlmIChkb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBpZiAoZG9jdW1lbnQoKS0+cGFn
ZSgpLT5jaHJvbWUoKS0+cmVxdWlyZXNGdWxsc2NyZWVuRm9yVmlkZW9QbGF5YmFjaygpKQorICAg
ICAgICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5yZXF1aXJlc0Z1bGxzY3JlZW5G
b3JWaWRlb1BsYXliYWNrKCkpCiAgICAgICAgICAgICBwYXVzZUludGVybmFsKCk7Ci0gICAgICAg
IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZv
ck5vZGUodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50
KCktPmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxNDQ1YzM1
Li4wMTI3ZTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIGNvbnN0IFN0cmluZyB0aXRsZVRleHQo
UGFnZSogcGFnZSwgU3RyaW5nIG1pbWVUeXBlKQogICAgIGlmICghdGl0bGVUZXh0LmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIHRpdGxlVGV4dDsKIAotICAgIHRpdGxlVGV4dCA9IHBhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxlKG1pbWVUeXBlKTsKKyAgICB0
aXRsZVRleHQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+cGx1Z0luU3RhcnRMYWJlbFRpdGxl
KG1pbWVUeXBlKTsKICAgICBpZiAodGl0bGVUZXh0LmlzRW1wdHkoKSkKICAgICAgICAgdGl0bGVU
ZXh0ID0gc25hcHNob3R0ZWRQbHVnSW5MYWJlbFRpdGxlKCk7CiAgICAgbWltZVR5cGVUb0xhYmVs
VGl0bGVNYXAuc2V0KG1pbWVUeXBlLCB0aXRsZVRleHQpOwpAQCAtOTIsNyArOTIsNyBAQCBzdGF0
aWMgY29uc3QgU3RyaW5nIHN1YnRpdGxlVGV4dChQYWdlKiBwYWdlLCBTdHJpbmcgbWltZVR5cGUp
CiAgICAgaWYgKCFzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gc3VidGl0
bGVUZXh0OwogCi0gICAgc3VidGl0bGVUZXh0ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5w
bHVnSW5TdGFydExhYmVsU3VidGl0bGUobWltZVR5cGUpOworICAgIHN1YnRpdGxlVGV4dCA9IHBh
Z2UtPmNocm9tZSgpLmNsaWVudCgpLT5wbHVnSW5TdGFydExhYmVsU3VidGl0bGUobWltZVR5cGUp
OwogICAgIGlmIChzdWJ0aXRsZVRleHQuaXNFbXB0eSgpKQogICAgICAgICBzdWJ0aXRsZVRleHQg
PSBzbmFwc2hvdHRlZFBsdWdJbkxhYmVsU3VidGl0bGUoKTsKICAgICBtaW1lVHlwZVRvTGFiZWxT
dWJ0aXRsZU1hcC5zZXQobWltZVR5cGUsIHN1YnRpdGxlVGV4dCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAppbmRleCAwMmVjMmM0Li4yMTQ0N2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKQEAgLTEzOSwxNCArMTM5LDE0IEBAIGJv
b2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgLy8gSWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBpcyBlbmFi
bGVkIGFuZCBpcyBzdXBwb3J0ZWQgZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQKICAgICAvLyBkbyBu
b3QgcmVxdWlyZSB0aGF0IHRoZSBwbGF5ZXIgaGFzIGEgdmlkZW8gdHJhY2sgdG8gZW50ZXIgZnVs
bCBzY3JlZW4uCi0gICAgaWYgKHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxs
U2NyZWVuRm9yRWxlbWVudCh0aGlzLCBmYWxzZSkpCisgICAgaWYgKHBhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KHRoaXMsIGZhbHNlKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKIAogICAgIGlmICghcGxheWVyKCktPmhhc1ZpZGVvKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgcmV0dXJuIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwogfQog
CiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSW5wdXRUeXBlLmNwcAppbmRleCA4YTQyOTE3Li40YTA0ZjFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCkBAIC01MjEsNyArNTIxLDcgQEAgdm9pZCBJbnB1dFR5cGU6OmRpc3BhdGNo
U2ltdWxhdGVkQ2xpY2tJZkFjdGl2ZShLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKIENocm9t
ZSogSW5wdXRUeXBlOjpjaHJvbWUoKSBjb25zdAogewogICAgIGlmIChQYWdlKiBwYWdlID0gZWxl
bWVudCgpLT5kb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KTsKKyAgICAgICAgcmV0dXJuICZwYWdlLT5jaHJvbWUoKTsKICAgICByZXR1cm4gMDsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAppbmRleCA4ODA0
MTlhLi40NmI4NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzLmNwcApAQCAtMjcxLDcgKzI3MSw3IEBAIHZvaWQgTWVkaWFDb250cm9sczo6ZW50ZXJlZEZ1
bGxzY3JlZW4oKQogICAgIG1fZnVsbFNjcmVlbkJ1dHRvbi0+c2V0SXNGdWxsc2NyZWVuKHRydWUp
OwogCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCkpCi0gICAgICAgIHBh
Z2UtPmNocm9tZSgpLT5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7CisgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLnNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyh0cnVlKTsK
IAogICAgIHN0YXJ0SGlkZUZ1bGxzY3JlZW5Db250cm9sc1RpbWVyKCk7CiB9CkBAIC0zMzEsNyAr
MzMxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xzOjpoaWRlRnVsbHNjcmVlbkNvbnRyb2xzVGltZXJG
aXJlZChUaW1lcjxNZWRpYUNvbnRyb2xzPiopCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChQ
YWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+
c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKHRydWUpOworICAgICAgICBwYWdlLT5jaHJv
bWUoKS5zZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXModHJ1ZSk7CiAKICAgICBtYWtlVHJh
bnNwYXJlbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Bp
Y2tlckluZGljYXRvckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUGlj
a2VySW5kaWNhdG9yRWxlbWVudC5jcHAKaW5kZXggZDk2OTAyNC4uZGMyZWM1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvUGlja2VySW5kaWNhdG9yRWxlbWVudC5j
cHAKQEAgLTExMCwxMyArMTEwLDEwIEBAIHZvaWQgUGlja2VySW5kaWNhdG9yRWxlbWVudDo6b3Bl
blBvcHVwKCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9waWNrZXJJbmRpY2F0b3JPd25l
cikKICAgICAgICAgcmV0dXJuOwotICAgIENocm9tZSogY2hyb21lID0gZG9jdW1lbnQoKS0+cGFn
ZSgpLT5jaHJvbWUoKTsKLSAgICBpZiAoIWNocm9tZSkKLSAgICAgICAgcmV0dXJuOwogICAgIERh
dGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBpZiAoIW1fcGlja2VySW5k
aWNhdG9yT3duZXItPnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhwYXJhbWV0ZXJzKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fY2hvb3NlciA9IGNocm9tZS0+b3BlbkRhdGVUaW1lQ2hv
b3Nlcih0aGlzLCBwYXJhbWV0ZXJzKTsKKyAgICBtX2Nob29zZXIgPSBkb2N1bWVudCgpLT5wYWdl
KCktPmNocm9tZSgpLm9wZW5EYXRlVGltZUNob29zZXIodGhpcywgcGFyYW1ldGVycyk7CiB9CiAK
IHZvaWQgUGlja2VySW5kaWNhdG9yRWxlbWVudDo6Y2xvc2VQb3B1cCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjIzYmFiOC4u
YmU0MWNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25F
bGVtZW50LmNwcApAQCAtMTIxLDEwICsxMjEsOCBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRzTm9kZSh0aGlzKTsK
ICAgICAgICAgICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhZ2UtPmNocm9tZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKHRoaXMpOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKS0+cGFnZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS0+Y2hy
b21lKCkucmVnaXN0ZXJQb3B1cE9wZW5pbmdPYnNlcnZlcih0aGlzKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBVcERvd25TdGF0ZSBvbGRVcERvd25TdGF0
ZSA9IG1fdXBEb3duU3RhdGU7CkBAIC0xOTksMTAgKzE5Nyw4IEBAIHZvaWQgU3BpbkJ1dHRvbkVs
ZW1lbnQ6OnJlbGVhc2VDYXB0dXJlKCkKICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50KCktPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2V0
Q2FwdHVyaW5nTW91c2VFdmVudHNOb2RlKDApOwogICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSBm
YWxzZTsKLSAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHBhZ2UtPmNocm9tZSgpKQotICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+dW5yZWdpc3RlclBvcHVwT3BlbmluZ09ic2VydmVyKHRoaXMpOwot
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudCgpLT5w
YWdlKCkpCisgICAgICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkudW5yZWdpc3RlclBvcHVwT3Bl
bmluZ09ic2VydmVyKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CmluZGV4IGIxYzRiOTUuLjI5NzU3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTIyOCw5ICsy
MjgsOSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihj
b25zdCBTdHJpbmcmIHVybCkKIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpt
b3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKIHsKLSAgICBGbG9hdFJlY3QgZnJhbWVSZWN0
ID0gbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7CisgICAgRmxvYXRSZWN0
IGZyYW1lUmVjdCA9IG1fZnJvbnRlbmRQYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCk7CiAgICAg
ZnJhbWVSZWN0Lm1vdmUoeCwgeSk7Ci0gICAgbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLT5zZXRX
aW5kb3dSZWN0KGZyYW1lUmVjdCk7CisgICAgbV9mcm9udGVuZFBhZ2UtPmNocm9tZSgpLnNldFdp
bmRvd1JlY3QoZnJhbWVSZWN0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpzZXRBdHRhY2hlZFdpbmRvdyhEb2NrU2lkZSBkb2NrU2lkZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmNwcAppbmRleCBiNzEwODAzLi4y
OTkwYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5w
dXRBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0
QWdlbnQuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnB1dEFnZW50Ojpk
aXNwYXRjaE1vdXNlRXZlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHQKICAg
ICAvLyBTb21lIHBsYXRmb3JtcyBtYXkgaGF2ZSBmbGlwcGVkIGNvb3JkaW5hdGUgc3lzdGVtcywg
YnV0IHRoZSBnaXZlbiBjb29yZGluYXRlcwogICAgIC8vIGFzc3VtZSB0aGUgb3JpZ2luIGlzIGlu
IHRoZSB0b3AtbGVmdCBvZiB0aGUgd2luZG93LiBDb252ZXJ0LgogICAgIEludFBvaW50IGNvbnZl
cnRlZFBvaW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5jb252ZXJ0VG9Db250YWlu
aW5nV2luZG93KEludFBvaW50KHgsIHkpKTsKLSAgICBJbnRQb2ludCBnbG9iYWxQb2ludCA9IG1f
cGFnZS0+Y2hyb21lKCktPnJvb3RWaWV3VG9TY3JlZW4oSW50UmVjdChJbnRQb2ludCh4LCB5KSwg
SW50U2l6ZSgwLCAwKSkpLmxvY2F0aW9uKCk7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9pbnQgPSBt
X3BhZ2UtPmNocm9tZSgpLnJvb3RWaWV3VG9TY3JlZW4oSW50UmVjdChJbnRQb2ludCh4LCB5KSwg
SW50U2l6ZSgwLCAwKSkpLmxvY2F0aW9uKCk7CiAKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgZXZl
bnQoCiAgICAgICAgIGNvbnZlcnRlZFBvaW50LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggYjQyM2ViMi4uOTE3MmRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCkBAIC0xMTY3LDcgKzExNjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJh
bWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgbG9ja0hpcwog
ICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IHNvdXJjZUZyYW1lLT5sb2FkZXIoKS0+ZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihyZXF1ZXN0LmZyYW1lTmFtZSgpKTsKICAgICBpZiAodGFyZ2V0RnJhbWUg
JiYgdGFyZ2V0RnJhbWUgIT0gc291cmNlRnJhbWUpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2Ug
PSB0YXJnZXRGcmFtZS0+cGFnZSgpKQotICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3Vz
KCk7CisgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS5mb2N1cygpOwogICAgIH0KIH0KIApAQCAt
MTgwNCw3ICsxODA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6dHJhbnNpdGlvblRvQ29tbWl0dGVk
KFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSkKIAogI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCiAgICAgaWYgKGlzTG9hZGluZ01haW5GcmFtZSgpKQotICAgICAgICBtX2ZyYW1lLT5w
YWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKGZhbHNlKTsKKyAgICAg
ICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKGZh
bHNlKTsKICNlbmRpZgogCiAgICAgLy8gSGFuZGxlIGFkZGluZyB0aGUgVVJMIHRvIHRoZSBiYWNr
L2ZvcndhcmQgbGlzdC4KQEAgLTI2OTYsOCArMjY5Niw5IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNh
bGxDb250aW51ZUxvYWRBZnRlck5hdmlnYXRpb25Qb2xpY3kodm9pZCogYXJndW1lbnQsCiBib29s
IEZyYW1lTG9hZGVyOjpzaG91bGRDbG9zZSgpCiB7CiAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUt
PnBhZ2UoKTsKLSAgICBDaHJvbWUqIGNocm9tZSA9IHBhZ2UgPyBwYWdlLT5jaHJvbWUoKSA6IDA7
Ci0gICAgaWYgKCFjaHJvbWUgfHwgIWNocm9tZS0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkpCisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAoIXBh
Z2UtPmNocm9tZSgpLmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFN0b3JlIGFsbCByZWZlcmVuY2VzIHRvIGVhY2ggc3ViZnJh
bWUgaW4gYWR2YW5jZSBzaW5jZSBiZWZvcmV1bmxvYWQncyBldmVudCBoYW5kbGVyIG1heSBtb2Rp
ZnkgZnJhbWUKQEAgLTI3MTQsNyArMjcxNSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENs
b3NlKCkKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHRhcmdldEZyYW1lcy5zaXplKCk7IGkrKykg
ewogICAgICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZXNbaV0tPnRyZWUoKS0+aXNEZXNjZW5kYW50
T2YobV9mcmFtZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBpZiAo
IXRhcmdldEZyYW1lc1tpXS0+bG9hZGVyKCktPmZpcmVCZWZvcmVVbmxvYWRFdmVudChjaHJvbWUp
KQorICAgICAgICAgICAgaWYgKCF0YXJnZXRGcmFtZXNbaV0tPmxvYWRlcigpLT5maXJlQmVmb3Jl
VW5sb2FkRXZlbnQocGFnZS0+Y2hyb21lKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKQEAgLTI3MjgsNyArMjcyOSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENs
b3NlKCkKICAgICByZXR1cm4gc2hvdWxkQ2xvc2U7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OmZp
cmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUqIGNocm9tZSkKK2Jvb2wgRnJhbWVMb2FkZXI6OmZp
cmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmIGNocm9tZSkKIHsKICAgICBET01XaW5kb3cqIGRv
bVdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwogICAgIGlmICghZG9t
V2luZG93KQpAQCAtMjc0OSw3ICsyNzUwLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZmlyZUJlZm9y
ZVVubG9hZEV2ZW50KENocm9tZSogY2hyb21lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IFN0cmluZyB0ZXh0ID0gZG9jdW1lbnQtPmRpc3BsYXlTdHJpbmdNb2RpZmllZEJ5RW5jb2Rpbmco
YmVmb3JlVW5sb2FkRXZlbnQtPnJlc3VsdCgpKTsKLSAgICByZXR1cm4gY2hyb21lLT5ydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwodGV4dCwgbV9mcmFtZSk7CisgICAgcmV0dXJuIGNocm9tZS5y
dW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGV4dCwgbV9mcmFtZSk7CiB9CiAKIHZvaWQgRnJh
bWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlLCBib29sIHNob3VsZENv
bnRpbnVlKQpAQCAtMzMzMyw3ICszMzM0LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlV2lu
ZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEKICAg
ICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGxvb2t1cEZyYW1lLT5sb2FkZXIoKS0+ZmluZEZyYW1l
Rm9yTmF2aWdhdGlvbihyZXF1ZXN0LmZyYW1lTmFtZSgpLCBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQo
KSkpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfc2VsZiIpIHsK
ICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5mb2N1cygpOworICAgICAgICAgICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5mb2N1cygpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY3Jl
YXRlZCA9IGZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIGZyYW1lOwpAQCAtMzM2NCw3ICszMzY1
LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwg
RnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBO
YXZpZ2F0aW9uQWN0aW9uIGFjdGlvbihyZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVxdWVz
dCgpKTsKLSAgICBQYWdlKiBwYWdlID0gb2xkUGFnZS0+Y2hyb21lKCktPmNyZWF0ZVdpbmRvdyhv
cGVuZXJGcmFtZSwgcmVxdWVzdFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIGFjdGlvbik7CisgICAg
UGFnZSogcGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhvcGVuZXJGcmFtZSwg
cmVxdWVzdFdpdGhSZWZlcnJlciwgZmVhdHVyZXMsIGFjdGlvbik7CiAgICAgaWYgKCFwYWdlKQog
ICAgICAgICByZXR1cm4gMDsKIApAQCAtMzM3NSwxOCArMzM3NiwxOCBAQCBQYXNzUmVmUHRyPEZy
YW1lPiBjcmVhdGVXaW5kb3coRnJhbWUqIG9wZW5lckZyYW1lLCBGcmFtZSogbG9va3VwRnJhbWUs
IGNvbnN0IEZyYQogICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFtZSgpICE9ICJfYmxhbmsiKQogICAg
ICAgICBmcmFtZS0+dHJlZSgpLT5zZXROYW1lKHJlcXVlc3QuZnJhbWVOYW1lKCkpOwogCi0gICAg
cGFnZS0+Y2hyb21lKCktPnNldFRvb2xiYXJzVmlzaWJsZShmZWF0dXJlcy50b29sQmFyVmlzaWJs
ZSB8fCBmZWF0dXJlcy5sb2NhdGlvbkJhclZpc2libGUpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5z
ZXRTdGF0dXNiYXJWaXNpYmxlKGZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpOwotICAgIHBhZ2Ut
PmNocm9tZSgpLT5zZXRTY3JvbGxiYXJzVmlzaWJsZShmZWF0dXJlcy5zY3JvbGxiYXJzVmlzaWJs
ZSk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPnNldE1lbnViYXJWaXNpYmxlKGZlYXR1cmVzLm1lbnVC
YXJWaXNpYmxlKTsKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0UmVzaXphYmxlKGZlYXR1cmVzLnJl
c2l6YWJsZSk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0VG9vbGJhcnNWaXNpYmxlKGZlYXR1cmVz
LnRvb2xCYXJWaXNpYmxlIHx8IGZlYXR1cmVzLmxvY2F0aW9uQmFyVmlzaWJsZSk7CisgICAgcGFn
ZS0+Y2hyb21lKCkuc2V0U3RhdHVzYmFyVmlzaWJsZShmZWF0dXJlcy5zdGF0dXNCYXJWaXNpYmxl
KTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zZXRTY3JvbGxiYXJzVmlzaWJsZShmZWF0dXJlcy5zY3Jv
bGxiYXJzVmlzaWJsZSk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0TWVudWJhclZpc2libGUoZmVh
dHVyZXMubWVudUJhclZpc2libGUpOworICAgIHBhZ2UtPmNocm9tZSgpLnNldFJlc2l6YWJsZShm
ZWF0dXJlcy5yZXNpemFibGUpOwogCiAgICAgLy8gJ3gnIGFuZCAneScgc3BlY2lmeSB0aGUgbG9j
YXRpb24gb2YgdGhlIHdpbmRvdywgd2hpbGUgJ3dpZHRoJyBhbmQgJ2hlaWdodCcKICAgICAvLyBz
cGVjaWZ5IHRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydC4gV2UgY2FuIG9ubHkgcmVzaXplIHRoZSB3
aW5kb3csIHNvIGFkanVzdAogICAgIC8vIGZvciB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB3
aW5kb3cgc2l6ZSBhbmQgdGhlIHZpZXdwb3J0IHNpemUuCiAKLSAgICBGbG9hdFJlY3Qgd2luZG93
UmVjdCA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7Ci0gICAgRmxvYXRTaXplIHZpZXdw
b3J0U2l6ZSA9IHBhZ2UtPmNocm9tZSgpLT5wYWdlUmVjdCgpLnNpemUoKTsKKyAgICBGbG9hdFJl
Y3Qgd2luZG93UmVjdCA9IHBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFNp
emUgdmlld3BvcnRTaXplID0gcGFnZS0+Y2hyb21lKCkucGFnZVJlY3QoKS5zaXplKCk7CiAKICAg
ICBpZiAoZmVhdHVyZXMueFNldCkKICAgICAgICAgd2luZG93UmVjdC5zZXRYKGZlYXR1cmVzLngp
OwpAQCAtMzQwMCw4ICszNDAxLDggQEAgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlV2luZG93KEZy
YW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmEKICAgICAvLyBF
bnN1cmUgbm9uLU5hTiB2YWx1ZXMsIG1pbmltdW0gc2l6ZSBhcyB3ZWxsIGFzIGJlaW5nIHdpdGhp
biB2YWxpZCBzY3JlZW4gYXJlYS4KICAgICBGbG9hdFJlY3QgbmV3V2luZG93UmVjdCA9IERPTVdp
bmRvdzo6YWRqdXN0V2luZG93UmVjdChwYWdlLCB3aW5kb3dSZWN0KTsKIAotICAgIHBhZ2UtPmNo
cm9tZSgpLT5zZXRXaW5kb3dSZWN0KG5ld1dpbmRvd1JlY3QpOwotICAgIHBhZ2UtPmNocm9tZSgp
LT5zaG93KCk7CisgICAgcGFnZS0+Y2hyb21lKCkuc2V0V2luZG93UmVjdChuZXdXaW5kb3dSZWN0
KTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zaG93KCk7CiAKICAgICBjcmVhdGVkID0gdHJ1ZTsKICAg
ICByZXR1cm4gZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDEwOWIx
NmMuLmRlZWFmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0zMTYsNyAr
MzE2LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVMb2FkQWZ0ZXJO
ZXdXaW5kb3dQb2xpY3kodm9pZCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8
Rm9ybVN0YXRlPiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5hdmlnYXRpb25BY3Rp
b24mLCBib29sIHNob3VsZENvbnRpbnVlKTsKICAgICBzdGF0aWMgdm9pZCBjYWxsQ29udGludWVG
cmFnbWVudFNjcm9sbEFmdGVyTmF2aWdhdGlvblBvbGljeSh2b2lkKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUGFzc1JlZlB0cjxGb3JtU3RhdGU+LCBib29sIHNob3VsZENvbnRpbnVlKTsKICAg
ICAKLSAgICBib29sIGZpcmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUqKTsKKyAgICBib29sIGZp
cmVCZWZvcmVVbmxvYWRFdmVudChDaHJvbWUmKTsKIAogICAgIHZvaWQgY29udGludWVMb2FkQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFBhc3NSZWZQdHI8Rm9y
bVN0YXRlPiwgYm9vbCBzaG91bGRDb250aW51ZSk7CiAgICAgdm9pZCBjb250aW51ZUxvYWRBZnRl
ck5ld1dpbmRvd1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYXNzUmVmUHRyPEZvcm1T
dGF0ZT4sIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Ym9vbCBzaG91bGRDb250aW51ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
U3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVy
LmNwcAppbmRleCAxYWVhYTk1Li5jOTc5N2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJm
cmFtZUxvYWRlci5jcHAKQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCBsb2dQbHVnaW5S
ZXF1ZXN0KFBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
dQogICAgIFN0cmluZyBwbHVnaW5GaWxlID0gcGx1Z2luRGF0YSA/IHBsdWdpbkRhdGEtPnBsdWdp
bkZpbGVGb3JNaW1lVHlwZShuZXdNSU1FVHlwZSkgOiBTdHJpbmcoKTsKICAgICBTdHJpbmcgZGVz
Y3JpcHRpb24gPSAhcGx1Z2luRmlsZSA/IG5ld01JTUVUeXBlIDogcGx1Z2luRmlsZTsKIAotICAg
IENocm9tZUNsaWVudCogY2xpZW50ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpOworICAgIENo
cm9tZUNsaWVudCogY2xpZW50ID0gcGFnZS0+Y2hyb21lKCkuY2xpZW50KCk7CiAgICAgY2xpZW50
LT5sb2dEaWFnbm9zdGljTWVzc2FnZShzdWNjZXNzID8gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpw
bHVnaW5Mb2FkZWRLZXkoKSA6IERpYWdub3N0aWNMb2dnaW5nS2V5czo6cGx1Z2luTG9hZGluZ0Zh
aWxlZEtleSgpLCBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpub29wS2V5KCkp
OwogCiAgICAgaWYgKCFwYWdlLT5oYXNTZWVuQW55UGx1Z2luKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmlu
ZGV4IGUwZjAwMTAuLjZlYjkyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCkBAIC04MjEsNyArODIxLDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlYWNoTWF4QXBwQ2FjaGVTaXplKCkK
IHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQp
OwotICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5yZWFjaGVkTWF4QXBw
Q2FjaGVTaXplKGNhY2hlU3RvcmFnZSgpLnNwYWNlTmVlZGVkKG1fY2FjaGVCZWluZ1VwZGF0ZWQt
PmVzdGltYXRlZFNpemVJblN0b3JhZ2UoKSkpOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21l
KCkuY2xpZW50KCktPnJlYWNoZWRNYXhBcHBDYWNoZVNpemUoY2FjaGVTdG9yYWdlKCkuc3BhY2VO
ZWVkZWQobV9jYWNoZUJlaW5nVXBkYXRlZC0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpKSk7CiAg
ICAgbV9jYWxsZWRSZWFjaGVkTWF4QXBwQ2FjaGVTaXplID0gdHJ1ZTsKICAgICBjaGVja0lmTG9h
ZElzQ29tcGxldGUoKTsKIH0KQEAgLTgzMCw3ICs4MzAsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6ZGlkUmVhY2hPcmlnaW5RdW90YShpbnQ2NF90IHRvdGFsU3BhY2VOZWVkZWQpCiB7
CiAgICAgLy8gSW5mb3JtIHRoZSBjbGllbnQgdGhlIG9yaWdpbiBxdW90YSBoYXMgYmVlbiByZWFj
aGVkLCB0aGV5IG1heSBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHF1b3RhLgogICAgIC8vIFdlIGV4
cGVjdCBxdW90YSB0byBiZSBpbmNyZWFzZWQgc3luY2hyb25vdXNseSB3aGlsZSB3YWl0aW5nIGZv
ciB0aGUgY2FsbCB0byByZXR1cm4uCi0gICAgbV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xp
ZW50KCktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEobV9vcmlnaW4uZ2V0KCks
IHRvdGFsU3BhY2VOZWVkZWQpOworICAgIG1fZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50
KCktPnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEobV9vcmlnaW4uZ2V0KCksIHRv
dGFsU3BhY2VOZWVkZWQpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVV
cGRhdGVGYWlsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9BdXRvc2Nyb2xs
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1dG9zY3JvbGxDb250cm9sbGVy
LmNwcAppbmRleCA2ZDFmNTcyLi5hYjdjNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0F1dG9zY3JvbGxDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0F1
dG9zY3JvbGxDb250cm9sbGVyLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgQXV0b3Njcm9s
bENvbnRyb2xsZXI6OnVwZGF0ZURyYWdBbmREcm9wKE5vZGUqIGRyb3BUYXJnZXROb2RlLCBjb25z
dCBJbnRQb2luCiAgICAgfQogCiAgICAgUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCk7Ci0gICAg
aWYgKCFwYWdlIHx8ICFwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNob3VsZEF1dG9zY3JvbGxG
b3JEcmFnQW5kRHJvcChzY3JvbGxhYmxlKSkgeworICAgIGlmICghcGFnZSB8fCAhcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnNob3VsZEF1dG9zY3JvbGxGb3JEcmFnQW5kRHJvcChzY3JvbGxhYmxl
KSkgewogICAgICAgICBzdG9wQXV0b3Njcm9sbFRpbWVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3AuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9CYXJQcm9wLmNwcAppbmRleCA0YjdkOTM2Li4zYmU0ZmIzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0JhclByb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQmFyUHJvcC5jcHAKQEAgLTU4LDEzICs1OCwxMyBAQCBib29sIEJhclByb3A6OnZpc2li
bGUoKSBjb25zdAogICAgIGNhc2UgTG9jYXRpb25iYXI6CiAgICAgY2FzZSBQZXJzb25hbGJhcjoK
ICAgICBjYXNlIFRvb2xiYXI6Ci0gICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+dG9vbGJh
cnNWaXNpYmxlKCk7CisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS50b29sYmFyc1Zpc2li
bGUoKTsKICAgICBjYXNlIE1lbnViYXI6Ci0gICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+
bWVudWJhclZpc2libGUoKTsKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLm1lbnViYXJW
aXNpYmxlKCk7CiAgICAgY2FzZSBTY3JvbGxiYXJzOgotICAgICAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCktPnNjcm9sbGJhcnNWaXNpYmxlKCk7CisgICAgICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KS5zY3JvbGxiYXJzVmlzaWJsZSgpOwogICAgIGNhc2UgU3RhdHVzYmFyOgotICAgICAgICByZXR1
cm4gcGFnZS0+Y2hyb21lKCktPnN0YXR1c2JhclZpc2libGUoKTsKKyAgICAgICAgcmV0dXJuIHBh
Z2UtPmNocm9tZSgpLnN0YXR1c2JhclZpc2libGUoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCAzMjY3NTI3Li5kOWZhMjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC0yMTQsNyArMjE0LDcgQEAgc3RhdGljIGJvb2wgY2Fu
UnVuTW9kYWxJZkR1cmluZ1BhZ2VEaXNtaXNzYWwoUGFnZSogcGFnZSwgQ2hyb21lQ2xpZW50OjpE
aWFsb2dUeXAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBGcmFt
ZUxvYWRlcjo6UGFnZURpc21pc3NhbFR5cGUgZGlzbWlzc2FsID0gZnJhbWUtPmxvYWRlcigpLT5w
YWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQoKTsKICAgICAgICAgaWYgKGRpc21pc3Nh
bCAhPSBGcmFtZUxvYWRlcjo6Tm9EaXNtaXNzYWwpCi0gICAgICAgICAgICByZXR1cm4gcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5zaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VEaXNtaXNz
YWwoZGlhbG9nLCBtZXNzYWdlLCBkaXNtaXNzYWwpOworICAgICAgICAgICAgcmV0dXJuIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLT5zaG91bGRSdW5Nb2RhbERpYWxvZ0R1cmluZ1BhZ2VEaXNtaXNz
YWwoZGlhbG9nLCBtZXNzYWdlLCBkaXNtaXNzYWwpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnNvbGUuY3BwCmluZGV4IGI4ODE2NmIuLjRlNGYwZjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcApAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlcm5hbEFk
ZE1lc3NhZ2UoUGFnZSogcGFnZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVs
LAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoZ290TWVzc2FnZSkKLSAgICAgICAgcGFnZS0+
Y2hyb21lKCktPmNsaWVudCgpLT5hZGRNZXNzYWdlVG9Db25zb2xlKENvbnNvbGVBUElNZXNzYWdl
U291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgbGFzdENhbGxlci5saW5lTnVtYmVyKCksIGxh
c3RDYWxsZXIuY29sdW1uTnVtYmVyKCksIGxhc3RDYWxsZXIuc291cmNlVVJMKCkpOworICAgICAg
ICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+YWRkTWVzc2FnZVRvQ29uc29sZShDb25zb2xlQVBJ
TWVzc2FnZVNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGxhc3RDYWxsZXIubGluZU51bWJl
cigpLCBsYXN0Q2FsbGVyLmNvbHVtbk51bWJlcigpLCBsYXN0Q2FsbGVyLnNvdXJjZVVSTCgpKTsK
IAogICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+bG9nc1BhZ2VNZXNzYWdlc1RvU3lzdGVtQ29u
c29sZUVuYWJsZWQoKSAmJiAhUGFnZUNvbnNvbGU6OnNob3VsZFByaW50RXhjZXB0aW9ucygpKQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAKaW5kZXggNDlkYTFkYS4uNjBmMmMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTg0LDEwICsxODQsMTAgQEAgc3RhdGlj
IHZvaWQgb3Blbk5ld1dpbmRvdyhjb25zdCBLVVJMJiB1cmxUb0xvYWQsIEZyYW1lKiBmcmFtZSkK
ICAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCkt
Pm91dGdvaW5nUmVmZXJyZXIoKSkpOwogICAgICAgICBQYWdlKiBuZXdQYWdlID0gb2xkUGFnZTsK
ICAgICAgICAgaWYgKCFmcmFtZS0+c2V0dGluZ3MoKSB8fCBmcmFtZS0+c2V0dGluZ3MoKS0+c3Vw
cG9ydHNNdWx0aXBsZVdpbmRvd3MoKSkgewotICAgICAgICAgICAgbmV3UGFnZSA9IG9sZFBhZ2Ut
PmNocm9tZSgpLT5jcmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCks
IE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpOworICAgICAgICAg
ICAgbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhmcmFtZSwgcmVxdWVz
dCwgV2luZG93RmVhdHVyZXMoKSwgTmF2aWdhdGlvbkFjdGlvbihyZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpKSk7CiAgICAgICAgICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgbmV3UGFnZS0+Y2hyb21lKCktPnNob3coKTsKKyAgICAgICAgICAg
IG5ld1BhZ2UtPmNocm9tZSgpLnNob3coKTsKICAgICAgICAgfQogICAgICAgICBuZXdQYWdlLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPmxvYWRGcmFtZVJlcXVlc3QocmVxdWVzdCwgZmFsc2UsIGZh
bHNlLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCmluZGV4IGQ3YjhlY2IuLmYzMWY3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKQEAgLTMxNyw3ICszMTcsNyBAQCBGbG9hdFJlY3QgRE9NV2luZG93OjphZGp1c3RXaW5kb3dS
ZWN0KFBhZ2UqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgcGVuZGluZ0NoYW5nZQogICAgIEFTU0VS
VChwYWdlKTsKIAogICAgIEZsb2F0UmVjdCBzY3JlZW4gPSBzY3JlZW5BdmFpbGFibGVSZWN0KHBh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCkpOwotICAgIEZsb2F0UmVjdCB3aW5kb3cgPSBwYWdlLT5j
aHJvbWUoKS0+d2luZG93UmVjdCgpOworICAgIEZsb2F0UmVjdCB3aW5kb3cgPSBwYWdlLT5jaHJv
bWUoKS53aW5kb3dSZWN0KCk7CiAKICAgICAvLyBNYWtlIHN1cmUgd2UncmUgaW4gYSB2YWxpZCBz
dGF0ZSBiZWZvcmUgYWRqdXN0aW5nIGRpbWVuc2lvbnMuCiAgICAgQVNTRVJUKHN0ZDo6aXNmaW5p
dGUoc2NyZWVuLngoKSkpOwpAQCAtMzM5LDcgKzMzOSw3IEBAIEZsb2F0UmVjdCBET01XaW5kb3c6
OmFkanVzdFdpbmRvd1JlY3QoUGFnZSogcGFnZSwgY29uc3QgRmxvYXRSZWN0JiBwZW5kaW5nQ2hh
bmdlCiAgICAgaWYgKCFzdGQ6OmlzbmFuKHBlbmRpbmdDaGFuZ2VzLmhlaWdodCgpKSkKICAgICAg
ICAgd2luZG93LnNldEhlaWdodChwZW5kaW5nQ2hhbmdlcy5oZWlnaHQoKSk7CiAKLSAgICBGbG9h
dFNpemUgbWluaW11bVNpemUgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm1pbmltdW1XaW5k
b3dTaXplKCk7CisgICAgRmxvYXRTaXplIG1pbmltdW1TaXplID0gcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCktPm1pbmltdW1XaW5kb3dTaXplKCk7CiAgICAgLy8gTGV0IHNpemUgMCBwYXNzIHRocm91
Z2gsIHNpbmNlIHRoYXQgaW5kaWNhdGVzIGRlZmF1bHQgc2l6ZSwgbm90IG1pbmltdW0gc2l6ZS4K
ICAgICBpZiAod2luZG93LndpZHRoKCkpCiAgICAgICAgIHdpbmRvdy5zZXRXaWR0aChtaW4obWF4
KG1pbmltdW1TaXplLndpZHRoKCksIHdpbmRvdy53aWR0aCgpKSwgc2NyZWVuLndpZHRoKCkpKTsK
QEAgLTM3Niw3ICszNzYsNyBAQCBib29sIERPTVdpbmRvdzo6Y2FuU2hvd01vZGFsRGlhbG9nKGNv
bnN0IEZyYW1lKiBmcmFtZSkKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKTsKICAgICBp
ZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcGFnZS0+Y2hyb21l
KCktPmNhblJ1bk1vZGFsKCk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLmNhblJ1bk1vZGFs
KCk7CiB9CiAKIGJvb2wgRE9NV2luZG93OjpjYW5TaG93TW9kYWxEaWFsb2dOb3coY29uc3QgRnJh
bWUqIGZyYW1lKQpAQCAtMzg2LDcgKzM4Niw3IEBAIGJvb2wgRE9NV2luZG93OjpjYW5TaG93TW9k
YWxEaWFsb2dOb3coY29uc3QgRnJhbWUqIGZyYW1lKQogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBwYWdlLT5jaHJvbWUoKS0+Y2FuUnVuTW9kYWxOb3coKTsKKyAgICByZXR1cm4gcGFnZS0+Y2hy
b21lKCkuY2FuUnVuTW9kYWxOb3coKTsKIH0KIAogRE9NV2luZG93OjpET01XaW5kb3coRG9jdW1l
bnQqIGRvY3VtZW50KQpAQCAtOTM2LDcgKzkzNiw3IEBAIHZvaWQgRE9NV2luZG93Ojpmb2N1cyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogCiAgICAgLy8gSWYgd2UncmUgYSB0b3Ag
bGV2ZWwgd2luZG93LCBicmluZyB0aGUgd2luZG93IHRvIHRoZSBmcm9udC4KICAgICBpZiAobV9m
cmFtZSA9PSBwYWdlLT5tYWluRnJhbWUoKSAmJiBhbGxvd0ZvY3VzKQotICAgICAgICBwYWdlLT5j
aHJvbWUoKS0+Zm9jdXMoKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuZm9jdXMoKTsKIAogICAg
IGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTY1LDcgKzk2NSw3IEBAIHZvaWQg
RE9NV2luZG93OjpibHVyKCkKICAgICBpZiAobV9mcmFtZSAhPSBwYWdlLT5tYWluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21lKCktPnVuZm9jdXMoKTsKKyAgICBw
YWdlLT5jaHJvbWUoKS51bmZvY3VzKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpjbG9zZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQpAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgRE9N
V2luZG93OjpjbG9zZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgIGlmICgh
bV9mcmFtZS0+bG9hZGVyKCktPnNob3VsZENsb3NlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBhZ2UtPmNocm9tZSgpLT5jbG9zZVdpbmRvd1Nvb24oKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5j
bG9zZVdpbmRvd1Nvb24oKTsKIH0KIAogdm9pZCBET01XaW5kb3c6OnByaW50KCkKQEAgLTEwMTYs
NyArMTAxNiw3IEBAIHZvaWQgRE9NV2luZG93OjpwcmludCgpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgbV9zaG91bGRQcmludFdoZW5GaW5pc2hlZExvYWRpbmcgPSBmYWxzZTsKLSAgICBw
YWdlLT5jaHJvbWUoKS0+cHJpbnQobV9mcmFtZSk7CisgICAgcGFnZS0+Y2hyb21lKCkucHJpbnQo
bV9mcmFtZSk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpzdG9wKCkKQEAgLTEwNDAsNyArMTA0MCw3
IEBAIHZvaWQgRE9NV2luZG93OjphbGVydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYg
KCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+cnVuSmF2YVNj
cmlwdEFsZXJ0KG1fZnJhbWUsIG1lc3NhZ2UpOworICAgIHBhZ2UtPmNocm9tZSgpLnJ1bkphdmFT
Y3JpcHRBbGVydChtX2ZyYW1lLCBtZXNzYWdlKTsKIH0KIAogYm9vbCBET01XaW5kb3c6OmNvbmZp
cm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQpAQCAtMTA1NCw3ICsxMDU0LDcgQEAgYm9vbCBET01X
aW5kb3c6OmNvbmZpcm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5ydW5KYXZh
U2NyaXB0Q29uZmlybShtX2ZyYW1lLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gcGFnZS0+Y2hyb21l
KCkucnVuSmF2YVNjcmlwdENvbmZpcm0obV9mcmFtZSwgbWVzc2FnZSk7CiB9CiAKIFN0cmluZyBE
T01XaW5kb3c6OnByb21wdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVm
YXVsdFZhbHVlKQpAQCAtMTA2OSw3ICsxMDY5LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6cHJvbXB0
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpCiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFN0cmluZyByZXR1cm5WYWx1ZTsKLSAgICBpZiAo
cGFnZS0+Y2hyb21lKCktPnJ1bkphdmFTY3JpcHRQcm9tcHQobV9mcmFtZSwgbWVzc2FnZSwgZGVm
YXVsdFZhbHVlLCByZXR1cm5WYWx1ZSkpCisgICAgaWYgKHBhZ2UtPmNocm9tZSgpLnJ1bkphdmFT
Y3JpcHRQcm9tcHQobV9mcmFtZSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCByZXR1cm5WYWx1ZSkp
CiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKQEAg
LTExMzAsNyArMTEzMCw3IEBAIGludCBET01XaW5kb3c6Om91dGVySGVpZ2h0KCkgY29uc3QKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4ocGFnZS0+Y2hyb21lKCktPndpbmRvd1JlY3QoKS5oZWlnaHQoKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpLmhlaWdodCgpKTsK
IH0KIAogaW50IERPTVdpbmRvdzo6b3V0ZXJXaWR0aCgpIGNvbnN0CkBAIC0xMTQyLDcgKzExNDIs
NyBAQCBpbnQgRE9NV2luZG93OjpvdXRlcldpZHRoKCkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hy
b21lKCktPndpbmRvd1JlY3QoKS53aWR0aCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50
PihwYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCkud2lkdGgoKSk7CiB9CiAKIGludCBET01XaW5k
b3c6OmlubmVySGVpZ2h0KCkgY29uc3QKQEAgLTExODIsNyArMTE4Miw3IEBAIGludCBET01XaW5k
b3c6OnNjcmVlblgoKSBjb25zdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgp
LngoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4ocGFnZS0+Y2hyb21lKCkud2luZG93
UmVjdCgpLngoKSk7CiB9CiAKIGludCBET01XaW5kb3c6OnNjcmVlblkoKSBjb25zdApAQCAtMTE5
NCw3ICsxMTk0LDcgQEAgaW50IERPTVdpbmRvdzo6c2NyZWVuWSgpIGNvbnN0CiAgICAgaWYgKCFw
YWdlKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHBh
Z2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCkueSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
aW50PihwYWdlLT5jaHJvbWUoKS53aW5kb3dSZWN0KCkueSgpKTsKIH0KIAogaW50IERPTVdpbmRv
dzo6c2Nyb2xsWCgpIGNvbnN0CkBAIC0xMjY3LDcgKzEyNjcsNyBAQCB2b2lkIERPTVdpbmRvdzo6
c2V0U3RhdHVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBB
U1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUg
bWFkZSB3aGVuIHRoZSBmcmFtZSBpcyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgcGFnZS0+
Y2hyb21lKCktPnNldFN0YXR1c2JhclRleHQobV9mcmFtZSwgbV9zdGF0dXMpOworICAgIHBhZ2Ut
PmNocm9tZSgpLnNldFN0YXR1c2JhclRleHQobV9mcmFtZSwgbV9zdGF0dXMpOwogfSAKICAgICAK
IHZvaWQgRE9NV2luZG93OjpzZXREZWZhdWx0U3RhdHVzKGNvbnN0IFN0cmluZyYgc3RyaW5nKSAK
QEAgLTEyODIsNyArMTI4Miw3IEBAIHZvaWQgRE9NV2luZG93OjpzZXREZWZhdWx0U3RhdHVzKGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQobV9mcmFt
ZS0+ZG9jdW1lbnQoKSk7IC8vIENsaWVudCBjYWxscyBzaG91bGRuJ3QgYmUgbWFkZSB3aGVuIHRo
ZSBmcmFtZSBpcyBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0gICAgcGFnZS0+Y2hyb21lKCktPnNl
dFN0YXR1c2JhclRleHQobV9mcmFtZSwgbV9kZWZhdWx0U3RhdHVzKTsKKyAgICBwYWdlLT5jaHJv
bWUoKS5zZXRTdGF0dXNiYXJUZXh0KG1fZnJhbWUsIG1fZGVmYXVsdFN0YXR1cyk7CiB9CiAKIERP
TVdpbmRvdyogRE9NV2luZG93OjpzZWxmKCkgY29uc3QKQEAgLTE0NzYsMTEgKzE0NzYsMTEgQEAg
dm9pZCBET01XaW5kb3c6Om1vdmVCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdAogICAgICAgICBy
ZXR1cm47CiAKICAgICBQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgpOwotICAgIEZsb2F0UmVj
dCBmciA9IHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZWN0KCk7CisgICAgRmxvYXRSZWN0IGZyID0g
cGFnZS0+Y2hyb21lKCkud2luZG93UmVjdCgpOwogICAgIEZsb2F0UmVjdCB1cGRhdGUgPSBmcjsK
ICAgICB1cGRhdGUubW92ZSh4LCB5KTsKICAgICAvLyBTZWN1cml0eSBjaGVjayAodGhlIHNwZWMg
dGFsa3MgYWJvdXQgVW5pdmVyc2FsQnJvd3NlcldyaXRlIHRvIGRpc2FibGUgdGhpcyBjaGVjay4u
LikKLSAgICBwYWdlLT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChhZGp1c3RXaW5kb3dSZWN0KHBh
Z2UsIHVwZGF0ZSkpOworICAgIHBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2lu
ZG93UmVjdChwYWdlLCB1cGRhdGUpKTsKIH0KIAogdm9pZCBET01XaW5kb3c6Om1vdmVUbyhmbG9h
dCB4LCBmbG9hdCB5KSBjb25zdApAQCAtMTQ4OSwxMyArMTQ4OSwxMyBAQCB2b2lkIERPTVdpbmRv
dzo6bW92ZVRvKGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAg
IFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+
Y2hyb21lKCktPndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUo
KS53aW5kb3dSZWN0KCk7CiAgICAgRmxvYXRSZWN0IHNyID0gc2NyZWVuQXZhaWxhYmxlUmVjdChw
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICBmci5zZXRMb2NhdGlvbihzci5sb2NhdGlv
bigpKTsKICAgICBGbG9hdFJlY3QgdXBkYXRlID0gZnI7CiAgICAgdXBkYXRlLm1vdmUoeCwgeSk7
CiAgICAgLy8gU2VjdXJpdHkgY2hlY2sgKHRoZSBzcGVjIHRhbGtzIGFib3V0IFVuaXZlcnNhbEJy
b3dzZXJXcml0ZSB0byBkaXNhYmxlIHRoaXMgY2hlY2suLi4pCi0gICAgcGFnZS0+Y2hyb21lKCkt
PnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdChwYWdlLCB1cGRhdGUpKTsKKyAgICBwYWdl
LT5jaHJvbWUoKS5zZXRXaW5kb3dSZWN0KGFkanVzdFdpbmRvd1JlY3QocGFnZSwgdXBkYXRlKSk7
CiB9CiAKIHZvaWQgRE9NV2luZG93OjpyZXNpemVCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdApA
QCAtMTUwNCwxMCArMTUwNCwxMCBAQCB2b2lkIERPTVdpbmRvdzo6cmVzaXplQnkoZmxvYXQgeCwg
ZmxvYXQgeSkgY29uc3QKICAgICAgICAgcmV0dXJuOwogCiAgICAgUGFnZSogcGFnZSA9IG1fZnJh
bWUtPnBhZ2UoKTsKLSAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUoKS0+d2luZG93UmVj
dCgpOworICAgIEZsb2F0UmVjdCBmciA9IHBhZ2UtPmNocm9tZSgpLndpbmRvd1JlY3QoKTsKICAg
ICBGbG9hdFNpemUgZGVzdCA9IGZyLnNpemUoKSArIEZsb2F0U2l6ZSh4LCB5KTsKICAgICBGbG9h
dFJlY3QgdXBkYXRlKGZyLmxvY2F0aW9uKCksIGRlc3QpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5z
ZXRXaW5kb3dSZWN0KGFkanVzdFdpbmRvd1JlY3QocGFnZSwgdXBkYXRlKSk7CisgICAgcGFnZS0+
Y2hyb21lKCkuc2V0V2luZG93UmVjdChhZGp1c3RXaW5kb3dSZWN0KHBhZ2UsIHVwZGF0ZSkpOwog
fQogCiB2b2lkIERPTVdpbmRvdzo6cmVzaXplVG8oZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkg
Y29uc3QKQEAgLTE1MTYsMTAgKzE1MTYsMTAgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7Ci0gICAgRmxvYXRSZWN0IGZyID0gcGFnZS0+Y2hy
b21lKCktPndpbmRvd1JlY3QoKTsKKyAgICBGbG9hdFJlY3QgZnIgPSBwYWdlLT5jaHJvbWUoKS53
aW5kb3dSZWN0KCk7CiAgICAgRmxvYXRTaXplIGRlc3QgPSBGbG9hdFNpemUod2lkdGgsIGhlaWdo
dCk7CiAgICAgRmxvYXRSZWN0IHVwZGF0ZShmci5sb2NhdGlvbigpLCBkZXN0KTsKLSAgICBwYWdl
LT5jaHJvbWUoKS0+c2V0V2luZG93UmVjdChhZGp1c3RXaW5kb3dSZWN0KHBhZ2UsIHVwZGF0ZSkp
OworICAgIHBhZ2UtPmNocm9tZSgpLnNldFdpbmRvd1JlY3QoYWRqdXN0V2luZG93UmVjdChwYWdl
LCB1cGRhdGUpKTsKIH0KIAogaW50IERPTVdpbmRvdzo6c2V0VGltZW91dChQYXNzT3duUHRyPFNj
aGVkdWxlZEFjdGlvbj4gYWN0aW9uLCBpbnQgdGltZW91dCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0yMDAzLDE5ICsyMDAzLDE5IEBAIHZvaWQgRE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2coY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGlhbG9nRmVhCiAgICAgaWYgKCFk
aWFsb2dGcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yRGlz
YWJsZXIgZGlzYWJsZXI7Ci0gICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCktPnJ1bk1v
ZGFsKCk7CisgICAgZGlhbG9nRnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkucnVuTW9kYWwoKTsKIH0K
IAogdm9pZCBET01XaW5kb3c6OmVuYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCkKIHsKICAgICBpZiAo
UGFnZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmVuYWJs
ZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmVuYWJsZVN1ZGRl
blRlcm1pbmF0aW9uKCk7CiB9CiAKIHZvaWQgRE9NV2luZG93OjpkaXNhYmxlU3VkZGVuVGVybWlu
YXRpb24oKQogewogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKQotICAgICAgICBw
YWdlLT5jaHJvbWUoKS0+ZGlzYWJsZVN1ZGRlblRlcm1pbmF0aW9uKCk7CisgICAgICAgIHBhZ2Ut
PmNocm9tZSgpLmRpc2FibGVTdWRkZW5UZXJtaW5hdGlvbigpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggNTZkY2E0Yy4u
ZjU0ZGVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTcxOCw4ICsx
NzE4LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6Om1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkKICAgICAgICAgZnJhbWVWaWV3LT5tb3VzZU1vdmVkSW5Db250ZW50QXJl
YSgpOyAgCiAKICAgICBob3ZlcmVkTm9kZS5zZXRUb05vblNoYWRvd0FuY2VzdG9yKCk7Ci0gICAg
cGFnZS0+Y2hyb21lKCktPm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGhvdmVyZWROb2RlLCBldmVu
dC5tb2RpZmllckZsYWdzKCkpOwotICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRUb29sVGlwKGhvdmVy
ZWROb2RlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5tb3VzZURpZE1vdmVPdmVyRWxlbWVudChob3Zl
cmVkTm9kZSwgZXZlbnQubW9kaWZpZXJGbGFncygpKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5zZXRU
b29sVGlwKGhvdmVyZWROb2RlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zNjY1LDcg
KzM2NjUsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6dGFic1RvTGlua3MoS2V5Ym9hcmRFdmVudCog
ZXZlbnQpIGNvbnN0CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBib29sIHRhYnNUb0xpbmtzQ2xpZW50Q2FsbFJlc3VsdCA9IHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+a2V5Ym9hcmRVSU1vZGUoKSAmIEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3M7CisgICAg
Ym9vbCB0YWJzVG9MaW5rc0NsaWVudENhbGxSZXN1bHQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS0+a2V5Ym9hcmRVSU1vZGUoKSAmIEtleWJvYXJkQWNjZXNzVGFic1RvTGlua3M7CiAgICAgcmV0
dXJuIGV2ZW50SW52ZXJ0c1RhYnNUb0xpbmtzQ2xpZW50Q2FsbFJlc3VsdChldmVudCkgPyAhdGFi
c1RvTGlua3NDbGllbnRDYWxsUmVzdWx0IDogdGFic1RvTGlua3NDbGllbnRDYWxsUmVzdWx0Owog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggN2I2YjkzYS4u
NTNkYWViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMTk2
LDcgKzE5Niw3IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUoUGFzc1Jl
ZlB0cjxGcmFtZT4gZnJhbWUpCiAgICAgICAgIG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5kaXNwYXRj
aFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNl
LCBmYWxzZSkpOwogICAgIH0KIAotICAgIG1fcGFnZS0+Y2hyb21lKCktPmZvY3VzZWRGcmFtZUNo
YW5nZWQobmV3RnJhbWUuZ2V0KCkpOworICAgIG1fcGFnZS0+Y2hyb21lKCkuZm9jdXNlZEZyYW1l
Q2hhbmdlZChuZXdGcmFtZS5nZXQoKSk7CiAKICAgICBtX2lzQ2hhbmdpbmdGb2N1c2VkRnJhbWUg
PSBmYWxzZTsKIH0KQEAgLTI5NSwxMCArMjk1LDEwIEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjph
ZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXli
CiAKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgLy8gV2UgZGlkbid0IGZpbmQgYSBub2RlIHRv
IGZvY3VzLCBzbyB3ZSBzaG91bGQgdHJ5IHRvIHBhc3MgZm9jdXMgdG8gQ2hyb21lLgotICAgICAg
ICBpZiAoIWluaXRpYWxGb2N1cyAmJiBtX3BhZ2UtPmNocm9tZSgpLT5jYW5UYWtlRm9jdXMoZGly
ZWN0aW9uKSkgeworICAgICAgICBpZiAoIWluaXRpYWxGb2N1cyAmJiBtX3BhZ2UtPmNocm9tZSgp
LmNhblRha2VGb2N1cyhkaXJlY3Rpb24pKSB7CiAgICAgICAgICAgICBkb2N1bWVudC0+c2V0Rm9j
dXNlZE5vZGUoMCk7CiAgICAgICAgICAgICBzZXRGb2N1c2VkRnJhbWUoMCk7Ci0gICAgICAgICAg
ICBtX3BhZ2UtPmNocm9tZSgpLT50YWtlRm9jdXMoZGlyZWN0aW9uKTsKKyAgICAgICAgICAgIG1f
cGFnZS0+Y2hyb21lKCkudGFrZUZvY3VzKGRpcmVjdGlvbik7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGU4ODhjN2QuLjcwZTcx
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0zMDYsNyArMzA2LDcgQEAgdm9pZCBGcmFtZTo6
c2V0RG9jdW1lbnQoUGFzc1JlZlB0cjxEb2N1bWVudD4gbmV3RG9jKQogICAgICAgICBub3RpZnlD
aHJvbWVDbGllbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50Q2hhbmdlZCgpOwogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpCiAgICAgICAgIGlmIChtX2RvYyAmJiBtX2RvYy0+aGFzVG91Y2hFdmVudEhh
bmRsZXJzKCkpCi0gICAgICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bmVlZFRv
dWNoRXZlbnRzKHRydWUpOworICAgICAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+
bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogI2VuZGlmCiAgICAgfQogCkBAIC04MzcsNyArODM3LDcg
QEAgdm9pZCBGcmFtZTo6dGlsZWRCYWNraW5nU3RvcmVQYWludEVuZChjb25zdCBWZWN0b3I8SW50
UmVjdD4mIHBhaW50ZWRBcmVhKQogICAgIHVuc2lnbmVkIHNpemUgPSBwYWludGVkQXJlYS5zaXpl
KCk7CiAgICAgLy8gUmVxdWVzdCByZXBhaW50IGZyb20gdGhlIHN5c3RlbQogICAgIGZvciAodW5z
aWduZWQgbiA9IDA7IG4gPCBzaXplOyArK24pCi0gICAgICAgIG1fcGFnZS0+Y2hyb21lKCktPmlu
dmFsaWRhdGVDb250ZW50c0FuZFJvb3RWaWV3KG1fdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHBh
aW50ZWRBcmVhW25dKSwgZmFsc2UpOworICAgICAgICBtX3BhZ2UtPmNocm9tZSgpLmludmFsaWRh
dGVDb250ZW50c0FuZFJvb3RWaWV3KG1fdmlldy0+Y29udGVudHNUb1Jvb3RWaWV3KHBhaW50ZWRB
cmVhW25dKSwgZmFsc2UpOwogfQogCiBJbnRSZWN0IEZyYW1lOjp0aWxlZEJhY2tpbmdTdG9yZUNv
bnRlbnRzUmVjdCgpCkBAIC04NTEsNyArODUxLDcgQEAgSW50UmVjdCBGcmFtZTo6dGlsZWRCYWNr
aW5nU3RvcmVWaXNpYmxlUmVjdCgpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
biBJbnRSZWN0KCk7Ci0gICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT52aXNp
YmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hyb21l
KCkuY2xpZW50KCktPnZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKTsKIH0KIAogQ29s
b3IgRnJhbWU6OnRpbGVkQmFja2luZ1N0b3JlQmFja2dyb3VuZENvbG9yKCkgY29uc3QKQEAgLTk5
Nyw3ICs5OTcsNyBAQCB2b2lkIEZyYW1lOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQo
KQogICAgIGlmIChyb290ICYmIHJvb3QtPmNvbXBvc2l0b3IoKSkKICAgICAgICAgcm9vdC0+Y29t
cG9zaXRvcigpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKIAotICAgIG1fcGFn
ZS0+Y2hyb21lKCktPmNsaWVudCgpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsK
KyAgICBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5kZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKTsKIH0KICNlbmRpZgogdm9pZCBGcmFtZTo6bm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxF
dmVudEhhbmRsZXJDb3VudENoYW5nZWQoKSBjb25zdApAQCAtMTAxMSw3ICsxMDExLDcgQEAgdm9p
ZCBGcmFtZTo6bm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQo
KSBjb25zdAogICAgICAgICAgICAgY291bnQgKz0gZnJhbWUtPmRvY3VtZW50KCktPndoZWVsRXZl
bnRIYW5kbGVyQ291bnQoKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChjb3VudCk7CisgICAgbV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChjb3VudCk7CiB9CiAK
IGJvb2wgRnJhbWU6OmlzVVJMQWxsb3dlZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggYWE3MTc0NC4uNWYyMGY4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcApAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRDb250
ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIAogICAgIHVwZGF0ZVNjcm9sbGFibGVBcmVh
U2V0KCk7CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+Y29udGVudHNTaXplQ2hhbmdlZChmcmFtZSgp
LCBzaXplKTsgLy9ub3RpZnkgb25seQorICAgIHBhZ2UtPmNocm9tZSgpLmNvbnRlbnRzU2l6ZUNo
YW5nZWQoZnJhbWUoKSwgc2l6ZSk7IC8vIE5vdGlmeSBvbmx5LgogCiAgICAgbV9kZWZlclNldE5l
ZWRzTGF5b3V0cy0tOwogICAgIApAQCAtOTQ1LDcgKzk0NSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
ZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkKIHsKICAgICBQYWdlKiBwYWdl
ID0gZnJhbWUoKSA/IGZyYW1lKCktPnBhZ2UoKSA6IDA7CiAgICAgaWYgKHBhZ2UpCi0gICAgICAg
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9u
aXphdGlvbigpOworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+c2V0TmVlZHNPbmVT
aG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpOwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpAQCAtMTQwOCw3ICsxNDA4LDcgQEAgdm9pZCBGcmFtZVZpZXc6Omxh
eW91dChib29sIGFsbG93U3VidHJlZSkKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bGF5b3V0VXBkYXRlZChmcmFtZSgpKTsK
KyAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+bGF5b3V0VXBkYXRlZChmcmFtZSgpKTsKIH0K
IAogUmVuZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CkBAIC0y
MDQyLDcgKzIwNDIsNyBAQCBib29sIEZyYW1lVmlldzo6c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0
aW9uKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24pIGNvbnN0CiAgICAgUGFnZSogcGFnZSA9IGZy
YW1lKCkgPyBmcmFtZSgpLT5wYWdlKCkgOiAwOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0
dXJuIFNjcm9sbFZpZXc6OnNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihkaXJlY3Rpb24pOwot
ICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnNob3VsZFJ1YmJlckJhbmRJbkRp
cmVjdGlvbihkaXJlY3Rpb24pOworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+
c2hvdWxkUnViYmVyQmFuZEluRGlyZWN0aW9uKGRpcmVjdGlvbik7CiB9CiAKIGJvb2wgRnJhbWVW
aWV3Ojppc1J1YmJlckJhbmRJblByb2dyZXNzKCkgY29uc3QKQEAgLTIwOTIsNyArMjA5Miw3IEBA
IEhvc3RXaW5kb3cqIEZyYW1lVmlldzo6aG9zdFdpbmRvdygpIGNvbnN0CiAgICAgUGFnZSogcGFn
ZSA9IGZyYW1lKCkgPyBmcmFtZSgpLT5wYWdlKCkgOiAwOwogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpOworICAgIHJldHVybiAmcGFn
ZS0+Y2hyb21lKCk7CiB9CiAKIGNvbnN0IHVuc2lnbmVkIGNSZXBhaW50UmVjdFVuaW9uVGhyZXNo
b2xkID0gMjU7CkBAIC0zMDQ4LDcgKzMwNDgsNyBAQCBJbnRSZWN0IEZyYW1lVmlldzo6d2luZG93
UmVzaXplclJlY3QoKSBjb25zdAogICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpID8gZnJhbWUoKS0+
cGFnZSgpIDogMDsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0g
ICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT53aW5kb3dSZXNpemVyUmVjdCgpOworICAgIHJldHVy
biBwYWdlLT5jaHJvbWUoKS53aW5kb3dSZXNpemVyUmVjdCgpOwogfQogCiBmbG9hdCBGcmFtZVZp
ZXc6OnZpc2libGVDb250ZW50U2NhbGVGYWN0b3IoKSBjb25zdApAQCAtMzA2OSw3ICszMDY5LDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRS
ZWN0JiBzY3JvbGxlclRodW1iKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHBhZ2UtPm1haW5G
cmFtZSgpICE9IG1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPm5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3Qoc2Nyb2xsZXJUaHVt
Yik7CisgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zp
c2libGVJblJlY3Qoc2Nyb2xsZXJUaHVtYik7CiB9CiAKIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxi
YXJzQ2FuQmVBY3RpdmUoKSBjb25zdApAQCAtMzE2Miw3ICszMTYyLDcgQEAgdm9pZCBGcmFtZVZp
ZXc6OnNjcm9sbGJhclN0eWxlQ2hhbmdlZChpbnQgbmV3U3R5bGUsIGJvb2wgZm9yY2VVcGRhdGUp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAocGFnZS0+bWFpbkZyYW1lKCkgIT0gbV9mcmFtZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cmVjb21tZW5k
ZWRTY3JvbGxiYXJTdHlsZURpZENoYW5nZShuZXdTdHlsZSk7CisgICAgcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCktPnJlY29tbWVuZGVkU2Nyb2xsYmFyU3R5bGVEaWRDaGFuZ2UobmV3U3R5bGUpOwog
CiAgICAgaWYgKGZvcmNlVXBkYXRlKQogICAgICAgICBTY3JvbGxWaWV3OjpzY3JvbGxiYXJTdHls
ZUNoYW5nZWQobmV3U3R5bGUsIGZvcmNlVXBkYXRlKTsKQEAgLTMyMzMsNyArMzIzMyw3IEBAIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVBbm5vdGF0ZWRSZWdpb25zKCkKICAgICBQYWdlKiBwYWdlID0g
bV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwotICAgIHBh
Z2UtPmNocm9tZSgpLT5jbGllbnQoKS0+YW5ub3RhdGVkUmVnaW9uc0NoYW5nZWQoKTsKKyAgICBw
YWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+YW5ub3RhdGVkUmVnaW9uc0NoYW5nZWQoKTsKIH0KICNl
bmRpZgogCkBAIC0zNjQ1LDcgKzM2NDUsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRPdmVyaGFu
Z0FyZWFzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgaG9yaQogCiAg
ICAgUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAocGFnZS0+bWFpbkZyYW1l
KCkgPT0gbV9mcmFtZSkgewotICAgICAgICBpZiAocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5w
YWludEN1c3RvbU92ZXJoYW5nQXJlYShjb250ZXh0LCBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCB2
ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgZGlydHlSZWN0KSkKKyAgICAgICAgaWYgKHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLT5wYWludEN1c3RvbU92ZXJoYW5nQXJlYShjb250ZXh0LCBob3Jpem9udGFs
T3ZlcmhhbmdBcmVhLCB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgZGlydHlSZWN0KSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggMWRhMTRkNC4uOTFkZGJjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgKQEAgLTE3OSw3ICsxNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWNy
ZW1lbnRTdWJmcmFtZUNvdW50KCkgeyBBU1NFUlQobV9zdWJmcmFtZUNvdW50KTsgLS1tX3N1YmZy
YW1lQ291bnQ7IH0KICAgICBpbnQgc3ViZnJhbWVDb3VudCgpIGNvbnN0IHsgY2hlY2tTdWJmcmFt
ZUNvdW50Q29uc2lzdGVuY3koKTsgcmV0dXJuIG1fc3ViZnJhbWVDb3VudDsgfQogCi0gICAgQ2hy
b21lKiBjaHJvbWUoKSBjb25zdCB7IHJldHVybiBtX2Nocm9tZS5nZXQoKTsgfQorICAgIENocm9t
ZSYgY2hyb21lKCkgY29uc3QgeyByZXR1cm4gKm1fY2hyb21lOyB9CiAgICAgRHJhZ0NhcmV0Q29u
dHJvbGxlciogZHJhZ0NhcmV0Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhZ0NhcmV0
Q29udHJvbGxlci5nZXQoKTsgfQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgRHJhZ0Nv
bnRyb2xsZXIqIGRyYWdDb250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9kcmFnQ29udHJvbGxl
ci5nZXQoKTsgfQpAQCAtNDEyLDcgKzQxMiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNvbGxl
Y3RQbHVnaW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVnaW5W
aWV3QmFzZXMpOwogCi0gICAgT3duUHRyPENocm9tZT4gbV9jaHJvbWU7CisgICAgY29uc3QgT3du
UHRyPENocm9tZT4gbV9jaHJvbWU7CiAgICAgT3duUHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1f
ZHJhZ0NhcmV0Q29udHJvbGxlcjsKIAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25zb2xlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGUuY3BwCmluZGV4IGFkNzVhNGYuLjg5MGM0YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbnNvbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbnNvbGUuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBQYWdlQ29uc29s
ZTo6YWRkTWVzc2FnZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZUxldmVsIGxldmVsLCBj
b25zdCBTdHIKICAgICBpZiAocGFnZS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCB1cmwpOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5hZGRNZXNzYWdl
VG9Db25zb2xlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgdXJsKTsKIAogICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+bG9nc1BhZ2VNZXNzYWdlc1Rv
U3lzdGVtQ29uc29sZUVuYWJsZWQoKSAmJiAhc2hvdWxkUHJpbnRFeGNlcHRpb25zKCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcAppbmRleCAwN2E2ZjgzLi45OGE5
YWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCkBAIC0xOTUsNyArMTk1LDcgQEAgYm9v
bCBQYWdlR3JvdXA6OmlzTGlua1Zpc2l0ZWQoTGlua0hhc2ggdmlzaXRlZExpbmtIYXNoKQogICAg
IGlmICghbV92aXNpdGVkTGlua3NQb3B1bGF0ZWQpIHsKICAgICAgICAgbV92aXNpdGVkTGlua3NQ
b3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICBBU1NFUlQoIW1fcGFnZXMuaXNFbXB0eSgpKTsKLSAg
ICAgICAgKCptX3BhZ2VzLmJlZ2luKCkpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBvcHVsYXRlVmlz
aXRlZExpbmtzKCk7CisgICAgICAgICgqbV9wYWdlcy5iZWdpbigpKS0+Y2hyb21lKCkuY2xpZW50
KCktPnBvcHVsYXRlVmlzaXRlZExpbmtzKCk7CiAgICAgfQogICAgIHJldHVybiBtX3Zpc2l0ZWRM
aW5rSGFzaGVzLmNvbnRhaW5zKHZpc2l0ZWRMaW5rSGFzaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BvaW50ZXJMb2NrQ29udHJvbGxlci5jcHAKaW5kZXggNjNmOTY1Yi4uOTc0Yjk4ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Qb2ludGVyTG9ja0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcApAQCAt
NjgsNyArNjgsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBvaW50ZXJM
b2NrKEVsZW1lbnQqIHRhcmdldCkKICAgICAgICAgfQogICAgICAgICBlbnF1ZXVlRXZlbnQoZXZl
bnROYW1lcygpLndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlRXZlbnQsIHRhcmdldCk7CiAgICAgICAg
IG1fZWxlbWVudCA9IHRhcmdldDsKLSAgICB9IGVsc2UgaWYgKG1fcGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT5yZXF1ZXN0UG9pbnRlckxvY2soKSkgeworICAgIH0gZWxzZSBpZiAobV9wYWdlLT5j
aHJvbWUoKS5jbGllbnQoKS0+cmVxdWVzdFBvaW50ZXJMb2NrKCkpIHsKICAgICAgICAgbV9sb2Nr
UGVuZGluZyA9IHRydWU7CiAgICAgICAgIG1fZWxlbWVudCA9IHRhcmdldDsKICAgICB9IGVsc2Ug
ewpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFBvaW50ZXJMb2NrQ29udHJvbGxlcjo6cmVxdWVzdFBv
aW50ZXJMb2NrKEVsZW1lbnQqIHRhcmdldCkKIAogdm9pZCBQb2ludGVyTG9ja0NvbnRyb2xsZXI6
OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkKIHsKLSAgICByZXR1cm4gbV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CisgICAgcmV0dXJuIG1fcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnJlcXVlc3RQb2ludGVyVW5sb2NrKCk7CiB9CiAKIHZvaWQgUG9pbnRl
ckxvY2tDb250cm9sbGVyOjplbGVtZW50UmVtb3ZlZChFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IGYzNjliZDAuLjBkZGIz
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAgLTEw
NCw3ICsxMDQsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6d2hlZWxFdmVudChOU0V2ZW50ICpldmVu
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ3VycmVudEV2ZW50U2NvcGUgc2NvcGUo
ZXZlbnQpOwotICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5
OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKSkpOworICAgIHJldHVybiBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtRXZl
bnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybVdoZWVsRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgp
LnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiB9CiAKIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVu
dChOU0V2ZW50ICpldmVudCkKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
Zm9jdXNEb2N1bWVudFZpZXcoKQogCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9m
cmFtZS0+dmlldygpKSB7CiAgICAgICAgIGlmIChOU1ZpZXcgKmRvY3VtZW50VmlldyA9IGZyYW1l
Vmlldy0+ZG9jdW1lbnRWaWV3KCkpCi0gICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Zm9jdXNO
U1ZpZXcoZG9jdW1lbnRWaWV3KTsKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmZvY3VzTlNW
aWV3KGRvY3VtZW50Vmlldyk7CiAgICAgfQogCiAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkt
PnNldEZvY3VzZWRGcmFtZShtX2ZyYW1lKTsKQEAgLTIwMywxMSArMjAzLDExIEBAIGJvb2wgRXZl
bnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldChXaWRnZXQqIHBXaWRnZXQpCiAg
ICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPmZpcnN0UmVzcG9uZGVyKCkgIT0gdmlldykgeworICAgIGlmIChwYWdl
LT5jaHJvbWUoKS5jbGllbnQoKS0+Zmlyc3RSZXNwb25kZXIoKSAhPSB2aWV3KSB7CiAgICAgICAg
IC8vIE5vcm1hbGx5IFtOU1dpbmRvdyBzZW5kRXZlbnQ6XSBoYW5kbGVzIHNldHRpbmcgdGhlIGZp
cnN0IHJlc3BvbmRlci4KICAgICAgICAgLy8gQnV0IGluIG91ciBjYXNlLCB0aGUgZXZlbnQgd2Fz
IHNlbnQgdG8gdGhlIHZpZXcgcmVwcmVzZW50aW5nIHRoZSBlbnRpcmUgd2ViIHBhZ2UuCiAgICAg
ICAgIGlmIChbY3VycmVudE5TRXZlbnQoKSBjbGlja0NvdW50XSA8PSAxICYmIFt2aWV3IGFjY2Vw
dHNGaXJzdFJlc3BvbmRlcl0gJiYgW3ZpZXcgbmVlZHNQYW5lbFRvQmVjb21lS2V5XSkKLSAgICAg
ICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bWFrZUZpcnN0UmVzcG9uZGVyKHZpZXcp
OworICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPm1ha2VGaXJzdFJlc3BvbmRl
cih2aWV3KTsKICAgICB9CiAKICAgICAvLyBXZSBuZWVkIHRvICJkZWZlciBsb2FkaW5nIiB3aGls
ZSB0cmFja2luZyB0aGUgbW91c2UsIGJlY2F1c2UgdGVhcmluZyBkb3duIHRoZQpAQCAtNjYwLDcg
KzY2MCw3IEBAIFBsYXRmb3JtTW91c2VFdmVudCBFdmVudEhhbmRsZXI6OmN1cnJlbnRQbGF0Zm9y
bU1vdXNlRXZlbnQoKSBjb25zdAogewogICAgIE5TVmlldyAqd2luZG93VmlldyA9IG5pbDsKICAg
ICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgd2luZG93VmlldyA9
IHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICAgICAgd2luZG93Vmll
dyA9IHBhZ2UtPmNocm9tZSgpLnBsYXRmb3JtUGFnZUNsaWVudCgpOwogICAgIHJldHVybiBQbGF0
Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50KGN1cnJlbnROU0V2ZW50
KCksIHdpbmRvd1ZpZXcpOwogfQogCkBAIC02ODgsNyArNjg4LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnRhYnNUb0FsbEZvcm1Db250cm9scyhLZXlib2FyZEV2ZW50KiBldmVudCkgY29uc3QKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEtleWJvYXJkVUlNb2Rl
IGtleWJvYXJkVUlNb2RlID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5rZXlib2FyZFVJTW9k
ZSgpOworICAgIEtleWJvYXJkVUlNb2RlIGtleWJvYXJkVUlNb2RlID0gcGFnZS0+Y2hyb21lKCku
Y2xpZW50KCktPmtleWJvYXJkVUlNb2RlKCk7CiAgICAgYm9vbCBoYW5kbGluZ09wdGlvblRhYiA9
IGlzS2V5Ym9hcmRPcHRpb25UYWIoZXZlbnQpOwogCiAgICAgLy8gSWYgdGFiLXRvLWxpbmtzIGlz
IG9mZiwgb3B0aW9uLXRhYiBhbHdheXMgaGlnaGxpZ2h0cyBhbGwgY29udHJvbHMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxh
Y2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0xvY2FsRmls
ZVN5c3RlbUJsYWNrQmVycnkuY3BwCmluZGV4IGY4ODQ0N2UuLmUxNWFmMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTG9jYWxGaWxlU3lzdGVtQmxhY2tC
ZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Mb2NhbEZp
bGVTeXN0ZW1CbGFja0JlcnJ5LmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgdm9pZCBvcGVu
RmlsZVN5c3RlbShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGJhc2VQYQogICAgICAgICBpbnQgcGxheWVySWQgPSAwOwogICAgICAgICBQYWdlKiBwYWdlID0g
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+cGFnZSgpOwogICAgICAgICBpZiAocGFn
ZSkKLSAgICAgICAgICAgIHBsYXllcklkID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbGF0
Zm9ybVBhZ2VDbGllbnQoKS0+cGxheWVySUQoKTsKKyAgICAgICAgICAgIHBsYXllcklkID0gcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpLT5wbGF5ZXJJRCgpOwog
ICAgICAgICBBc3luY0ZpbGVTeXN0ZW1CbGFja0JlcnJ5OjpvcGVuRmlsZVN5c3RlbShyb290VVJM
LCBiYXNlUGF0aCwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKS0+ZGF0YWJhc2VJZGVudGlmaWVy
KCksIHR5cGUsIHNpemUsIGNyZWF0ZSwgcGxheWVySWQsIGNhbGxiYWNrcyk7CiAgICAgfSBlbHNl
IHsKICNpZiBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAppbmRleCA3NmE5NzU0Li43MzA1NmQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCkBAIC05NSw5
ICs5NSw3IEBAIHN0YXRpYyBpbmxpbmUgR2RrRGlzcGxheSogZGlzcGxheUZyb21GcmFtZShGcmFt
ZSogZnJhbWUpCiAgICAgQVNTRVJUKGZyYW1lKTsKICAgICBQYWdlKiBwYWdlID0gZnJhbWUtPnBh
Z2UoKTsKICAgICBBU1NFUlQocGFnZSk7Ci0gICAgQ2hyb21lKiBjaHJvbWUgPSBwYWdlLT5jaHJv
bWUoKTsKLSAgICBBU1NFUlQoY2hyb21lKTsKLSAgICBQbGF0Zm9ybVBhZ2VDbGllbnQgY2xpZW50
ID0gY2hyb21lLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKTsKKyAgICBQbGF0Zm9ybVBhZ2VDbGllbnQg
Y2xpZW50ID0gcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdlQ2xpZW50KCk7CiAgICAgcmV0dXJu
IGNsaWVudCA/IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkoY2xpZW50KSA6IGdka19kaXNwbGF5X2dl
dF9kZWZhdWx0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1t
CmluZGV4IGYzZGRhNDguLjU4MDE4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dp
ZGdldE1hYy5tbQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgV2lkZ2V0OjpzZXRGb2N1cyhib29s
IGZvY3VzZWQpCiAgICAgLy8gQ2FsbCB0aGlzIGV2ZW4gd2hlbiB0aGVyZSBpcyBubyBwbGF0Zm9y
bVdpZGdldCgpLiBXSzIgd2lsbCBmb2N1cyBvbiB0aGUgd2lkZ2V0IGluIHRoZSBVSVByb2Nlc3Mu
CiAgICAgTlNWaWV3ICp2aWV3ID0gW3BsYXRmb3JtV2lkZ2V0KCkgX3dlYmNvcmVfZWZmZWN0aXZl
Rmlyc3RSZXNwb25kZXJdOwogICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKLSAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPmZvY3VzTlNWaWV3KHZpZXcpOworICAgICAgICBwYWdlLT5j
aHJvbWUoKS5mb2N1c05TVmlldyh2aWV3KTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmlu
ZGV4IDdjNjU0NGQuLjcyYmU2YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvRm9ybURhdGEuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBGb3JtRGF0YTo6YXBwZW5k
S2V5VmFsdWVQYWlySXRlbXMoY29uc3QgRm9ybURhdGFMaXN0JiBsaXN0LCBjb25zdCBUZXh0RW5j
b2QKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXRoLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZEZpbGVOYW1lOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNob3VsZEdlbmVyYXRlRmlsZSA9IHBhZ2UtPmNocm9tZSgp
LT5jbGllbnQoKS0+c2hvdWxkUmVwbGFjZVdpdGhHZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgs
IGdlbmVyYXRlZEZpbGVOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRH
ZW5lcmF0ZUZpbGUgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+c2hvdWxkUmVwbGFjZVdpdGhH
ZW5lcmF0ZWRGaWxlRm9yVXBsb2FkKHBhdGgsIGdlbmVyYXRlZEZpbGVOYW1lKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkR2VuZXJhdGVGaWxlKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lID0gZ2VuZXJhdGVkRmlsZU5hbWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBGb3JtRGF0YTo6Z2VuZXJh
dGVGaWxlcyhEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5w
YWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgQ2hyb21lQ2xpZW50
KiBjbGllbnQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCk7CisgICAgQ2hyb21lQ2xpZW50KiBj
bGllbnQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKTsKIAogICAgIHNpemVfdCBuID0gbV9lbGVt
ZW50cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3Jr
Sm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3
b3JrSm9iLmNwcAppbmRleCBhNTMyNzBkLi40NTM1MmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3BwCkBA
IC04OTcsNyArODk3LDcgQEAgTmV0d29ya0pvYjo6U2VuZFJlcXVlc3RSZXN1bHQgTmV0d29ya0pv
Yjo6c2VuZFJlcXVlc3RXaXRoQ3JlZGVudGlhbHMoUHJvdGVjdGlvblMKICAgICAgICAgICAgIHVw
ZGF0ZURlZmVyTG9hZGluZ0NvdW50KDEpOwogCiAgICAgICAgICAgICBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZU1hbmFnZXI6Omluc3RhbmNlKCktPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG5ld1VS
TCwgcHJvdGVjdGlvblNwYWNlLAotICAgICAgICAgICAgICAgIENyZWRlbnRpYWwoKSwgdGhpcywg
bV9mcmFtZS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgp
KTsKKyAgICAgICAgICAgICAgICBDcmVkZW50aWFsKCksIHRoaXMsIG1fZnJhbWUtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKTsKICAgICAgICAgICAgIHJl
dHVybiBTZW5kUmVxdWVzdFdhaXRpbmc7CiAgICAgICAgIH0KIApAQCAtOTUzLDcgKzk1Myw3IEBA
IHZvaWQgTmV0d29ya0pvYjo6c3RvcmVDcmVkZW50aWFscyhBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKQogCiAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6
aW5zdGFuY2UoKS0+c3RvcmVQcm94eUNyZWRlbnRpYWxzKHByb3h5SW5mbyk7CiAgICAgICAgIGlm
IChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgIG1fZnJhbWUtPnBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5wbGF0Zm9ybVBhZ2VDbGllbnQoKS0+c3luY1Byb3h5Q3Jl
ZGVudGlhbChjaGFsbGVuZ2UucHJvcG9zZWRDcmVkZW50aWFsKCkpOworICAgICAgICAgICAgbV9m
cmFtZS0+cGFnZSgpLT5jaHJvbWUoKS5jbGllbnQoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCktPnN5
bmNQcm94eUNyZWRlbnRpYWwoY2hhbGxlbmdlLnByb3Bvc2VkQ3JlZGVudGlhbCgpKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1l
UVN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1JlbmRlclRoZW1lUVN0eWxl
LmNwcAppbmRleCBlNTVjNzVjLi42ODA1MzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVFTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCkBAIC0xMzQsOCArMTM0LDcgQEAgdm9pZCBS
ZW5kZXJUaGVtZVFTdHlsZTo6c2V0UGFsZXR0ZUZyb21QYWdlQ2xpZW50SWZFeGlzdHMoUVBhbGV0
dGUmIHBhbGV0dGUpIGNvbnMKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQVNTRVJUKG1fcGFnZS0+Y2hyb21lKCkpOwotICAgIENocm9tZUNsaWVudCogY2hyb21lQ2xp
ZW50ID0gbV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCk7CisgICAgQ2hyb21lQ2xpZW50KiBjaHJv
bWVDbGllbnQgPSBtX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpOwogICAgIGlmICghY2hyb21lQ2xp
ZW50KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1JlbmRlclRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVu
ZGVyVGhlbWVRdC5jcHAKaW5kZXggMWY3NzljOC4uNjY4YjYyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAKQEAgLTUzOSw3ICs1MzksNyBAQCBTdHJp
bmcgUmVuZGVyVGhlbWVRdDo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCiB7CiAgICAg
U3RyaW5nIHJlc3VsdCA9IFN0cmluZyhtZWRpYUNvbnRyb2xzUXRVc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YobWVkaWFDb250cm9sc1F0VXNlckFnZW50U3R5bGVTaGVldCkpOwogCi0gICAgaWYg
KG1fcGFnZSAmJiBtX3BhZ2UtPmNocm9tZSgpLT5yZXF1aXJlc0Z1bGxzY3JlZW5Gb3JWaWRlb1Bs
YXliYWNrKCkpCisgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmNocm9tZSgpLnJlcXVpcmVzRnVs
bHNjcmVlbkZvclZpZGVvUGxheWJhY2soKSkKICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmco
bWVkaWFDb250cm9sc1F0RnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihtZWRp
YUNvbnRyb2xzUXRGdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpKTsKIAogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCA5MmE4Mzkw
Li4wOTg4ZWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYxMSw3
ICs2MTEsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmRlc3Ryb3lTdHJlYW0oTlBTdHJlYW0qIHN0
cmVhbSwgTlBSZWFzb24gcmVhc29uKQogdm9pZCBQbHVnaW5WaWV3OjpzdGF0dXMoY29uc3QgY2hh
ciogbWVzc2FnZSkKIHsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2Uo
KSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPnNldFN0YXR1c2JhclRleHQobV9wYXJlbnRGcmFt
ZS5nZXQoKSwgU3RyaW5nOjpmcm9tVVRGOChtZXNzYWdlKSk7CisgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLnNldFN0YXR1c2JhclRleHQobV9wYXJlbnRGcmFtZS5nZXQoKSwgU3RyaW5nOjpmcm9tVVRG
OChtZXNzYWdlKSk7CiB9CiAKIE5QRXJyb3IgUGx1Z2luVmlldzo6c2V0VmFsdWUoTlBQVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9ibGFja2JlcnJ5L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvYmxhY2tiZXJyeS9QbHVnaW5WaWV3QmxhY2tCZXJyeS5jcHAKaW5kZXggNmEyMWRh
YS4uY2MzYWU4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ibGFja2JlcnJ5
L1BsdWdpblZpZXdCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL2Js
YWNrYmVycnkvUGx1Z2luVmlld0JsYWNrQmVycnkuY3BwCkBAIC0xMDczLDcgKzEwNzMsNyBAQCBi
b29sIFBsdWdpblZpZXc6OnBsYXRmb3JtU3RhcnQoKQogICAgIH0KIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICBpZiAobV9wYXJlbnRGcmFtZS0+cGFnZSgpLT5jaHJvbWUo
KS0+Y2xpZW50KCktPmFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQorICAgIGlmIChtX3Bh
cmVudEZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpLT5hbGxvd3NBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkKICAgICAgICAgJiYgbV9wYXJlbnRGcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygp
CiAgICAgICAgICYmIG1fcGFyZW50RnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3MoKS0+YWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSkgewogICAgICAgICBtX3ByaXZhdGUtPm1fcGxhdGZvcm1M
YXllciA9IFBsdWdpbkxheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGUodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL3dpbi9QbHVnaW5WaWV3V2luLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCmluZGV4IDkxNTliYjkuLmEyYTE3
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvd2luL1BsdWdpblZpZXdXaW4uY3BwCkBA
IC03NTUsNyArNzU1LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNl
RXZlbnQqIGV2ZW50KQogICAgIC8vIGFuZCBzaW5jZSB3ZSBkb24ndCB3YW50IHRoYXQgd2Ugc2V0
IGlnbm9yZU5leHRTZXRDdXJzb3IgdG8gdHJ1ZSBoZXJlIHRvIHByZXZlbnQgdGhhdC4KICAgICBp
Z25vcmVOZXh0U2V0Q3Vyc29yID0gdHJ1ZTsKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fcGFyZW50
RnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zZXRMYXN0
U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5zZXRMYXN0U2V0Q3Vyc29yVG9DdXJyZW50Q3Vyc29yKCk7CiAjZW5kaWYKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCmluZGV4IDcwMjY5OTYuLjI2
ZTg0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKQEAg
LTkyOSw3ICs5MjksNyBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50Q3VzdG9tSGlnaGxpZ2h0
KGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgY29uc3QgQQogICAgIEZsb2F0UmVjdCBy
b290UmVjdChwYWludE9mZnNldC54KCkgKyByLT54KCksIHBhaW50T2Zmc2V0LnkoKSArIHNlbGVj
dGlvblRvcCgpLCByLT5sb2dpY2FsV2lkdGgoKSwgc2VsZWN0aW9uSGVpZ2h0KCkpOwogICAgIEZs
b2F0UmVjdCB0ZXh0UmVjdChwYWludE9mZnNldC54KCkgKyB4KCksIHJvb3RSZWN0LnkoKSwgbG9n
aWNhbFdpZHRoKCksIHJvb3RSZWN0LmhlaWdodCgpKTsKIAotICAgIHBhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+cGFpbnRDdXN0b21IaWdobGlnaHQocmVuZGVyZXIoKS0+bm9kZSgpLCB0eXBlLCB0
ZXh0UmVjdCwgcm9vdFJlY3QsIHRydWUsIGZhbHNlKTsKKyAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS0+cGFpbnRDdXN0b21IaWdobGlnaHQocmVuZGVyZXIoKS0+bm9kZSgpLCB0eXBlLCB0ZXh0
UmVjdCwgcm9vdFJlY3QsIHRydWUsIGZhbHNlKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGFiOWNiY2YuLmE3YzczNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xNDkwLDEwICsxNDkwLDEwIEBAIHZvaWQg
UmVuZGVyQm94OjpwYWludEN1c3RvbUhpZ2hsaWdodChjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRP
ZmZzZXQsIGNvbnN0IEF0b21pCiAgICAgaWYgKHIpIHsKICAgICAgICAgRmxvYXRSZWN0IHJvb3RS
ZWN0KHBhaW50T2Zmc2V0LngoKSArIHItPngoKSwgcGFpbnRPZmZzZXQueSgpICsgci0+c2VsZWN0
aW9uVG9wKCksIHItPmxvZ2ljYWxXaWR0aCgpLCByLT5zZWxlY3Rpb25IZWlnaHQoKSk7CiAgICAg
ICAgIEZsb2F0UmVjdCBpbWFnZVJlY3QocGFpbnRPZmZzZXQueCgpICsgeCgpLCByb290UmVjdC55
KCksIHdpZHRoKCksIHJvb3RSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5wYWludEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwg
cm9vdFJlY3QsIGJlaGluZFRleHQsIGZhbHNlKTsKKyAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xp
ZW50KCktPnBhaW50Q3VzdG9tSGlnaGxpZ2h0KG5vZGUoKSwgdHlwZSwgaW1hZ2VSZWN0LCByb290
UmVjdCwgYmVoaW5kVGV4dCwgZmFsc2UpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIEZsb2F0UmVj
dCBpbWFnZVJlY3QocGFpbnRPZmZzZXQueCgpICsgeCgpLCBwYWludE9mZnNldC55KCkgKyB5KCks
IHdpZHRoKCksIGhlaWdodCgpKTsKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5w
YWludEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwgaW1hZ2VSZWN0LCBi
ZWhpbmRUZXh0LCBmYWxzZSk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5wYWlu
dEN1c3RvbUhpZ2hsaWdodChub2RlKCksIHR5cGUsIGltYWdlUmVjdCwgaW1hZ2VSZWN0LCBiZWhp
bmRUZXh0LCBmYWxzZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBmOGNjODlkLi5mOTE5NjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAK
QEAgLTQzMSw3ICs0MzEsNyBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc0luVW5hdmFp
bGFibGVQbHVnaW5JbmRpY2F0b3IoTW91c2VFdmVudCogZXZlbnQpIGNvbgogc3RhdGljIGJvb2wg
c2hvdWxkVW5hdmFpbGFibGVQbHVnaW5NZXNzYWdlQmVCdXR0b24oRG9jdW1lbnQqIGRvY3VtZW50
LCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gcGx1Z2lu
VW5hdmFpbGFiaWxpdHlSZWFzb24pCiB7CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdl
KCk7Ci0gICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zaG91bGRV
bmF2YWlsYWJsZVBsdWdpbk1lc3NhZ2VCZUJ1dHRvbihwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNv
bik7CisgICAgcmV0dXJuIHBhZ2UgJiYgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnNob3VsZFVu
YXZhaWxhYmxlUGx1Z2luTWVzc2FnZUJlQnV0dG9uKHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29u
KTsKIH0KIAogdm9pZCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3JFdmVudChFdmVudCogZXZlbnQpCkBAIC00NjUsNyArNDY1LDcgQEAgdm9pZCBS
ZW5kZXJFbWJlZGRlZE9iamVjdDo6aGFuZGxlVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3JFdmVu
dChFdmVudCogZXZlbnQpCiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fbW91c2VEb3duV2FzSW5V
bmF2YWlsYWJsZVBsdWdpbkluZGljYXRvciAmJiBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0
b3IobW91c2VFdmVudCkpIHsKICAgICAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZG9jdW1lbnQo
KS0+cGFnZSgpKQotICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+dW5h
dmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKGVsZW1lbnQsIG1fcGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb24pOworICAgICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT51bmF2
YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQoZWxlbWVudCwgbV9wbHVnaW5VbmF2YWlsYWJpbGl0
eVJlYXNvbik7CiAgICAgICAgIH0KICAgICAgICAgbV9tb3VzZURvd25XYXNJblVuYXZhaWxhYmxl
UGx1Z2luSW5kaWNhdG9yID0gZmFsc2U7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxl
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggODM5YTM0
MC4uMDFiNWYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBA
IC0yMzQ3LDcgKzIzNDcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxl
KGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFNjcm9sbEFsaWdubQogICAgICAgICAgICAg
ICAgIC8vIFRoZSBjYW5BdXRvc2Nyb2xsIGZ1bmN0aW9uIGluIEV2ZW50SGFuZGxlciBhbHNvIGtu
b3dzIGFib3V0IHRoaXMuCiAgICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGZyYW1l
Vmlldy0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZy
YW1lLT5wYWdlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+c2Ny
b2xsUmVjdEludG9WaWV3KHBpeGVsU25hcHBlZEludFJlY3QocmVjdCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCkuc2Nyb2xsUmVjdEludG9WaWV3KHBpeGVsU25hcHBl
ZEludFJlY3QocmVjdCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAppbmRleCA4ZjU3Y2RjLi5iNWM5OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIFBhc3NPd25QdHI8
R3JhcGhpY3NMYXllcj4gUmVuZGVyTGF5ZXJCYWNraW5nOjpjcmVhdGVHcmFwaGljc0xheWVyKGNv
bnN0IFN0cmluZyYKIHsKICAgICBHcmFwaGljc0xheWVyRmFjdG9yeSogZ3JhcGhpY3NMYXllckZh
Y3RvcnkgPSAwOwogICAgIGlmIChQYWdlKiBwYWdlID0gcmVuZGVyZXIoKS0+ZnJhbWUoKS0+cGFn
ZSgpKQotICAgICAgICBncmFwaGljc0xheWVyRmFjdG9yeSA9IHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKKyAgICAgICAgZ3JhcGhpY3NMYXllckZhY3Rv
cnkgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKIAog
ICAgIE93blB0cjxHcmFwaGljc0xheWVyPiBncmFwaGljc0xheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKGdyYXBoaWNzTGF5ZXJGYWN0b3J5LCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBlZGViMzE0Li5h
NzFiODczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcApAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpjYWNoZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGbGFncygpCiAgICAgICAgIC8vIG9uIGEg
Y2hyb21lIHRoYXQgZG9lc24ndCBhbGxvdyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4KICAgICAg
ICAgaWYgKGhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcpIHsKICAgICAgICAgICAgIGlmIChQYWdl
KiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7Ci0gICAgICAgICAgICAgICAgQ2hyb21lQ2xpZW50KiBj
aHJvbWVDbGllbnQgPSBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCk7CisgICAgICAgICAgICAgICAg
Q2hyb21lQ2xpZW50KiBjaHJvbWVDbGllbnQgPSBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKTsKICAg
ICAgICAgICAgICAgICBtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgPSBjaHJvbWVDbGllbnQtPmFsbG93
ZWRDb21wb3NpdGluZ1RyaWdnZXJzKCk7CiAgICAgICAgICAgICAgICAgaGFzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZyA9IG1fY29tcG9zaXRpbmdUcmlnZ2VyczsKICAgICAgICAgICAgIH0KQEAgLTMz
MCw3ICszMzAsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6c2NoZWR1bGVMYXllckZs
dXNoTm93KCkKIHsKICAgICBtX2hhc1BlbmRpbmdMYXllckZsdXNoID0gZmFsc2U7CiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSB0aGlzLT5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyRmx1c2goKTsKKyAgICAgICAgcGFnZS0+Y2hy
b21lKCkuY2xpZW50KCktPnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllckZsdXNoKCk7CiB9CiAKIHZv
aWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzY2hlZHVsZUxheWVyRmx1c2goYm9vbCBjYW5UaHJv
dHRsZSkKQEAgLTI2MjcsNyArMjYyNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkKICAgICAgICAgICAgIG1fbGF5ZXJGb3JPdmVy
aGFuZ0FyZWFzLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwogICAgICAgICAgICAgbV9sYXllckZv
ck92ZXJoYW5nQXJlYXMtPnNldFNpemUobV9yZW5kZXJWaWV3LT5mcmFtZVZpZXcoKS0+ZnJhbWVS
ZWN0KCkuc2l6ZSgpKTsKIAotICAgICAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNl
dFVwT3ZlcmhhbmdBcmVhc0xheWVyQ29udGVudHMobV9sYXllckZvck92ZXJoYW5nQXJlYXMuZ2V0
KCksIHRoaXMtPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT51bmRlcmxheUNvbG9yKCkpOwor
ICAgICAgICAgICAgU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNldFVwT3ZlcmhhbmdBcmVhc0xh
eWVyQ29udGVudHMobV9sYXllckZvck92ZXJoYW5nQXJlYXMuZ2V0KCksIHRoaXMtPnBhZ2UoKS0+
Y2hyb21lKCkuY2xpZW50KCktPnVuZGVybGF5Q29sb3IoKSk7CiAKICAgICAgICAgICAgIC8vIFdl
IHdhbnQgdGhlIG92ZXJoYW5nIGFyZWFzIGxheWVyIHRvIGJlIHBvc2l0aW9uZWQgYmVsb3cgdGhl
IGZyYW1lIGNvbnRlbnRzLAogICAgICAgICAgICAgLy8gc28gaW5zZXJ0IGl0IGJlbG93IHRoZSBj
bGlwIGxheWVyLgpAQCAtMjg1Miw3ICsyODUyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmF0dGFjaFJvb3RMYXllcihSb290TGF5ZXJBdHRhY2htZW50IGF0dGFjaG1lbnQpCiAgICAg
ICAgICAgICBpZiAoIXBhZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKGZyYW1l
LCByb290R3JhcGhpY3NMYXllcigpKTsKKyAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihmcmFtZSwgcm9vdEdyYXBoaWNzTGF5ZXIoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFJvb3RMYXllckF0
dGFjaGVkVmlhRW5jbG9zaW5nRnJhbWU6IHsKQEAgLTI4OTYsNyArMjg5Niw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpkZXRhY2hSb290TGF5ZXIoKQogICAgICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihmcmFtZSwgMCk7CisgICAgICAgIHBhZ2UtPmNocm9t
ZSgpLmNsaWVudCgpLT5hdHRhY2hSb290R3JhcGhpY3NMYXllcihmcmFtZSwgMCk7CiAgICAgfQog
ICAgIGJyZWFrOwogICAgIGNhc2UgUm9vdExheWVyVW5hdHRhY2hlZDoKQEAgLTMxNzQsNyArMzE3
NCw3IEBAIFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkgY29uc3QKIEdyYXBoaWNzTGF5ZXJGYWN0b3J5KiBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmdyYXBoaWNzTGF5ZXJGYWN0b3J5KCkgY29uc3QKIHsKICAgICBpZiAoUGFn
ZSogcGFnZSA9IHRoaXMtPnBhZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5j
bGllbnQoKS0+Z3JhcGhpY3NMYXllckZhY3RvcnkoKTsKKyAgICAgICAgcmV0dXJuIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLT5ncmFwaGljc0xheWVyRmFjdG9yeSgpOwogCiAgICAgcmV0dXJuIDA7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAppbmRleCA3
ZjZkMjk4Li5mYTBkMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51
TGlzdC5jcHAKQEAgLTExNiwxMyArMTE2LDEzIEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVz
dElubmVyU3R5bGUoKQogICAgIGlubmVyU3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKHRoZW1l
KCktPnBvcHVwSW50ZXJuYWxQYWRkaW5nVG9wKHN0eWxlKCkpLCBGaXhlZCkpOwogICAgIGlubmVy
U3R5bGUtPnNldFBhZGRpbmdCb3R0b20oTGVuZ3RoKHRoZW1lKCktPnBvcHVwSW50ZXJuYWxQYWRk
aW5nQm90dG9tKHN0eWxlKCkpLCBGaXhlZCkpOwogCi0gICAgaWYgKGRvY3VtZW50KCktPnBhZ2Uo
KS0+Y2hyb21lKCktPnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9uSXNOYXR1cmFsKCkpIHsKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtV3JpdGluZ0RpcmVj
dGlvbklzTmF0dXJhbCgpKSB7CiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5v
dCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAg
ICAgICAgIC8vIHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAgICAg
ICAgIGlubmVyU3R5bGUtPnNldFRleHRBbGlnbihMRUZUKTsKICAgICAgICAgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLT5kZWZh
dWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQpID8gUlRM
IDogTFRSOwogICAgICAgICBpbm5lclN0eWxlLT5zZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKLSAg
ICB9IGVsc2UgaWYgKG1fb3B0aW9uU3R5bGUgJiYgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KS0+c2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7Cisg
ICAgfSBlbHNlIGlmIChtX29wdGlvblN0eWxlICYmIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21l
KCkuc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NNZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7CiAg
ICAgICAgIGlmICgobV9vcHRpb25TdHlsZS0+ZGlyZWN0aW9uKCkgIT0gaW5uZXJTdHlsZS0+ZGly
ZWN0aW9uKCkgfHwgbV9vcHRpb25TdHlsZS0+dW5pY29kZUJpZGkoKSAhPSBpbm5lclN0eWxlLT51
bmljb2RlQmlkaSgpKSkKICAgICAgICAgICAgIG1faW5uZXJCbG9jay0+c2V0TmVlZHNMYXlvdXRB
bmRQcmVmV2lkdGhzUmVjYWxjKCk7CiAgICAgICAgIGlubmVyU3R5bGUtPnNldFRleHRBbGlnbihz
dHlsZSgpLT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBMRUZUIDogUklHSFQpOwpAQCAtMzIz
LDcgKzMyMyw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnNob3dQb3B1cCgpCiAgICAgaWYgKG1f
cG9wdXBJc1Zpc2libGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChkb2N1bWVudCgpLT5w
YWdlKCktPmNocm9tZSgpLT5oYXNPcGVuZWRQb3B1cCgpKQorICAgIGlmIChkb2N1bWVudCgpLT5w
YWdlKCktPmNocm9tZSgpLmhhc09wZW5lZFBvcHVwKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IC8vIENyZWF0ZSBtX2lubmVyQmxvY2sgaGVyZSBzbyBpdCBlbmRzIHVwIGFzIHRoZSBmaXJzdCBj
aGlsZC4KQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjpzaG93UG9wdXAo
KQogICAgIC8vIGluc2lkZSB0aGUgc2hvd1BvcHVwIGNhbGwgYW5kIGl0IHdvdWxkIGZhaWwuCiAg
ICAgY3JlYXRlSW5uZXJCbG9jaygpOwogICAgIGlmICghbV9wb3B1cCkKLSAgICAgICAgbV9wb3B1
cCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNyZWF0ZVBvcHVwTWVudSh0aGlzKTsK
KyAgICAgICAgbV9wb3B1cCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCkuY3JlYXRlUG9w
dXBNZW51KHRoaXMpOwogICAgIG1fcG9wdXBJc1Zpc2libGUgPSB0cnVlOwogCiAgICAgLy8gQ29t
cHV0ZSB0aGUgdG9wIGxlZnQgdGFraW5nIHRyYW5zZm9ybXMgaW50byBhY2NvdW50LCBidXQgdXNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2VhcmNoRmllbGQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNlYXJjaEZpZWxkLmNwcAppbmRl
eCBjMzZlODM0Li41MGQyOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2VhcmNoRmllbGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTZWFyY2hGaWVsZC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIFJlbmRlclNlYXJjaEZp
ZWxkOjphZGRTZWFyY2hSZXN1bHQoKQogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0g
YXV0b3NhdmVOYW1lKCk7CiAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICBtX3NlYXJj
aFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNoUG9wdXBN
ZW51KHRoaXMpOworICAgICAgICBtX3NlYXJjaFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5j
aHJvbWUoKS5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhpcyk7CiAKICAgICBtX3NlYXJjaFBvcHVw
LT5zYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgbV9yZWNlbnRTZWFyY2hlcyk7CiB9CkBAIC0xMTgs
NyArMTE4LDcgQEAgdm9pZCBSZW5kZXJTZWFyY2hGaWVsZDo6c2hvd1BvcHVwKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX3NlYXJjaFBvcHVwKQotICAgICAgICBtX3NlYXJjaFBvcHVw
ID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlU2VhcmNoUG9wdXBNZW51KHRo
aXMpOworICAgICAgICBtX3NlYXJjaFBvcHVwID0gZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KS5jcmVhdGVTZWFyY2hQb3B1cE1lbnUodGhpcyk7CiAKICAgICBpZiAoIW1fc2VhcmNoUG9wdXAt
PmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDcgKzIxMyw3IEBAIHZvaWQgUmVu
ZGVyU2VhcmNoRmllbGQ6OnZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmly
ZUV2ZW50cykKICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IGF1dG9zYXZl
TmFtZSgpOwogICAgICAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
ICAgIGlmICghbV9zZWFyY2hQb3B1cCkKLSAgICAgICAgICAgICAgICAgICAgbV9zZWFyY2hQb3B1
cCA9IGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNyZWF0ZVNlYXJjaFBvcHVwTWVudSh0
aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgbV9zZWFyY2hQb3B1cCA9IGRvY3VtZW50KCktPnBh
Z2UoKS0+Y2hyb21lKCkuY3JlYXRlU2VhcmNoUG9wdXBNZW51KHRoaXMpOwogICAgICAgICAgICAg
ICAgIG1fc2VhcmNoUG9wdXAtPnNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBtX3JlY2VudFNlYXJj
aGVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1Jvb3RJbmxpbmVCb3guY3BwCmluZGV4IDVlMjY5NmIuLjQ3MDNhNjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHAKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lk
IFJvb3RJbmxpbmVCb3g6OmFkZEhpZ2hsaWdodE92ZXJmbG93KCkKIAogICAgIC8vIEhpZ2hsaWdo
dCBhY3RzIGFzIGEgc2VsZWN0aW9uIGluZmxhdGlvbi4KICAgICBGbG9hdFJlY3Qgcm9vdFJlY3Qo
MCwgc2VsZWN0aW9uVG9wKCksIGxvZ2ljYWxXaWR0aCgpLCBzZWxlY3Rpb25IZWlnaHQoKSk7Ci0g
ICAgSW50UmVjdCBpbmZsYXRlZFJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KHBhZ2UtPmNocm9tZSgp
LT5jbGllbnQoKS0+Y3VzdG9tSGlnaGxpZ2h0UmVjdChyZW5kZXJlcigpLT5ub2RlKCksIHJlbmRl
cmVyKCktPnN0eWxlKCktPmhpZ2hsaWdodCgpLCByb290UmVjdCkpOworICAgIEludFJlY3QgaW5m
bGF0ZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+Y3Vz
dG9tSGlnaGxpZ2h0UmVjdChyZW5kZXJlcigpLT5ub2RlKCksIHJlbmRlcmVyKCktPnN0eWxlKCkt
PmhpZ2hsaWdodCgpLCByb290UmVjdCkpOwogICAgIHNldE92ZXJmbG93RnJvbUxvZ2ljYWxSZWN0
cyhpbmZsYXRlZFJlY3QsIGluZmxhdGVkUmVjdCwgbGluZVRvcCgpLCBsaW5lQm90dG9tKCkpOwog
fQogCkBAIC0yMDIsOSArMjAyLDkgQEAgdm9pZCBSb290SW5saW5lQm94OjpwYWludEN1c3RvbUhp
Z2hsaWdodChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQKIAogICAgIC8v
IEdldCB0aGUgaW5mbGF0ZWQgcmVjdCBzbyB0aGF0IHdlIGNhbiBwcm9wZXJseSBoaXQgdGVzdC4K
ICAgICBGbG9hdFJlY3Qgcm9vdFJlY3QocGFpbnRPZmZzZXQueCgpICsgeCgpLCBwYWludE9mZnNl
dC55KCkgKyBzZWxlY3Rpb25Ub3AoKSwgbG9naWNhbFdpZHRoKCksIHNlbGVjdGlvbkhlaWdodCgp
KTsKLSAgICBGbG9hdFJlY3QgaW5mbGF0ZWRSZWN0ID0gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5jdXN0b21IaWdobGlnaHRSZWN0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxpZ2h0VHlwZSwg
cm9vdFJlY3QpOworICAgIEZsb2F0UmVjdCBpbmZsYXRlZFJlY3QgPSBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS0+Y3VzdG9tSGlnaGxpZ2h0UmVjdChyZW5kZXJlcigpLT5ub2RlKCksIGhpZ2hsaWdo
dFR5cGUsIHJvb3RSZWN0KTsKICAgICBpZiAoaW5mbGF0ZWRSZWN0LmludGVyc2VjdHMocGFpbnRJ
bmZvLnJlY3QpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnBhaW50Q3VzdG9t
SGlnaGxpZ2h0KHJlbmRlcmVyKCktPm5vZGUoKSwgaGlnaGxpZ2h0VHlwZSwgcm9vdFJlY3QsIHJv
b3RSZWN0LCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5w
YWludEN1c3RvbUhpZ2hsaWdodChyZW5kZXJlcigpLT5ub2RlKCksIGhpZ2hsaWdodFR5cGUsIHJv
b3RSZWN0LCByb290UmVjdCwgZmFsc2UsIHRydWUpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IGFjNmY1ZDguLjEw
YTYxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcApAQCAtMTMwLDEwICsxMzAsMTAgQEAgYm9vbCBSZW5kZXJTVkdSb290Ojppc0VtYmVkZGVk
VGhyb3VnaFNWR0ltYWdlKCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
VGVzdCB3aGV0aGVyIHdlJ3JlIGVtYmVkZGVkIHRocm91Z2ggYW4gaW1nLgotICAgIGlmICghZnJh
bWUtPnBhZ2UoKSB8fCAhZnJhbWUtPnBhZ2UoKS0+Y2hyb21lKCkpCisgICAgaWYgKCFmcmFtZS0+
cGFnZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBDaHJvbWVDbGllbnQqIGNocm9t
ZUNsaWVudCA9IGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKTsKKyAgICBDaHJvbWVD
bGllbnQqIGNocm9tZUNsaWVudCA9IGZyYW1lLT5wYWdlKCktPmNocm9tZSgpLmNsaWVudCgpOwog
ICAgIGlmICghY2hyb21lQ2xpZW50IHx8ICFjaHJvbWVDbGllbnQtPmlzU1ZHSW1hZ2VDaHJvbWVD
bGllbnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKaW5kZXggZTk0NWVmMy4uYjZmMDhjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmNwcApAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29u
c2lzdGVudFN0YXRlKFBhZ2UqIHBhZ2UpCiAgICAgZGVsZXRlIHNfcGFnZVBvcHVwRHJpdmVyOwog
ICAgIHNfcGFnZVBvcHVwRHJpdmVyID0gMDsKICAgICBpZiAocGFnZS0+Y2hyb21lKCkpCi0gICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cmVzZXRQYWdlUG9wdXBEcml2ZXIoKTsKKyAg
ICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCktPnJlc2V0UGFnZVBvcHVwRHJpdmVyKCk7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikKICAgICBpZiAocGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpKQpAQCAtNzc1LDEyICs3NzUs
MTIgQEAgdm9pZCBJbnRlcm5hbHM6OnNldEVuYWJsZU1vY2tQYWdlUG9wdXAoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIFBhZ2UqIHBhZ2UgPSBk
b2N1bWVudC0+cGFnZSgpOwogICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICBwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPnJlc2V0UGFnZVBvcHVwRHJpdmVyKCk7CisgICAgICAgIHBhZ2UtPmNo
cm9tZSgpLmNsaWVudCgpLT5yZXNldFBhZ2VQb3B1cERyaXZlcigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGlmICghc19wYWdlUG9wdXBEcml2ZXIpCiAgICAgICAgIHNfcGFnZVBvcHVw
RHJpdmVyID0gTW9ja1BhZ2VQb3B1cERyaXZlcjo6Y3JlYXRlKHBhZ2UtPm1haW5GcmFtZSgpKS5s
ZWFrUHRyKCk7Ci0gICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zZXRQYWdlUG9wdXBEcml2
ZXIoc19wYWdlUG9wdXBEcml2ZXIpOworICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5zZXRQ
YWdlUG9wdXBEcml2ZXIoc19wYWdlUG9wdXBEcml2ZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZW5hYmxlZCk7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGM1NGU4ZWQuLmNiY2VhMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMzE1MCw3ICszMTUwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6c2V0VmlzaWJsZShib29sIHZpc2libGUpCiAgICAgICAgICAgICAgICAg
bV9wYWdlLT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zKCk7CiAKICAgICAgICAgICAgIGlmICht
X3dlYlBhZ2UtPmhhc09wZW5lZFBvcHVwKCkpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOworICAgICAgICAgICAgICAgIG1fcGFn
ZS0+Y2hyb21lKCkuY2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOwogICAgICAgICB9CiAKICAg
ICAgICAgbV92aXNpYmxlID0gdmlzaWJsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmlu
ZGV4IGI0NTQ1MzguLmI0MzkzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwIEBACisyMDEzLTA1LTE1ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNv
bT4KKworICAgICAgICBQYWdlOjpjaHJvbWUoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlLgor
ICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi8xMTYxODU+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKIDIwMTMtMDUtMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBGcmFtZTo6ZWRpdG9yKCkgc2hvdWxkIHJldHVybiBh
IHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L0NvbG9yUGlja2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9Db2xvclBpY2tlckNsaWVudC5jcHAKaW5kZXggMjBmYjY0Ni4uMjRkZTM1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Nv
bG9yUGlja2VyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvQ29sb3JQaWNrZXJDbGllbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgQ29s
b3JQaWNrZXJDbGllbnQ6OmdlbmVyYXRlSFRNTChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U3RyaW5nJiB2YWx1ZSkKIHZvaWQgQ29sb3JQaWNrZXJDbGllbnQ6OmNsb3NlUG9wdXAoKQogewog
ICAgIEFTU0VSVChtX3dlYlBhZ2UpOwotICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOworICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CiB9CiAKIEludFNpemUgQ29sb3JQaWNr
ZXJDbGllbnQ6OmNvbnRlbnRTaXplKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9EYXRlUGlja2VyQ2xpZW50LmNwcAppbmRleCAxMDcx
MTE5Li45ZTI5MWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvRGF0ZVBpY2tlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYkNvcmVTdXBwb3J0L0RhdGVQaWNrZXJDbGllbnQuY3BwCkBAIC0xNDEsNyArMTQxLDcg
QEAgdm9pZCBEYXRlUGlja2VyQ2xpZW50OjpnZW5lcmF0ZUhUTUwoQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkJsYWNrQmVycnlJbnB1dFR5cGUgdHkKIHZvaWQgRGF0ZVBpY2tlckNsaWVudDo6Y2xvc2VQ
b3B1cCgpCiB7CiAgICAgQVNTRVJUKG1fd2ViUGFnZSk7Ci0gICAgbV93ZWJQYWdlLT5tX3BhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgbV93ZWJQYWdlLT5t
X3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKIH0KIAogSW50U2l6
ZSBEYXRlUGlja2VyQ2xpZW50Ojpjb250ZW50U2l6ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNw
cAppbmRleCAwNWMwNDA2Li42NjljZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvV2ViQ29yZVN1cHBvcnQvU2VsZWN0UG9wdXBDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9TZWxlY3RQb3B1cENsaWVudC5jcHAKQEAg
LTE1MSw3ICsxNTEsNyBAQCB2b2lkIFNlbGVjdFBvcHVwQ2xpZW50OjpnZW5lcmF0ZUhUTUwoYm9v
bCwgaW50IHNpemUsIGNvbnN0IFNjb3BlQXJyYXk8QmxhY2tCZXJyeQogdm9pZCBTZWxlY3RQb3B1
cENsaWVudDo6Y2xvc2VQb3B1cCgpCiB7CiAgICAgQVNTRVJUKG1fd2ViUGFnZSk7Ci0gICAgbV93
ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7Cisg
ICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgw
KTsKIH0KIAogSW50U2l6ZSBTZWxlY3RQb3B1cENsaWVudDo6Y29udGVudFNpemUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxl
ci5jcHAKaW5kZXggZmUyYzNiMy4uNTk1ZWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3BwCkBAIC0xMjEzLDE0
ICsxMjEzLDE0IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuRGF0ZVBvcHVwKEhUTUxJbnB1dEVs
ZW1lbnQqIGVsZW1lbnQsIEJsYWNrQmVycnlJbnB1dFR5cGUKICAgICAgICAgZWxlbWVudC0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNldENhcmV0VmlzaWJsZShmYWxzZSk7CiAK
ICAgICAgICAgLy8gQ2hlY2sgaWYgcG9wdXAgYWxyZWFkeSBleGlzdHMsIGNsb3NlIGl0IGlmIGRv
ZXMuCi0gICAgICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPmNsb3Nl
UGFnZVBvcHVwKDApOworICAgICAgICBtX3dlYlBhZ2UtPm1fcGFnZS0+Y2hyb21lKCkuY2xpZW50
KCktPmNsb3NlUGFnZVBvcHVwKDApOwogICAgICAgICBXVEY6OlN0cmluZyB2YWx1ZSA9IGVsZW1l
bnQtPnZhbHVlKCk7CiAgICAgICAgIFdURjo6U3RyaW5nIG1pbiA9IGVsZW1lbnQtPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6Om1pbkF0dHIpLnN0cmluZygpOwogICAgICAgICBXVEY6OlN0cmluZyBt
YXggPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjptYXhBdHRyKS5zdHJpbmcoKTsK
ICAgICAgICAgZG91YmxlIHN0ZXAgPSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpz
dGVwQXR0cikudG9Eb3VibGUoKTsKIAogICAgICAgICBEYXRlUGlja2VyQ2xpZW50KiBjbGllbnQg
PSBuZXcgRGF0ZVBpY2tlckNsaWVudCh0eXBlLCB2YWx1ZSwgbWluLCBtYXgsIHN0ZXAsICBtX3dl
YlBhZ2UsIGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+b3BlblBhZ2VQb3B1cChjbGllbnQsICBXZWJDb3JlOjpJbnRSZWN0KCkp
OworICAgICAgICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5v
cGVuUGFnZVBvcHVwKGNsaWVudCwgIFdlYkNvcmU6OkludFJlY3QoKSk7CiAgICAgICAgIH0KICAg
ICBkZWZhdWx0OiAvLyBPdGhlciB0eXBlcyBub3Qgc3VwcG9ydGVkCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTEyMzksMTAgKzEyMzksMTAgQEAgYm9vbCBJbnB1dEhhbmRsZXI6Om9wZW5Db2xv
clBvcHVwKEhUTUxJbnB1dEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgbV9jdXJyZW50Rm9jdXNFbGVt
ZW50VHlwZSA9IFRleHRQb3B1cDsKIAogICAgIC8vIENoZWNrIGlmIHBvcHVwIGFscmVhZHkgZXhp
c3RzLCBjbG9zZSBpdCBpZiBkb2VzLgotICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmNsb3NlUGFnZVBvcHVwKDApOworICAgIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJv
bWUoKS5jbGllbnQoKS0+Y2xvc2VQYWdlUG9wdXAoMCk7CiAKICAgICBDb2xvclBpY2tlckNsaWVu
dCogY2xpZW50ID0gbmV3IENvbG9yUGlja2VyQ2xpZW50KGVsZW1lbnQtPnZhbHVlKCksIG1fd2Vi
UGFnZSwgZWxlbWVudCk7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS0+bV9wYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPm9wZW5QYWdlUG9wdXAoY2xpZW50LCAgV2ViQ29yZTo6SW50UmVjdCgpKTsKKyAg
ICByZXR1cm4gbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT5vcGVuUGFnZVBv
cHVwKGNsaWVudCwgIFdlYkNvcmU6OkludFJlY3QoKSk7CiB9CiAKIHZvaWQgSW5wdXRIYW5kbGVy
OjpzZXRJbnB1dFZhbHVlKGNvbnN0IFdURjo6U3RyaW5nJiB2YWx1ZSkKQEAgLTE5NzIsNyArMTk3
Miw3IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpvcGVuU2VsZWN0UG9wdXAoSFRNTFNlbGVjdEVsZW1l
bnQqIHNlbGVjdCkKICAgICBsYWJlbHMucmVzZXQobmV3IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpT
dHJpbmdbc2l6ZV0pOwogCiAgICAgLy8gQ2hlY2sgaWYgcG9wdXAgYWxyZWFkeSBleGlzdHMsIGNs
b3NlIGl0IGlmIGRvZXMuCi0gICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+Y2xvc2VQYWdlUG9wdXAoMCk7CisgICAgbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNs
aWVudCgpLT5jbG9zZVBhZ2VQb3B1cCgwKTsKIAogICAgIGJvb2wqIGVuYWJsZWRzID0gMDsKICAg
ICBpbnQqIGl0ZW1UeXBlcyA9IDA7CkBAIC0yMDA2LDcgKzIwMDYsNyBAQCBib29sIElucHV0SGFu
ZGxlcjo6b3BlblNlbGVjdFBvcHVwKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QpCiAgICAgU2Vs
ZWN0UG9wdXBDbGllbnQqIHNlbGVjdENsaWVudCA9IG5ldyBTZWxlY3RQb3B1cENsaWVudChtdWx0
aXBsZSwgc2l6ZSwgbGFiZWxzLCBlbmFibGVkcywgaXRlbVR5cGVzLCBzZWxlY3RlZHMsIG1fd2Vi
UGFnZSwgc2VsZWN0KTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGVsZW1lbnRSZWN0SW5Sb290Vmll
dyA9IHNlbGVjdC0+ZG9jdW1lbnQoKS0+dmlldygpLT5jb250ZW50c1RvUm9vdFZpZXcoZW5jbG9z
aW5nSW50UmVjdChzZWxlY3QtPmdldFJlY3QoKSkpOwogICAgIC8vIEZhaWwgdG8gY3JlYXRlIEhU
TUwgcG9wdXAsIHVzZSB0aGUgb2xkIHBhdGgKLSAgICBpZiAoIW1fd2ViUGFnZS0+bV9wYWdlLT5j
aHJvbWUoKS0+Y2xpZW50KCktPm9wZW5QYWdlUG9wdXAoc2VsZWN0Q2xpZW50LCBlbGVtZW50UmVj
dEluUm9vdFZpZXcpKQorICAgIGlmICghbV93ZWJQYWdlLT5tX3BhZ2UtPmNocm9tZSgpLmNsaWVu
dCgpLT5vcGVuUGFnZVBvcHVwKHNlbGVjdENsaWVudCwgZWxlbWVudFJlY3RJblJvb3RWaWV3KSkK
ICAgICAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+b3BlblBvcHVwTGlzdChtdWx0aXBsZSwgc2l6
ZSwgbGFiZWxzLCBlbmFibGVkcywgaXRlbVR5cGVzLCBzZWxlY3RlZHMpOwogICAgIGRlbGV0ZVtd
IGVuYWJsZWRzOwogICAgIGRlbGV0ZVtdIGl0ZW1UeXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA5
YWM0Zjc1Li5hOGM2ZDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAgQEAKKzIwMTMt
MDUtMTUgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAgICAgIFBhZ2U6
OmNocm9tZSgpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UuCisgICAgICAgIDxodHRwOi8vd2Vi
a2l0Lm9yZy9iLzExNjE4NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KwogMjAxMy0wNS0xMyAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZyYW1lOjplZGl0b3IoKSBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVFZmwuY3BwIGIv
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51RWZsLmNwcAppbmRleCA0
NTM1MDZlLi5mNzAzNDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9Qb3B1cE1lbnVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L1BvcHVwTWVudUVmbC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgUG9wdXBNZW51RWZsOjp+UG9w
dXBNZW51RWZsKCkKIHZvaWQgUG9wdXBNZW51RWZsOjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3Qs
IEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQogewogICAgIEFTU0VSVChtX3BvcHVwQ2xpZW50
KTsKLSAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9t
ZUNsaWVudEVmbCo+KHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpKTsK
KyAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PENocm9tZUNs
aWVudEVmbCo+KHZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21lKCkuY2xpZW50KCkpOwogICAg
IEFTU0VSVChjaHJvbWVDbGllbnQpOwogCiAgICAgbV92aWV3ID0gdmlldzsKQEAgLTYxLDcgKzYx
LDcgQEAgdm9pZCBQb3B1cE1lbnVFZmw6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVW
aWV3KiB2aWV3LCBpbnQgaW5kZXgpCiB2b2lkIFBvcHVwTWVudUVmbDo6aGlkZSgpCiB7CiAgICAg
QVNTRVJUKG1fdmlldyk7Ci0gICAgQ2hyb21lQ2xpZW50RWZsKiBjaHJvbWVDbGllbnQgPSBzdGF0
aWNfY2FzdDxDaHJvbWVDbGllbnRFZmwqPihtX3ZpZXctPmZyYW1lKCktPnBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpKTsKKyAgICBDaHJvbWVDbGllbnRFZmwqIGNocm9tZUNsaWVudCA9IHN0YXRp
Y19jYXN0PENocm9tZUNsaWVudEVmbCo+KG1fdmlldy0+ZnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUo
KS5jbGllbnQoKSk7CiAgICAgQVNTRVJUKGNocm9tZUNsaWVudCk7CiAKICAgICBjaHJvbWVDbGll
bnQtPmRlc3Ryb3lTZWxlY3RQb3B1cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKaW5k
ZXggNGE4YWFmMy4uYzRmZWZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCkBAIC0x
MzI3LDggKzEzMjcsOCBAQCBzdGF0aWMgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzIF9ld2tf
dmlld192aWV3cG9ydF9hdHRyaWJ1dGVzX2NvbXB1dGUoRXdrX1ZpZQogICAgIGludCBkZXZpY2VE
UEkgPSBXZWJDb3JlOjpnZXREUEkoKTsKICAgICBwcml2LT5zZXR0aW5ncy5kZXZpY2VQaXhlbFJh
dGlvID0gZGV2aWNlRFBJIC8gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OmRlcHJlY2F0ZWRU
YXJnZXREUEk7CiAKLSAgICBXZWJDb3JlOjpJbnRSZWN0IGF2YWlsYWJsZVJlY3QgPSBlbmNsb3Np
bmdJbnRSZWN0KHByaXYtPnBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+cGFnZVJlY3QoKSk7Ci0g
ICAgV2ViQ29yZTo6SW50UmVjdCBkZXZpY2VSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5w
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPndpbmRvd1JlY3QoKSk7CisgICAgV2ViQ29yZTo6SW50
UmVjdCBhdmFpbGFibGVSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUo
KS5jbGllbnQoKS0+cGFnZVJlY3QoKSk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBkZXZpY2VSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChwcml2LT5wYWdlLT5jaHJvbWUoKS5jbGllbnQoKS0+d2luZG93
UmVjdCgpKTsKIAogICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0g
V2ViQ29yZTo6Y29tcHV0ZVZpZXdwb3J0QXR0cmlidXRlcyhwcml2LT52aWV3cG9ydEFyZ3VtZW50
cywgZGVza3RvcFdpZHRoLCBkZXZpY2VSZWN0LndpZHRoKCksIGRldmljZVJlY3QuaGVpZ2h0KCks
IHByaXYtPnNldHRpbmdzLmRldmljZVBpeGVsUmF0aW8sIGF2YWlsYWJsZVJlY3Quc2l6ZSgpKTsK
ICAgICBXZWJDb3JlOjpyZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRTaXplKGF0
dHJpYnV0ZXMsIGF2YWlsYWJsZVJlY3Quc2l6ZSgpLCBwcml2LT5zZXR0aW5ncy5kZXZpY2VQaXhl
bFJhdGlvKTsKQEAgLTQ1ODksNyArNDU4OSw3IEBAIHZvaWQgX2V3a192aWV3X2FjY2VsZXJhdGVk
X2NvbXBvc2l0aW5nX2NvbnRleHRfY3JlYXRlX2lmX25lZWRlZChFdmFzX09iamVjdCogZXdrCiAg
ICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CiAKICAgICBp
ZiAoIXByaXYtPmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0KQotICAgICAgICBwcml2LT5h
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdDb250ZXh0OjpjcmVhdGUocHJpdi0+cGFnZS0+Y2hyb21lKCkpOworICAgICAgICBwcml2
LT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dCA9IFdlYkNvcmU6OkFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0OjpjcmVhdGUoJnByaXYtPnBhZ2UtPmNocm9tZSgpKTsKIH0KIAogYm9v
bCBld2tfdmlld19hY2NlbGVyYXRlZF9jb21wb3NpdGluZ19vYmplY3RfY3JlYXRlKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFdmFzX05hdGl2ZV9TdXJmYWNlKiBuYXRpdmVTdXJmYWNlLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDY5NjBkMGIuLmJlMjJm
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0wNS0xNSAgQW5kcmVh
cyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hyb21lKCkgc2hv
dWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2
MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDEzLTA1LTEz
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWU6
OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsu
Y3BwCmluZGV4IDM3MGNkMzEuLjQxNzRhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcApA
QCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpmb3JjZVdl
YlZpZXdQYWludChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAotICAgIHN0YXRpY19jYXN0PFdlYktp
dDo6Q2hyb21lQ2xpZW50Kj4oY29yZSh3ZWJWaWV3KS0+Y2hyb21lKCktPmNsaWVudCgpKS0+Zm9y
Y2VQYWludCgpOworICAgIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4oY29yZSh3
ZWJWaWV3KS0+Y2hyb21lKCkuY2xpZW50KCkpLT5mb3JjZVBhaW50KCk7CiB9CiAKIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IGdj
aGFyKiBzb3VyY2VPcmlnaW4sIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25z
dCBnY2hhciogZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZpZXdwb3J0YXR0
cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmlld3BvcnRhdHRy
aWJ1dGVzLmNwcAppbmRleCBkZjMxMzJiLi45NzcyNDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmlld3BvcnRhdHRyaWJ1dGVzLmNwcApAQCAtNTIxLDEx
ICs1MjEsMTEgQEAgdm9pZCB3ZWJraXRWaWV3cG9ydEF0dHJpYnV0ZXNSZWNvbXB1dGUoV2ViS2l0
Vmlld3BvcnRBdHRyaWJ1dGVzKiB2aWV3cG9ydEF0dHJpYnUKICAgICBXZWJLaXRWaWV3cG9ydEF0
dHJpYnV0ZXNQcml2YXRlKiBwcml2ID0gdmlld3BvcnRBdHRyaWJ1dGVzLT5wcml2OwogICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBwcml2LT53ZWJWaWV3OwogCi0gICAgSW50UmVjdCB3aW5k
b3dSZWN0KHdlYlZpZXctPnByaXYtPmNvcmVQYWdlLT5jaHJvbWUoKS0+d2luZG93UmVjdCgpKTsK
KyAgICBJbnRSZWN0IHdpbmRvd1JlY3Qod2ViVmlldy0+cHJpdi0+Y29yZVBhZ2UtPmNocm9tZSgp
LndpbmRvd1JlY3QoKSk7CiAgICAgcHJpdi0+ZGV2aWNlV2lkdGggPSB3aW5kb3dSZWN0LndpZHRo
KCk7CiAgICAgcHJpdi0+ZGV2aWNlSGVpZ2h0ID0gd2luZG93UmVjdC5oZWlnaHQoKTsKIAotICAg
IEludFJlY3QgcmVjdCh3ZWJWaWV3LT5wcml2LT5jb3JlUGFnZS0+Y2hyb21lKCktPnBhZ2VSZWN0
KCkpOworICAgIEludFJlY3QgcmVjdCh3ZWJWaWV3LT5wcml2LT5jb3JlUGFnZS0+Y2hyb21lKCku
cGFnZVJlY3QoKSk7CiAgICAgcHJpdi0+YXZhaWxhYmxlV2lkdGggPSByZWN0LndpZHRoKCk7CiAg
ICAgcHJpdi0+YXZhaWxhYmxlSGVpZ2h0ID0gcmVjdC5oZWlnaHQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGM1ODJiNjYuLjc5MTMzYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQ3MSw3ICs0
NzEsNyBAQCBzdGF0aWMgdm9pZCBzZXRIb3Jpem9udGFsQWRqdXN0bWVudChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBHdGtBZGp1c3RtZW50KiBhZGp1cwogICAgIC8vIFRoaXMgbWF5IGJlIGNhbGxl
ZCBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGluIHdoaWNoIGNhc2Ugd2UgZG8g
bm90aGluZy4KICAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKICAgICBpZiAocGFnZSkK
LSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT5zZXRIb3Jpem9udGFsQWRqdXN0bWVu
dChhZGp1c3RtZW50KTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQq
PihwYWdlLT5jaHJvbWUoKS5jbGllbnQoKSktPmFkanVzdG1lbnRXYXRjaGVyKCktPnNldEhvcml6
b250YWxBZGp1c3RtZW50KGFkanVzdG1lbnQpOwogfQogCiBzdGF0aWMgdm9pZCBzZXRWZXJ0aWNh
bEFkanVzdG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRqdXN0bWVudCogYWRqdXN0
bWVudCkKQEAgLTQ3OSw3ICs0NzksNyBAQCBzdGF0aWMgdm9pZCBzZXRWZXJ0aWNhbEFkanVzdG1l
bnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrQWRqdXN0bWVudCogYWRqdXN0bQogICAgIC8v
IFRoaXMgbWF5IGJlIGNhbGxlZCBhZnRlciB0aGUgcGFnZSBoYXMgYmVlbiBkZXN0cm95ZWQsIGlu
IHdoaWNoIGNhc2Ugd2UgZG8gbm90aGluZy4KICAgICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3
KTsKICAgICBpZiAocGFnZSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGll
bnQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT5zZXRW
ZXJ0aWNhbEFkanVzdG1lbnQoYWRqdXN0bWVudCk7CisgICAgICAgIHN0YXRpY19jYXN0PFdlYktp
dDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLT5hZGp1c3RtZW50V2F0
Y2hlcigpLT5zZXRWZXJ0aWNhbEFkanVzdG1lbnQoYWRqdXN0bWVudCk7CiB9CiAKICNpZm5kZWYg
R1RLX0FQSV9WRVJTSU9OXzIKQEAgLTQ4Nyw3ICs0ODcsNyBAQCBzdGF0aWMgR3RrQWRqdXN0bWVu
dCogZ2V0SG9yaXpvbnRhbEFkanVzdG1lbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAg
ICBQYWdlKiBwYWdlID0gY29yZSh3ZWJWaWV3KTsKICAgICBpZiAocGFnZSkKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpKS0+YWRqdXN0bWVudFdhdGNoZXIoKS0+aG9yaXpvbnRhbEFkanVzdG1lbnQoKTsKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT5ob3Jpem9udGFsQWRqdXN0bWVu
dCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00OTUsNyArNDk1LDcgQEAgc3RhdGljIEd0a0Fk
anVzdG1lbnQqIGdldFZlcnRpY2FsQWRqdXN0bWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ewogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHdlYlZpZXcpOwogICAgIGlmIChwYWdlKQotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT52ZXJ0aWNhbEFkanVzdG1lbnQoKTsK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYktpdDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkpLT5hZGp1c3RtZW50V2F0Y2hlcigpLT52ZXJ0aWNhbEFkanVzdG1l
bnQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtODY4LDcgKzg2OCw3IEBAIHN0YXRpYyB2b2lk
IHJlc2l6ZVdlYlZpZXdGcm9tQWxsb2NhdGlvbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtB
bGxvY2F0aW9uKiBhCiAgICAgaWYgKCFzaXplQ2hhbmdlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgV2ViS2l0OjpDaHJvbWVDbGllbnQqIGNocm9tZUNsaWVudCA9IHN0YXRpY19jYXN0PFdlYktp
dDo6Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKTsKKyAgICBXZWJLaXQ6
OkNocm9tZUNsaWVudCogY2hyb21lQ2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVD
bGllbnQqPihwYWdlLT5jaHJvbWUoKS5jbGllbnQoKSk7CiAgICAgY2hyb21lQ2xpZW50LT53aWRn
ZXRTaXplQ2hhbmdlZChvbGRTaXplLCBJbnRTaXplKGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0
aW9uLT5oZWlnaHQpKTsKICAgICBjaHJvbWVDbGllbnQtPmFkanVzdG1lbnRXYXRjaGVyKCktPnVw
ZGF0ZUFkanVzdG1lbnRzRnJvbVNjcm9sbGJhcnMoKTsKIH0KQEAgLTU1MzgsNyArNTUzOCw3IEBA
IFdlYktpdFdlYlZpZXcqIGtpdChXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBBU1NFUlQoY29yZVBhZ2UtPmNocm9tZSgpKTsKLSAgICBXZWJLaXQ6OkNo
cm9tZUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihj
b3JlUGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKTsKKyAgICBXZWJLaXQ6OkNocm9tZUNsaWVudCog
Y2xpZW50ID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpDaHJvbWVDbGllbnQqPihjb3JlUGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkpOwogICAgIHJldHVybiBjbGllbnQgPyBzdGF0aWNfY2FzdDxXZWJLaXRX
ZWJWaWV3Kj4oY2xpZW50LT53ZWJWaWV3KCkpIDogMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4
IGFlNWI4ZDEuLjFjY2ExYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAx
My0wNS0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFn
ZTo6Y2hyb21lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93
ZWJraXQub3JnL2IvMTE2MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCiAyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IGEwMzU0YjQuLmVkNGE1ZWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtMjM2LDcgKzIzNiw3IEBAIFBhZ2Uq
IGNvcmUoV2ViVmlldyAqd2ViVmlldykKIAogV2ViVmlldyAqa2l0KFBhZ2UqIHBhZ2UpCiB7Ci0g
ICAgcmV0dXJuIHBhZ2UgPyBzdGF0aWNfY2FzdDxXZWJWaWV3Kj4ocGFnZS0+Y2hyb21lKCktPmNs
aWVudCgpLT53ZWJWaWV3KCkpIDogbmlsOworICAgIHJldHVybiBwYWdlID8gc3RhdGljX2Nhc3Q8
V2ViVmlldyo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLT53ZWJWaWV3KCkpIDogbmlsOwogfQog
CiBXZWJWaWV3ICpnZXRXZWJWaWV3KFdlYkZyYW1lICp3ZWJGcmFtZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IGUxNjY5ZDcuLmI2NTY2YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMzA5OCw3ICszMDk4LDcgQEAg
c3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogICAgIF9wcml2YXRlLT5o
YW5kbGluZ01vdXNlRG93bkV2ZW50ID0gWUVTOwogICAgIHBhZ2UtPmNvbnRleHRNZW51Q29udHJv
bGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAgICAgY29yZUZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+bW91c2VEb3duKGV2ZW50KTsKLSAgICBCT09MIGhhbmRsZWRFdmVudCA9IGNvcmVGcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50KFBsYXRmb3JtRXZlbnRGYWN0b3J5
OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLT5wbGF0Zm9y
bVBhZ2VDbGllbnQoKSkpOworICAgIEJPT0wgaGFuZGxlZEV2ZW50ID0gY29yZUZyYW1lLT5ldmVu
dEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNy
ZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCkucGxhdGZvcm1QYWdl
Q2xpZW50KCkpKTsKICAgICBfcHJpdmF0ZS0+aGFuZGxpbmdNb3VzZURvd25FdmVudCA9IE5POwog
CiAgICAgaWYgKCFoYW5kbGVkRXZlbnQpCkBAIC0zNDk0LDcgKzM0OTQsNyBAQCBzdGF0aWMgdm9p
ZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAgICAgICAgICAgICBpZiAoW2hpdEhUTUxW
aWV3IF9pc1NlbGVjdGlvbkV2ZW50OmV2ZW50XSkgewogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2UoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZXZl
bnRNYXlTdGFydERyYWcoUGxhdGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VF
dmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPmV2ZW50
TWF5U3RhcnREcmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZl
bnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLnBsYXRmb3JtUGFnZUNsaWVudCgpKSk7CiAjZW5kaWYK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoW2hpdEhUTUxWaWV3IF9pc1Njcm9sbEJhckV2ZW50OmV2
ZW50XSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwpAQCAtMzUyMSw3ICszNTIxLDcg
QEAgc3RhdGljIHZvaWQgc2V0TWVudVRhcmdldHMoTlNNZW51KiBtZW51KQogI2lmIEVOQUJMRShE
UkFHX1NVUFBPUlQpCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW2hp
dEhUTUxWaWV3IF9mcmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBj
b3JlRnJhbWUtPnBhZ2UoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29yZUZyYW1l
LT5ldmVudEhhbmRsZXIoKS0+ZXZlbnRNYXlTdGFydERyYWcoUGxhdGZvcm1FdmVudEZhY3Rvcnk6
OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgcGFnZS0+Y2hyb21lKCktPnBsYXRmb3Jt
UGFnZUNsaWVudCgpKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvcmVGcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmV2ZW50TWF5U3RhcnREcmFnKFBsYXRmb3JtRXZlbnRGYWN0b3J5Ojpj
cmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHBhZ2UtPmNocm9tZSgpLnBsYXRmb3JtUGFn
ZUNsaWVudCgpKSk7CiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIFtoaXRIVE1M
VmlldyBfc2V0TW91c2VEb3duRXZlbnQ6bmlsXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggNTkxYWZjZC4u
ZGE4MmU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0wNS0xNSAgQW5k
cmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hyb21lKCkg
c2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
MTE2MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDEzLTA1
LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRnJh
bWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdlYkNvcmVRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0luaXRXZWJDb3JlUXQuY3BwCmluZGV4IGVlMjQwMjMuLjBl
NDQ1MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvSW5pdFdl
YkNvcmVRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9Jbml0V2Vi
Q29yZVF0LmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgV2ViQ29yZTo6UVN0eWxlRmFjYWRl
KiBjcmVhdGVTdHlsZUZvclBhZ2UoV2ViQ29yZTo6UGFnZSogcGFnZSkKIHsKICAgICBRV2ViUGFn
ZUFkYXB0ZXIqIHBhZ2VBZGFwdGVyID0gMDsKICAgICBpZiAocGFnZSkKLSAgICAgICAgcGFnZUFk
YXB0ZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpDaHJvbWVDbGllbnRRdCo+KHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKSktPm1fd2ViUGFnZTsKKyAgICAgICAgcGFnZUFkYXB0ZXIgPSBzdGF0aWNf
Y2FzdDxXZWJDb3JlOjpDaHJvbWVDbGllbnRRdCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpKS0+
bV93ZWJQYWdlOwogICAgIHJldHVybiBpbml0Q2FsbGJhY2socGFnZUFkYXB0ZXIpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc1F0LmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzUXQuY3BwCmluZGV4IDcwYzg1MzIuLjAyZDBiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCkBA
IC0xMzcsNyArMTM3LDcgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6cmVmcmVzaFBsdWdp
bnMoKQogCiB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRQbHVnaW5JbmZvKGNvbnN0IFdl
YkNvcmU6OlBhZ2UqIHBhZ2UsIFZlY3RvcjxXZWJDb3JlOjpQbHVnaW5JbmZvPiYgb3V0UGx1Z2lu
cykKIHsKLSAgICBRV2ViUGFnZUFkYXB0ZXIqIHFQYWdlID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xp
ZW50UXQqPihwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5tX3dlYlBhZ2U7CisgICAgUVdlYlBh
Z2VBZGFwdGVyKiBxUGFnZSA9IHN0YXRpY19jYXN0PENocm9tZUNsaWVudFF0Kj4ocGFnZS0+Y2hy
b21lKCkuY2xpZW50KCkpLT5tX3dlYlBhZ2U7CiAgICAgUVdlYlBsdWdpbkZhY3RvcnkqIGZhY3Rv
cnk7CiAgICAgaWYgKHFQYWdlICYmIChmYWN0b3J5ID0gcVBhZ2UtPnBsdWdpbkZhY3RvcnkpKSB7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1l
QWRhcHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFk
YXB0ZXIuY3BwCmluZGV4IGIzYzIzOTguLjYwNTQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcApAQCAtNDQzLDcgKzQ0
Myw3IEBAIHZvaWQgUVdlYkZyYW1lQWRhcHRlcjo6cmVuZGVyQ29tcG9zaXRlZExheWVycyhXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsCiAgICAgV2ViQ29yZTo6UGFnZSogcGFnZSA9
IGZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47Ci0gICAgaWYg
KFRleHR1cmVNYXBwZXJMYXllckNsaWVudFF0KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxDaHJvbWVD
bGllbnRRdCo+KHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKSktPm1fdGV4dHVyZU1hcHBlckxheWVy
Q2xpZW50LmdldCgpKQorICAgIGlmIChUZXh0dXJlTWFwcGVyTGF5ZXJDbGllbnRRdCogY2xpZW50
ID0gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPihwYWdlLT5jaHJvbWUoKS5jbGllbnQoKSkt
Pm1fdGV4dHVyZU1hcHBlckxheWVyQ2xpZW50LmdldCgpKQogICAgICAgICBjbGllbnQtPnJlbmRl
ckNvbXBvc2l0ZWRMYXllcnMoY29udGV4dCwgY2xpcCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAppbmRleCA0
NzYwZDdmLi41YjI1NGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCkBAIC0xNjEsOSArMTYxLDkgQEAgc3RhdGljIHZvaWQg
b3Blbk5ld1dpbmRvdyhjb25zdCBRVXJsJiB1cmwsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgV2lu
ZG93RmVhdHVyZXMgZmVhdHVyZXM7CiAgICAgICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uOwog
ICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3QgPSBmcmFtZUxvYWRSZXF1ZXN0KHVybCwg
ZnJhbWUpOwotICAgICAgICBpZiAoUGFnZSogbmV3UGFnZSA9IG9sZFBhZ2UtPmNocm9tZSgpLT5j
cmVhdGVXaW5kb3coZnJhbWUsIHJlcXVlc3QsIGZlYXR1cmVzLCBhY3Rpb24pKSB7CisgICAgICAg
IGlmIChQYWdlKiBuZXdQYWdlID0gb2xkUGFnZS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KGZyYW1l
LCByZXF1ZXN0LCBmZWF0dXJlcywgYWN0aW9uKSkgewogICAgICAgICAgICAgbmV3UGFnZS0+bWFp
bkZyYW1lKCktPmxvYWRlcigpLT5sb2FkRnJhbWVSZXF1ZXN0KHJlcXVlc3QsIGZhbHNlLCBmYWxz
ZSwgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwotICAgICAgICAgICAgbmV3UGFnZS0+Y2hyb21l
KCktPnNob3coKTsKKyAgICAgICAgICAgIG5ld1BhZ2UtPmNocm9tZSgpLnNob3coKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFFXZWJQYWdlQWRhcHRlcjo6
ZGVsZXRlUGFnZSgpCiAKIFFXZWJQYWdlQWRhcHRlciogUVdlYlBhZ2VBZGFwdGVyOjpraXQoUGFn
ZSogcGFnZSkKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2hyb21lQ2xpZW50UXQqPihwYWdl
LT5jaHJvbWUoKS0+Y2xpZW50KCkpLT5tX3dlYlBhZ2U7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PENocm9tZUNsaWVudFF0Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLT5tX3dlYlBhZ2U7CiB9
CiAKIFZpZXdwb3J0QXJndW1lbnRzIFFXZWJQYWdlQWRhcHRlcjo6dmlld3BvcnRBcmd1bWVudHMo
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDBkNmExYmIuLjRjN2NmYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAxMy0wNS0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgUGFnZTo6Y2hyb21lKCkgc2hvdWxkIHJldHVybiBhIHJl
ZmVyZW5jZS4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2MTg1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3Vs
ZCByZXR1cm4gYSByZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKaW5kZXggYzE4YmE3Ni4uNTcy
MmMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTE5OSw3ICsxOTksNyBAQCBzdGF0aWMgU3Ry
aW5nIHdlYktpdFZlcnNpb25TdHJpbmcoKTsKIAogV2ViVmlldyoga2l0KFBhZ2UqIHBhZ2UpCiB7
Ci0gICAgcmV0dXJuIHBhZ2UgPyBzdGF0aWNfY2FzdDxXZWJWaWV3Kj4oc3RhdGljX2Nhc3Q8V2Vi
Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCktPmNsaWVudCgpKS0+d2ViVmlldygpKSA6IDA7
CisgICAgcmV0dXJuIHBhZ2UgPyBzdGF0aWNfY2FzdDxXZWJWaWV3Kj4oc3RhdGljX2Nhc3Q8V2Vi
Q2hyb21lQ2xpZW50Kj4ocGFnZS0+Y2hyb21lKCkuY2xpZW50KCkpLT53ZWJWaWV3KCkpIDogMDsK
IH0KIAogc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgdG9BdG9taWNTdHJpbmcoQlNUUiBic3Ry
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDQ2NDc4N2QuLmQyNTY2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MCBAQAorMjAxMy0wNS0xNSAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgUGFnZTo6Y2hyb21lKCkgc2hvdWxkIHJldHVybiBhIHJlZmVyZW5jZS4KKyAgICAgICAg
PGh0dHA6Ly93ZWJraXQub3JnL2IvMTE2MTg1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCiAyMDEzLTA1LTEzICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRnJhbWU6OmVkaXRvcigpIHNob3VsZCByZXR1cm4gYSByZWZlcmVu
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvU2lt
cGxlUERGUGx1Z2luLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9T
aW1wbGVQREZQbHVnaW4ubW0KaW5kZXggOGQ1NmZkNS4uODZkZWUzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4ubW0KKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9TaW1wbGVQREZQbHVnaW4u
bW0KQEAgLTMyNCw3ICszMjQsNyBAQCBKU1ZhbHVlUmVmIFNpbXBsZVBERlBsdWdpbjo6anNQREZE
b2NQcmludChKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBmdW5jdGlvbgogICAgIGlmICgh
cGFnZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CiAgICAgCi0g
ICAgcGFnZS0+Y2hyb21lKCktPnByaW50KGNvcmVGcmFtZSk7CisgICAgcGFnZS0+Y2hyb21lKCku
cHJpbnQoY29yZUZyYW1lKTsKICAgICAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y3R4KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAppbmRleCBjZmU5YWRjLi41NmVhYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0xMzY3LDcgKzEzNjcsNyBAQCB2
b2lkIFBsdWdpblZpZXc6OnNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNiYXJU
ZXh0KQogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGFnZS0+Y2hyb21l
KCktPnNldFN0YXR1c2JhclRleHQoZnJhbWUoKSwgc3RhdHVzYmFyVGV4dCk7CisgICAgcGFnZS0+
Y2hyb21lKCkuc2V0U3RhdHVzYmFyVGV4dChmcmFtZSgpLCBzdGF0dXNiYXJUZXh0KTsKIH0KIAog
Ym9vbCBQbHVnaW5WaWV3Ojppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggMWM4MzM1Ny4uNDAxNjU0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTU5Niw3ICs1OTYsNyBAQCBGcmFtZSog
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEp1c3QgY2FsbCB0
aHJvdWdoIHRvIHRoZSBjaHJvbWUgY2xpZW50LgotICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdl
LT5jb3JlUGFnZSgpLT5jaHJvbWUoKS0+Y3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgp
LCBGcmFtZUxvYWRSZXF1ZXN0KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpKSwgV2luZG93RmVhdHVyZXMoKSwgbmF2aWdhdGlvbkFjdGlvbik7CisgICAg
UGFnZSogbmV3UGFnZSA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLmNyZWF0ZVdpbmRv
dyhtX2ZyYW1lLT5jb3JlRnJhbWUoKSwgRnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSksIFdpbmRvd0ZlYXR1cmVzKCksIG5h
dmlnYXRpb25BY3Rpb24pOwogICAgIGlmICghbmV3UGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggZjAxZDVjYS4uNzQ3MGRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMTAyNCw3ICsxMDI0LDcgQEAgdm9pZCBXZWJQYWdlOjpsYXlv
dXRJZk5lZWRlZCgpCiAKIFdlYlBhZ2UqIFdlYlBhZ2U6OmZyb21Db3JlUGFnZShQYWdlKiBwYWdl
KQogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJDaHJvbWVDbGllbnQqPihwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCkpLT5wYWdlKCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNocm9t
ZUNsaWVudCo+KHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpKS0+cGFnZSgpOwogfQogCiB2b2lkIFdl
YlBhZ2U6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgdmlld1NpemUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>