<?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>52624</bug_id>
          
          <creation_ts>2011-01-18 05:45:32 -0800</creation_ts>
          <short_desc>Web Inspector: [Chromium] Prepare for landing of detailed heap snapshots</short_desc>
          <delta_ts>2011-03-02 02:21:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>50510</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>335786</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-01-18 05:45:32 -0800</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=50510

Introduce Preferences.detailedHeapProfiles flag for controlling querying of detailed heap snapshots.
Add boilerplate code for the new view.
Factor out common code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335788</commentid>
    <comment_count>1</comment_count>
      <attachid>79271</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-01-18 05:49:19 -0800</bug_when>
    <thetext>Created attachment 79271
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339555</commentid>
    <comment_count>2</comment_count>
      <attachid>80037</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-01-25 02:24:20 -0800</bug_when>
    <thetext>Created attachment 80037
rebaselined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339583</commentid>
    <comment_count>3</comment_count>
      <attachid>80037</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-01-25 04:12:43 -0800</bug_when>
    <thetext>Comment on attachment 80037
rebaselined

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

A bunch of nits, otherwise looks good.

&gt; Source/WebCore/bindings/js/ScriptProfiler.h:41
&gt; +    class HeapSnapshotControl {

HeapSnapshotProgress:
start(totalWork)
worked(workDone)
done()
bool isCanceled()

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:42
&gt; +    get statusBarItems()

why do you need this?

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:59
&gt; +        WebInspector.View.prototype.show.call(this, parentElement);

why do you need this?

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:64
&gt; +        WebInspector.View.prototype.hide.call(this);

why do you need this?

&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:65
&gt; +    },

no trailing coma

&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:46
&gt; +        return this._getType() === this._snapshot._edgeElementType;

No &quot;get&quot; prefixes in WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339604</commentid>
    <comment_count>4</comment_count>
      <attachid>80037</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-01-25 05:17:32 -0800</bug_when>
    <thetext>Comment on attachment 80037
rebaselined

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

&gt;&gt; Source/WebCore/bindings/js/ScriptProfiler.h:41
&gt;&gt; +    class HeapSnapshotControl {
&gt; 
&gt; HeapSnapshotProgress:
&gt; start(totalWork)
&gt; worked(workDone)
&gt; done()
&gt; bool isCanceled()

This is also a control interface -- when progress is reported it&apos;s possible to cancel job. So I made &apos;worked&apos; to accept cancellation flag, and &apos;isCancelled&apos; isn&apos;t needed.

&gt;&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:42
&gt;&gt; +    get statusBarItems()
&gt; 
&gt; why do you need this?

Removed. ProfilesPanel required statusBarItems to be defined, I fixed this.

&gt;&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:59
&gt;&gt; +        WebInspector.View.prototype.show.call(this, parentElement);
&gt; 
&gt; why do you need this?

Removed.

&gt;&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:64
&gt;&gt; +        WebInspector.View.prototype.hide.call(this);
&gt; 
&gt; why do you need this?

Removed.

&gt;&gt; Source/WebCore/inspector/front-end/DetailedHeapshotView.js:65
&gt;&gt; +    },
&gt; 
&gt; no trailing coma

Fixed.

&gt;&gt; Source/WebCore/inspector/front-end/HeapSnapshot.js:46
&gt;&gt; +        return this._getType() === this._snapshot._edgeElementType;
&gt; 
&gt; No &quot;get&quot; prefixes in WebCore.

Fixed all such issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339605</commentid>
    <comment_count>5</comment_count>
      <attachid>80050</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-01-25 05:18:41 -0800</bug_when>
    <thetext>Created attachment 80050
comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339606</commentid>
    <comment_count>6</comment_count>
      <attachid>80051</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-01-25 05:30:18 -0800</bug_when>
    <thetext>Created attachment 80051
added isCanceled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340280</commentid>
    <comment_count>7</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2011-01-26 08:40:56 -0800</bug_when>
    <thetext>Manually committed as http://trac.webkit.org/changeset/76597


    2011-01-25  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;
    
            Reviewed by Pavel Feldman.
    
            Web Inspector: [Chromium] Prepare for landing of detailed heap snapshots.
    
            - Introduce Preferences.detailedHeapProfiles flag for controlling
              querying of detailed heap snapshots.
            - Add boilerplate code for the new view.
            - Factor out common code.
    
            https://bugs.webkit.org/show_bug.cgi?id=52624
    
            * WebCore.gypi:
            * WebCore.vcproj/WebCore.vcproj:
            * bindings/js/ScriptProfiler.h:
            (WebCore::ScriptProfiler::HeapSnapshotControl::~HeapSnapshotControl):
            (WebCore::ScriptProfiler::takeHeapSnapshot):
            * bindings/v8/ScriptProfiler.cpp:
            (WebCore::ScriptProfiler::takeHeapSnapshot):
            * bindings/v8/ScriptProfiler.h:
            (WebCore::ScriptProfiler::HeapSnapshotControl::~HeapSnapshotControl):
            * inspector/Inspector.idl:
            * inspector/InspectorProfilerAgent.cpp:
            (WebCore::InspectorProfilerAgent::takeHeapSnapshot):
            * inspector/InspectorProfilerAgent.h:
            * inspector/front-end/DetailedHeapshotView.js: Added.
            (WebInspector.DetailedHeapshotView):
            (WebInspector.DetailedHeapshotView.prototype.get statusBarItems):
            (WebInspector.DetailedHeapshotView.prototype.get profile):
            (WebInspector.DetailedHeapshotView.prototype.set profile):
            (WebInspector.DetailedHeapshotView.prototype.show):
            (WebInspector.DetailedHeapshotView.prototype.hide):
            (WebInspector.DetailedHeapshotProfileType):
            (WebInspector.DetailedHeapshotProfileType.prototype.get buttonTooltip):
            (WebInspector.DetailedHeapshotProfileType.prototype.get buttonStyle):
            (WebInspector.DetailedHeapshotProfileType.prototype.buttonClicked):
            (WebInspector.DetailedHeapshotProfileType.prototype.get welcomeMessage):
            (WebInspector.DetailedHeapshotProfileType.prototype.createSidebarTreeElementForProfile):
            (WebInspector.DetailedHeapshotProfileType.prototype.createView):
            * inspector/front-end/HeapSnapshot.js: Added.
            (WebInspector.HeapSnapshotEdgesIterator):
            (WebInspector.HeapSnapshotEdgesIterator.prototype.get done):
            (WebInspector.HeapSnapshotEdgesIterator.prototype.get isElement):
            (WebInspector.HeapSnapshotEdgesIterator.prototype.get isHidden):
            (WebInspector.HeapSnapshotEdgesIterator.prototype.get name):
            (WebInspector.HeapSnapshotEdgesIterator.prototype.next):
            (WebInspector.HeapSnapshotEdgesIterator.prototype.get node):
            (WebInspector.HeapSnapshotEdgesIterator.prototype.get nodeIndex):
            (WebInspector.HeapSnapshotEdgesIterator.prototype._getNameOrIndex):
            (WebInspector.HeapSnapshotEdgesIterator.prototype._getType):
            (WebInspector.HeapSnapshotNodeWrapper):
            (WebInspector.HeapSnapshotNodeWrapper.prototype.get edges):
            (WebInspector.HeapSnapshotNodeWrapper.prototype.get edgesCount):
            (WebInspector.HeapSnapshotNodeWrapper.prototype.get instancesCount):
            (WebInspector.HeapSnapshotNodeWrapper.prototype.get isHidden):
            (WebInspector.HeapSnapshotNodeWrapper.prototype.get name):
            (WebInspector.HeapSnapshotNodeWrapper.prototype.get selfSize):
            (WebInspector.HeapSnapshotNodeWrapper.prototype._getName):
            (WebInspector.HeapSnapshotNodeWrapper.prototype._getEdges):
            (WebInspector.HeapSnapshotNodeWrapper.prototype._getType):
            (WebInspector.HeapSnapshot):
            (WebInspector.HeapSnapshot.prototype._init):
            (WebInspector.HeapSnapshot.prototype.get rootEdges):
            * inspector/front-end/HeapSnapshotView.js:
            (WebInspector.HeapSnapshotProfileType.prototype.buttonClicked):
            * inspector/front-end/ProfilesPanel.js:
            (WebInspector.ProfilesPanel.prototype._setRecordingProfile):
            (WebInspector.ProfilesPanel.prototype._reportHeapSnapshotProgress):
            (WebInspector.ProfilerDispatcher.prototype.setRecordingProfile):
            (WebInspector.ProfilerDispatcher.prototype.reportHeapSnapshotProgress):
            * inspector/front-end/Settings.js:
            * inspector/front-end/WebKit.qrc:
            * inspector/front-end/inspector.html:
            * inspector/front-end/inspector.js:
            (WebInspector._createPanels):
            * src/js/DevTools.js:
            ():</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79271</attachid>
            <date>2011-01-18 05:49:19 -0800</date>
            <delta_ts>2011-01-25 02:24:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch-52624</filename>
            <type>text/plain</type>
            <size>34064</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MWExY2MzLi45MjAyNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAg
QEAKKzIwMTEtMDEtMTggIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbQ2hyb21pdW1dIFByZXBhcmUgZm9yIGxhbmRpbmcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuCisKKyAgICAgICAgLSBJbnRyb2R1Y2UgUHJlZmVyZW5jZXMuZGV0YWlsZWRIZWFw
UHJvZmlsZXMgZmxhZyBmb3IgY29udHJvbGxpbmcKKyAgICAgICAgICBxdWVyeWluZyBvZiBkZXRh
aWxlZCBoZWFwIHNuYXBzaG90cy4KKyAgICAgICAgLSBBZGQgYm9pbGVycGxhdGUgY29kZSBmb3Ig
dGhlIG5ldyB2aWV3LgorICAgICAgICAtIEZhY3RvciBvdXQgY29tbW9uIGNvZGUuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjI0CisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFByb2ZpbGVyOjpIZWFwU25hcHNob3RDb250cm9sOjp+SGVhcFNuYXBzaG90
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFw
c2hvdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQ
cm9maWxlcjo6SGVhcFNuYXBzaG90Q29udHJvbDo6fkhlYXBTbmFwc2hvdENvbnRyb2wpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxl
ZEhlYXBzaG90Vmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5nZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLnNldCBwcm9maWxlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLmhp
ZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlLnByb3Rv
dHlwZS5nZXQgYnV0dG9uVG9vbHRpcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9u
Q2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVU
eXBlLnByb3RvdHlwZS5nZXQgd2VsY29tZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuY3JlYXRlU2lkZWJhclRyZWVF
bGVtZW50Rm9yUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hv
dFByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IGRvbmUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBpc0VsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90
eXBlLmdldCBpc0hpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRn
ZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLm5leHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBub2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yLnByb3RvdHlwZS5n
ZXQgbm9kZUluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0
ZXJhdG9yLnByb3RvdHlwZS5fZ2V0TmFtZU9ySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBlZGdlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBl
ZGdlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBl
ci5wcm90b3R5cGUuZ2V0IGluc3RhbmNlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IGlzSGlkZGVuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IG5hbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyLnByb3RvdHlw
ZS5nZXQgc2VsZlNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVX
cmFwcGVyLnByb3RvdHlwZS5fZ2V0TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRFZGdlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuZ2V0IHJvb3RFZGdlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3NldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9yZXBvcnRIZWFwU25hcHNo
b3RQcm9ncmVzcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnBy
b3RvdHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVQYW5lbHMpOgorCiAgMjAxMS0wMS0x
OCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGF2ZSBIeWF0dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyNjI0MGIzLi45ZjE3ZTVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC00NjI1LDYgKzQ2MjUsNyBAQAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvRGF0YUdyaWQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRGVidWdnZXJNb2RlbC5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9E
ZXRhaWxlZEhlYXBzaG90Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01BZ2VudC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9y
YWdlLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVt
c1ZpZXcuanMnLApAQCAtNDY0Myw2ICs0NjQ0LDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZvbnRWaWV3LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0dvVG9MaW5lRGlhbG9nLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hB
UkVudHJ5LmpzJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hv
dC5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RWaWV3
LmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0hlbHBTY3JlZW4uanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VWaWV3LmpzJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYjc5MDQ3Mi4uMzQ4
YjJjYyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTY1MzY1LDYgKzY1MzY1LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXERldGFpbGVkSGVhcHNo
b3RWaWV3LmpzIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxET01BZ2VudC5qcyIKIAkJCQkJPgogCQkJCTwv
RmlsZT4KQEAgLTY1NDQ1LDYgKzY1NDQ5LDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEhlYXBTbmFw
c2hvdC5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcSGVhcFNuYXBzaG90Vmlldy5qcyIKIAkJCQkJPgog
CQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dFByb2ZpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5o
CmluZGV4IDA1ZTdhMjUuLjkzY2RlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0UHJvZmlsZXIuaApAQCAtMzgsOSArMzgsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTY3JpcHRQcm9maWxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Cisg
ICAgY2xhc3MgSGVhcFNuYXBzaG90Q29udHJvbCB7CisgICAgcHVibGljOgorICAgICAgICBlbnVt
IENvbnRyb2xPcHRpb24geworICAgICAgICAgICAga0NvbnRpbnVlLAorICAgICAgICAgICAga0Fi
b3J0CisgICAgICAgIH07CisgICAgICAgIHZpcnR1YWwgfkhlYXBTbmFwc2hvdENvbnRyb2woKSB7
IH0KKyAgICAgICAgdmlydHVhbCBDb250cm9sT3B0aW9uIFJlcG9ydFByb2dyZXNzVmFsdWUoaW50
IGRvbmUsIGludCB0b3RhbCkgPSAwOworICAgIH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydChT
Y3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJp
bmcmIHRpdGxlKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHRh
a2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJikgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4gdGFrZUhlYXBTbmFwc2hvdChjb25zdCBTdHJp
bmcmLCBIZWFwU25hcHNob3RDb250cm9sKikgeyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29s
IGlzUHJvZmlsZXJBbHdheXNFbmFibGVkKCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKaW5kZXggMDJkZWExNC4uZmE1ZmE3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogCiAjaW5jbHVkZSA8djgtcHJvZmlsZXIuaD4KICNpbmNsdWRlIDxWOEJpbmRpbmcu
aD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTUzLDEwICs1NCwzOSBAQCBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2Zp
bGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBw
cm9maWxlID8gU2NyaXB0UHJvZmlsZTo6Y3JlYXRlKHByb2ZpbGUpIDogMDsKIH0KIAotUGFzc1Jl
ZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IFNjcmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90
KGNvbnN0IFN0cmluZyYgdGl0bGUpCituYW1lc3BhY2UgeworCitjbGFzcyBBY3Rpdml0eUNvbnRy
b2xBZGFwdGVyIDogcHVibGljIHY4OjpBY3Rpdml0eUNvbnRyb2wgeworcHVibGljOgorICAgIEFj
dGl2aXR5Q29udHJvbEFkYXB0ZXIoU2NyaXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdENvbnRyb2wq
IGNvbnRyb2wpCisgICAgICAgIDogbV9jb250cm9sKGNvbnRyb2wpIHsgfQorICAgIENvbnRyb2xP
cHRpb24gUmVwb3J0UHJvZ3Jlc3NWYWx1ZShpbnQgZG9uZSwgaW50IHRvdGFsKQorICAgIHsKKyAg
ICAgICAgc3dpdGNoIChtX2NvbnRyb2wtPlJlcG9ydFByb2dyZXNzVmFsdWUoZG9uZSwgdG90YWwp
KSB7CisgICAgICAgIGNhc2UgU2NyaXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdENvbnRyb2w6OmtD
b250aW51ZToKKyAgICAgICAgICAgIHJldHVybiBrQ29udGludWU7CisgICAgICAgIGNhc2UgU2Ny
aXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdENvbnRyb2w6OmtBYm9ydDoKKyAgICAgICAgICAgIHJl
dHVybiBrQWJvcnQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4ga0NvbnRpbnVlOworICAgIH0KK3By
aXZhdGU6CisgICAgU2NyaXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdENvbnRyb2wqIG1fY29udHJv
bDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKK1Bhc3NSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90
PiBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdChjb25zdCBTdHJpbmcmIHRpdGxlLCBI
ZWFwU25hcHNob3RDb250cm9sKiBjb250cm9sKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoczsK
LSAgICBjb25zdCB2ODo6SGVhcFNuYXBzaG90KiBzbmFwc2hvdCA9IHY4OjpIZWFwUHJvZmlsZXI6
OlRha2VTbmFwc2hvdCh2OFN0cmluZyh0aXRsZSksIHY4OjpIZWFwU25hcHNob3Q6OmtBZ2dyZWdh
dGVkKTsKKyAgICBjb25zdCB2ODo6SGVhcFNuYXBzaG90KiBzbmFwc2hvdCA9IDA7CisgICAgaWYg
KGNvbnRyb2wpIHsKKyAgICAgICAgQWN0aXZpdHlDb250cm9sQWRhcHRlciBhZGFwdGVyKGNvbnRy
b2wpOworICAgICAgICBzbmFwc2hvdCA9IHY4OjpIZWFwUHJvZmlsZXI6OlRha2VTbmFwc2hvdCh2
OFN0cmluZyh0aXRsZSksIHY4OjpIZWFwU25hcHNob3Q6OmtGdWxsLCAmYWRhcHRlcik7CisgICAg
fSBlbHNlCisgICAgICAgIHNuYXBzaG90ID0gdjg6OkhlYXBQcm9maWxlcjo6VGFrZVNuYXBzaG90
KHY4U3RyaW5nKHRpdGxlKSwgdjg6OkhlYXBTbmFwc2hvdDo6a0FnZ3JlZ2F0ZWQpOwogICAgIHJl
dHVybiBzbmFwc2hvdCA/IFNjcmlwdEhlYXBTbmFwc2hvdDo6Y3JlYXRlKHNuYXBzaG90KSA6IDA7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2Zp
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCmluZGV4
IGI3NWEwNTQuLjZlMDM2NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0
UHJvZmlsZXIuaApAQCAtNDQsOSArNDQsMTkgQEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogCiBj
bGFzcyBTY3JpcHRQcm9maWxlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6CisgICAg
Y2xhc3MgSGVhcFNuYXBzaG90Q29udHJvbCB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIENv
bnRyb2xPcHRpb24geworICAgICAgICAgICAga0NvbnRpbnVlLAorICAgICAgICAgICAga0Fib3J0
CisgICAgICAgIH07CisgICAgICAgIHZpcnR1YWwgfkhlYXBTbmFwc2hvdENvbnRyb2woKSB7IH0K
KyAgICAgICAgdmlydHVhbCBDb250cm9sT3B0aW9uIFJlcG9ydFByb2dyZXNzVmFsdWUoaW50IGRv
bmUsIGludCB0b3RhbCkgPSAwOworICAgIH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydChTY3Jp
cHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcm
IHRpdGxlKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHRha2VI
ZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
U2NyaXB0SGVhcFNuYXBzaG90PiB0YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0cmluZyYgdGl0bGUs
IEhlYXBTbmFwc2hvdENvbnRyb2wqKTsKICAgICBzdGF0aWMgYm9vbCBpc1Byb2ZpbGVyQWx3YXlz
RW5hYmxlZCgpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlkbAppbmRl
eCA2YzJjYzJlLi45OGVkZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmlk
bApAQCAtMjgzLDEyICsyODMsMTMgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbZG9tYWluPVBy
b2ZpbGVyXSB2b2lkIGNsZWFyUHJvZmlsZXMoKTsKIAogICAgICAgICAvLyBGSVhNRTogc3BsaXQg
aW50byBQcm9maWxlciBhbmQgSGVhcFByb2ZpbGVyLgotICAgICAgICBbZG9tYWluPVByb2ZpbGVy
XSB2b2lkIHRha2VIZWFwU25hcHNob3QoKTsKKyAgICAgICAgW2RvbWFpbj1Qcm9maWxlcl0gdm9p
ZCB0YWtlSGVhcFNuYXBzaG90KGluIGJvb2xlYW4gZGV0YWlsZWQpOwogICAgICAgICBbbm90aWZ5
LCBkb21haW49UHJvZmlsZXJdIHZvaWQgYWRkUHJvZmlsZUhlYWRlcihvdXQgT2JqZWN0IGhlYWRl
cik7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1Qcm9maWxlcl0gdm9pZCBhZGRIZWFwU25hcHNo
b3RDaHVuayhvdXQgdW5zaWduZWQgbG9uZyB1aWQsIG91dCBTdHJpbmcgY2h1bmspOwogICAgICAg
ICBbbm90aWZ5LCBkb21haW49UHJvZmlsZXJdIHZvaWQgZmluaXNoSGVhcFNuYXBzaG90KG91dCB1
bnNpZ25lZCBsb25nIHVpZCk7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1Qcm9maWxlcl0gdm9p
ZCBzZXRSZWNvcmRpbmdQcm9maWxlKG91dCBib29sZWFuIGlzUHJvZmlsaW5nKTsKICAgICAgICAg
W25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIHJlc2V0UHJvZmlsZXMoKTsKKyAgICAgICAg
W25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIHJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNz
KG91dCBpbnQgZG9uZSwgb3V0IGludCB0b3RhbCk7CiAKICNlbmRpZiAvLyBFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUgogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggZGE5YjY3ZC4uMGNjNzRkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNw
cApAQCAtMjU4LDEyICsyNTgsMzEgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9w
VXNlckluaXRpYXRlZFByb2ZpbGluZyhib29sIGlnbm9yZVByb2ZpbGUpCiAgICAgdG9nZ2xlUmVj
b3JkQnV0dG9uKGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtl
SGVhcFNuYXBzaG90KCkKK25hbWVzcGFjZSB7CisKK2NsYXNzIEhlYXBTbmFwc2hvdENvbnRyb2w6
IHB1YmxpYyBTY3JpcHRQcm9maWxlcjo6SGVhcFNuYXBzaG90Q29udHJvbCB7CitwdWJsaWM6Cisg
ICAgZXhwbGljaXQgSGVhcFNuYXBzaG90Q29udHJvbChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRl
bmQpCisgICAgICAgIDogbV9mcm9udGVuZChmcm9udGVuZCkgeyB9CisgICAgQ29udHJvbE9wdGlv
biBSZXBvcnRQcm9ncmVzc1ZhbHVlKGludCBkb25lLCBpbnQgdG90YWwpCisgICAgeworICAgICAg
ICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlcG9ydEhlYXBTbmFw
c2hvdFByb2dyZXNzKGRvbmUsIHRvdGFsKTsKKyAgICAgICAgcmV0dXJuIGtDb250aW51ZTsKKyAg
ICB9Citwcml2YXRlOgorICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOworfTsKKwor
fTsKKwordm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KGJvb2wg
ZGV0YWlsZWQpCiB7CiAgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVk
UHJvZmlsZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9uZXh0VXNlckluaXRpYXRlZEhlYXBT
bmFwc2hvdE51bWJlcikpOwogICAgICsrbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51
bWJlcjsKIAotICAgIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gU2NyaXB0
UHJvZmlsZXI6OnRha2VIZWFwU25hcHNob3QodGl0bGUpOworICAgIEhlYXBTbmFwc2hvdENvbnRy
b2wgY29udHJvbChtX2Zyb250ZW5kKTsKKyAgICBSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBz
bmFwc2hvdCA9IFNjcmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90KHRpdGxlLCBkZXRhaWxl
ZCA/ICZjb250cm9sIDogMCk7CiAgICAgaWYgKHNuYXBzaG90KSB7CiAgICAgICAgIG1fc25hcHNo
b3RzLmFkZChzbmFwc2hvdC0+dWlkKCksIHNuYXBzaG90KTsKICAgICAgICAgaWYgKG1fZnJvbnRl
bmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuaAppbmRleCBlNjc4NDhkLi5hZDhkYzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKSB7IG1f
ZnJvbnRlbmQgPSBmcm9udGVuZDsgfQogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmls
aW5nKCk7CiAgICAgdm9pZCBzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyhib29sIGlnbm9yZVBy
b2ZpbGUgPSBmYWxzZSk7Ci0gICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KCk7CisgICAgdm9pZCB0
YWtlSGVhcFNuYXBzaG90KGJvb2wgZGV0YWlsZWQpOwogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0
dG9uKGJvb2wgaXNQcm9maWxpbmcpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI5ZmE0MwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZp
ZXcuanMKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcg
PSBmdW5jdGlvbihwYXJlbnQsIHByb2ZpbGUpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2Fs
bCh0aGlzKTsKKworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoZWFwLXNuYXBzaG90
LXZpZXciKTsKKworICAgIHRoaXMucGFyZW50ID0gcGFyZW50OworICAgIHRoaXMucHJvZmlsZSA9
IHByb2ZpbGU7Cit9CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5
cGUgPSB7CisgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBb
XTsKKyAgICB9LAorCisgICAgZ2V0IHByb2ZpbGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX3Byb2ZpbGU7CisgICAgfSwKKworICAgIHNldCBwcm9maWxlKHByb2ZpbGUpCisgICAgewor
ICAgICAgICB0aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKKyAgICB9LAorCisgICAgc2hvdzogZnVu
Y3Rpb24ocGFyZW50RWxlbWVudCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnBy
b3RvdHlwZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7CisgICAgfSwKKworICAgIGhp
ZGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZS5oaWRlLmNhbGwodGhpcyk7CisgICAgfSwKK307CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhl
YXBzaG90Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90
eXBlOworCitXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlID0gZnVuY3Rp
b24oKQoreworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3Bl
Y3Rvci5IZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSEVBUCBTTkFQU0hPVFMiKSk7Cit9CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90
UHJvZmlsZVR5cGUucHJvdG90eXBlID0geworICAgIGdldCBidXR0b25Ub29sdGlwKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgaGVhcCBzbmFwc2hv
dC4iKTsKKyAgICB9LAorCisgICAgZ2V0IGJ1dHRvblN0eWxlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAiaGVhcC1zbmFwc2hvdC1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIjsKKyAg
ICB9LAorCisgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC50YWtlSGVhcFNuYXBzaG90KHRydWUpOworICAgIH0sCisKKyAgICBnZXQg
d2VsY29tZU1lc3NhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiR2V0IGEgaGVhcCBzbmFwc2hvdCBieSBwcmVzc2luZyB0aGUgJXMgYnV0dG9uIG9uIHRo
ZSBzdGF0dXMgYmFyLiIpOworICAgIH0sCisKKyAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRG
b3JQcm9maWxlOiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuUHJvZmlsZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNuYXBzaG90ICVkIiksICJoZWFwLXNuYXBzaG90LXNpZGViYXItdHJlZS1p
dGVtIik7CisgICAgfSwKKworICAgIGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAg
eworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90VmlldyhX
ZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLCBwcm9maWxlKTsKKyAgICB9Cit9CisKK1dlYklu
c3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjAxYmQ1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwpAQCAtMCwwICsxLDE3OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
K1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yID0gZnVuY3Rpb24oc25hcHNo
b3QsIGVkZ2VzKQoreworICAgIHRoaXMuX3NuYXBzaG90ID0gc25hcHNob3Q7CisgICAgdGhpcy5f
ZWRnZXMgPSBlZGdlczsKKyAgICB0aGlzLl9lZGdlSW5kZXggPSAwOworfQorCitXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvci5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGRvbmUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VJbmRleCA+PSB0aGlzLl9lZGdlcy5s
ZW5ndGg7CisgICAgfSwKKworICAgIGdldCBpc0VsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuX2dldFR5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VFbGVtZW50VHlwZTsK
KyAgICB9LAorCisgICAgZ2V0IGlzSGlkZGVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9nZXRUeXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlSGlkZGVuVHlwZTsKKyAgICB9LAor
CisgICAgZ2V0IG5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNFbGVtZW50IHx8
IHRoaXMuaXNIaWRkZW4gPyB0aGlzLl9nZXROYW1lT3JJbmRleCgpIDogdGhpcy5fc25hcHNob3Qu
X3N0cmluZ3NbdGhpcy5fZ2V0TmFtZU9ySW5kZXgoKV07CisgICAgfSwKKworICAgIG5leHQ6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2VkZ2VJbmRleCArPSB0aGlzLl9zbmFwc2hv
dC5fZWRnZUZpZWxkc0NvdW50OworICAgIH0sCisKKyAgICBnZXQgbm9kZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcih0aGlz
Ll9zbmFwc2hvdCwgdGhpcy5ub2RlSW5kZXgpOworICAgIH0sCisKKyAgICBnZXQgbm9kZUluZGV4
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0aGlzLl9lZGdlSW5kZXggKyB0
aGlzLl9zbmFwc2hvdC5fZWRnZVRvTm9kZU9mZnNldF07CisgICAgfSwKKworICAgIF9nZXROYW1l
T3JJbmRleDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VzW3Ro
aXMuX2VkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlTmFtZU9mZnNldF07CisgICAgfSwK
KworICAgIF9nZXRUeXBlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5f
ZWRnZXNbdGhpcy5fZWRnZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2VUeXBlT2Zmc2V0XTsK
KyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIgPSBmdW5j
dGlvbihzbmFwc2hvdCwgbm9kZUluZGV4KQoreworICAgIHRoaXMuX3NuYXBzaG90ID0gc25hcHNo
b3Q7CisgICAgdGhpcy5fbm9kZXMgPSBzbmFwc2hvdC5fbm9kZXM7CisgICAgdGhpcy5fbm9kZUlu
ZGV4ID0gbm9kZUluZGV4OworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBw
ZXIucHJvdG90eXBlID0geworICAgIGdldCBlZGdlcygpCisgICAgeworICAgICAgICByZXR1cm4g
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yKHRoaXMuX3NuYXBzaG90
LCB0aGlzLl9nZXRFZGdlcygpKTsKKyAgICB9LAorCisgICAgZ2V0IGVkZ2VzQ291bnQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3Nu
YXBzaG90Ll9lZGdlc0NvdW50T2Zmc2V0XTsKKyAgICB9LAorCisgICAgZ2V0IGluc3RhbmNlc0Nv
dW50KCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9ub2RlSW5kZXgg
KyB0aGlzLl9zbmFwc2hvdC5fbm9kZUluc3RhbmNlc0NvdW50T2Zmc2V0XTsKKyAgICB9LAorCisg
ICAgZ2V0IGlzSGlkZGVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRUeXBlKCkg
PT09IHRoaXMuX3NuYXBzaG90Ll9ub2RlSGlkZGVuVHlwZTsKKyAgICB9LAorCisgICAgZ2V0IG5h
bWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90Ll9zdHJpbmdzW3RoaXMu
X2dldE5hbWUoKV07CisgICAgfSwKKworICAgIGdldCBzZWxmU2l6ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25v
ZGVTZWxmU2l6ZU9mZnNldF07IAorICAgIH0sCisKKyAgICBfZ2V0TmFtZTogZnVuY3Rpb24oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMu
X3NuYXBzaG90Ll9ub2RlTmFtZU9mZnNldF07IAorICAgIH0sCisKKyAgICBfZ2V0RWRnZXM6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleCA9IHRoaXMuX25vZGVJ
bmRleCArIHRoaXMuX3NuYXBzaG90Ll9maXJzdEVkZ2VPZmZzZXQ7CisgICAgICAgIHJldHVybiB0
aGlzLl9ub2Rlcy5zbGljZShmaXJzdEVkZ2VJbmRleCwgZmlyc3RFZGdlSW5kZXggKyB0aGlzLmVk
Z2VzQ291bnQgKiB0aGlzLl9zbmFwc2hvdC5fZWRnZUZpZWxkc0NvdW50KTsKKyAgICB9LAorCisg
ICAgX2dldFR5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ub2Rl
c1t0aGlzLl9ub2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZVR5cGVPZmZzZXRdOworICAg
IH0KK307CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3QgPSBmdW5jdGlvbihwcm9maWxlKQor
eworICAgIHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOworICAgIHRoaXMuX25vZGVzID0gcHJvZmls
ZS5ub2RlczsKKyAgICB0aGlzLl9zdHJpbmdzID0gcHJvZmlsZS5zdHJpbmdzOworCisgICAgdGhp
cy5faW5pdCgpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsK
KyAgICBfaW5pdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWV0YU5vZGVJbmRl
eCA9IDA7CisgICAgICAgIHRoaXMuX3Jvb3ROb2RlSW5kZXggPSAxOworICAgICAgICB2YXIgbWV0
YSA9IHRoaXMuX25vZGVzW3RoaXMuX21ldGFOb2RlSW5kZXhdOworICAgICAgICB0aGlzLl9ub2Rl
VHlwZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoInR5cGUiKTsKKyAgICAgICAgdGhpcy5f
bm9kZU5hbWVPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRleE9mKCJuYW1lIik7CisgICAgICAgIHRo
aXMuX25vZGVJZE9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImlkIik7CisgICAgICAgIHRo
aXMuX25vZGVJbnN0YW5jZXNDb3VudE9mZnNldCA9IHRoaXMuX25vZGVJZE9mZnNldDsKKyAgICAg
ICAgdGhpcy5fbm9kZVNlbGZTaXplT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5kZXhPZigic2VsZl9z
aXplIik7CisgICAgICAgIHRoaXMuX2VkZ2VzQ291bnRPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRl
eE9mKCJjaGlsZHJlbl9jb3VudCIpOworICAgICAgICB0aGlzLl9maXJzdEVkZ2VPZmZzZXQgPSBt
ZXRhLmZpZWxkcy5pbmRleE9mKCJjaGlsZHJlbiIpOworICAgICAgICB0aGlzLl9ub2RlVHlwZXMg
PSBtZXRhLnR5cGVzW3RoaXMuX25vZGVUeXBlT2Zmc2V0XTsKKyAgICAgICAgdGhpcy5fbm9kZUhp
ZGRlblR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuaW5kZXhPZigiaGlkZGVuIik7CisgICAgICAgIHZh
ciBlZGdlc01ldGEgPSBtZXRhLnR5cGVzW3RoaXMuX2ZpcnN0RWRnZU9mZnNldF07CisgICAgICAg
IHRoaXMuX2VkZ2VGaWVsZHNDb3VudCA9IGVkZ2VzTWV0YS5maWVsZHMubGVuZ3RoOworICAgICAg
ICB0aGlzLl9lZGdlVHlwZU9mZnNldCA9IGVkZ2VzTWV0YS5maWVsZHMuaW5kZXhPZigidHlwZSIp
OworICAgICAgICB0aGlzLl9lZGdlTmFtZU9mZnNldCA9IGVkZ2VzTWV0YS5maWVsZHMuaW5kZXhP
ZigibmFtZV9vcl9pbmRleCIpOworICAgICAgICB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0ID0gZWRn
ZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJ0b19ub2RlIik7CisgICAgICAgIHRoaXMuX2VkZ2VUeXBl
cyA9IGVkZ2VzTWV0YS50eXBlc1t0aGlzLl9lZGdlVHlwZU9mZnNldF07CisgICAgICAgIHRoaXMu
X2VkZ2VFbGVtZW50VHlwZSA9IHRoaXMuX2VkZ2VUeXBlcy5pbmRleE9mKCJlbGVtZW50Iik7Cisg
ICAgICAgIHRoaXMuX2VkZ2VIaWRkZW5UeXBlID0gdGhpcy5fZWRnZVR5cGVzLmluZGV4T2YoImhp
ZGRlbiIpOworICAgIH0sCisKKyAgICBnZXQgcm9vdEVkZ2VzKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAobmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcih0aGlzLCB0aGlz
Ll9yb290Tm9kZUluZGV4KSkuZWRnZXM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCBmMzQ5
MzYxLi5mMzA0NTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0yNywxNTQgKzI3LDYgQEAKICAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVk
Z2VzSXRlcmF0b3IgPSBmdW5jdGlvbihzbmFwc2hvdCwgZWRnZXMpCi17Ci0gICAgdGhpcy5fc25h
cHNob3QgPSBzbmFwc2hvdDsKLSAgICB0aGlzLl9lZGdlcyA9IGVkZ2VzOwotICAgIHRoaXMuX2Vk
Z2VJbmRleCA9IDA7Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9y
LnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZG9uZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZWRnZUluZGV4ID49IHRoaXMuX2VkZ2VzLmxlbmd0aDsKLSAgICB9LAotCi0gICAgZ2V0IGlz
RWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VHlwZSgpID09PSB0aGlz
Ll9zbmFwc2hvdC5fZWRnZUVsZW1lbnRUeXBlOwotICAgIH0sCi0KLSAgICBnZXQgaXNIaWRkZW4o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFR5cGUoKSA9PT0gdGhpcy5fc25hcHNo
b3QuX2VkZ2VIaWRkZW5UeXBlOwotICAgIH0sCi0KLSAgICBnZXQgbmFtZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5pc0VsZW1lbnQgfHwgdGhpcy5pc0hpZGRlbiA/IHRoaXMuX2dldE5h
bWVPckluZGV4KCkgOiB0aGlzLl9zbmFwc2hvdC5fc3RyaW5nc1t0aGlzLl9nZXROYW1lT3JJbmRl
eCgpXTsKLSAgICB9LAotCi0gICAgbmV4dDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5fZWRnZUluZGV4ICs9IHRoaXMuX3NuYXBzaG90Ll9lZGdlRmllbGRzQ291bnQ7Ci0gICAgfSwK
LQotICAgIGdldCBub2RlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyKHRoaXMuX3NuYXBzaG90LCB0aGlzLm5vZGVJbmRleCk7
Ci0gICAgfSwKLQotICAgIGdldCBub2RlSW5kZXgoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX2VkZ2VzW3RoaXMuX2VkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlVG9Ob2RlT2Zm
c2V0XTsKLSAgICB9LAotCi0gICAgX2dldE5hbWVPckluZGV4OiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fZWRnZXNbdGhpcy5fZWRnZUluZGV4ICsgdGhpcy5fc25hcHNo
b3QuX2VkZ2VOYW1lT2Zmc2V0XTsKLSAgICB9LAotCi0gICAgX2dldFR5cGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0aGlzLl9lZGdlSW5kZXggKyB0aGlz
Ll9zbmFwc2hvdC5fZWRnZVR5cGVPZmZzZXRdOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlV3JhcHBlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBub2RlSW5kZXgpCi17
Ci0gICAgdGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICB0aGlzLl9ub2RlcyA9IHNuYXBz
aG90Ll9ub2RlczsKLSAgICB0aGlzLl9ub2RlSW5kZXggPSBub2RlSW5kZXg7Ci19Ci0KLVdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGVk
Z2VzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dEVkZ2VzSXRlcmF0b3IodGhpcy5fc25hcHNob3QsIHRoaXMuX2dldEVkZ2VzKCkpOwotICAgIH0s
Ci0KLSAgICBnZXQgZWRnZXNDb3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9k
ZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2VzQ291bnRPZmZzZXRdOwot
ICAgIH0sCi0KLSAgICBnZXQgaW5zdGFuY2VzQ291bnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9ub2RlSW5zdGFu
Y2VzQ291bnRPZmZzZXRdOwotICAgIH0sCi0KLSAgICBnZXQgaXNIaWRkZW4oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2dldFR5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX25vZGVIaWRk
ZW5UeXBlOwotICAgIH0sCi0KLSAgICBnZXQgbmFtZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fc25hcHNob3QuX3N0cmluZ3NbdGhpcy5fZ2V0TmFtZSgpXTsKLSAgICB9LAotCi0gICAg
Z2V0IHNlbGZTaXplKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9u
b2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZVNlbGZTaXplT2Zmc2V0XTsgCi0gICAgfSwK
LQotICAgIF9nZXROYW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
bm9kZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25vZGVOYW1lT2Zmc2V0XTsg
Ci0gICAgfSwKLQotICAgIF9nZXRFZGdlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFy
IGZpcnN0RWRnZUluZGV4ID0gdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2ZpcnN0
RWRnZU9mZnNldDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzLnNsaWNlKGZpcnN0RWRnZUlu
ZGV4LCBmaXJzdEVkZ2VJbmRleCArIHRoaXMuZWRnZXNDb3VudCAqIHRoaXMuX3NuYXBzaG90Ll9l
ZGdlRmllbGRzQ291bnQpOwotICAgIH0sCi0KLSAgICBfZ2V0VHlwZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3Nu
YXBzaG90Ll9ub2RlVHlwZU9mZnNldF07Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdCA9IGZ1bmN0aW9uKHByb2ZpbGUpCi17Ci0gICAgdGhpcy5fcHJvZmlsZSA9IHByb2Zp
bGU7Ci0gICAgdGhpcy5fbm9kZXMgPSBwcm9maWxlLm5vZGVzOwotICAgIHRoaXMuX3N0cmluZ3Mg
PSBwcm9maWxlLnN0cmluZ3M7Ci0KLSAgICB0aGlzLl9pbml0KCk7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewotICAgIF9pbml0OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB0aGlzLl9tZXRhTm9kZUluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5fcm9vdE5v
ZGVJbmRleCA9IDE7Ci0gICAgICAgIHZhciBtZXRhID0gdGhpcy5fbm9kZXNbdGhpcy5fbWV0YU5v
ZGVJbmRleF07Ci0gICAgICAgIHRoaXMuX25vZGVUeXBlT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5k
ZXhPZigidHlwZSIpOwotICAgICAgICB0aGlzLl9ub2RlTmFtZU9mZnNldCA9IG1ldGEuZmllbGRz
LmluZGV4T2YoIm5hbWUiKTsKLSAgICAgICAgdGhpcy5fbm9kZUlkT2Zmc2V0ID0gbWV0YS5maWVs
ZHMuaW5kZXhPZigiaWQiKTsKLSAgICAgICAgdGhpcy5fbm9kZUluc3RhbmNlc0NvdW50T2Zmc2V0
ID0gdGhpcy5fbm9kZUlkT2Zmc2V0OwotICAgICAgICB0aGlzLl9ub2RlU2VsZlNpemVPZmZzZXQg
PSBtZXRhLmZpZWxkcy5pbmRleE9mKCJzZWxmX3NpemUiKTsKLSAgICAgICAgdGhpcy5fZWRnZXND
b3VudE9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVuX2NvdW50Iik7Ci0gICAg
ICAgIHRoaXMuX2ZpcnN0RWRnZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVu
Iik7Ci0gICAgICAgIHRoaXMuX25vZGVUeXBlcyA9IG1ldGEudHlwZXNbdGhpcy5fbm9kZVR5cGVP
ZmZzZXRdOwotICAgICAgICB0aGlzLl9ub2RlSGlkZGVuVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5p
bmRleE9mKCJoaWRkZW4iKTsKLSAgICAgICAgdmFyIGVkZ2VzTWV0YSA9IG1ldGEudHlwZXNbdGhp
cy5fZmlyc3RFZGdlT2Zmc2V0XTsKLSAgICAgICAgdGhpcy5fZWRnZUZpZWxkc0NvdW50ID0gZWRn
ZXNNZXRhLmZpZWxkcy5sZW5ndGg7Ci0gICAgICAgIHRoaXMuX2VkZ2VUeXBlT2Zmc2V0ID0gZWRn
ZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJ0eXBlIik7Ci0gICAgICAgIHRoaXMuX2VkZ2VOYW1lT2Zm
c2V0ID0gZWRnZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJuYW1lX29yX2luZGV4Iik7Ci0gICAgICAg
IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4T2YoInRvX25v
ZGUiKTsKLSAgICAgICAgdGhpcy5fZWRnZVR5cGVzID0gZWRnZXNNZXRhLnR5cGVzW3RoaXMuX2Vk
Z2VUeXBlT2Zmc2V0XTsKLSAgICAgICAgdGhpcy5fZWRnZUVsZW1lbnRUeXBlID0gdGhpcy5fZWRn
ZVR5cGVzLmluZGV4T2YoImVsZW1lbnQiKTsKLSAgICAgICAgdGhpcy5fZWRnZUhpZGRlblR5cGUg
PSB0aGlzLl9lZGdlVHlwZXMuaW5kZXhPZigiaGlkZGVuIik7Ci0gICAgfSwKLQotICAgIGdldCBy
b290RWRnZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGVXcmFwcGVyKHRoaXMsIHRoaXMuX3Jvb3ROb2RlSW5kZXgpKS5lZGdlczsKLSAg
ICB9Ci19OwogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVu
dCwgcHJvZmlsZSkKIHsKQEAgLTExNDgsNyArMTAwMCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAKICAgICBidXR0b25DbGlja2VkOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRha2VIZWFwU25hcHNob3Qo
KTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50YWtlSGVhcFNuYXBzaG90KGZhbHNlKTsKICAg
ICB9LAogCiAgICAgZ2V0IHdlbGNvbWVNZXNzYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwppbmRleCAyZTBhYjI4Li40NTY1
ZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2Zp
bGVzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzCkBAIC02MjksNiArNjI5LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVh
ZGVyKHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwogICAgICAgICB9CiAgICAgICAg
IHRoaXMudXBkYXRlUHJvZmlsZVR5cGVCdXR0b25zKCk7CisgICAgfSwKKworICAgIF9yZXBvcnRI
ZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCisgICAgewogICAgIH0K
IH0KIApAQCAtNjc0LDYgKzY3OCwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVy
LnByb3RvdHlwZSA9IHsKICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2Zp
bGluZykKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9zZXRSZWNvcmRpbmdQcm9maWxl
KGlzUHJvZmlsaW5nKTsKKyAgICB9LAorCisgICAgcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3M6
IGZ1bmN0aW9uKGRvbmUsIHRvdGFsKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZXIuX3Jl
cG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKGRvbmUsIHRvdGFsKTsKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IGJjNTBj
ZTkuLmY5ZjRhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5ncy5qcwpAQCAtNDksNyArNDksOSBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgdXNl
RGF0YVVSTEZvclJlc291cmNlSW1hZ2VJY29uczogdHJ1ZSwKICAgICBzaG93VGltaW5nVGFiOiBm
YWxzZSwKICAgICBzaG93Q29va2llc1RhYjogZmFsc2UsCi0gICAgZGVidWdNb2RlOiBmYWxzZQor
ICAgIGRlYnVnTW9kZTogZmFsc2UsCisgICAgaGVhcFByb2ZpbGVyUHJlc2VudDogZmFsc2UsCisg
ICAgZGV0YWlsZWRIZWFwUHJvZmlsZXM6IGZhbHNlCiB9CiAKIFdlYkluc3BlY3Rvci5TZXR0aW5n
cyA9IGZ1bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvV2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2Vi
S2l0LnFyYwppbmRleCBkYjkyZmYzLi4xNWNkNDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgPGZpbGU+
RGF0YWJhc2UuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YWJhc2VRdWVyeVZpZXcuanM8L2ZpbGU+
CiAgICAgPGZpbGU+RGF0YWJhc2VUYWJsZVZpZXcuanM8L2ZpbGU+CisgICAgPGZpbGU+RGV0YWls
ZWRIZWFwc2hvdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YUdyaWQuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+RGVidWdnZXJNb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01BZ2VudC5qczwv
ZmlsZT4KQEAgLTQ3LDYgKzQ4LDcgQEAKICAgICA8ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAg
ICA8ZmlsZT5Hb1RvTGluZURpYWxvZy5qczwvZmlsZT4KICAgICA8ZmlsZT5IQVJFbnRyeS5qczwv
ZmlsZT4KKyAgICA8ZmlsZT5IZWFwU25hcHNob3QuanM8L2ZpbGU+CiAgICAgPGZpbGU+SGVhcFNu
YXBzaG90Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5IZWxwU2NyZWVuLmpzPC9maWxlPgogICAg
IDxmaWxlPkltYWdlVmlldy5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDcwNTUwOTIuLjNhMWYzYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApA
QCAtMTQwLDcgKzE0MCw5IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIHNyYz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFH
cmlkVHJlZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iUHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkhlYXBTbmFwc2hvdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGV0YWlsZWRIZWFwc2hv
dFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IkRlYnVnZ2VyTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJJbmplY3RlZFNjcmlwdEFjY2Vzcy5qcyI+PC9zY3JpcHQ+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmlu
ZGV4IGQ4YTkzYjEuLmM0ODYzM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0yMzQsOCArMjM0LDEyIEBAIHZhciBXZWJJbnNwZWN0
b3IgPSB7CiAgICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5kZXhPZigicHJvZmlsZXMiKSA9PT0g
LTEpIHsKICAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzID0gbmV3IFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsKCk7CiAgICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5yZWdp
c3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUoKSk7Ci0gICAg
ICAgICAgICBpZiAoUHJlZmVyZW5jZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkKLSAgICAgICAgICAg
ICAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUoKSk7CisgICAgICAgICAgICBpZiAoUHJlZmVy
ZW5jZXMuaGVhcFByb2ZpbGVyUHJlc2VudCkgeworICAgICAgICAgICAgICAgIGlmICghUHJlZmVy
ZW5jZXMuZGV0YWlsZWRIZWFwUHJvZmlsZXMpCisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFu
ZWxzLnByb2ZpbGVzLnJlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzLnJlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUoKSk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9mKCJhdWRpdHMiKSA9PT0g
LTEpCiAgICAgICAgICAgICB0aGlzLnBhbmVscy5hdWRpdHMgPSBuZXcgV2ViSW5zcGVjdG9yLkF1
ZGl0c1BhbmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGEwZTA0MTAuLjcwM2Ez
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDEt
MTggIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ2hy
b21pdW1dIFByZXBhcmUgZm9yIGxhbmRpbmcgb2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisK
KyAgICAgICAgLSBJbnRyb2R1Y2UgUHJlZmVyZW5jZXMuZGV0YWlsZWRIZWFwUHJvZmlsZXMgZmxh
ZyBmb3IgY29udHJvbGxpbmcKKyAgICAgICAgICBxdWVyeWluZyBvZiBkZXRhaWxlZCBoZWFwIHNu
YXBzaG90cy4KKyAgICAgICAgLSBBZGQgYm9pbGVycGxhdGUgY29kZSBmb3IgdGhlIG5ldyB2aWV3
LgorICAgICAgICAtIEZhY3RvciBvdXQgY29tbW9uIGNvZGUuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjI0CisKKyAgICAgICAgKiBzcmMvanMv
RGV2VG9vbHMuanM6CisgICAgICAgICgpOgorCiAyMDExLTAxLTE3ICBOaWNvIFdlYmVyICA8dGhh
a2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCBkNjUzNmJjLi5jNjllNGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDEsNiArNDEsNyBAQCB2
YXIgY29udGV4dCA9IHt9OyAgLy8gVXNlZCBieSBXZWJDb3JlJ3MgaW5zcGVjdG9yIHJvdXRpbmVz
LgogICAgIFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPSBmYWxzZTsKICAgICBQcmVmZXJl
bmNlcy5zYW1wbGluZ0NQVVByb2ZpbGVyID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5oZWFwUHJv
ZmlsZXJQcmVzZW50ID0gdHJ1ZTsKKyAgICBQcmVmZXJlbmNlcy5kZXRhaWxlZEhlYXBQcm9maWxl
cyA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMuZGVidWdnZXJBbHdheXNFbmFibGVkID0gdHJ1ZTsK
ICAgICBQcmVmZXJlbmNlcy5wcm9maWxlckFsd2F5c0VuYWJsZWQgPSB0cnVlOwogICAgIFByZWZl
cmVuY2VzLmNhbkVkaXRTY3JpcHRTb3VyY2UgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80037</attachid>
            <date>2011-01-25 02:24:20 -0800</date>
            <delta_ts>2011-01-25 05:18:41 -0800</delta_ts>
            <desc>rebaselined</desc>
            <filename>patch-52624</filename>
            <type>text/plain</type>
            <size>34143</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YjQxMmFiLi45N2Y5NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAg
QEAKKzIwMTEtMDEtMjUgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbQ2hyb21pdW1dIFByZXBhcmUgZm9yIGxhbmRpbmcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuCisKKyAgICAgICAgLSBJbnRyb2R1Y2UgUHJlZmVyZW5jZXMuZGV0YWlsZWRIZWFw
UHJvZmlsZXMgZmxhZyBmb3IgY29udHJvbGxpbmcKKyAgICAgICAgICBxdWVyeWluZyBvZiBkZXRh
aWxlZCBoZWFwIHNuYXBzaG90cy4KKyAgICAgICAgLSBBZGQgYm9pbGVycGxhdGUgY29kZSBmb3Ig
dGhlIG5ldyB2aWV3LgorICAgICAgICAtIEZhY3RvciBvdXQgY29tbW9uIGNvZGUuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjI0CisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFByb2ZpbGVyOjpIZWFwU25hcHNob3RDb250cm9sOjp+SGVhcFNuYXBzaG90
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFw
c2hvdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQ
cm9maWxlcjo6SGVhcFNuYXBzaG90Q29udHJvbDo6fkhlYXBTbmFwc2hvdENvbnRyb2wpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxl
ZEhlYXBzaG90Vmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5nZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLnNldCBwcm9maWxlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLmhp
ZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlLnByb3Rv
dHlwZS5nZXQgYnV0dG9uVG9vbHRpcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9u
Q2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVU
eXBlLnByb3RvdHlwZS5nZXQgd2VsY29tZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuY3JlYXRlU2lkZWJhclRyZWVF
bGVtZW50Rm9yUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hv
dFByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IGRvbmUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBpc0VsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90
eXBlLmdldCBpc0hpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRn
ZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLm5leHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBub2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yLnByb3RvdHlwZS5n
ZXQgbm9kZUluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0
ZXJhdG9yLnByb3RvdHlwZS5fZ2V0TmFtZU9ySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBlZGdlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBl
ZGdlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBl
ci5wcm90b3R5cGUuZ2V0IGluc3RhbmNlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IGlzSGlkZGVuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IG5hbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyLnByb3RvdHlw
ZS5nZXQgc2VsZlNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVX
cmFwcGVyLnByb3RvdHlwZS5fZ2V0TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRFZGdlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuZ2V0IHJvb3RFZGdlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3NldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9yZXBvcnRIZWFwU25hcHNo
b3RQcm9ncmVzcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnBy
b3RvdHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVQYW5lbHMpOgorCiAyMDExLTAxLTI0
ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYWM2ZmU2Yi4uYmYw
MjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY2Myw2ICs0NjYzLDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFibGVWaWV3LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NU3RvcmFnZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01T
dG9yYWdlSXRlbXNWaWV3LmpzJywKQEAgLTQ2ODEsNiArNDY4Miw3IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9IQVJFbnRyeS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWxwU2Ny
ZWVuLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcycs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDZm
OGE2YTQuLmVmZTY0Y2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC02NTQ1Nyw2ICs2NTQ1NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgog
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxEZXRh
aWxlZEhlYXBzaG90Vmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRE9NQWdlbnQuanMiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CkBAIC02NTUzNyw2ICs2NTU0MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxIZWFwU25hcHNob3QuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEhlYXBTbmFwc2hvdFZpZXcuanMi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZXIuaAppbmRleCBkNGRkNjA2Li5lNmQ2YmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKQEAgLTM4LDkgKzM4LDE5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTY3JpcHRQcm9maWxlcik7CiBwdWJsaWM6CisgICAgY2xhc3MgSGVhcFNuYXBzaG90Q29udHJv
bCB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIENvbnRyb2xPcHRpb24geworICAgICAgICAg
ICAga0NvbnRpbnVlLAorICAgICAgICAgICAga0Fib3J0CisgICAgICAgIH07CisgICAgICAgIHZp
cnR1YWwgfkhlYXBTbmFwc2hvdENvbnRyb2woKSB7IH0KKyAgICAgICAgdmlydHVhbCBDb250cm9s
T3B0aW9uIFJlcG9ydFByb2dyZXNzVmFsdWUoaW50IGRvbmUsIGludCB0b3RhbCkgPSAwOworICAg
IH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0
cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3Ao
U2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHRha2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5n
JikgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hv
dD4gdGFrZUhlYXBTbmFwc2hvdChjb25zdCBTdHJpbmcmLCBIZWFwU25hcHNob3RDb250cm9sKikg
eyByZXR1cm4gMDsgfQogICAgIHN0YXRpYyBib29sIGlzUHJvZmlsZXJBbHdheXNFbmFibGVkKCk7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9m
aWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAK
aW5kZXggMDJkZWExNC4uZmE1ZmE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMzUsNiArMzUsNyBAQAogCiAjaW5jbHVkZSA8djgtcHJv
ZmlsZXIuaD4KICNpbmNsdWRlIDxWOEJpbmRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTUzLDEwICs1NCwzOSBAQCBQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0
ZSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBwcm9maWxlID8gU2NyaXB0UHJvZmlsZTo6Y3Jl
YXRlKHByb2ZpbGUpIDogMDsKIH0KIAotUGFzc1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IFNj
cmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0cmluZyYgdGl0bGUpCituYW1l
c3BhY2UgeworCitjbGFzcyBBY3Rpdml0eUNvbnRyb2xBZGFwdGVyIDogcHVibGljIHY4OjpBY3Rp
dml0eUNvbnRyb2wgeworcHVibGljOgorICAgIEFjdGl2aXR5Q29udHJvbEFkYXB0ZXIoU2NyaXB0
UHJvZmlsZXI6OkhlYXBTbmFwc2hvdENvbnRyb2wqIGNvbnRyb2wpCisgICAgICAgIDogbV9jb250
cm9sKGNvbnRyb2wpIHsgfQorICAgIENvbnRyb2xPcHRpb24gUmVwb3J0UHJvZ3Jlc3NWYWx1ZShp
bnQgZG9uZSwgaW50IHRvdGFsKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX2NvbnRyb2wtPlJl
cG9ydFByb2dyZXNzVmFsdWUoZG9uZSwgdG90YWwpKSB7CisgICAgICAgIGNhc2UgU2NyaXB0UHJv
ZmlsZXI6OkhlYXBTbmFwc2hvdENvbnRyb2w6OmtDb250aW51ZToKKyAgICAgICAgICAgIHJldHVy
biBrQ29udGludWU7CisgICAgICAgIGNhc2UgU2NyaXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdENv
bnRyb2w6OmtBYm9ydDoKKyAgICAgICAgICAgIHJldHVybiBrQWJvcnQ7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4ga0NvbnRpbnVlOworICAgIH0KK3ByaXZhdGU6CisgICAgU2NyaXB0UHJvZmlsZXI6
OkhlYXBTbmFwc2hvdENvbnRyb2wqIG1fY29udHJvbDsKK307CisKK30gLy8gbmFtZXNwYWNlCisK
K1Bhc3NSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBT
bmFwc2hvdChjb25zdCBTdHJpbmcmIHRpdGxlLCBIZWFwU25hcHNob3RDb250cm9sKiBjb250cm9s
KQogewogICAgIHY4OjpIYW5kbGVTY29wZSBoczsKLSAgICBjb25zdCB2ODo6SGVhcFNuYXBzaG90
KiBzbmFwc2hvdCA9IHY4OjpIZWFwUHJvZmlsZXI6OlRha2VTbmFwc2hvdCh2OFN0cmluZyh0aXRs
ZSksIHY4OjpIZWFwU25hcHNob3Q6OmtBZ2dyZWdhdGVkKTsKKyAgICBjb25zdCB2ODo6SGVhcFNu
YXBzaG90KiBzbmFwc2hvdCA9IDA7CisgICAgaWYgKGNvbnRyb2wpIHsKKyAgICAgICAgQWN0aXZp
dHlDb250cm9sQWRhcHRlciBhZGFwdGVyKGNvbnRyb2wpOworICAgICAgICBzbmFwc2hvdCA9IHY4
OjpIZWFwUHJvZmlsZXI6OlRha2VTbmFwc2hvdCh2OFN0cmluZyh0aXRsZSksIHY4OjpIZWFwU25h
cHNob3Q6OmtGdWxsLCAmYWRhcHRlcik7CisgICAgfSBlbHNlCisgICAgICAgIHNuYXBzaG90ID0g
djg6OkhlYXBQcm9maWxlcjo6VGFrZVNuYXBzaG90KHY4U3RyaW5nKHRpdGxlKSwgdjg6OkhlYXBT
bmFwc2hvdDo6a0FnZ3JlZ2F0ZWQpOwogICAgIHJldHVybiBzbmFwc2hvdCA/IFNjcmlwdEhlYXBT
bmFwc2hvdDo6Y3JlYXRlKHNuYXBzaG90KSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5oCmluZGV4IGUwOTY5ZTEuLjgwMTFmZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaApAQCAtNDQsOSArNDQsMTkg
QEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgU2NyaXB0UHJvZmlsZXIgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdFByb2ZpbGVyKTsKIHB1YmxpYzoKKyAgICBjbGFzcyBI
ZWFwU25hcHNob3RDb250cm9sIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gQ29udHJvbE9w
dGlvbiB7CisgICAgICAgICAgICBrQ29udGludWUsCisgICAgICAgICAgICBrQWJvcnQKKyAgICAg
ICAgfTsKKyAgICAgICAgdmlydHVhbCB+SGVhcFNuYXBzaG90Q29udHJvbCgpIHsgfQorICAgICAg
ICB2aXJ0dWFsIENvbnRyb2xPcHRpb24gUmVwb3J0UHJvZ3Jlc3NWYWx1ZShpbnQgZG9uZSwgaW50
IHRvdGFsKSA9IDA7CisgICAgfTsKKwogICAgIHN0YXRpYyB2b2lkIHN0YXJ0KFNjcmlwdFN0YXRl
KiBzdGF0ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Ny
aXB0UHJvZmlsZT4gc3RvcChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUp
OwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4gdGFrZUhlYXBTbmFw
c2hvdChjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRI
ZWFwU25hcHNob3Q+IHRha2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSwgSGVhcFNu
YXBzaG90Q29udHJvbCopOwogICAgIHN0YXRpYyBib29sIGlzUHJvZmlsZXJBbHdheXNFbmFibGVk
KCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCmluZGV4IGFkMGQ4
ZjQuLmE5MTc2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBAIC0z
MDQsMTIgKzMwNCwxMyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtkb21haW49UHJvZmlsZXJd
IHZvaWQgY2xlYXJQcm9maWxlcygpOwogCiAgICAgICAgIC8vIEZJWE1FOiBzcGxpdCBpbnRvIFBy
b2ZpbGVyIGFuZCBIZWFwUHJvZmlsZXIuCi0gICAgICAgIFtkb21haW49UHJvZmlsZXJdIHZvaWQg
dGFrZUhlYXBTbmFwc2hvdCgpOworICAgICAgICBbZG9tYWluPVByb2ZpbGVyXSB2b2lkIHRha2VI
ZWFwU25hcHNob3QoaW4gYm9vbGVhbiBkZXRhaWxlZCk7CiAgICAgICAgIFtub3RpZnksIGRvbWFp
bj1Qcm9maWxlcl0gdm9pZCBhZGRQcm9maWxlSGVhZGVyKG91dCBPYmplY3QgaGVhZGVyKTsKICAg
ICAgICAgW25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIGFkZEhlYXBTbmFwc2hvdENodW5r
KG91dCB1bnNpZ25lZCBsb25nIHVpZCwgb3V0IFN0cmluZyBjaHVuayk7CiAgICAgICAgIFtub3Rp
ZnksIGRvbWFpbj1Qcm9maWxlcl0gdm9pZCBmaW5pc2hIZWFwU25hcHNob3Qob3V0IHVuc2lnbmVk
IGxvbmcgdWlkKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIHNldFJl
Y29yZGluZ1Byb2ZpbGUob3V0IGJvb2xlYW4gaXNQcm9maWxpbmcpOwogICAgICAgICBbbm90aWZ5
LCBkb21haW49UHJvZmlsZXJdIHZvaWQgcmVzZXRQcm9maWxlcygpOworICAgICAgICBbbm90aWZ5
LCBkb21haW49UHJvZmlsZXJdIHZvaWQgcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3Mob3V0IGlu
dCBkb25lLCBvdXQgaW50IHRvdGFsKTsKICNlbmRpZiAvLyBFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUgogICAgIH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggZTcxOThiOC4uNTUwZTZkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAt
MjY3LDEyICsyNjcsMzEgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wVXNlcklu
aXRpYXRlZFByb2ZpbGluZyhib29sIGlnbm9yZVByb2ZpbGUpCiAgICAgdG9nZ2xlUmVjb3JkQnV0
dG9uKGZhbHNlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNu
YXBzaG90KCkKK25hbWVzcGFjZSB7CisKK2NsYXNzIEhlYXBTbmFwc2hvdENvbnRyb2w6IHB1Ymxp
YyBTY3JpcHRQcm9maWxlcjo6SGVhcFNuYXBzaG90Q29udHJvbCB7CitwdWJsaWM6CisgICAgZXhw
bGljaXQgSGVhcFNuYXBzaG90Q29udHJvbChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpCisg
ICAgICAgIDogbV9mcm9udGVuZChmcm9udGVuZCkgeyB9CisgICAgQ29udHJvbE9wdGlvbiBSZXBv
cnRQcm9ncmVzc1ZhbHVlKGludCBkb25lLCBpbnQgdG90YWwpCisgICAgeworICAgICAgICBpZiAo
bV9mcm9udGVuZCkKKyAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlcG9ydEhlYXBTbmFwc2hvdFBy
b2dyZXNzKGRvbmUsIHRvdGFsKTsKKyAgICAgICAgcmV0dXJuIGtDb250aW51ZTsKKyAgICB9Citw
cml2YXRlOgorICAgIEluc3BlY3RvckZyb250ZW5kKiBtX2Zyb250ZW5kOworfTsKKworfTsKKwor
dm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KGJvb2wgZGV0YWls
ZWQpCiB7CiAgICAgU3RyaW5nIHRpdGxlID0gbWFrZVN0cmluZyhVc2VySW5pdGlhdGVkUHJvZmls
ZU5hbWUsICcuJywgU3RyaW5nOjpudW1iZXIobV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hv
dE51bWJlcikpOwogICAgICsrbV9uZXh0VXNlckluaXRpYXRlZEhlYXBTbmFwc2hvdE51bWJlcjsK
IAotICAgIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHNuYXBzaG90ID0gU2NyaXB0UHJvZmls
ZXI6OnRha2VIZWFwU25hcHNob3QodGl0bGUpOworICAgIEhlYXBTbmFwc2hvdENvbnRyb2wgY29u
dHJvbChtX2Zyb250ZW5kKTsKKyAgICBSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBzbmFwc2hv
dCA9IFNjcmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90KHRpdGxlLCBkZXRhaWxlZCA/ICZj
b250cm9sIDogMCk7CiAgICAgaWYgKHNuYXBzaG90KSB7CiAgICAgICAgIG1fc25hcHNob3RzLmFk
ZChzbmFwc2hvdC0+dWlkKCksIHNuYXBzaG90KTsKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApp
bmRleCAwOWRlNzE3Li45MzYzN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5kKSB7IG1fZnJvbnRl
bmQgPSBmcm9udGVuZDsgfQogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7
CiAgICAgdm9pZCBzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyhib29sIGlnbm9yZVByb2ZpbGUg
PSBmYWxzZSk7Ci0gICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KCk7CisgICAgdm9pZCB0YWtlSGVh
cFNuYXBzaG90KGJvb2wgZGV0YWlsZWQpOwogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJv
b2wgaXNQcm9maWxpbmcpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI5ZmE0MwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMK
QEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcgPSBmdW5j
dGlvbihwYXJlbnQsIHByb2ZpbGUpCit7CisgICAgV2ViSW5zcGVjdG9yLlZpZXcuY2FsbCh0aGlz
KTsKKworICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoZWFwLXNuYXBzaG90LXZpZXci
KTsKKworICAgIHRoaXMucGFyZW50ID0gcGFyZW50OworICAgIHRoaXMucHJvZmlsZSA9IHByb2Zp
bGU7Cit9CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7
CisgICAgZ2V0IHN0YXR1c0Jhckl0ZW1zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbXTsKKyAg
ICB9LAorCisgICAgZ2V0IHByb2ZpbGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3By
b2ZpbGU7CisgICAgfSwKKworICAgIHNldCBwcm9maWxlKHByb2ZpbGUpCisgICAgeworICAgICAg
ICB0aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKKyAgICB9LAorCisgICAgc2hvdzogZnVuY3Rpb24o
cGFyZW50RWxlbWVudCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlw
ZS5zaG93LmNhbGwodGhpcywgcGFyZW50RWxlbWVudCk7CisgICAgfSwKKworICAgIGhpZGU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5oaWRl
LmNhbGwodGhpcyk7CisgICAgfSwKK307CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90
Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlOwor
CitXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlID0gZnVuY3Rpb24oKQor
eworICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlVHlwZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RQcm9maWxlVHlwZS5UeXBlSWQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSEVB
UCBTTkFQU0hPVFMiKSk7Cit9CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmls
ZVR5cGUucHJvdG90eXBlID0geworICAgIGdldCBidXR0b25Ub29sdGlwKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRha2UgaGVhcCBzbmFwc2hvdC4iKTsK
KyAgICB9LAorCisgICAgZ2V0IGJ1dHRvblN0eWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiAi
aGVhcC1zbmFwc2hvdC1zdGF0dXMtYmFyLWl0ZW0gc3RhdHVzLWJhci1pdGVtIjsKKyAgICB9LAor
CisgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgSW5zcGVjdG9y
QmFja2VuZC50YWtlSGVhcFNuYXBzaG90KHRydWUpOworICAgIH0sCisKKyAgICBnZXQgd2VsY29t
ZU1lc3NhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
R2V0IGEgaGVhcCBzbmFwc2hvdCBieSBwcmVzc2luZyB0aGUgJXMgYnV0dG9uIG9uIHRoZSBzdGF0
dXMgYmFyLiIpOworICAgIH0sCisKKyAgICBjcmVhdGVTaWRlYmFyVHJlZUVsZW1lbnRGb3JQcm9m
aWxlOiBmdW5jdGlvbihwcm9maWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNw
ZWN0b3IuUHJvZmlsZVNpZGViYXJUcmVlRWxlbWVudChwcm9maWxlLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNuYXBzaG90ICVkIiksICJoZWFwLXNuYXBzaG90LXNpZGViYXItdHJlZS1pdGVtIik7
CisgICAgfSwKKworICAgIGNyZWF0ZVZpZXc6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90VmlldyhXZWJJbnNw
ZWN0b3IucGFuZWxzLnByb2ZpbGVzLCBwcm9maWxlKTsKKyAgICB9Cit9CisKK1dlYkluc3BlY3Rv
ci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5Qcm9maWxlVHlwZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjAxYmQ1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qcwpAQCAtMCwwICsxLDE3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dlYklu
c3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yID0gZnVuY3Rpb24oc25hcHNob3QsIGVk
Z2VzKQoreworICAgIHRoaXMuX3NuYXBzaG90ID0gc25hcHNob3Q7CisgICAgdGhpcy5fZWRnZXMg
PSBlZGdlczsKKyAgICB0aGlzLl9lZGdlSW5kZXggPSAwOworfQorCitXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90RWRnZXNJdGVyYXRvci5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGRvbmUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VJbmRleCA+PSB0aGlzLl9lZGdlcy5sZW5ndGg7
CisgICAgfSwKKworICAgIGdldCBpc0VsZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2dldFR5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VFbGVtZW50VHlwZTsKKyAgICB9
LAorCisgICAgZ2V0IGlzSGlkZGVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRU
eXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlSGlkZGVuVHlwZTsKKyAgICB9LAorCisgICAg
Z2V0IG5hbWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNFbGVtZW50IHx8IHRoaXMu
aXNIaWRkZW4gPyB0aGlzLl9nZXROYW1lT3JJbmRleCgpIDogdGhpcy5fc25hcHNob3QuX3N0cmlu
Z3NbdGhpcy5fZ2V0TmFtZU9ySW5kZXgoKV07CisgICAgfSwKKworICAgIG5leHQ6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX2VkZ2VJbmRleCArPSB0aGlzLl9zbmFwc2hvdC5fZWRn
ZUZpZWxkc0NvdW50OworICAgIH0sCisKKyAgICBnZXQgbm9kZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcih0aGlzLl9zbmFw
c2hvdCwgdGhpcy5ub2RlSW5kZXgpOworICAgIH0sCisKKyAgICBnZXQgbm9kZUluZGV4KCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0aGlzLl9lZGdlSW5kZXggKyB0aGlzLl9z
bmFwc2hvdC5fZWRnZVRvTm9kZU9mZnNldF07CisgICAgfSwKKworICAgIF9nZXROYW1lT3JJbmRl
eDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VzW3RoaXMuX2Vk
Z2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlTmFtZU9mZnNldF07CisgICAgfSwKKworICAg
IF9nZXRUeXBlOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWRnZXNb
dGhpcy5fZWRnZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2VUeXBlT2Zmc2V0XTsKKyAgICB9
Cit9OworCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIgPSBmdW5jdGlvbihz
bmFwc2hvdCwgbm9kZUluZGV4KQoreworICAgIHRoaXMuX3NuYXBzaG90ID0gc25hcHNob3Q7Cisg
ICAgdGhpcy5fbm9kZXMgPSBzbmFwc2hvdC5fbm9kZXM7CisgICAgdGhpcy5fbm9kZUluZGV4ID0g
bm9kZUluZGV4OworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJv
dG90eXBlID0geworICAgIGdldCBlZGdlcygpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yKHRoaXMuX3NuYXBzaG90LCB0aGlz
Ll9nZXRFZGdlcygpKTsKKyAgICB9LAorCisgICAgZ2V0IGVkZ2VzQ291bnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBzaG90
Ll9lZGdlc0NvdW50T2Zmc2V0XTsKKyAgICB9LAorCisgICAgZ2V0IGluc3RhbmNlc0NvdW50KCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9ub2RlSW5kZXggKyB0aGlz
Ll9zbmFwc2hvdC5fbm9kZUluc3RhbmNlc0NvdW50T2Zmc2V0XTsKKyAgICB9LAorCisgICAgZ2V0
IGlzSGlkZGVuKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9nZXRUeXBlKCkgPT09IHRo
aXMuX3NuYXBzaG90Ll9ub2RlSGlkZGVuVHlwZTsKKyAgICB9LAorCisgICAgZ2V0IG5hbWUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NuYXBzaG90Ll9zdHJpbmdzW3RoaXMuX2dldE5h
bWUoKV07CisgICAgfSwKKworICAgIGdldCBzZWxmU2l6ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25vZGVTZWxm
U2l6ZU9mZnNldF07IAorICAgIH0sCisKKyAgICBfZ2V0TmFtZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBz
aG90Ll9ub2RlTmFtZU9mZnNldF07IAorICAgIH0sCisKKyAgICBfZ2V0RWRnZXM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHZhciBmaXJzdEVkZ2VJbmRleCA9IHRoaXMuX25vZGVJbmRleCAr
IHRoaXMuX3NuYXBzaG90Ll9maXJzdEVkZ2VPZmZzZXQ7CisgICAgICAgIHJldHVybiB0aGlzLl9u
b2Rlcy5zbGljZShmaXJzdEVkZ2VJbmRleCwgZmlyc3RFZGdlSW5kZXggKyB0aGlzLmVkZ2VzQ291
bnQgKiB0aGlzLl9zbmFwc2hvdC5fZWRnZUZpZWxkc0NvdW50KTsKKyAgICB9LAorCisgICAgX2dl
dFR5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlz
Ll9ub2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZVR5cGVPZmZzZXRdOworICAgIH0KK307
CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3QgPSBmdW5jdGlvbihwcm9maWxlKQoreworICAg
IHRoaXMuX3Byb2ZpbGUgPSBwcm9maWxlOworICAgIHRoaXMuX25vZGVzID0gcHJvZmlsZS5ub2Rl
czsKKyAgICB0aGlzLl9zdHJpbmdzID0gcHJvZmlsZS5zdHJpbmdzOworCisgICAgdGhpcy5faW5p
dCgpOworfQorCitXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKKyAgICBf
aW5pdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbWV0YU5vZGVJbmRleCA9IDA7
CisgICAgICAgIHRoaXMuX3Jvb3ROb2RlSW5kZXggPSAxOworICAgICAgICB2YXIgbWV0YSA9IHRo
aXMuX25vZGVzW3RoaXMuX21ldGFOb2RlSW5kZXhdOworICAgICAgICB0aGlzLl9ub2RlVHlwZU9m
ZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoInR5cGUiKTsKKyAgICAgICAgdGhpcy5fbm9kZU5h
bWVPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRleE9mKCJuYW1lIik7CisgICAgICAgIHRoaXMuX25v
ZGVJZE9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImlkIik7CisgICAgICAgIHRoaXMuX25v
ZGVJbnN0YW5jZXNDb3VudE9mZnNldCA9IHRoaXMuX25vZGVJZE9mZnNldDsKKyAgICAgICAgdGhp
cy5fbm9kZVNlbGZTaXplT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5kZXhPZigic2VsZl9zaXplIik7
CisgICAgICAgIHRoaXMuX2VkZ2VzQ291bnRPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRleE9mKCJj
aGlsZHJlbl9jb3VudCIpOworICAgICAgICB0aGlzLl9maXJzdEVkZ2VPZmZzZXQgPSBtZXRhLmZp
ZWxkcy5pbmRleE9mKCJjaGlsZHJlbiIpOworICAgICAgICB0aGlzLl9ub2RlVHlwZXMgPSBtZXRh
LnR5cGVzW3RoaXMuX25vZGVUeXBlT2Zmc2V0XTsKKyAgICAgICAgdGhpcy5fbm9kZUhpZGRlblR5
cGUgPSB0aGlzLl9ub2RlVHlwZXMuaW5kZXhPZigiaGlkZGVuIik7CisgICAgICAgIHZhciBlZGdl
c01ldGEgPSBtZXRhLnR5cGVzW3RoaXMuX2ZpcnN0RWRnZU9mZnNldF07CisgICAgICAgIHRoaXMu
X2VkZ2VGaWVsZHNDb3VudCA9IGVkZ2VzTWV0YS5maWVsZHMubGVuZ3RoOworICAgICAgICB0aGlz
Ll9lZGdlVHlwZU9mZnNldCA9IGVkZ2VzTWV0YS5maWVsZHMuaW5kZXhPZigidHlwZSIpOworICAg
ICAgICB0aGlzLl9lZGdlTmFtZU9mZnNldCA9IGVkZ2VzTWV0YS5maWVsZHMuaW5kZXhPZigibmFt
ZV9vcl9pbmRleCIpOworICAgICAgICB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0ID0gZWRnZXNNZXRh
LmZpZWxkcy5pbmRleE9mKCJ0b19ub2RlIik7CisgICAgICAgIHRoaXMuX2VkZ2VUeXBlcyA9IGVk
Z2VzTWV0YS50eXBlc1t0aGlzLl9lZGdlVHlwZU9mZnNldF07CisgICAgICAgIHRoaXMuX2VkZ2VF
bGVtZW50VHlwZSA9IHRoaXMuX2VkZ2VUeXBlcy5pbmRleE9mKCJlbGVtZW50Iik7CisgICAgICAg
IHRoaXMuX2VkZ2VIaWRkZW5UeXBlID0gdGhpcy5fZWRnZVR5cGVzLmluZGV4T2YoImhpZGRlbiIp
OworICAgIH0sCisKKyAgICBnZXQgcm9vdEVkZ2VzKCkKKyAgICB7CisgICAgICAgIHJldHVybiAo
bmV3IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcih0aGlzLCB0aGlzLl9yb290
Tm9kZUluZGV4KSkuZWRnZXM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcwppbmRleCBlYzQ4YmYyLi5l
ZDI0Y2FhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hl
YXBTbmFwc2hvdFZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9IZWFwU25hcHNob3RWaWV3LmpzCkBAIC0yNywxNTQgKzI3LDYgQEAKICAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRl
cmF0b3IgPSBmdW5jdGlvbihzbmFwc2hvdCwgZWRnZXMpCi17Ci0gICAgdGhpcy5fc25hcHNob3Qg
PSBzbmFwc2hvdDsKLSAgICB0aGlzLl9lZGdlcyA9IGVkZ2VzOwotICAgIHRoaXMuX2VkZ2VJbmRl
eCA9IDA7Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yLnByb3Rv
dHlwZSA9IHsKLSAgICBnZXQgZG9uZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWRn
ZUluZGV4ID49IHRoaXMuX2VkZ2VzLmxlbmd0aDsKLSAgICB9LAotCi0gICAgZ2V0IGlzRWxlbWVu
dCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VHlwZSgpID09PSB0aGlzLl9zbmFw
c2hvdC5fZWRnZUVsZW1lbnRUeXBlOwotICAgIH0sCi0KLSAgICBnZXQgaXNIaWRkZW4oKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2dldFR5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX2Vk
Z2VIaWRkZW5UeXBlOwotICAgIH0sCi0KLSAgICBnZXQgbmFtZSgpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5pc0VsZW1lbnQgfHwgdGhpcy5pc0hpZGRlbiA/IHRoaXMuX2dldE5hbWVPcklu
ZGV4KCkgOiB0aGlzLl9zbmFwc2hvdC5fc3RyaW5nc1t0aGlzLl9nZXROYW1lT3JJbmRleCgpXTsK
LSAgICB9LAotCi0gICAgbmV4dDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fZWRn
ZUluZGV4ICs9IHRoaXMuX3NuYXBzaG90Ll9lZGdlRmllbGRzQ291bnQ7Ci0gICAgfSwKLQotICAg
IGdldCBub2RlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGVXcmFwcGVyKHRoaXMuX3NuYXBzaG90LCB0aGlzLm5vZGVJbmRleCk7Ci0gICAg
fSwKLQotICAgIGdldCBub2RlSW5kZXgoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Vk
Z2VzW3RoaXMuX2VkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlVG9Ob2RlT2Zmc2V0XTsK
LSAgICB9LAotCi0gICAgX2dldE5hbWVPckluZGV4OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fZWRnZXNbdGhpcy5fZWRnZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2Vk
Z2VOYW1lT2Zmc2V0XTsKLSAgICB9LAotCi0gICAgX2dldFR5cGU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0aGlzLl9lZGdlSW5kZXggKyB0aGlzLl9zbmFw
c2hvdC5fZWRnZVR5cGVPZmZzZXRdOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3ROb2RlV3JhcHBlciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBub2RlSW5kZXgpCi17Ci0gICAg
dGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdDsKLSAgICB0aGlzLl9ub2RlcyA9IHNuYXBzaG90Ll9u
b2RlczsKLSAgICB0aGlzLl9ub2RlSW5kZXggPSBub2RlSW5kZXg7Ci19Ci0KLVdlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGVkZ2VzKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2Vz
SXRlcmF0b3IodGhpcy5fc25hcHNob3QsIHRoaXMuX2dldEVkZ2VzKCkpOwotICAgIH0sCi0KLSAg
ICBnZXQgZWRnZXNDb3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNbdGhp
cy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2VzQ291bnRPZmZzZXRdOwotICAgIH0s
Ci0KLSAgICBnZXQgaW5zdGFuY2VzQ291bnQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9ub2RlSW5zdGFuY2VzQ291
bnRPZmZzZXRdOwotICAgIH0sCi0KLSAgICBnZXQgaXNIaWRkZW4oKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2dldFR5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX25vZGVIaWRkZW5UeXBl
OwotICAgIH0sCi0KLSAgICBnZXQgbmFtZSgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
c25hcHNob3QuX3N0cmluZ3NbdGhpcy5fZ2V0TmFtZSgpXTsKLSAgICB9LAotCi0gICAgZ2V0IHNl
bGZTaXplKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9ub2RlSW5k
ZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZVNlbGZTaXplT2Zmc2V0XTsgCi0gICAgfSwKLQotICAg
IF9nZXROYW1lOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNb
dGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25vZGVOYW1lT2Zmc2V0XTsgCi0gICAg
fSwKLQotICAgIF9nZXRFZGdlczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGZpcnN0
RWRnZUluZGV4ID0gdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2ZpcnN0RWRnZU9m
ZnNldDsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzLnNsaWNlKGZpcnN0RWRnZUluZGV4LCBm
aXJzdEVkZ2VJbmRleCArIHRoaXMuZWRnZXNDb3VudCAqIHRoaXMuX3NuYXBzaG90Ll9lZGdlRmll
bGRzQ291bnQpOwotICAgIH0sCi0KLSAgICBfZ2V0VHlwZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBzaG90
Ll9ub2RlVHlwZU9mZnNldF07Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dCA9IGZ1bmN0aW9uKHByb2ZpbGUpCi17Ci0gICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7Ci0g
ICAgdGhpcy5fbm9kZXMgPSBwcm9maWxlLm5vZGVzOwotICAgIHRoaXMuX3N0cmluZ3MgPSBwcm9m
aWxlLnN0cmluZ3M7Ci0KLSAgICB0aGlzLl9pbml0KCk7Ci19Ci0KLVdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3QucHJvdG90eXBlID0gewotICAgIF9pbml0OiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9tZXRhTm9kZUluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5fcm9vdE5vZGVJbmRl
eCA9IDE7Ci0gICAgICAgIHZhciBtZXRhID0gdGhpcy5fbm9kZXNbdGhpcy5fbWV0YU5vZGVJbmRl
eF07Ci0gICAgICAgIHRoaXMuX25vZGVUeXBlT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5kZXhPZigi
dHlwZSIpOwotICAgICAgICB0aGlzLl9ub2RlTmFtZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4
T2YoIm5hbWUiKTsKLSAgICAgICAgdGhpcy5fbm9kZUlkT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5k
ZXhPZigiaWQiKTsKLSAgICAgICAgdGhpcy5fbm9kZUluc3RhbmNlc0NvdW50T2Zmc2V0ID0gdGhp
cy5fbm9kZUlkT2Zmc2V0OwotICAgICAgICB0aGlzLl9ub2RlU2VsZlNpemVPZmZzZXQgPSBtZXRh
LmZpZWxkcy5pbmRleE9mKCJzZWxmX3NpemUiKTsKLSAgICAgICAgdGhpcy5fZWRnZXNDb3VudE9m
ZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVuX2NvdW50Iik7Ci0gICAgICAgIHRo
aXMuX2ZpcnN0RWRnZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVuIik7Ci0g
ICAgICAgIHRoaXMuX25vZGVUeXBlcyA9IG1ldGEudHlwZXNbdGhpcy5fbm9kZVR5cGVPZmZzZXRd
OwotICAgICAgICB0aGlzLl9ub2RlSGlkZGVuVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5pbmRleE9m
KCJoaWRkZW4iKTsKLSAgICAgICAgdmFyIGVkZ2VzTWV0YSA9IG1ldGEudHlwZXNbdGhpcy5fZmly
c3RFZGdlT2Zmc2V0XTsKLSAgICAgICAgdGhpcy5fZWRnZUZpZWxkc0NvdW50ID0gZWRnZXNNZXRh
LmZpZWxkcy5sZW5ndGg7Ci0gICAgICAgIHRoaXMuX2VkZ2VUeXBlT2Zmc2V0ID0gZWRnZXNNZXRh
LmZpZWxkcy5pbmRleE9mKCJ0eXBlIik7Ci0gICAgICAgIHRoaXMuX2VkZ2VOYW1lT2Zmc2V0ID0g
ZWRnZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJuYW1lX29yX2luZGV4Iik7Ci0gICAgICAgIHRoaXMu
X2VkZ2VUb05vZGVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4T2YoInRvX25vZGUiKTsK
LSAgICAgICAgdGhpcy5fZWRnZVR5cGVzID0gZWRnZXNNZXRhLnR5cGVzW3RoaXMuX2VkZ2VUeXBl
T2Zmc2V0XTsKLSAgICAgICAgdGhpcy5fZWRnZUVsZW1lbnRUeXBlID0gdGhpcy5fZWRnZVR5cGVz
LmluZGV4T2YoImVsZW1lbnQiKTsKLSAgICAgICAgdGhpcy5fZWRnZUhpZGRlblR5cGUgPSB0aGlz
Ll9lZGdlVHlwZXMuaW5kZXhPZigiaGlkZGVuIik7Ci0gICAgfSwKLQotICAgIGdldCByb290RWRn
ZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hv
dE5vZGVXcmFwcGVyKHRoaXMsIHRoaXMuX3Jvb3ROb2RlSW5kZXgpKS5lZGdlczsKLSAgICB9Ci19
OwogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90VmlldyA9IGZ1bmN0aW9uKHBhcmVudCwgcHJv
ZmlsZSkKIHsKQEAgLTExNTUsNyArMTAwNyw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RQ
cm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CiAKICAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigp
CiAgICAgewotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnRha2VIZWFwU25hcHNob3QoKTsKKyAg
ICAgICAgSW5zcGVjdG9yQmFja2VuZC50YWtlSGVhcFNuYXBzaG90KGZhbHNlKTsKICAgICB9LAog
CiAgICAgZ2V0IHdlbGNvbWVNZXNzYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwppbmRleCAyZTBhYjI4Li40NTY1ZjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1Bh
bmVsLmpzCkBAIC02MjksNiArNjI5LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9maWxlSGVhZGVyKHRo
aXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMu
dXBkYXRlUHJvZmlsZVR5cGVCdXR0b25zKCk7CisgICAgfSwKKworICAgIF9yZXBvcnRIZWFwU25h
cHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCisgICAgewogICAgIH0KIH0KIApA
QCAtNjc0LDYgKzY3OCwxMSBAQCBXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnByb3Rv
dHlwZSA9IHsKICAgICBzZXRSZWNvcmRpbmdQcm9maWxlOiBmdW5jdGlvbihpc1Byb2ZpbGluZykK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVyLl9zZXRSZWNvcmRpbmdQcm9maWxlKGlzUHJv
ZmlsaW5nKTsKKyAgICB9LAorCisgICAgcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3M6IGZ1bmN0
aW9uKGRvbmUsIHRvdGFsKQorICAgIHsKKyAgICAgICAgdGhpcy5fcHJvZmlsZXIuX3JlcG9ydEhl
YXBTbmFwc2hvdFByb2dyZXNzKGRvbmUsIHRvdGFsKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IGUyNmIxZDcuLmVm
NmIyNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwpAQCAtNDksNyArNDksOSBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgdXNlRGF0YVVS
TEZvclJlc291cmNlSW1hZ2VJY29uczogdHJ1ZSwKICAgICBzaG93VGltaW5nVGFiOiBmYWxzZSwK
ICAgICBzaG93Q29va2llc1RhYjogZmFsc2UsCi0gICAgZGVidWdNb2RlOiBmYWxzZQorICAgIGRl
YnVnTW9kZTogZmFsc2UsCisgICAgaGVhcFByb2ZpbGVyUHJlc2VudDogZmFsc2UsCisgICAgZGV0
YWlsZWRIZWFwUHJvZmlsZXM6IGZhbHNlCiB9CiAKIFdlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1
bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2ViS2l0LnFyYyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YwppbmRleCBlODQwMWU0Li41OGU2ODY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjCkBAIC0yOCw2ICsyOCw3IEBACiAgICAgPGZpbGU+RGF0YWJh
c2UuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YWJhc2VRdWVyeVZpZXcuanM8L2ZpbGU+CiAgICAg
PGZpbGU+RGF0YWJhc2VUYWJsZVZpZXcuanM8L2ZpbGU+CisgICAgPGZpbGU+RGV0YWlsZWRIZWFw
c2hvdFZpZXcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGF0YUdyaWQuanM8L2ZpbGU+CiAgICAgPGZp
bGU+RGVidWdnZXJNb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5ET01BZ2VudC5qczwvZmlsZT4K
QEAgLTQ4LDYgKzQ5LDcgQEAKICAgICA8ZmlsZT5Gb250Vmlldy5qczwvZmlsZT4KICAgICA8Zmls
ZT5Hb1RvTGluZURpYWxvZy5qczwvZmlsZT4KICAgICA8ZmlsZT5IQVJFbnRyeS5qczwvZmlsZT4K
KyAgICA8ZmlsZT5IZWFwU25hcHNob3QuanM8L2ZpbGU+CiAgICAgPGZpbGU+SGVhcFNuYXBzaG90
Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5IZWxwU2NyZWVuLmpzPC9maWxlPgogICAgIDxmaWxl
PkltYWdlVmlldy5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IGFmZjg1NzIuLjE5M2RlZWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbApAQCAtMTM5
LDcgKzEzOSw5IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iQm90dG9tVXBQcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJUb3BEb3duUHJvZmlsZURhdGFHcmlkVHJl
ZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
UHJvZmlsZVZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkhlYXBTbmFwc2hvdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGV0YWlsZWRIZWFwc2hvdFZpZXcu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IkRl
YnVnZ2VyTW9kZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IkRPTUFnZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJUaW1lbGluZUFnZW50LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggN2U1Y2FmNy4u
MGZhNDIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKQEAgLTIyMyw4ICsyMjMsMTIgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAg
ICAgaWYgKGhpZGRlblBhbmVscy5pbmRleE9mKCJwcm9maWxlcyIpID09PSAtMSkgewogICAgICAg
ICAgICAgdGhpcy5wYW5lbHMucHJvZmlsZXMgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFu
ZWwoKTsKICAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzLnJlZ2lzdGVyUHJvZmlsZVR5
cGUobmV3IFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZSgpKTsKLSAgICAgICAgICAgIGlmIChQ
cmVmZXJlbmNlcy5oZWFwUHJvZmlsZXJQcmVzZW50KQotICAgICAgICAgICAgICAgIHRoaXMucGFu
ZWxzLnByb2ZpbGVzLnJlZ2lzdGVyUHJvZmlsZVR5cGUobmV3IFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RQcm9maWxlVHlwZSgpKTsKKyAgICAgICAgICAgIGlmIChQcmVmZXJlbmNlcy5oZWFwUHJv
ZmlsZXJQcmVzZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKCFQcmVmZXJlbmNlcy5kZXRhaWxl
ZEhlYXBQcm9maWxlcykKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYW5lbHMucHJvZmlsZXMu
cmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVU
eXBlKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5w
YW5lbHMucHJvZmlsZXMucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bGVkSGVhcHNob3RQcm9maWxlVHlwZSgpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4T2YoImF1ZGl0cyIpID09PSAtMSkKICAgICAgICAg
ICAgIHRoaXMucGFuZWxzLmF1ZGl0cyA9IG5ldyBXZWJJbnNwZWN0b3IuQXVkaXRzUGFuZWwoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNGZkNDQ0Zi4uMzU2N2FjNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMS0wMS0yNSAgTWlraGFpbCBO
YWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0gUHJlcGFy
ZSBmb3IgbGFuZGluZyBvZiBkZXRhaWxlZCBoZWFwIHNuYXBzaG90cy4KKworICAgICAgICAtIElu
dHJvZHVjZSBQcmVmZXJlbmNlcy5kZXRhaWxlZEhlYXBQcm9maWxlcyBmbGFnIGZvciBjb250cm9s
bGluZworICAgICAgICAgIHF1ZXJ5aW5nIG9mIGRldGFpbGVkIGhlYXAgc25hcHNob3RzLgorICAg
ICAgICAtIEFkZCBib2lsZXJwbGF0ZSBjb2RlIGZvciB0aGUgbmV3IHZpZXcuCisgICAgICAgIC0g
RmFjdG9yIG91dCBjb21tb24gY29kZS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTI2MjQKKworICAgICAgICAqIHNyYy9qcy9EZXZUb29scy5qczoK
KyAgICAgICAgKCk6CisKIDIwMTEtMDEtMjUgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgdHJpdmlhbCBkZWJ1Z2dlciB0ZXN0
IGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0RldlRvb2xz
LmpzIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMKaW5kZXggZDY1
MzZiYy4uYzY5ZTRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMv
RGV2VG9vbHMuanMKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMu
anMKQEAgLTQxLDYgKzQxLDcgQEAgdmFyIGNvbnRleHQgPSB7fTsgIC8vIFVzZWQgYnkgV2ViQ29y
ZSdzIGluc3BlY3RvciByb3V0aW5lcy4KICAgICBQcmVmZXJlbmNlcy5pZ25vcmVXaGl0ZXNwYWNl
ID0gZmFsc2U7CiAgICAgUHJlZmVyZW5jZXMuc2FtcGxpbmdDUFVQcm9maWxlciA9IHRydWU7CiAg
ICAgUHJlZmVyZW5jZXMuaGVhcFByb2ZpbGVyUHJlc2VudCA9IHRydWU7CisgICAgUHJlZmVyZW5j
ZXMuZGV0YWlsZWRIZWFwUHJvZmlsZXMgPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLmRlYnVnZ2Vy
QWx3YXlzRW5hYmxlZCA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdheXNFbmFi
bGVkID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5jYW5FZGl0U2NyaXB0U291cmNlID0gdHJ1ZTsK
</data>
<flag name="review"
          id="71499"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="71500"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80050</attachid>
            <date>2011-01-25 05:18:41 -0800</date>
            <delta_ts>2011-01-25 05:30:18 -0800</delta_ts>
            <desc>comments addressed</desc>
            <filename>patch-52624</filename>
            <type>text/plain</type>
            <size>36171</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YjQxMmFiLi45N2Y5NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAg
QEAKKzIwMTEtMDEtMjUgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbQ2hyb21pdW1dIFByZXBhcmUgZm9yIGxhbmRpbmcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuCisKKyAgICAgICAgLSBJbnRyb2R1Y2UgUHJlZmVyZW5jZXMuZGV0YWlsZWRIZWFw
UHJvZmlsZXMgZmxhZyBmb3IgY29udHJvbGxpbmcKKyAgICAgICAgICBxdWVyeWluZyBvZiBkZXRh
aWxlZCBoZWFwIHNuYXBzaG90cy4KKyAgICAgICAgLSBBZGQgYm9pbGVycGxhdGUgY29kZSBmb3Ig
dGhlIG5ldyB2aWV3LgorICAgICAgICAtIEZhY3RvciBvdXQgY29tbW9uIGNvZGUuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjI0CisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFByb2ZpbGVyOjpIZWFwU25hcHNob3RDb250cm9sOjp+SGVhcFNuYXBzaG90
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFw
c2hvdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQ
cm9maWxlcjo6SGVhcFNuYXBzaG90Q29udHJvbDo6fkhlYXBTbmFwc2hvdENvbnRyb2wpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxl
ZEhlYXBzaG90Vmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5nZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLnNldCBwcm9maWxlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLmhp
ZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlLnByb3Rv
dHlwZS5nZXQgYnV0dG9uVG9vbHRpcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9u
Q2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVU
eXBlLnByb3RvdHlwZS5nZXQgd2VsY29tZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuY3JlYXRlU2lkZWJhclRyZWVF
bGVtZW50Rm9yUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hv
dFByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IGRvbmUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBpc0VsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90
eXBlLmdldCBpc0hpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRn
ZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLm5leHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBub2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yLnByb3RvdHlwZS5n
ZXQgbm9kZUluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0
ZXJhdG9yLnByb3RvdHlwZS5fZ2V0TmFtZU9ySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBlZGdlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBl
ZGdlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBl
ci5wcm90b3R5cGUuZ2V0IGluc3RhbmNlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IGlzSGlkZGVuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IG5hbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyLnByb3RvdHlw
ZS5nZXQgc2VsZlNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVX
cmFwcGVyLnByb3RvdHlwZS5fZ2V0TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRFZGdlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuZ2V0IHJvb3RFZGdlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3NldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9yZXBvcnRIZWFwU25hcHNo
b3RQcm9ncmVzcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnBy
b3RvdHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVQYW5lbHMpOgorCiAyMDExLTAxLTI0
ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYWM2ZmU2Yi4uYmYw
MjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY2Myw2ICs0NjYzLDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFibGVWaWV3LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NU3RvcmFnZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01T
dG9yYWdlSXRlbXNWaWV3LmpzJywKQEAgLTQ2ODEsNiArNDY4Miw3IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9IQVJFbnRyeS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWxwU2Ny
ZWVuLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcycs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDZm
OGE2YTQuLmVmZTY0Y2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC02NTQ1Nyw2ICs2NTQ1NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgog
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxEZXRh
aWxlZEhlYXBzaG90Vmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRE9NQWdlbnQuanMiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CkBAIC02NTUzNyw2ICs2NTU0MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxIZWFwU25hcHNob3QuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEhlYXBTbmFwc2hvdFZpZXcuanMi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZXIuaAppbmRleCBkNGRkNjA2Li40MjFmYTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKQEAgLTM4LDkgKzM4LDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTY3JpcHRQcm9maWxlcik7CiBwdWJsaWM6CisgICAgY2xhc3MgSGVhcFNuYXBzaG90UHJvZ3Jl
c3MgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGVhcFNuYXBzaG90UHJvZ3Jlc3Mo
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIFN0YXJ0KGludCB0b3RhbFdvcmspID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIFdvcmtlZChpbnQgd29ya0RvbmUsIGJvb2wqIGNhbmNlbCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgRG9uZSgpID0gMDsKKyAgICB9OworCiAgICAgc3RhdGlj
IHZvaWQgc3RhcnQoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBzdG9wKFNjcmlwdFN0YXRlKiBzdGF0
ZSwgY29uc3QgU3RyaW5nJiB0aXRsZSk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0SGVh
cFNuYXBzaG90PiB0YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0cmluZyYpIHsgcmV0dXJuIDA7IH0K
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHRha2VIZWFwU25hcHNo
b3QoY29uc3QgU3RyaW5nJiwgSGVhcFNuYXBzaG90UHJvZ3Jlc3MqKSB7IHJldHVybiAwOyB9CiAg
ICAgc3RhdGljIGJvb2wgaXNQcm9maWxlckFsd2F5c0VuYWJsZWQoKTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCAwMmRlYTE0Li5l
YzQ3ZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9m
aWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIu
Y3BwCkBAIC01MywxMCArNTMsNDQgQEAgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBTY3JpcHRQ
cm9maWxlcjo6c3RvcChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYKICAgICByZXR1
cm4gcHJvZmlsZSA/IFNjcmlwdFByb2ZpbGU6OmNyZWF0ZShwcm9maWxlKSA6IDA7CiB9CiAKLVBh
c3NSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFw
c2hvdChjb25zdCBTdHJpbmcmIHRpdGxlKQorbmFtZXNwYWNlIHsKKworY2xhc3MgQWN0aXZpdHlD
b250cm9sQWRhcHRlciA6IHB1YmxpYyB2ODo6QWN0aXZpdHlDb250cm9sIHsKK3B1YmxpYzoKKyAg
ICBBY3Rpdml0eUNvbnRyb2xBZGFwdGVyKFNjcmlwdFByb2ZpbGVyOjpIZWFwU25hcHNob3RQcm9n
cmVzcyogcHJvZ3Jlc3MpCisgICAgICAgICAgICA6IG1fcHJvZ3Jlc3MocHJvZ3Jlc3MpLCBtX2Zp
cnN0UmVwb3J0KHRydWUpIHsgfQorICAgIENvbnRyb2xPcHRpb24gUmVwb3J0UHJvZ3Jlc3NWYWx1
ZShpbnQgZG9uZSwgaW50IHRvdGFsKQorICAgIHsKKyAgICAgICAgQ29udHJvbE9wdGlvbiByZXN1
bHQgPSBrQ29udGludWU7CisgICAgICAgIGlmIChtX2ZpcnN0UmVwb3J0KSB7CisgICAgICAgICAg
ICBtX2ZpcnN0UmVwb3J0ID0gZmFsc2U7CisgICAgICAgICAgICBtX3Byb2dyZXNzLT5TdGFydCh0
b3RhbCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBib29sIGNhbmNlbCA9IGZhbHNl
OworICAgICAgICAgICAgbV9wcm9ncmVzcy0+V29ya2VkKGRvbmUsICZjYW5jZWwpOworICAgICAg
ICAgICAgaWYgKGNhbmNlbCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBrQWJvcnQ7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGRvbmUgPj0gdG90YWwpCisgICAgICAgICAgICBtX3Byb2dyZXNz
LT5Eb25lKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorcHJpdmF0ZToKKyAgICBT
Y3JpcHRQcm9maWxlcjo6SGVhcFNuYXBzaG90UHJvZ3Jlc3MqIG1fcHJvZ3Jlc3M7CisgICAgYm9v
bCBtX2ZpcnN0UmVwb3J0OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworUGFzc1JlZlB0cjxTY3Jp
cHRIZWFwU25hcHNob3Q+IFNjcmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0
cmluZyYgdGl0bGUsIEhlYXBTbmFwc2hvdFByb2dyZXNzKiBjb250cm9sKQogewogICAgIHY4OjpI
YW5kbGVTY29wZSBoczsKLSAgICBjb25zdCB2ODo6SGVhcFNuYXBzaG90KiBzbmFwc2hvdCA9IHY4
OjpIZWFwUHJvZmlsZXI6OlRha2VTbmFwc2hvdCh2OFN0cmluZyh0aXRsZSksIHY4OjpIZWFwU25h
cHNob3Q6OmtBZ2dyZWdhdGVkKTsKKyAgICBjb25zdCB2ODo6SGVhcFNuYXBzaG90KiBzbmFwc2hv
dCA9IDA7CisgICAgaWYgKGNvbnRyb2wpIHsKKyAgICAgICAgQWN0aXZpdHlDb250cm9sQWRhcHRl
ciBhZGFwdGVyKGNvbnRyb2wpOworICAgICAgICBzbmFwc2hvdCA9IHY4OjpIZWFwUHJvZmlsZXI6
OlRha2VTbmFwc2hvdCh2OFN0cmluZyh0aXRsZSksIHY4OjpIZWFwU25hcHNob3Q6OmtGdWxsLCAm
YWRhcHRlcik7CisgICAgfSBlbHNlCisgICAgICAgIHNuYXBzaG90ID0gdjg6OkhlYXBQcm9maWxl
cjo6VGFrZVNuYXBzaG90KHY4U3RyaW5nKHRpdGxlKSwgdjg6OkhlYXBTbmFwc2hvdDo6a0FnZ3Jl
Z2F0ZWQpOwogICAgIHJldHVybiBzbmFwc2hvdCA/IFNjcmlwdEhlYXBTbmFwc2hvdDo6Y3JlYXRl
KHNuYXBzaG90KSA6IDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdFByb2ZpbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQ
cm9maWxlci5oCmluZGV4IGUwOTY5ZTEuLjgxMDA0YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuaApAQCAtNDQsOSArNDQsMTcgQEAgY2xhc3MgSW5zcGVj
dG9yT2JqZWN0OwogY2xhc3MgU2NyaXB0UHJvZmlsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFNjcmlwdFByb2ZpbGVyKTsKIHB1YmxpYzoKKyAgICBjbGFzcyBIZWFwU25hcHNob3RQcm9n
cmVzcyB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IZWFwU25hcHNob3RQcm9ncmVz
cygpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgU3RhcnQoaW50IHRvdGFsV29yaykgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgV29ya2VkKGludCB3b3JrRG9uZSwgYm9vbCogY2FuY2VsKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBEb25lKCkgPSAwOworICAgIH07CisKICAgICBzdGF0
aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0
YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRI
ZWFwU25hcHNob3Q+IHRha2VIZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0SGVhcFNuYXBzaG90PiB0YWtlSGVhcFNuYXBzaG90KGNv
bnN0IFN0cmluZyYgdGl0bGUsIEhlYXBTbmFwc2hvdFByb2dyZXNzKik7CiAgICAgc3RhdGljIGJv
b2wgaXNQcm9maWxlckFsd2F5c0VuYWJsZWQoKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5pZGwKaW5kZXggYWQwZDhmNC4uYTkxNzY1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTMwNCwxMiArMzA0LDEzIEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgW2RvbWFpbj1Qcm9maWxlcl0gdm9pZCBjbGVhclByb2ZpbGVzKCk7CiAKICAgICAg
ICAgLy8gRklYTUU6IHNwbGl0IGludG8gUHJvZmlsZXIgYW5kIEhlYXBQcm9maWxlci4KLSAgICAg
ICAgW2RvbWFpbj1Qcm9maWxlcl0gdm9pZCB0YWtlSGVhcFNuYXBzaG90KCk7CisgICAgICAgIFtk
b21haW49UHJvZmlsZXJdIHZvaWQgdGFrZUhlYXBTbmFwc2hvdChpbiBib29sZWFuIGRldGFpbGVk
KTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIGFkZFByb2ZpbGVIZWFk
ZXIob3V0IE9iamVjdCBoZWFkZXIpOwogICAgICAgICBbbm90aWZ5LCBkb21haW49UHJvZmlsZXJd
IHZvaWQgYWRkSGVhcFNuYXBzaG90Q2h1bmsob3V0IHVuc2lnbmVkIGxvbmcgdWlkLCBvdXQgU3Ry
aW5nIGNodW5rKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIGZpbmlz
aEhlYXBTbmFwc2hvdChvdXQgdW5zaWduZWQgbG9uZyB1aWQpOwogICAgICAgICBbbm90aWZ5LCBk
b21haW49UHJvZmlsZXJdIHZvaWQgc2V0UmVjb3JkaW5nUHJvZmlsZShvdXQgYm9vbGVhbiBpc1By
b2ZpbGluZyk7CiAgICAgICAgIFtub3RpZnksIGRvbWFpbj1Qcm9maWxlcl0gdm9pZCByZXNldFBy
b2ZpbGVzKCk7CisgICAgICAgIFtub3RpZnksIGRvbWFpbj1Qcm9maWxlcl0gdm9pZCByZXBvcnRI
ZWFwU25hcHNob3RQcm9ncmVzcyhvdXQgaW50IGRvbmUsIG91dCBpbnQgdG90YWwpOwogI2VuZGlm
IC8vIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBlNzE5
OGI4Li4yNGEzZjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0yNjcsMTIgKzI2NywzNiBAQCB2b2lkIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKGJvb2wgaWdub3JlUHJv
ZmlsZSkKICAgICB0b2dnbGVSZWNvcmRCdXR0b24oZmFsc2UpOwogfQogCi12b2lkIEluc3BlY3Rv
clByb2ZpbGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QoKQorbmFtZXNwYWNlIHsKKworY2xhc3Mg
SGVhcFNuYXBzaG90UHJvZ3Jlc3M6IHB1YmxpYyBTY3JpcHRQcm9maWxlcjo6SGVhcFNuYXBzaG90
UHJvZ3Jlc3MgeworcHVibGljOgorICAgIGV4cGxpY2l0IEhlYXBTbmFwc2hvdFByb2dyZXNzKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKKyAgICAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5k
KSB7IH0KKyAgICB2b2lkIFN0YXJ0KGludCB0b3RhbFdvcmspCisgICAgeworICAgICAgICBtX3Rv
dGFsV29yayA9IHRvdGFsV29yazsKKyAgICB9CisgICAgdm9pZCBXb3JrZWQoaW50IHdvcmtEb25l
LCBib29sKiBjYW5jZWwpCisgICAgeworICAgICAgICBpZiAobV9mcm9udGVuZCkKKyAgICAgICAg
ICAgIG1fZnJvbnRlbmQtPnJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKHdvcmtEb25lLCBtX3Rv
dGFsV29yayk7CisgICAgfQorICAgIHZvaWQgRG9uZSgpIHsgfQorcHJpdmF0ZToKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKKyAgICBpbnQgbV90b3RhbFdvcms7Cit9OworCit9
OworCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QoYm9vbCBk
ZXRhaWxlZCkKIHsKICAgICBTdHJpbmcgdGl0bGUgPSBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQ
cm9maWxlTmFtZSwgJy4nLCBTdHJpbmc6Om51bWJlcihtX25leHRVc2VySW5pdGlhdGVkSGVhcFNu
YXBzaG90TnVtYmVyKSk7CiAgICAgKyttX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVt
YmVyOwogCi0gICAgUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4gc25hcHNob3QgPSBTY3JpcHRQ
cm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdCh0aXRsZSk7CisgICAgSGVhcFNuYXBzaG90UHJvZ3Jl
c3MgcHJvZ3Jlc3MobV9mcm9udGVuZCk7CisgICAgUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4g
c25hcHNob3QgPSBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdCh0aXRsZSwgZGV0YWls
ZWQgPyAmcHJvZ3Jlc3MgOiAwKTsKICAgICBpZiAoc25hcHNob3QpIHsKICAgICAgICAgbV9zbmFw
c2hvdHMuYWRkKHNuYXBzaG90LT51aWQoKSwgc25hcHNob3QpOwogICAgICAgICBpZiAobV9mcm9u
dGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5oCmluZGV4IDA5ZGU3MTcuLjkzNjM3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpIHsg
bV9mcm9udGVuZCA9IGZyb250ZW5kOyB9CiAgICAgdm9pZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsKICAgICB2b2lkIHN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKGJvb2wgaWdub3Jl
UHJvZmlsZSA9IGZhbHNlKTsKLSAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoKTsKKyAgICB2b2lk
IHRha2VIZWFwU25hcHNob3QoYm9vbCBkZXRhaWxlZCk7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRC
dXR0b24oYm9vbCBpc1Byb2ZpbGluZyk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmUyNjVjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90
Vmlldy5qcwpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNh
bGwodGhpcyk7CisKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGVhcC1zbmFwc2hv
dC12aWV3Iik7CisKKyAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKKyAgICB0aGlzLnByb2ZpbGUg
PSBwcm9maWxlOworfQorCitXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90
eXBlID0geworICAgIGdldCBwcm9maWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9w
cm9maWxlOworICAgIH0sCisKKyAgICBzZXQgcHJvZmlsZShwcm9maWxlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUg
PSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJIRUFQIFNOQVBTSE9UUyIpKTsKK30KKworV2ViSW5zcGVjdG9yLkRldGFpbGVk
SGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGJ1dHRvblRvb2x0aXAo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGFrZSBoZWFw
IHNuYXBzaG90LiIpOworICAgIH0sCisKKyAgICBnZXQgYnV0dG9uU3R5bGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICJoZWFwLXNuYXBzaG90LXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0
ZW0iOworICAgIH0sCisKKyAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnRha2VIZWFwU25hcHNob3QodHJ1ZSk7CisgICAgfSwKKwor
ICAgIGdldCB3ZWxjb21lTWVzc2FnZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJHZXQgYSBoZWFwIHNuYXBzaG90IGJ5IHByZXNzaW5nIHRoZSAlcyBidXR0
b24gb24gdGhlIHN0YXR1cyBiYXIuIik7CisgICAgfSwKKworICAgIGNyZWF0ZVNpZGViYXJUcmVl
RWxlbWVudEZvclByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2ZpbGUsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU25hcHNob3QgJWQiKSwgImhlYXAtc25hcHNob3Qtc2lkZWJh
ci10cmVlLWl0ZW0iKTsKKyAgICB9LAorCisgICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmls
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNo
b3RWaWV3KFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMsIHByb2ZpbGUpOworICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY5MWE4MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC0wLDAg
KzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IgPSBmdW5jdGlv
bihzbmFwc2hvdCwgZWRnZXMpCit7CisgICAgdGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdDsKKyAg
ICB0aGlzLl9lZGdlcyA9IGVkZ2VzOworICAgIHRoaXMuX2VkZ2VJbmRleCA9IDA7Cit9CisKK1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yLnByb3RvdHlwZSA9IHsKKyAgICBn
ZXQgZG9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWRnZUluZGV4ID49IHRoaXMu
X2VkZ2VzLmxlbmd0aDsKKyAgICB9LAorCisgICAgZ2V0IGlzRWxlbWVudCgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fdHlwZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fZWRnZUVsZW1lbnRU
eXBlOworICAgIH0sCisKKyAgICBnZXQgaXNIaWRkZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3R5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VIaWRkZW5UeXBlOworICAgIH0s
CisKKyAgICBnZXQgbmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pc0VsZW1lbnQg
fHwgdGhpcy5pc0hpZGRlbiA/IHRoaXMuX25hbWVPckluZGV4KCkgOiB0aGlzLl9zbmFwc2hvdC5f
c3RyaW5nc1t0aGlzLl9uYW1lT3JJbmRleCgpXTsKKyAgICB9LAorCisgICAgbmV4dDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZWRnZUluZGV4ICs9IHRoaXMuX3NuYXBzaG90Ll9l
ZGdlRmllbGRzQ291bnQ7CisgICAgfSwKKworICAgIGdldCBub2RlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyKHRoaXMuX3Nu
YXBzaG90LCB0aGlzLm5vZGVJbmRleCk7CisgICAgfSwKKworICAgIGdldCBub2RlSW5kZXgoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VzW3RoaXMuX2VkZ2VJbmRleCArIHRoaXMu
X3NuYXBzaG90Ll9lZGdlVG9Ob2RlT2Zmc2V0XTsKKyAgICB9LAorCisgICAgX25hbWVPckluZGV4
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWRnZXNbdGhpcy5fZWRn
ZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2VOYW1lT2Zmc2V0XTsKKyAgICB9LAorCisgICAg
X3R5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0aGlz
Ll9lZGdlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fZWRnZVR5cGVPZmZzZXRdOworICAgIH0KK307
CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlciA9IGZ1bmN0aW9uKHNuYXBz
aG90LCBub2RlSW5kZXgpCit7CisgICAgdGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdDsKKyAgICB0
aGlzLl9ub2RlcyA9IHNuYXBzaG90Ll9ub2RlczsKKyAgICB0aGlzLl9ub2RlSW5kZXggPSBub2Rl
SW5kZXg7Cit9CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5
cGUgPSB7CisgICAgZ2V0IGVkZ2VzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IodGhpcy5fc25hcHNob3QsIHRoaXMuX2Vk
Z2VzKCkpOworICAgIH0sCisKKyAgICBnZXQgZWRnZXNDb3VudCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2Vz
Q291bnRPZmZzZXRdOworICAgIH0sCisKKyAgICBnZXQgaW5zdGFuY2VzQ291bnQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBz
aG90Ll9ub2RlSW5zdGFuY2VzQ291bnRPZmZzZXRdOworICAgIH0sCisKKyAgICBnZXQgaXNIaWRk
ZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUoKSA9PT0gdGhpcy5fc25hcHNo
b3QuX25vZGVIaWRkZW5UeXBlOworICAgIH0sCisKKyAgICBnZXQgbmFtZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX3N0cmluZ3NbdGhpcy5fbmFtZSgpXTsKKyAgICB9
LAorCisgICAgZ2V0IHNlbGZTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ub2Rl
c1t0aGlzLl9ub2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZVNlbGZTaXplT2Zmc2V0XTsg
CisgICAgfSwKKworICAgIF9uYW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25vZGVOYW1lT2Zm
c2V0XTsgCisgICAgfSwKKworICAgIF9lZGdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIGZpcnN0RWRnZUluZGV4ID0gdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2Zp
cnN0RWRnZU9mZnNldDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzLnNsaWNlKGZpcnN0RWRn
ZUluZGV4LCBmaXJzdEVkZ2VJbmRleCArIHRoaXMuZWRnZXNDb3VudCAqIHRoaXMuX3NuYXBzaG90
Ll9lZGdlRmllbGRzQ291bnQpOworICAgIH0sCisKKyAgICBfdHlwZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3Nu
YXBzaG90Ll9ub2RlVHlwZU9mZnNldF07CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdCA9IGZ1bmN0aW9uKHByb2ZpbGUpCit7CisgICAgdGhpcy5fcHJvZmlsZSA9IHByb2Zp
bGU7CisgICAgdGhpcy5fbm9kZXMgPSBwcm9maWxlLm5vZGVzOworICAgIHRoaXMuX3N0cmluZ3Mg
PSBwcm9maWxlLnN0cmluZ3M7CisKKyAgICB0aGlzLl9pbml0KCk7Cit9CisKK1dlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0geworICAgIF9pbml0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLl9tZXRhTm9kZUluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fcm9vdE5v
ZGVJbmRleCA9IDE7CisgICAgICAgIHZhciBtZXRhID0gdGhpcy5fbm9kZXNbdGhpcy5fbWV0YU5v
ZGVJbmRleF07CisgICAgICAgIHRoaXMuX25vZGVUeXBlT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5k
ZXhPZigidHlwZSIpOworICAgICAgICB0aGlzLl9ub2RlTmFtZU9mZnNldCA9IG1ldGEuZmllbGRz
LmluZGV4T2YoIm5hbWUiKTsKKyAgICAgICAgdGhpcy5fbm9kZUlkT2Zmc2V0ID0gbWV0YS5maWVs
ZHMuaW5kZXhPZigiaWQiKTsKKyAgICAgICAgdGhpcy5fbm9kZUluc3RhbmNlc0NvdW50T2Zmc2V0
ID0gdGhpcy5fbm9kZUlkT2Zmc2V0OworICAgICAgICB0aGlzLl9ub2RlU2VsZlNpemVPZmZzZXQg
PSBtZXRhLmZpZWxkcy5pbmRleE9mKCJzZWxmX3NpemUiKTsKKyAgICAgICAgdGhpcy5fZWRnZXND
b3VudE9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVuX2NvdW50Iik7CisgICAg
ICAgIHRoaXMuX2ZpcnN0RWRnZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVu
Iik7CisgICAgICAgIHRoaXMuX25vZGVUeXBlcyA9IG1ldGEudHlwZXNbdGhpcy5fbm9kZVR5cGVP
ZmZzZXRdOworICAgICAgICB0aGlzLl9ub2RlSGlkZGVuVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5p
bmRleE9mKCJoaWRkZW4iKTsKKyAgICAgICAgdmFyIGVkZ2VzTWV0YSA9IG1ldGEudHlwZXNbdGhp
cy5fZmlyc3RFZGdlT2Zmc2V0XTsKKyAgICAgICAgdGhpcy5fZWRnZUZpZWxkc0NvdW50ID0gZWRn
ZXNNZXRhLmZpZWxkcy5sZW5ndGg7CisgICAgICAgIHRoaXMuX2VkZ2VUeXBlT2Zmc2V0ID0gZWRn
ZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJ0eXBlIik7CisgICAgICAgIHRoaXMuX2VkZ2VOYW1lT2Zm
c2V0ID0gZWRnZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJuYW1lX29yX2luZGV4Iik7CisgICAgICAg
IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4T2YoInRvX25v
ZGUiKTsKKyAgICAgICAgdGhpcy5fZWRnZVR5cGVzID0gZWRnZXNNZXRhLnR5cGVzW3RoaXMuX2Vk
Z2VUeXBlT2Zmc2V0XTsKKyAgICAgICAgdGhpcy5fZWRnZUVsZW1lbnRUeXBlID0gdGhpcy5fZWRn
ZVR5cGVzLmluZGV4T2YoImVsZW1lbnQiKTsKKyAgICAgICAgdGhpcy5fZWRnZUhpZGRlblR5cGUg
PSB0aGlzLl9lZGdlVHlwZXMuaW5kZXhPZigiaGlkZGVuIik7CisgICAgfSwKKworICAgIGdldCBy
b290RWRnZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGVXcmFwcGVyKHRoaXMsIHRoaXMuX3Jvb3ROb2RlSW5kZXgpKS5lZGdlczsKKyAg
ICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3RWaWV3LmpzCmluZGV4IGVjNDhiZjIuLjExMzUxODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMK
QEAgLTI3LDE1NCArMjcsNiBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
Ci1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvciA9IGZ1bmN0aW9uKHNuYXBz
aG90LCBlZGdlcykKLXsKLSAgICB0aGlzLl9zbmFwc2hvdCA9IHNuYXBzaG90OwotICAgIHRoaXMu
X2VkZ2VzID0gZWRnZXM7Ci0gICAgdGhpcy5fZWRnZUluZGV4ID0gMDsKLX0KLQotV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlID0gewotICAgIGdldCBkb25l
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlSW5kZXggPj0gdGhpcy5fZWRnZXMu
bGVuZ3RoOwotICAgIH0sCi0KLSAgICBnZXQgaXNFbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9nZXRUeXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlRWxlbWVudFR5cGU7
Ci0gICAgfSwKLQotICAgIGdldCBpc0hpZGRlbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZ2V0VHlwZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fZWRnZUhpZGRlblR5cGU7Ci0gICAgfSwK
LQotICAgIGdldCBuYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzRWxlbWVudCB8
fCB0aGlzLmlzSGlkZGVuID8gdGhpcy5fZ2V0TmFtZU9ySW5kZXgoKSA6IHRoaXMuX3NuYXBzaG90
Ll9zdHJpbmdzW3RoaXMuX2dldE5hbWVPckluZGV4KCldOwotICAgIH0sCi0KLSAgICBuZXh0OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9lZGdlSW5kZXggKz0gdGhpcy5fc25hcHNo
b3QuX2VkZ2VGaWVsZHNDb3VudDsKLSAgICB9LAotCi0gICAgZ2V0IG5vZGUoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIodGhp
cy5fc25hcHNob3QsIHRoaXMubm9kZUluZGV4KTsKLSAgICB9LAotCi0gICAgZ2V0IG5vZGVJbmRl
eCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWRnZXNbdGhpcy5fZWRnZUluZGV4ICsg
dGhpcy5fc25hcHNob3QuX2VkZ2VUb05vZGVPZmZzZXRdOwotICAgIH0sCi0KLSAgICBfZ2V0TmFt
ZU9ySW5kZXg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0
aGlzLl9lZGdlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fZWRnZU5hbWVPZmZzZXRdOwotICAgIH0s
Ci0KLSAgICBfZ2V0VHlwZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2VkZ2VzW3RoaXMuX2VkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlVHlwZU9mZnNldF07
Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyID0gZnVu
Y3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCkKLXsKLSAgICB0aGlzLl9zbmFwc2hvdCA9IHNuYXBz
aG90OwotICAgIHRoaXMuX25vZGVzID0gc25hcHNob3QuX25vZGVzOwotICAgIHRoaXMuX25vZGVJ
bmRleCA9IG5vZGVJbmRleDsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFw
cGVyLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZWRnZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvcih0aGlzLl9zbmFwc2hv
dCwgdGhpcy5fZ2V0RWRnZXMoKSk7Ci0gICAgfSwKLQotICAgIGdldCBlZGdlc0NvdW50KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9ub2RlSW5kZXggKyB0aGlzLl9z
bmFwc2hvdC5fZWRnZXNDb3VudE9mZnNldF07Ci0gICAgfSwKLQotICAgIGdldCBpbnN0YW5jZXND
b3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4
ICsgdGhpcy5fc25hcHNob3QuX25vZGVJbnN0YW5jZXNDb3VudE9mZnNldF07Ci0gICAgfSwKLQot
ICAgIGdldCBpc0hpZGRlbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VHlwZSgp
ID09PSB0aGlzLl9zbmFwc2hvdC5fbm9kZUhpZGRlblR5cGU7Ci0gICAgfSwKLQotICAgIGdldCBu
YW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5fc3RyaW5nc1t0aGlz
Ll9nZXROYW1lKCldOwotICAgIH0sCi0KLSAgICBnZXQgc2VsZlNpemUoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9u
b2RlU2VsZlNpemVPZmZzZXRdOyAKLSAgICB9LAotCi0gICAgX2dldE5hbWU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9ub2RlSW5kZXggKyB0aGlz
Ll9zbmFwc2hvdC5fbm9kZU5hbWVPZmZzZXRdOyAKLSAgICB9LAotCi0gICAgX2dldEVkZ2VzOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXggPSB0aGlzLl9ub2Rl
SW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fZmlyc3RFZGdlT2Zmc2V0OwotICAgICAgICByZXR1cm4g
dGhpcy5fbm9kZXMuc2xpY2UoZmlyc3RFZGdlSW5kZXgsIGZpcnN0RWRnZUluZGV4ICsgdGhpcy5l
ZGdlc0NvdW50ICogdGhpcy5fc25hcHNob3QuX2VkZ2VGaWVsZHNDb3VudCk7Ci0gICAgfSwKLQot
ICAgIF9nZXRUeXBlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9k
ZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25vZGVUeXBlT2Zmc2V0XTsKLSAg
ICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90ID0gZnVuY3Rpb24ocHJvZmlsZSkK
LXsKLSAgICB0aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKLSAgICB0aGlzLl9ub2RlcyA9IHByb2Zp
bGUubm9kZXM7Ci0gICAgdGhpcy5fc3RyaW5ncyA9IHByb2ZpbGUuc3RyaW5nczsKLQotICAgIHRo
aXMuX2luaXQoKTsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7
Ci0gICAgX2luaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX21ldGFOb2RlSW5k
ZXggPSAwOwotICAgICAgICB0aGlzLl9yb290Tm9kZUluZGV4ID0gMTsKLSAgICAgICAgdmFyIG1l
dGEgPSB0aGlzLl9ub2Rlc1t0aGlzLl9tZXRhTm9kZUluZGV4XTsKLSAgICAgICAgdGhpcy5fbm9k
ZVR5cGVPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRleE9mKCJ0eXBlIik7Ci0gICAgICAgIHRoaXMu
X25vZGVOYW1lT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5kZXhPZigibmFtZSIpOwotICAgICAgICB0
aGlzLl9ub2RlSWRPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRleE9mKCJpZCIpOwotICAgICAgICB0
aGlzLl9ub2RlSW5zdGFuY2VzQ291bnRPZmZzZXQgPSB0aGlzLl9ub2RlSWRPZmZzZXQ7Ci0gICAg
ICAgIHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoInNlbGZf
c2l6ZSIpOwotICAgICAgICB0aGlzLl9lZGdlc0NvdW50T2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5k
ZXhPZigiY2hpbGRyZW5fY291bnQiKTsKLSAgICAgICAgdGhpcy5fZmlyc3RFZGdlT2Zmc2V0ID0g
bWV0YS5maWVsZHMuaW5kZXhPZigiY2hpbGRyZW4iKTsKLSAgICAgICAgdGhpcy5fbm9kZVR5cGVz
ID0gbWV0YS50eXBlc1t0aGlzLl9ub2RlVHlwZU9mZnNldF07Ci0gICAgICAgIHRoaXMuX25vZGVI
aWRkZW5UeXBlID0gdGhpcy5fbm9kZVR5cGVzLmluZGV4T2YoImhpZGRlbiIpOwotICAgICAgICB2
YXIgZWRnZXNNZXRhID0gbWV0YS50eXBlc1t0aGlzLl9maXJzdEVkZ2VPZmZzZXRdOwotICAgICAg
ICB0aGlzLl9lZGdlRmllbGRzQ291bnQgPSBlZGdlc01ldGEuZmllbGRzLmxlbmd0aDsKLSAgICAg
ICAgdGhpcy5fZWRnZVR5cGVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4T2YoInR5cGUi
KTsKLSAgICAgICAgdGhpcy5fZWRnZU5hbWVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4
T2YoIm5hbWVfb3JfaW5kZXgiKTsKLSAgICAgICAgdGhpcy5fZWRnZVRvTm9kZU9mZnNldCA9IGVk
Z2VzTWV0YS5maWVsZHMuaW5kZXhPZigidG9fbm9kZSIpOwotICAgICAgICB0aGlzLl9lZGdlVHlw
ZXMgPSBlZGdlc01ldGEudHlwZXNbdGhpcy5fZWRnZVR5cGVPZmZzZXRdOwotICAgICAgICB0aGlz
Ll9lZGdlRWxlbWVudFR5cGUgPSB0aGlzLl9lZGdlVHlwZXMuaW5kZXhPZigiZWxlbWVudCIpOwot
ICAgICAgICB0aGlzLl9lZGdlSGlkZGVuVHlwZSA9IHRoaXMuX2VkZ2VUeXBlcy5pbmRleE9mKCJo
aWRkZW4iKTsKLSAgICB9LAotCi0gICAgZ2V0IHJvb3RFZGdlcygpCi0gICAgewotICAgICAgICBy
ZXR1cm4gKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIodGhpcywgdGhp
cy5fcm9vdE5vZGVJbmRleCkpLmVkZ2VzOwotICAgIH0KLX07CiAKIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogewpAQCAtMjQ2LDcgKzk4
LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHBy
b2ZpbGUpCiAKICAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2socHJvZmlsZSkKICAgICB7Ci0g
ICAgICAgIHZhciBsaXN0ID0gdGhpcy5fZ2V0UHJvZmlsZXMoKTsKKyAgICAgICAgdmFyIGxpc3Qg
PSB0aGlzLl9wcm9maWxlcygpOwogICAgICAgICB2YXIgcHJvZmlsZUluZGV4OwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBpZiAobGlz
dFtpXS51aWQgPT09IHByb2ZpbGUudWlkKSB7CkBAIC00NDAsNyArMjkyLDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogCiAgICAgX2NoYW5nZUJhc2U6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJhc2VTbmFwc2hvdC51aWQgPT09IHRo
aXMuX2dldFByb2ZpbGVzKClbdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS51
aWQpCisgICAgICAgIGlmICh0aGlzLmJhc2VTbmFwc2hvdC51aWQgPT09IHRoaXMuX3Byb2ZpbGVz
KClbdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS51aWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVzZXREYXRhR3JpZExpc3QocmVzZXRDb21wbGV0
ZWQuYmluZCh0aGlzKSk7CkBAIC00NjgsNyArMzIwLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3REYXRh
R3JpZExpc3Q7CiAgICAgfSwKIAotICAgIF9nZXRQcm9maWxlczogZnVuY3Rpb24oKQorICAgIF9w
cm9maWxlczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5w
YW5lbHMucHJvZmlsZXMuZ2V0UHJvZmlsZXMoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2Zp
bGVUeXBlLlR5cGVJZCk7CiAgICAgfSwKQEAgLTU4MSw3ICs0MzMsNyBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVzZXREYXRhR3JpZExpc3Q6
IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdGhpcy5fbG9hZFByb2ZpbGUodGhp
cy5fZ2V0UHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLCBw
cm9maWxlTG9hZGVkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlz
Ll9wcm9maWxlcygpW3RoaXMuYmFzZVNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0sIHByb2Zp
bGVMb2FkZWQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgZnVuY3Rpb24gcHJvZmlsZUxvYWRlZChw
cm9maWxlKQogICAgICAgICB7CkBAIC02MTQsNyArNDY2LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3VwZGF0ZUJhc2VPcHRpb25zOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX2dldFByb2ZpbGVzKCk7Cisg
ICAgICAgIHZhciBsaXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKICAgICAgICAgLy8gV2UncmUgYXNz
dW1pbmcgdGhhdCBzbmFwc2hvdHMgY2FuIG9ubHkgYmUgYWRkZWQuCiAgICAgICAgIGlmICh0aGlz
LmJhc2VTZWxlY3RFbGVtZW50Lmxlbmd0aCA9PT0gbGlzdC5sZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMTU1LDcgKzEwMDcsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUucHJvdG90eXBlID0gewogCiAgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50YWtlSGVhcFNuYXBzaG90KCk7CisgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQudGFrZUhlYXBTbmFwc2hvdChmYWxzZSk7CiAgICAgfSwKIAog
ICAgIGdldCB3ZWxjb21lTWVzc2FnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggMmUwYWIyOC4uYmJlMGM1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5l
bC5qcwpAQCAtMzcwLDggKzM3MCw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVy
LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdmFyIHN0YXR1c0Jhckl0ZW1zID0gdmlldy5z
dGF0dXNCYXJJdGVtczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0dXNCYXJJdGVt
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMucHJvZmlsZVZpZXdTdGF0dXNCYXJJdGVt
c0NvbnRhaW5lci5hcHBlbmRDaGlsZChzdGF0dXNCYXJJdGVtc1tpXSk7CisgICAgICAgIGlmIChz
dGF0dXNCYXJJdGVtcykKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdHVzQmFy
SXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1
c0Jhckl0ZW1zQ29udGFpbmVyLmFwcGVuZENoaWxkKHN0YXR1c0Jhckl0ZW1zW2ldKTsKICAgICB9
LAogCiAgICAgZ2V0UHJvZmlsZXM6IGZ1bmN0aW9uKHR5cGVJZCkKQEAgLTYyOSw2ICs2MzAsMTAg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJv
ZmlsZSk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy51cGRhdGVQcm9maWxlVHlwZUJ1dHRvbnMo
KTsKKyAgICB9LAorCisgICAgX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihk
b25lLCB0b3RhbCkKKyAgICB7CiAgICAgfQogfQogCkBAIC02NzQsNiArNjc5LDExIEBAIFdlYklu
c3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIHNldFJlY29yZGlu
Z1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJv
ZmlsZXIuX3NldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOworICAgIH0sCisKKyAgICBy
ZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCisgICAgewor
ICAgICAgICB0aGlzLl9wcm9maWxlci5fcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MoZG9uZSwg
dG90YWwpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2V0dGluZ3MuanMKaW5kZXggZTI2YjFkNy4uZWY2YjI2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00OSw3ICs0OSw5IEBAIHZh
ciBQcmVmZXJlbmNlcyA9IHsKICAgICB1c2VEYXRhVVJMRm9yUmVzb3VyY2VJbWFnZUljb25zOiB0
cnVlLAogICAgIHNob3dUaW1pbmdUYWI6IGZhbHNlLAogICAgIHNob3dDb29raWVzVGFiOiBmYWxz
ZSwKLSAgICBkZWJ1Z01vZGU6IGZhbHNlCisgICAgZGVidWdNb2RlOiBmYWxzZSwKKyAgICBoZWFw
UHJvZmlsZXJQcmVzZW50OiBmYWxzZSwKKyAgICBkZXRhaWxlZEhlYXBQcm9maWxlczogZmFsc2UK
IH0KIAogV2ViSW5zcGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IGU4NDAxZTQuLjU4ZTY4Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAg
LTI4LDYgKzI4LDcgQEAKICAgICA8ZmlsZT5EYXRhYmFzZS5qczwvZmlsZT4KICAgICA8ZmlsZT5E
YXRhYmFzZVF1ZXJ5Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5EYXRhYmFzZVRhYmxlVmlldy5q
czwvZmlsZT4KKyAgICA8ZmlsZT5EZXRhaWxlZEhlYXBzaG90Vmlldy5qczwvZmlsZT4KICAgICA8
ZmlsZT5EYXRhR3JpZC5qczwvZmlsZT4KICAgICA8ZmlsZT5EZWJ1Z2dlck1vZGVsLmpzPC9maWxl
PgogICAgIDxmaWxlPkRPTUFnZW50LmpzPC9maWxlPgpAQCAtNDgsNiArNDksNyBAQAogICAgIDxm
aWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9nLmpzPC9maWxl
PgogICAgIDxmaWxlPkhBUkVudHJ5LmpzPC9maWxlPgorICAgIDxmaWxlPkhlYXBTbmFwc2hvdC5q
czwvZmlsZT4KICAgICA8ZmlsZT5IZWFwU25hcHNob3RWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PkhlbHBTY3JlZW4uanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VWaWV3LmpzPC9maWxlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5k
ZXggYWZmODU3Mi4uMTkzZGVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMzksNyArMTM5LDkgQEAgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCb3R0b21VcFByb2ZpbGVEYXRh
R3JpZFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFw
U25hcHNob3RWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJEZXRhaWxlZEhlYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVidWdnZXJNb2RlbC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NQWdlbnQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5l
QWdlbnQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCA3ZTVjYWY3Li4wZmE0MjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMjIzLDggKzIyMywx
MiBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4
T2YoInByb2ZpbGVzIikgPT09IC0xKSB7CiAgICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxl
cyA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCgpOwogICAgICAgICAgICAgdGhpcy5w
YW5lbHMucHJvZmlsZXMucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNQVVBy
b2ZpbGVUeXBlKCkpOwotICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLmhlYXBQcm9maWxlclBy
ZXNlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5wYW5lbHMucHJvZmlsZXMucmVnaXN0ZXJQcm9m
aWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOworICAg
ICAgICAgICAgaWYgKFByZWZlcmVuY2VzLmhlYXBQcm9maWxlclByZXNlbnQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIVByZWZlcmVuY2VzLmRldGFpbGVkSGVhcFByb2ZpbGVzKQorICAgICAgICAg
ICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5yZWdpc3RlclBy
b2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlKCkp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5k
ZXhPZigiYXVkaXRzIikgPT09IC0xKQogICAgICAgICAgICAgdGhpcy5wYW5lbHMuYXVkaXRzID0g
bmV3IFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCA0ZmQ0NDRmLi4zNTY3YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDExLTAxLTI1ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogW0Nocm9taXVtXSBQcmVwYXJlIGZvciBsYW5kaW5nIG9mIGRldGFpbGVk
IGhlYXAgc25hcHNob3RzLgorCisgICAgICAgIC0gSW50cm9kdWNlIFByZWZlcmVuY2VzLmRldGFp
bGVkSGVhcFByb2ZpbGVzIGZsYWcgZm9yIGNvbnRyb2xsaW5nCisgICAgICAgICAgcXVlcnlpbmcg
b2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisgICAgICAgIC0gQWRkIGJvaWxlcnBsYXRlIGNv
ZGUgZm9yIHRoZSBuZXcgdmlldy4KKyAgICAgICAgLSBGYWN0b3Igb3V0IGNvbW1vbiBjb2RlLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjYyNAor
CisgICAgICAgICogc3JjL2pzL0RldlRvb2xzLmpzOgorICAgICAgICAoKToKKwogMjAxMS0wMS0y
NSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCB0cml2aWFsIGRlYnVnZ2VyIHRlc3QgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCBkNjUzNmJjLi42MzdmZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDEsNiArNDEsNyBAQCB2YXIg
Y29udGV4dCA9IHt9OyAgLy8gVXNlZCBieSBXZWJDb3JlJ3MgaW5zcGVjdG9yIHJvdXRpbmVzLgog
ICAgIFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPSBmYWxzZTsKICAgICBQcmVmZXJlbmNl
cy5zYW1wbGluZ0NQVVByb2ZpbGVyID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5oZWFwUHJvZmls
ZXJQcmVzZW50ID0gdHJ1ZTsKKyAgICBQcmVmZXJlbmNlcy5kZXRhaWxlZEhlYXBQcm9maWxlcyA9
IGZhbHNlOwogICAgIFByZWZlcmVuY2VzLmRlYnVnZ2VyQWx3YXlzRW5hYmxlZCA9IHRydWU7CiAg
ICAgUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdheXNFbmFibGVkID0gdHJ1ZTsKICAgICBQcmVmZXJl
bmNlcy5jYW5FZGl0U2NyaXB0U291cmNlID0gdHJ1ZTsK
</data>
<flag name="commit-queue"
          id="71516"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80051</attachid>
            <date>2011-01-25 05:30:18 -0800</date>
            <delta_ts>2011-01-25 06:15:09 -0800</delta_ts>
            <desc>added isCanceled</desc>
            <filename>patch-52624</filename>
            <type>text/plain</type>
            <size>36171</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2YjQxMmFiLi45N2Y5NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAg
QEAKKzIwMTEtMDEtMjUgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdhbm92QGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbQ2hyb21pdW1dIFByZXBhcmUgZm9yIGxhbmRpbmcgb2YgZGV0YWlsZWQgaGVhcCBz
bmFwc2hvdHMuCisKKyAgICAgICAgLSBJbnRyb2R1Y2UgUHJlZmVyZW5jZXMuZGV0YWlsZWRIZWFw
UHJvZmlsZXMgZmxhZyBmb3IgY29udHJvbGxpbmcKKyAgICAgICAgICBxdWVyeWluZyBvZiBkZXRh
aWxlZCBoZWFwIHNuYXBzaG90cy4KKyAgICAgICAgLSBBZGQgYm9pbGVycGxhdGUgY29kZSBmb3Ig
dGhlIG5ldyB2aWV3LgorICAgICAgICAtIEZhY3RvciBvdXQgY29tbW9uIGNvZGUuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNjI0CisKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0UHJvZmlsZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFByb2ZpbGVyOjpIZWFwU25hcHNob3RDb250cm9sOjp+SGVhcFNuYXBzaG90
Q29udHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFw
c2hvdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UHJvZmlsZXI6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQ
cm9maWxlcjo6SGVhcFNuYXBzaG90Q29udHJvbDo6fkhlYXBTbmFwc2hvdENvbnRyb2wpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxl
ZEhlYXBzaG90Vmlldy5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
LnByb3RvdHlwZS5nZXQgc3RhdHVzQmFySXRlbXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5nZXQgcHJvZmlsZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLnNldCBwcm9maWxlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90Vmlldy5wcm90b3R5cGUuc2hvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90eXBlLmhp
ZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlLnByb3Rv
dHlwZS5nZXQgYnV0dG9uVG9vbHRpcCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRI
ZWFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5nZXQgYnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuYnV0dG9u
Q2xpY2tlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVU
eXBlLnByb3RvdHlwZS5nZXQgd2VsY29tZU1lc3NhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuY3JlYXRlU2lkZWJhclRyZWVF
bGVtZW50Rm9yUHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hv
dFByb2ZpbGVUeXBlLnByb3RvdHlwZS5jcmVhdGVWaWV3KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczogQWRkZWQuCisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90RWRnZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IGRvbmUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBpc0VsZW1lbnQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90
eXBlLmdldCBpc0hpZGRlbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRn
ZXNJdGVyYXRvci5wcm90b3R5cGUuZ2V0IG5hbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLm5leHQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLmdldCBub2RlKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yLnByb3RvdHlwZS5n
ZXQgbm9kZUluZGV4KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0
ZXJhdG9yLnByb3RvdHlwZS5fZ2V0TmFtZU9ySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBlZGdlcyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLmdldCBl
ZGdlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBl
ci5wcm90b3R5cGUuZ2V0IGluc3RhbmNlc0NvdW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IGlzSGlkZGVuKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5cGUuZ2V0IG5hbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyLnByb3RvdHlw
ZS5nZXQgc2VsZlNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVX
cmFwcGVyLnByb3RvdHlwZS5fZ2V0TmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRFZGdlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIucHJvdG90eXBlLl9nZXRUeXBlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdC5wcm90b3R5cGUuX2luaXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5wcm90b3R5cGUuZ2V0IHJvb3RFZGdlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9IZWFwU25hcHNob3RWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFByb2ZpbGVUeXBlLnByb3RvdHlwZS5idXR0b25DbGlja2VkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuX3NldFJlY29yZGluZ1Byb2ZpbGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlLl9yZXBvcnRIZWFwU25hcHNo
b3RQcm9ncmVzcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXJEaXNwYXRjaGVyLnBy
b3RvdHlwZS5zZXRSZWNvcmRpbmdQcm9maWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9m
aWxlckRpc3BhdGNoZXIucHJvdG90eXBlLnJlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLl9jcmVhdGVQYW5lbHMpOgorCiAyMDExLTAxLTI0
ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYWM2ZmU2Yi4uYmYw
MjkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDY2Myw2ICs0NjYzLDcgQEAKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFibGVWaWV3LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9m
cm9udC1lbmQvRGV0YWlsZWRIZWFwc2hvdFZpZXcuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NQWdlbnQuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NU3RvcmFnZS5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9ET01T
dG9yYWdlSXRlbXNWaWV3LmpzJywKQEAgLTQ2ODEsNiArNDY4Miw3IEBACiAgICAgICAgICAgICAn
aW5zcGVjdG9yL2Zyb250LWVuZC9Gb250Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9y
L2Zyb250LWVuZC9Hb1RvTGluZURpYWxvZy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zy
b250LWVuZC9IQVJFbnRyeS5qcycsCisgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3QuanMnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNu
YXBzaG90Vmlldy5qcycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9IZWxwU2Ny
ZWVuLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlVmlldy5qcycs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDZm
OGE2YTQuLmVmZTY0Y2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCkBAIC02NTQ1Nyw2ICs2NTQ1NywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgog
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxEZXRh
aWxlZEhlYXBzaG90Vmlldy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRE9NQWdlbnQuanMiCiAJCQkJ
CT4KIAkJCQk8L0ZpbGU+CkBAIC02NTUzNyw2ICs2NTU0MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVu
ZFxIZWFwU25hcHNob3QuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXEhlYXBTbmFwc2hvdFZpZXcuanMi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
UHJvZmlsZXIuaAppbmRleCBkNGRkNjA2Li40YzBjMDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdFByb2ZpbGVyLmgKQEAgLTM4LDkgKzM4LDE4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTY3JpcHRQcm9maWxlcik7CiBwdWJsaWM6CisgICAgY2xhc3MgSGVhcFNuYXBzaG90UHJvZ3Jl
c3MgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGVhcFNuYXBzaG90UHJvZ3Jlc3Mo
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIFN0YXJ0KGludCB0b3RhbFdvcmspID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIFdvcmtlZChpbnQgd29ya0RvbmUpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIERvbmUoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhbmNlbGVkKCkg
PSAwOworICAgIH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSogc3RhdGUs
IGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdFByb2Zp
bGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHRha2VIZWFwU25hcHNob3QoY29u
c3QgU3RyaW5nJikgeyByZXR1cm4gMDsgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlwdEhl
YXBTbmFwc2hvdD4gdGFrZUhlYXBTbmFwc2hvdChjb25zdCBTdHJpbmcmLCBIZWFwU25hcHNob3RQ
cm9ncmVzcyopIHsgcmV0dXJuIDA7IH0KICAgICBzdGF0aWMgYm9vbCBpc1Byb2ZpbGVyQWx3YXlz
RW5hYmxlZCgpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJv
ZmlsZXIuY3BwCmluZGV4IDAyZGVhMTQuLjVkZTFiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAKQEAgLTUzLDEwICs1Myw0MCBAQCBQYXNzUmVm
UHRyPFNjcmlwdFByb2ZpbGU+IFNjcmlwdFByb2ZpbGVyOjpzdG9wKFNjcmlwdFN0YXRlKiBzdGF0
ZSwgY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBwcm9maWxlID8gU2NyaXB0UHJvZmlsZTo6Y3Jl
YXRlKHByb2ZpbGUpIDogMDsKIH0KIAotUGFzc1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IFNj
cmlwdFByb2ZpbGVyOjp0YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0cmluZyYgdGl0bGUpCituYW1l
c3BhY2UgeworCitjbGFzcyBBY3Rpdml0eUNvbnRyb2xBZGFwdGVyIDogcHVibGljIHY4OjpBY3Rp
dml0eUNvbnRyb2wgeworcHVibGljOgorICAgIEFjdGl2aXR5Q29udHJvbEFkYXB0ZXIoU2NyaXB0
UHJvZmlsZXI6OkhlYXBTbmFwc2hvdFByb2dyZXNzKiBwcm9ncmVzcykKKyAgICAgICAgICAgIDog
bV9wcm9ncmVzcyhwcm9ncmVzcyksIG1fZmlyc3RSZXBvcnQodHJ1ZSkgeyB9CisgICAgQ29udHJv
bE9wdGlvbiBSZXBvcnRQcm9ncmVzc1ZhbHVlKGludCBkb25lLCBpbnQgdG90YWwpCisgICAgewor
ICAgICAgICBDb250cm9sT3B0aW9uIHJlc3VsdCA9IG1fcHJvZ3Jlc3MtPmlzQ2FuY2VsZWQoKSA/
IGtBYm9ydCA6IGtDb250aW51ZTsKKyAgICAgICAgaWYgKG1fZmlyc3RSZXBvcnQpIHsKKyAgICAg
ICAgICAgIG1fZmlyc3RSZXBvcnQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fcHJvZ3Jlc3MtPlN0
YXJ0KHRvdGFsKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtX3Byb2dyZXNzLT5Xb3Jr
ZWQoZG9uZSk7CisgICAgICAgIGlmIChkb25lID49IHRvdGFsKQorICAgICAgICAgICAgbV9wcm9n
cmVzcy0+RG9uZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK3ByaXZhdGU6Cisg
ICAgU2NyaXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdFByb2dyZXNzKiBtX3Byb2dyZXNzOworICAg
IGJvb2wgbV9maXJzdFJlcG9ydDsKK307CisKK30gLy8gbmFtZXNwYWNlCisKK1Bhc3NSZWZQdHI8
U2NyaXB0SGVhcFNuYXBzaG90PiBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdChjb25z
dCBTdHJpbmcmIHRpdGxlLCBIZWFwU25hcHNob3RQcm9ncmVzcyogY29udHJvbCkKIHsKICAgICB2
ODo6SGFuZGxlU2NvcGUgaHM7Ci0gICAgY29uc3Qgdjg6OkhlYXBTbmFwc2hvdCogc25hcHNob3Qg
PSB2ODo6SGVhcFByb2ZpbGVyOjpUYWtlU25hcHNob3QodjhTdHJpbmcodGl0bGUpLCB2ODo6SGVh
cFNuYXBzaG90OjprQWdncmVnYXRlZCk7CisgICAgY29uc3Qgdjg6OkhlYXBTbmFwc2hvdCogc25h
cHNob3QgPSAwOworICAgIGlmIChjb250cm9sKSB7CisgICAgICAgIEFjdGl2aXR5Q29udHJvbEFk
YXB0ZXIgYWRhcHRlcihjb250cm9sKTsKKyAgICAgICAgc25hcHNob3QgPSB2ODo6SGVhcFByb2Zp
bGVyOjpUYWtlU25hcHNob3QodjhTdHJpbmcodGl0bGUpLCB2ODo6SGVhcFNuYXBzaG90OjprRnVs
bCwgJmFkYXB0ZXIpOworICAgIH0gZWxzZQorICAgICAgICBzbmFwc2hvdCA9IHY4OjpIZWFwUHJv
ZmlsZXI6OlRha2VTbmFwc2hvdCh2OFN0cmluZyh0aXRsZSksIHY4OjpIZWFwU25hcHNob3Q6OmtB
Z2dyZWdhdGVkKTsKICAgICByZXR1cm4gc25hcHNob3QgPyBTY3JpcHRIZWFwU25hcHNob3Q6OmNy
ZWF0ZShzbmFwc2hvdCkgOiAwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRQcm9maWxlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0UHJvZmlsZXIuaAppbmRleCBlMDk2OWUxLi44M2FhYjdiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmgKQEAgLTQ0LDkgKzQ0LDE4IEBAIGNsYXNzIElu
c3BlY3Rvck9iamVjdDsKIGNsYXNzIFNjcmlwdFByb2ZpbGVyIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShTY3JpcHRQcm9maWxlcik7CiBwdWJsaWM6CisgICAgY2xhc3MgSGVhcFNuYXBzaG90
UHJvZ3Jlc3MgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGVhcFNuYXBzaG90UHJv
Z3Jlc3MoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIFN0YXJ0KGludCB0b3RhbFdvcmspID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIFdvcmtlZChpbnQgd29ya0RvbmUpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIERvbmUoKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NhbmNl
bGVkKCkgPSAwOworICAgIH07CisKICAgICBzdGF0aWMgdm9pZCBzdGFydChTY3JpcHRTdGF0ZSog
c3RhdGUsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcmlw
dFByb2ZpbGU+IHN0b3AoU2NyaXB0U3RhdGUqIHN0YXRlLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+IHRha2VIZWFwU25hcHNo
b3QoY29uc3QgU3RyaW5nJiB0aXRsZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2NyaXB0SGVh
cFNuYXBzaG90PiB0YWtlSGVhcFNuYXBzaG90KGNvbnN0IFN0cmluZyYgdGl0bGUsIEhlYXBTbmFw
c2hvdFByb2dyZXNzKik7CiAgICAgc3RhdGljIGJvb2wgaXNQcm9maWxlckFsd2F5c0VuYWJsZWQo
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXggYWQwZDhm
NC4uYTkxNzY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKQEAgLTMw
NCwxMiArMzA0LDEzIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW2RvbWFpbj1Qcm9maWxlcl0g
dm9pZCBjbGVhclByb2ZpbGVzKCk7CiAKICAgICAgICAgLy8gRklYTUU6IHNwbGl0IGludG8gUHJv
ZmlsZXIgYW5kIEhlYXBQcm9maWxlci4KLSAgICAgICAgW2RvbWFpbj1Qcm9maWxlcl0gdm9pZCB0
YWtlSGVhcFNuYXBzaG90KCk7CisgICAgICAgIFtkb21haW49UHJvZmlsZXJdIHZvaWQgdGFrZUhl
YXBTbmFwc2hvdChpbiBib29sZWFuIGRldGFpbGVkKTsKICAgICAgICAgW25vdGlmeSwgZG9tYWlu
PVByb2ZpbGVyXSB2b2lkIGFkZFByb2ZpbGVIZWFkZXIob3V0IE9iamVjdCBoZWFkZXIpOwogICAg
ICAgICBbbm90aWZ5LCBkb21haW49UHJvZmlsZXJdIHZvaWQgYWRkSGVhcFNuYXBzaG90Q2h1bmso
b3V0IHVuc2lnbmVkIGxvbmcgdWlkLCBvdXQgU3RyaW5nIGNodW5rKTsKICAgICAgICAgW25vdGlm
eSwgZG9tYWluPVByb2ZpbGVyXSB2b2lkIGZpbmlzaEhlYXBTbmFwc2hvdChvdXQgdW5zaWduZWQg
bG9uZyB1aWQpOwogICAgICAgICBbbm90aWZ5LCBkb21haW49UHJvZmlsZXJdIHZvaWQgc2V0UmVj
b3JkaW5nUHJvZmlsZShvdXQgYm9vbGVhbiBpc1Byb2ZpbGluZyk7CiAgICAgICAgIFtub3RpZnks
IGRvbWFpbj1Qcm9maWxlcl0gdm9pZCByZXNldFByb2ZpbGVzKCk7CisgICAgICAgIFtub3RpZnks
IGRvbWFpbj1Qcm9maWxlcl0gdm9pZCByZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyhvdXQgaW50
IGRvbmUsIG91dCBpbnQgdG90YWwpOwogI2VuZGlmIC8vIEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVH
R0VSCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBlNzE5OGI4Li40NjkzMDUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC0y
NjcsMTIgKzI2NywzNyBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0b3BVc2VySW5p
dGlhdGVkUHJvZmlsaW5nKGJvb2wgaWdub3JlUHJvZmlsZSkKICAgICB0b2dnbGVSZWNvcmRCdXR0
b24oZmFsc2UpOwogfQogCi12b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnRha2VIZWFwU25h
cHNob3QoKQorbmFtZXNwYWNlIHsKKworY2xhc3MgSGVhcFNuYXBzaG90UHJvZ3Jlc3M6IHB1Ymxp
YyBTY3JpcHRQcm9maWxlcjo6SGVhcFNuYXBzaG90UHJvZ3Jlc3MgeworcHVibGljOgorICAgIGV4
cGxpY2l0IEhlYXBTbmFwc2hvdFByb2dyZXNzKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkK
KyAgICAgICAgOiBtX2Zyb250ZW5kKGZyb250ZW5kKSB7IH0KKyAgICB2b2lkIFN0YXJ0KGludCB0
b3RhbFdvcmspCisgICAgeworICAgICAgICBtX3RvdGFsV29yayA9IHRvdGFsV29yazsKKyAgICB9
CisgICAgdm9pZCBXb3JrZWQoaW50IHdvcmtEb25lKQorICAgIHsKKyAgICAgICAgaWYgKG1fZnJv
bnRlbmQpCisgICAgICAgICAgICBtX2Zyb250ZW5kLT5yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVz
cyh3b3JrRG9uZSwgbV90b3RhbFdvcmspOworICAgIH0KKyAgICB2b2lkIERvbmUoKSB7IH0KKyAg
ICBib29sIGlzQ2FuY2VsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorcHJpdmF0ZToKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKKyAgICBpbnQgbV90b3RhbFdvcms7Cit9OworCit9
OworCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnRha2VIZWFwU25hcHNob3QoYm9vbCBk
ZXRhaWxlZCkKIHsKICAgICBTdHJpbmcgdGl0bGUgPSBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQ
cm9maWxlTmFtZSwgJy4nLCBTdHJpbmc6Om51bWJlcihtX25leHRVc2VySW5pdGlhdGVkSGVhcFNu
YXBzaG90TnVtYmVyKSk7CiAgICAgKyttX25leHRVc2VySW5pdGlhdGVkSGVhcFNuYXBzaG90TnVt
YmVyOwogCi0gICAgUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4gc25hcHNob3QgPSBTY3JpcHRQ
cm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdCh0aXRsZSk7CisgICAgSGVhcFNuYXBzaG90UHJvZ3Jl
c3MgcHJvZ3Jlc3MobV9mcm9udGVuZCk7CisgICAgUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4g
c25hcHNob3QgPSBTY3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdCh0aXRsZSwgZGV0YWls
ZWQgPyAmcHJvZ3Jlc3MgOiAwKTsKICAgICBpZiAoc25hcHNob3QpIHsKICAgICAgICAgbV9zbmFw
c2hvdHMuYWRkKHNuYXBzaG90LT51aWQoKSwgc25hcHNob3QpOwogICAgICAgICBpZiAobV9mcm9u
dGVuZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudC5oCmluZGV4IDA5ZGU3MTcuLjkzNjM3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRGcm9udGVuZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpIHsg
bV9mcm9udGVuZCA9IGZyb250ZW5kOyB9CiAgICAgdm9pZCBzdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsKICAgICB2b2lkIHN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKGJvb2wgaWdub3Jl
UHJvZmlsZSA9IGZhbHNlKTsKLSAgICB2b2lkIHRha2VIZWFwU25hcHNob3QoKTsKKyAgICB2b2lk
IHRha2VIZWFwU25hcHNob3QoYm9vbCBkZXRhaWxlZCk7CiAgICAgdm9pZCB0b2dnbGVSZWNvcmRC
dXR0b24oYm9vbCBpc1Byb2ZpbGluZyk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RldGFpbGVkSGVhcHNob3RWaWV3LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90Vmlldy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmUyNjVjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZXRhaWxlZEhlYXBzaG90
Vmlldy5qcwpAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RWaWV3
ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQoreworICAgIFdlYkluc3BlY3Rvci5WaWV3LmNh
bGwodGhpcyk7CisKKyAgICB0aGlzLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaGVhcC1zbmFwc2hv
dC12aWV3Iik7CisKKyAgICB0aGlzLnBhcmVudCA9IHBhcmVudDsKKyAgICB0aGlzLnByb2ZpbGUg
PSBwcm9maWxlOworfQorCitXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFZpZXcucHJvdG90
eXBlID0geworICAgIGdldCBwcm9maWxlKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9w
cm9maWxlOworICAgIH0sCisKKyAgICBzZXQgcHJvZmlsZShwcm9maWxlKQorICAgIHsKKyAgICAg
ICAgdGhpcy5fcHJvZmlsZSA9IHByb2ZpbGU7CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkRl
dGFpbGVkSGVhcHNob3RWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGU7CisKK1dlYkluc3BlY3Rvci5EZXRhaWxlZEhlYXBzaG90UHJvZmlsZVR5cGUg
PSBmdW5jdGlvbigpCit7CisgICAgV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlLlR5cGVJZCwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJIRUFQIFNOQVBTSE9UUyIpKTsKK30KKworV2ViSW5zcGVjdG9yLkRldGFpbGVk
SGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGJ1dHRvblRvb2x0aXAo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGFrZSBoZWFw
IHNuYXBzaG90LiIpOworICAgIH0sCisKKyAgICBnZXQgYnV0dG9uU3R5bGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuICJoZWFwLXNuYXBzaG90LXN0YXR1cy1iYXItaXRlbSBzdGF0dXMtYmFyLWl0
ZW0iOworICAgIH0sCisKKyAgICBidXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnRha2VIZWFwU25hcHNob3QodHJ1ZSk7CisgICAgfSwKKwor
ICAgIGdldCB3ZWxjb21lTWVzc2FnZSgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJHZXQgYSBoZWFwIHNuYXBzaG90IGJ5IHByZXNzaW5nIHRoZSAlcyBidXR0
b24gb24gdGhlIHN0YXR1cyBiYXIuIik7CisgICAgfSwKKworICAgIGNyZWF0ZVNpZGViYXJUcmVl
RWxlbWVudEZvclByb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGUpCisgICAgeworICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlU2lkZWJhclRyZWVFbGVtZW50KHByb2ZpbGUsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU25hcHNob3QgJWQiKSwgImhlYXAtc25hcHNob3Qtc2lkZWJh
ci10cmVlLWl0ZW0iKTsKKyAgICB9LAorCisgICAgY3JlYXRlVmlldzogZnVuY3Rpb24ocHJvZmls
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNo
b3RWaWV3KFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMsIHByb2ZpbGUpOworICAgIH0KK30K
KworV2ViSW5zcGVjdG9yLkRldGFpbGVkSGVhcHNob3RQcm9maWxlVHlwZS5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLlByb2ZpbGVUeXBlLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY5MWE4MAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzCkBAIC0wLDAg
KzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IgPSBmdW5jdGlv
bihzbmFwc2hvdCwgZWRnZXMpCit7CisgICAgdGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdDsKKyAg
ICB0aGlzLl9lZGdlcyA9IGVkZ2VzOworICAgIHRoaXMuX2VkZ2VJbmRleCA9IDA7Cit9CisKK1dl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlc0l0ZXJhdG9yLnByb3RvdHlwZSA9IHsKKyAgICBn
ZXQgZG9uZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWRnZUluZGV4ID49IHRoaXMu
X2VkZ2VzLmxlbmd0aDsKKyAgICB9LAorCisgICAgZ2V0IGlzRWxlbWVudCgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fdHlwZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fZWRnZUVsZW1lbnRU
eXBlOworICAgIH0sCisKKyAgICBnZXQgaXNIaWRkZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3R5cGUoKSA9PT0gdGhpcy5fc25hcHNob3QuX2VkZ2VIaWRkZW5UeXBlOworICAgIH0s
CisKKyAgICBnZXQgbmFtZSgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pc0VsZW1lbnQg
fHwgdGhpcy5pc0hpZGRlbiA/IHRoaXMuX25hbWVPckluZGV4KCkgOiB0aGlzLl9zbmFwc2hvdC5f
c3RyaW5nc1t0aGlzLl9uYW1lT3JJbmRleCgpXTsKKyAgICB9LAorCisgICAgbmV4dDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fZWRnZUluZGV4ICs9IHRoaXMuX3NuYXBzaG90Ll9l
ZGdlRmllbGRzQ291bnQ7CisgICAgfSwKKworICAgIGdldCBub2RlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyKHRoaXMuX3Nu
YXBzaG90LCB0aGlzLm5vZGVJbmRleCk7CisgICAgfSwKKworICAgIGdldCBub2RlSW5kZXgoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2VzW3RoaXMuX2VkZ2VJbmRleCArIHRoaXMu
X3NuYXBzaG90Ll9lZGdlVG9Ob2RlT2Zmc2V0XTsKKyAgICB9LAorCisgICAgX25hbWVPckluZGV4
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZWRnZXNbdGhpcy5fZWRn
ZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2VOYW1lT2Zmc2V0XTsKKyAgICB9LAorCisgICAg
X3R5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0aGlz
Ll9lZGdlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fZWRnZVR5cGVPZmZzZXRdOworICAgIH0KK307
CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlciA9IGZ1bmN0aW9uKHNuYXBz
aG90LCBub2RlSW5kZXgpCit7CisgICAgdGhpcy5fc25hcHNob3QgPSBzbmFwc2hvdDsKKyAgICB0
aGlzLl9ub2RlcyA9IHNuYXBzaG90Ll9ub2RlczsKKyAgICB0aGlzLl9ub2RlSW5kZXggPSBub2Rl
SW5kZXg7Cit9CisKK1dlYkluc3BlY3Rvci5IZWFwU25hcHNob3ROb2RlV3JhcHBlci5wcm90b3R5
cGUgPSB7CisgICAgZ2V0IGVkZ2VzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IodGhpcy5fc25hcHNob3QsIHRoaXMuX2Vk
Z2VzKCkpOworICAgIH0sCisKKyAgICBnZXQgZWRnZXNDb3VudCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2VkZ2Vz
Q291bnRPZmZzZXRdOworICAgIH0sCisKKyAgICBnZXQgaW5zdGFuY2VzQ291bnQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBz
aG90Ll9ub2RlSW5zdGFuY2VzQ291bnRPZmZzZXRdOworICAgIH0sCisKKyAgICBnZXQgaXNIaWRk
ZW4oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUoKSA9PT0gdGhpcy5fc25hcHNo
b3QuX25vZGVIaWRkZW5UeXBlOworICAgIH0sCisKKyAgICBnZXQgbmFtZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX3N0cmluZ3NbdGhpcy5fbmFtZSgpXTsKKyAgICB9
LAorCisgICAgZ2V0IHNlbGZTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9ub2Rl
c1t0aGlzLl9ub2RlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fbm9kZVNlbGZTaXplT2Zmc2V0XTsg
CisgICAgfSwKKworICAgIF9uYW1lOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4g
dGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25vZGVOYW1lT2Zm
c2V0XTsgCisgICAgfSwKKworICAgIF9lZGdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dmFyIGZpcnN0RWRnZUluZGV4ID0gdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX2Zp
cnN0RWRnZU9mZnNldDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzLnNsaWNlKGZpcnN0RWRn
ZUluZGV4LCBmaXJzdEVkZ2VJbmRleCArIHRoaXMuZWRnZXNDb3VudCAqIHRoaXMuX3NuYXBzaG90
Ll9lZGdlRmllbGRzQ291bnQpOworICAgIH0sCisKKyAgICBfdHlwZTogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3Nu
YXBzaG90Ll9ub2RlVHlwZU9mZnNldF07CisgICAgfQorfTsKKworV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdCA9IGZ1bmN0aW9uKHByb2ZpbGUpCit7CisgICAgdGhpcy5fcHJvZmlsZSA9IHByb2Zp
bGU7CisgICAgdGhpcy5fbm9kZXMgPSBwcm9maWxlLm5vZGVzOworICAgIHRoaXMuX3N0cmluZ3Mg
PSBwcm9maWxlLnN0cmluZ3M7CisKKyAgICB0aGlzLl9pbml0KCk7Cit9CisKK1dlYkluc3BlY3Rv
ci5IZWFwU25hcHNob3QucHJvdG90eXBlID0geworICAgIF9pbml0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLl9tZXRhTm9kZUluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5fcm9vdE5v
ZGVJbmRleCA9IDE7CisgICAgICAgIHZhciBtZXRhID0gdGhpcy5fbm9kZXNbdGhpcy5fbWV0YU5v
ZGVJbmRleF07CisgICAgICAgIHRoaXMuX25vZGVUeXBlT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5k
ZXhPZigidHlwZSIpOworICAgICAgICB0aGlzLl9ub2RlTmFtZU9mZnNldCA9IG1ldGEuZmllbGRz
LmluZGV4T2YoIm5hbWUiKTsKKyAgICAgICAgdGhpcy5fbm9kZUlkT2Zmc2V0ID0gbWV0YS5maWVs
ZHMuaW5kZXhPZigiaWQiKTsKKyAgICAgICAgdGhpcy5fbm9kZUluc3RhbmNlc0NvdW50T2Zmc2V0
ID0gdGhpcy5fbm9kZUlkT2Zmc2V0OworICAgICAgICB0aGlzLl9ub2RlU2VsZlNpemVPZmZzZXQg
PSBtZXRhLmZpZWxkcy5pbmRleE9mKCJzZWxmX3NpemUiKTsKKyAgICAgICAgdGhpcy5fZWRnZXND
b3VudE9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVuX2NvdW50Iik7CisgICAg
ICAgIHRoaXMuX2ZpcnN0RWRnZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoImNoaWxkcmVu
Iik7CisgICAgICAgIHRoaXMuX25vZGVUeXBlcyA9IG1ldGEudHlwZXNbdGhpcy5fbm9kZVR5cGVP
ZmZzZXRdOworICAgICAgICB0aGlzLl9ub2RlSGlkZGVuVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5p
bmRleE9mKCJoaWRkZW4iKTsKKyAgICAgICAgdmFyIGVkZ2VzTWV0YSA9IG1ldGEudHlwZXNbdGhp
cy5fZmlyc3RFZGdlT2Zmc2V0XTsKKyAgICAgICAgdGhpcy5fZWRnZUZpZWxkc0NvdW50ID0gZWRn
ZXNNZXRhLmZpZWxkcy5sZW5ndGg7CisgICAgICAgIHRoaXMuX2VkZ2VUeXBlT2Zmc2V0ID0gZWRn
ZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJ0eXBlIik7CisgICAgICAgIHRoaXMuX2VkZ2VOYW1lT2Zm
c2V0ID0gZWRnZXNNZXRhLmZpZWxkcy5pbmRleE9mKCJuYW1lX29yX2luZGV4Iik7CisgICAgICAg
IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4T2YoInRvX25v
ZGUiKTsKKyAgICAgICAgdGhpcy5fZWRnZVR5cGVzID0gZWRnZXNNZXRhLnR5cGVzW3RoaXMuX2Vk
Z2VUeXBlT2Zmc2V0XTsKKyAgICAgICAgdGhpcy5fZWRnZUVsZW1lbnRUeXBlID0gdGhpcy5fZWRn
ZVR5cGVzLmluZGV4T2YoImVsZW1lbnQiKTsKKyAgICAgICAgdGhpcy5fZWRnZUhpZGRlblR5cGUg
PSB0aGlzLl9lZGdlVHlwZXMuaW5kZXhPZigiaGlkZGVuIik7CisgICAgfSwKKworICAgIGdldCBy
b290RWRnZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChuZXcgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdE5vZGVXcmFwcGVyKHRoaXMsIHRoaXMuX3Jvb3ROb2RlSW5kZXgpKS5lZGdlczsKKyAg
ICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3RWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9I
ZWFwU25hcHNob3RWaWV3LmpzCmluZGV4IGVjNDhiZjIuLjExMzUxODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90Vmlldy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFZpZXcuanMK
QEAgLTI3LDE1NCArMjcsNiBAQAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
Ci1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvciA9IGZ1bmN0aW9uKHNuYXBz
aG90LCBlZGdlcykKLXsKLSAgICB0aGlzLl9zbmFwc2hvdCA9IHNuYXBzaG90OwotICAgIHRoaXMu
X2VkZ2VzID0gZWRnZXM7Ci0gICAgdGhpcy5fZWRnZUluZGV4ID0gMDsKLX0KLQotV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEVkZ2VzSXRlcmF0b3IucHJvdG90eXBlID0gewotICAgIGdldCBkb25l
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlSW5kZXggPj0gdGhpcy5fZWRnZXMu
bGVuZ3RoOwotICAgIH0sCi0KLSAgICBnZXQgaXNFbGVtZW50KCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9nZXRUeXBlKCkgPT09IHRoaXMuX3NuYXBzaG90Ll9lZGdlRWxlbWVudFR5cGU7
Ci0gICAgfSwKLQotICAgIGdldCBpc0hpZGRlbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZ2V0VHlwZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fZWRnZUhpZGRlblR5cGU7Ci0gICAgfSwK
LQotICAgIGdldCBuYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmlzRWxlbWVudCB8
fCB0aGlzLmlzSGlkZGVuID8gdGhpcy5fZ2V0TmFtZU9ySW5kZXgoKSA6IHRoaXMuX3NuYXBzaG90
Ll9zdHJpbmdzW3RoaXMuX2dldE5hbWVPckluZGV4KCldOwotICAgIH0sCi0KLSAgICBuZXh0OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9lZGdlSW5kZXggKz0gdGhpcy5fc25hcHNo
b3QuX2VkZ2VGaWVsZHNDb3VudDsKLSAgICB9LAotCi0gICAgZ2V0IG5vZGUoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIodGhp
cy5fc25hcHNob3QsIHRoaXMubm9kZUluZGV4KTsKLSAgICB9LAotCi0gICAgZ2V0IG5vZGVJbmRl
eCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZWRnZXNbdGhpcy5fZWRnZUluZGV4ICsg
dGhpcy5fc25hcHNob3QuX2VkZ2VUb05vZGVPZmZzZXRdOwotICAgIH0sCi0KLSAgICBfZ2V0TmFt
ZU9ySW5kZXg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lZGdlc1t0
aGlzLl9lZGdlSW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fZWRnZU5hbWVPZmZzZXRdOwotICAgIH0s
Ci0KLSAgICBfZ2V0VHlwZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X2VkZ2VzW3RoaXMuX2VkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlVHlwZU9mZnNldF07
Ci0gICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFwcGVyID0gZnVu
Y3Rpb24oc25hcHNob3QsIG5vZGVJbmRleCkKLXsKLSAgICB0aGlzLl9zbmFwc2hvdCA9IHNuYXBz
aG90OwotICAgIHRoaXMuX25vZGVzID0gc25hcHNob3QuX25vZGVzOwotICAgIHRoaXMuX25vZGVJ
bmRleCA9IG5vZGVJbmRleDsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVXcmFw
cGVyLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZWRnZXMoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNJdGVyYXRvcih0aGlzLl9zbmFwc2hv
dCwgdGhpcy5fZ2V0RWRnZXMoKSk7Ci0gICAgfSwKLQotICAgIGdldCBlZGdlc0NvdW50KCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9ub2RlSW5kZXggKyB0aGlzLl9z
bmFwc2hvdC5fZWRnZXNDb3VudE9mZnNldF07Ci0gICAgfSwKLQotICAgIGdldCBpbnN0YW5jZXND
b3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9kZXNbdGhpcy5fbm9kZUluZGV4
ICsgdGhpcy5fc25hcHNob3QuX25vZGVJbnN0YW5jZXNDb3VudE9mZnNldF07Ci0gICAgfSwKLQot
ICAgIGdldCBpc0hpZGRlbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VHlwZSgp
ID09PSB0aGlzLl9zbmFwc2hvdC5fbm9kZUhpZGRlblR5cGU7Ci0gICAgfSwKLQotICAgIGdldCBu
YW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zbmFwc2hvdC5fc3RyaW5nc1t0aGlz
Ll9nZXROYW1lKCldOwotICAgIH0sCi0KLSAgICBnZXQgc2VsZlNpemUoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuX25vZGVJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9u
b2RlU2VsZlNpemVPZmZzZXRdOyAKLSAgICB9LAotCi0gICAgX2dldE5hbWU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9ub2Rlc1t0aGlzLl9ub2RlSW5kZXggKyB0aGlz
Ll9zbmFwc2hvdC5fbm9kZU5hbWVPZmZzZXRdOyAKLSAgICB9LAotCi0gICAgX2dldEVkZ2VzOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXggPSB0aGlzLl9ub2Rl
SW5kZXggKyB0aGlzLl9zbmFwc2hvdC5fZmlyc3RFZGdlT2Zmc2V0OwotICAgICAgICByZXR1cm4g
dGhpcy5fbm9kZXMuc2xpY2UoZmlyc3RFZGdlSW5kZXgsIGZpcnN0RWRnZUluZGV4ICsgdGhpcy5l
ZGdlc0NvdW50ICogdGhpcy5fc25hcHNob3QuX2VkZ2VGaWVsZHNDb3VudCk7Ci0gICAgfSwKLQot
ICAgIF9nZXRUeXBlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbm9k
ZXNbdGhpcy5fbm9kZUluZGV4ICsgdGhpcy5fc25hcHNob3QuX25vZGVUeXBlT2Zmc2V0XTsKLSAg
ICB9Ci19OwotCi1XZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90ID0gZnVuY3Rpb24ocHJvZmlsZSkK
LXsKLSAgICB0aGlzLl9wcm9maWxlID0gcHJvZmlsZTsKLSAgICB0aGlzLl9ub2RlcyA9IHByb2Zp
bGUubm9kZXM7Ci0gICAgdGhpcy5fc3RyaW5ncyA9IHByb2ZpbGUuc3RyaW5nczsKLQotICAgIHRo
aXMuX2luaXQoKTsKLX0KLQotV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7
Ci0gICAgX2luaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX21ldGFOb2RlSW5k
ZXggPSAwOwotICAgICAgICB0aGlzLl9yb290Tm9kZUluZGV4ID0gMTsKLSAgICAgICAgdmFyIG1l
dGEgPSB0aGlzLl9ub2Rlc1t0aGlzLl9tZXRhTm9kZUluZGV4XTsKLSAgICAgICAgdGhpcy5fbm9k
ZVR5cGVPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRleE9mKCJ0eXBlIik7Ci0gICAgICAgIHRoaXMu
X25vZGVOYW1lT2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5kZXhPZigibmFtZSIpOwotICAgICAgICB0
aGlzLl9ub2RlSWRPZmZzZXQgPSBtZXRhLmZpZWxkcy5pbmRleE9mKCJpZCIpOwotICAgICAgICB0
aGlzLl9ub2RlSW5zdGFuY2VzQ291bnRPZmZzZXQgPSB0aGlzLl9ub2RlSWRPZmZzZXQ7Ci0gICAg
ICAgIHRoaXMuX25vZGVTZWxmU2l6ZU9mZnNldCA9IG1ldGEuZmllbGRzLmluZGV4T2YoInNlbGZf
c2l6ZSIpOwotICAgICAgICB0aGlzLl9lZGdlc0NvdW50T2Zmc2V0ID0gbWV0YS5maWVsZHMuaW5k
ZXhPZigiY2hpbGRyZW5fY291bnQiKTsKLSAgICAgICAgdGhpcy5fZmlyc3RFZGdlT2Zmc2V0ID0g
bWV0YS5maWVsZHMuaW5kZXhPZigiY2hpbGRyZW4iKTsKLSAgICAgICAgdGhpcy5fbm9kZVR5cGVz
ID0gbWV0YS50eXBlc1t0aGlzLl9ub2RlVHlwZU9mZnNldF07Ci0gICAgICAgIHRoaXMuX25vZGVI
aWRkZW5UeXBlID0gdGhpcy5fbm9kZVR5cGVzLmluZGV4T2YoImhpZGRlbiIpOwotICAgICAgICB2
YXIgZWRnZXNNZXRhID0gbWV0YS50eXBlc1t0aGlzLl9maXJzdEVkZ2VPZmZzZXRdOwotICAgICAg
ICB0aGlzLl9lZGdlRmllbGRzQ291bnQgPSBlZGdlc01ldGEuZmllbGRzLmxlbmd0aDsKLSAgICAg
ICAgdGhpcy5fZWRnZVR5cGVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4T2YoInR5cGUi
KTsKLSAgICAgICAgdGhpcy5fZWRnZU5hbWVPZmZzZXQgPSBlZGdlc01ldGEuZmllbGRzLmluZGV4
T2YoIm5hbWVfb3JfaW5kZXgiKTsKLSAgICAgICAgdGhpcy5fZWRnZVRvTm9kZU9mZnNldCA9IGVk
Z2VzTWV0YS5maWVsZHMuaW5kZXhPZigidG9fbm9kZSIpOwotICAgICAgICB0aGlzLl9lZGdlVHlw
ZXMgPSBlZGdlc01ldGEudHlwZXNbdGhpcy5fZWRnZVR5cGVPZmZzZXRdOwotICAgICAgICB0aGlz
Ll9lZGdlRWxlbWVudFR5cGUgPSB0aGlzLl9lZGdlVHlwZXMuaW5kZXhPZigiZWxlbWVudCIpOwot
ICAgICAgICB0aGlzLl9lZGdlSGlkZGVuVHlwZSA9IHRoaXMuX2VkZ2VUeXBlcy5pbmRleE9mKCJo
aWRkZW4iKTsKLSAgICB9LAotCi0gICAgZ2V0IHJvb3RFZGdlcygpCi0gICAgewotICAgICAgICBy
ZXR1cm4gKG5ldyBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZVdyYXBwZXIodGhpcywgdGhp
cy5fcm9vdE5vZGVJbmRleCkpLmVkZ2VzOwotICAgIH0KLX07CiAKIFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RWaWV3ID0gZnVuY3Rpb24ocGFyZW50LCBwcm9maWxlKQogewpAQCAtMjQ2LDcgKzk4
LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFZpZXcgPSBmdW5jdGlvbihwYXJlbnQsIHBy
b2ZpbGUpCiAKICAgICBmdW5jdGlvbiBwcm9maWxlQ2FsbGJhY2socHJvZmlsZSkKICAgICB7Ci0g
ICAgICAgIHZhciBsaXN0ID0gdGhpcy5fZ2V0UHJvZmlsZXMoKTsKKyAgICAgICAgdmFyIGxpc3Qg
PSB0aGlzLl9wcm9maWxlcygpOwogICAgICAgICB2YXIgcHJvZmlsZUluZGV4OwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBpZiAobGlz
dFtpXS51aWQgPT09IHByb2ZpbGUudWlkKSB7CkBAIC00NDAsNyArMjkyLDcgQEAgV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogCiAgICAgX2NoYW5nZUJhc2U6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJhc2VTbmFwc2hvdC51aWQgPT09IHRo
aXMuX2dldFByb2ZpbGVzKClbdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS51
aWQpCisgICAgICAgIGlmICh0aGlzLmJhc2VTbmFwc2hvdC51aWQgPT09IHRoaXMuX3Byb2ZpbGVz
KClbdGhpcy5iYXNlU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XS51aWQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVzZXREYXRhR3JpZExpc3QocmVzZXRDb21wbGV0
ZWQuYmluZCh0aGlzKSk7CkBAIC00NjgsNyArMzIwLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdFZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3REYXRh
R3JpZExpc3Q7CiAgICAgfSwKIAotICAgIF9nZXRQcm9maWxlczogZnVuY3Rpb24oKQorICAgIF9w
cm9maWxlczogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5w
YW5lbHMucHJvZmlsZXMuZ2V0UHJvZmlsZXMoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2Zp
bGVUeXBlLlR5cGVJZCk7CiAgICAgfSwKQEAgLTU4MSw3ICs0MzMsNyBAQCBXZWJJbnNwZWN0b3Iu
SGVhcFNuYXBzaG90Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICBfcmVzZXREYXRhR3JpZExpc3Q6
IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdGhpcy5fbG9hZFByb2ZpbGUodGhp
cy5fZ2V0UHJvZmlsZXMoKVt0aGlzLmJhc2VTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLCBw
cm9maWxlTG9hZGVkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9sb2FkUHJvZmlsZSh0aGlz
Ll9wcm9maWxlcygpW3RoaXMuYmFzZVNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0sIHByb2Zp
bGVMb2FkZWQuYmluZCh0aGlzKSk7CiAKICAgICAgICAgZnVuY3Rpb24gcHJvZmlsZUxvYWRlZChw
cm9maWxlKQogICAgICAgICB7CkBAIC02MTQsNyArNDY2LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdFZpZXcucHJvdG90eXBlID0gewogCiAgICAgX3VwZGF0ZUJhc2VPcHRpb25zOiBmdW5j
dGlvbigpCiAgICAgewotICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX2dldFByb2ZpbGVzKCk7Cisg
ICAgICAgIHZhciBsaXN0ID0gdGhpcy5fcHJvZmlsZXMoKTsKICAgICAgICAgLy8gV2UncmUgYXNz
dW1pbmcgdGhhdCBzbmFwc2hvdHMgY2FuIG9ubHkgYmUgYWRkZWQuCiAgICAgICAgIGlmICh0aGlz
LmJhc2VTZWxlY3RFbGVtZW50Lmxlbmd0aCA9PT0gbGlzdC5sZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xMTU1LDcgKzEwMDcsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJv
ZmlsZVR5cGUucHJvdG90eXBlID0gewogCiAgICAgYnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQog
ICAgIHsKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC50YWtlSGVhcFNuYXBzaG90KCk7CisgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQudGFrZUhlYXBTbmFwc2hvdChmYWxzZSk7CiAgICAgfSwKIAog
ICAgIGdldCB3ZWxjb21lTWVzc2FnZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggMmUwYWIyOC4uYmJlMGM1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJvZmlsZXNQYW5l
bC5qcwpAQCAtMzcwLDggKzM3MCw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVy
LnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdmFyIHN0YXR1c0Jhckl0ZW1zID0gdmlldy5z
dGF0dXNCYXJJdGVtczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0dXNCYXJJdGVt
cy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMucHJvZmlsZVZpZXdTdGF0dXNCYXJJdGVt
c0NvbnRhaW5lci5hcHBlbmRDaGlsZChzdGF0dXNCYXJJdGVtc1tpXSk7CisgICAgICAgIGlmIChz
dGF0dXNCYXJJdGVtcykKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhdHVzQmFy
SXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1
c0Jhckl0ZW1zQ29udGFpbmVyLmFwcGVuZENoaWxkKHN0YXR1c0Jhckl0ZW1zW2ldKTsKICAgICB9
LAogCiAgICAgZ2V0UHJvZmlsZXM6IGZ1bmN0aW9uKHR5cGVJZCkKQEAgLTYyOSw2ICs2MzAsMTAg
QEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIHRoaXMuX3JlbW92ZVByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJv
ZmlsZSk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy51cGRhdGVQcm9maWxlVHlwZUJ1dHRvbnMo
KTsKKyAgICB9LAorCisgICAgX3JlcG9ydEhlYXBTbmFwc2hvdFByb2dyZXNzOiBmdW5jdGlvbihk
b25lLCB0b3RhbCkKKyAgICB7CiAgICAgfQogfQogCkBAIC02NzQsNiArNjc5LDExIEBAIFdlYklu
c3BlY3Rvci5Qcm9maWxlckRpc3BhdGNoZXIucHJvdG90eXBlID0gewogICAgIHNldFJlY29yZGlu
Z1Byb2ZpbGU6IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJv
ZmlsZXIuX3NldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOworICAgIH0sCisKKyAgICBy
ZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzczogZnVuY3Rpb24oZG9uZSwgdG90YWwpCisgICAgewor
ICAgICAgICB0aGlzLl9wcm9maWxlci5fcmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3MoZG9uZSwg
dG90YWwpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2V0dGluZ3MuanMKaW5kZXggZTI2YjFkNy4uZWY2YjI2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00OSw3ICs0OSw5IEBAIHZh
ciBQcmVmZXJlbmNlcyA9IHsKICAgICB1c2VEYXRhVVJMRm9yUmVzb3VyY2VJbWFnZUljb25zOiB0
cnVlLAogICAgIHNob3dUaW1pbmdUYWI6IGZhbHNlLAogICAgIHNob3dDb29raWVzVGFiOiBmYWxz
ZSwKLSAgICBkZWJ1Z01vZGU6IGZhbHNlCisgICAgZGVidWdNb2RlOiBmYWxzZSwKKyAgICBoZWFw
UHJvZmlsZXJQcmVzZW50OiBmYWxzZSwKKyAgICBkZXRhaWxlZEhlYXBQcm9maWxlczogZmFsc2UK
IH0KIAogV2ViSW5zcGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XZWJLaXQucXJjCmluZGV4IGU4NDAxZTQuLjU4ZTY4Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFy
YworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAg
LTI4LDYgKzI4LDcgQEAKICAgICA8ZmlsZT5EYXRhYmFzZS5qczwvZmlsZT4KICAgICA8ZmlsZT5E
YXRhYmFzZVF1ZXJ5Vmlldy5qczwvZmlsZT4KICAgICA8ZmlsZT5EYXRhYmFzZVRhYmxlVmlldy5q
czwvZmlsZT4KKyAgICA8ZmlsZT5EZXRhaWxlZEhlYXBzaG90Vmlldy5qczwvZmlsZT4KICAgICA8
ZmlsZT5EYXRhR3JpZC5qczwvZmlsZT4KICAgICA8ZmlsZT5EZWJ1Z2dlck1vZGVsLmpzPC9maWxl
PgogICAgIDxmaWxlPkRPTUFnZW50LmpzPC9maWxlPgpAQCAtNDgsNiArNDksNyBAQAogICAgIDxm
aWxlPkZvbnRWaWV3LmpzPC9maWxlPgogICAgIDxmaWxlPkdvVG9MaW5lRGlhbG9nLmpzPC9maWxl
PgogICAgIDxmaWxlPkhBUkVudHJ5LmpzPC9maWxlPgorICAgIDxmaWxlPkhlYXBTbmFwc2hvdC5q
czwvZmlsZT4KICAgICA8ZmlsZT5IZWFwU25hcHNob3RWaWV3LmpzPC9maWxlPgogICAgIDxmaWxl
PkhlbHBTY3JlZW4uanM8L2ZpbGU+CiAgICAgPGZpbGU+SW1hZ2VWaWV3LmpzPC9maWxlPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRt
bCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwKaW5k
ZXggYWZmODU3Mi4uMTkzZGVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMzksNyArMTM5LDkgQEAgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJCb3R0b21VcFByb2ZpbGVEYXRh
R3JpZFRyZWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IlRvcERvd25Qcm9maWxlRGF0YUdyaWRUcmVlLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlVmlldy5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iSGVhcFNuYXBzaG90Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJIZWFw
U25hcHNob3RWaWV3LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgc3JjPSJEZXRhaWxlZEhlYXBzaG90Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVidWdnZXJNb2RlbC5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRE9NQWdlbnQuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IlRpbWVsaW5l
QWdlbnQuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcwppbmRleCA3ZTVjYWY3Li4wZmE0MjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMjIzLDggKzIyMywx
MiBAQCB2YXIgV2ViSW5zcGVjdG9yID0gewogICAgICAgICBpZiAoaGlkZGVuUGFuZWxzLmluZGV4
T2YoInByb2ZpbGVzIikgPT09IC0xKSB7CiAgICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxl
cyA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbCgpOwogICAgICAgICAgICAgdGhpcy5w
YW5lbHMucHJvZmlsZXMucmVnaXN0ZXJQcm9maWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkNQVVBy
b2ZpbGVUeXBlKCkpOwotICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLmhlYXBQcm9maWxlclBy
ZXNlbnQpCi0gICAgICAgICAgICAgICAgdGhpcy5wYW5lbHMucHJvZmlsZXMucmVnaXN0ZXJQcm9m
aWxlVHlwZShuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb2ZpbGVUeXBlKCkpOworICAg
ICAgICAgICAgaWYgKFByZWZlcmVuY2VzLmhlYXBQcm9maWxlclByZXNlbnQpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIVByZWZlcmVuY2VzLmRldGFpbGVkSGVhcFByb2ZpbGVzKQorICAgICAgICAg
ICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5yZWdpc3RlclByb2ZpbGVUeXBlKG5ldyBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UHJvZmlsZVR5cGUoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICB0aGlzLnBhbmVscy5wcm9maWxlcy5yZWdpc3RlclBy
b2ZpbGVUeXBlKG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsZWRIZWFwc2hvdFByb2ZpbGVUeXBlKCkp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChoaWRkZW5QYW5lbHMuaW5k
ZXhPZigiYXVkaXRzIikgPT09IC0xKQogICAgICAgICAgICAgdGhpcy5wYW5lbHMuYXVkaXRzID0g
bmV3IFdlYkluc3BlY3Rvci5BdWRpdHNQYW5lbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCA0ZmQ0NDRmLi4zNTY3YWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE5IEBACisyMDExLTAxLTI1ICBNaWtoYWlsIE5hZ2Fub3YgIDxtbmFnYW5vdkBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogW0Nocm9taXVtXSBQcmVwYXJlIGZvciBsYW5kaW5nIG9mIGRldGFpbGVk
IGhlYXAgc25hcHNob3RzLgorCisgICAgICAgIC0gSW50cm9kdWNlIFByZWZlcmVuY2VzLmRldGFp
bGVkSGVhcFByb2ZpbGVzIGZsYWcgZm9yIGNvbnRyb2xsaW5nCisgICAgICAgICAgcXVlcnlpbmcg
b2YgZGV0YWlsZWQgaGVhcCBzbmFwc2hvdHMuCisgICAgICAgIC0gQWRkIGJvaWxlcnBsYXRlIGNv
ZGUgZm9yIHRoZSBuZXcgdmlldy4KKyAgICAgICAgLSBGYWN0b3Igb3V0IGNvbW1vbiBjb2RlLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MjYyNAor
CisgICAgICAgICogc3JjL2pzL0RldlRvb2xzLmpzOgorICAgICAgICAoKToKKwogMjAxMS0wMS0y
NSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLCB0cml2aWFsIGRlYnVnZ2VyIHRlc3QgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvanMvRGV2VG9vbHMuanMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9qcy9EZXZUb29scy5qcwppbmRleCBkNjUzNmJjLi42MzdmZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDEsNiArNDEsNyBAQCB2YXIg
Y29udGV4dCA9IHt9OyAgLy8gVXNlZCBieSBXZWJDb3JlJ3MgaW5zcGVjdG9yIHJvdXRpbmVzLgog
ICAgIFByZWZlcmVuY2VzLmlnbm9yZVdoaXRlc3BhY2UgPSBmYWxzZTsKICAgICBQcmVmZXJlbmNl
cy5zYW1wbGluZ0NQVVByb2ZpbGVyID0gdHJ1ZTsKICAgICBQcmVmZXJlbmNlcy5oZWFwUHJvZmls
ZXJQcmVzZW50ID0gdHJ1ZTsKKyAgICBQcmVmZXJlbmNlcy5kZXRhaWxlZEhlYXBQcm9maWxlcyA9
IGZhbHNlOwogICAgIFByZWZlcmVuY2VzLmRlYnVnZ2VyQWx3YXlzRW5hYmxlZCA9IHRydWU7CiAg
ICAgUHJlZmVyZW5jZXMucHJvZmlsZXJBbHdheXNFbmFibGVkID0gdHJ1ZTsKICAgICBQcmVmZXJl
bmNlcy5jYW5FZGl0U2NyaXB0U291cmNlID0gdHJ1ZTsK
</data>
<flag name="review"
          id="71517"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="71518"
          type_id="3"
          status="-"
          setter="mnaganov"
    />
          </attachment>
      

    </bug>

</bugzilla>