<?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>21149</bug_id>
          
          <creation_ts>2008-09-26 13:01:59 -0700</creation_ts>
          <short_desc>Make the concept of scrolling modes cross-platform</short_desc>
          <delta_ts>2008-09-26 13:53:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</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>21083</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92958</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-26 13:01:59 -0700</bug_when>
    <thetext>Make the concept of the scrolling modes on ScrollView be cross-platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92959</commentid>
    <comment_count>1</comment_count>
      <attachid>23856</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-26 13:04:04 -0700</bug_when>
    <thetext>Created attachment 23856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92964</commentid>
    <comment_count>2</comment_count>
      <attachid>23856</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-26 13:49:42 -0700</bug_when>
    <thetext>Comment on attachment 23856
Patch

+    if (WebCore::FrameView *view = frame? frame-&gt;view() : 0)
The * is on the wrong side and you need a space before the ?.

r=me.  God speed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>92966</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-09-26 13:53:23 -0700</bug_when>
    <thetext>Fixed in r36962.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23856</attachid>
            <date>2008-09-26 13:04:04 -0700</date>
            <delta_ts>2008-09-26 13:49:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>74972</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNjk2MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzQgQEAKKzIwMDgtMDktMjYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE0
OQorCisgICAgICAgIE1ha2UgdGhlIGNvbmNlcHQgb2Ygc2Nyb2xsIG1vZGVzIGNyb3NzLXBsYXRm
b3JtLiAgTW92ZSB0aGUgc2Nyb2xsYmFycyB1cCBpbnRvIFNjcm9sbFZpZXcgYXMgd2VsbC4KKyAg
ICAgICAgRWxpbWluYXRlIHRoZSB1bnVzZWQgaXNTY3JvbGxhYmxlKCkgbWV0aG9kLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5iYXNl
LmV4cDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnJlc2V0U2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmluaXRTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVG
cmFtZVZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6c2V0U2Nyb2xsYmFyTW9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Ny
b2xsYmFyTW9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRT
Y3JvbGxiYXJNb2Rlcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpwbGF0Zm9ybVNj
cm9sbGJhck1vZGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxWaWV3Ojpob3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbFZpZXc6OnZlcnRpY2FsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OmlzU2Nyb2xsVmlld1Njcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxWaWV3OjpzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3OjpzZXRWZXJ0aWNhbFNjcm9sbGJhck1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6aG9yaXpvbnRhbFNjcm9sbGJhck1vZGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6dmVydGljYWxTY3JvbGxiYXJNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OmNvbnZlcnRTZWxmVG9DaGlsZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Njcm9sbFZpZXdHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Nyb2xs
Vmlld1ByaXZhdGU6OlNjcm9sbFZpZXdQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRIYXNWZXJ0
aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3
UHJpdmF0ZTo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVw
ZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsYmFy
VW5kZXJNb3VzZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojppc1Njcm9sbFZpZXdT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGFpbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6c2Nyb2xsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
U2Nyb2xsVmlld01hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3Jt
U2V0U2Nyb2xsYmFyTW9kZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZv
cm1TY3JvbGxiYXJNb2Rlcyk6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2Nyb2xsVmlld1F0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRI
YXNIb3Jpem9udGFsU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNj
cm9sbFZpZXdQcml2YXRlOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6dmFsdWVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6Omhvcml6b250YWxTY3JvbGxiYXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dmVydGljYWxTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsVmlldzo6aW52YWxpZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpzY3JvbGxiYXJVbmRlck1vdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6
OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNjcm9sbCk6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1Njcm9sbFZpZXdXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OlNjcm9sbFZpZXdQcml2YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRIYXNIb3Jpem9udGFs
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2
YXRlOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxW
aWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6dmFsdWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRBbGxvd3NTY3JvbGxpbmcpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OmFsbG93c1Njcm9s
bGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzdXBwcmVzc1Njcm9sbGJhcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzY3JvbGxiYXJVbmRlck1vdXNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZp
ZXc6OnNjcm9sbCk6CisgICAgICAgICogcGxhdGZvcm0vd3gvU2Nyb2xsVmlld1d4LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0U2Nyb2xsYmFyTW9kZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6cGxhdGZvcm1TY3JvbGxiYXJNb2Rlcyk6CisK
IDIwMDgtMDktMjYgIEtldmluIE1jQ3VsbG91Z2ggIDxrbWNjdWxsb3VnaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgVGltIEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShy
ZXZpc2lvbiAzNjk2MCkKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtNjY0LDYgKzY2NCw3IEBAIF9fWk43V2ViQ29yZXBsRVJLTlNfNlN0cmluZ0VTMl8KIF9f
Wk5LM0pTQzhCaW5kaW5nczEwUm9vdE9iamVjdDEyZ2xvYmFsT2JqZWN0RXYKIF9fWk5LN1dlYkNv
cmUxMFBsdWdpbkRhdGExNnN1cHBvcnRzTWltZVR5cGVFUktOU182U3RyaW5nRQogX19aTks3V2Vi
Q29yZTEwU2Nyb2xsVmlldzEyZG9jdW1lbnRWaWV3RXYKK19fWk43V2ViQ29yZTEwU2Nyb2xsVmll
dzE3c2V0U2Nyb2xsYmFyTW9kZXNFTlNfMTNTY3JvbGxiYXJNb2RlRVMxXwogX19aTks3V2ViQ29y
ZTExQ2FjaGVkSW1hZ2U1aW1hZ2VFdgogX19aTks3V2ViQ29yZTExQ29udGV4dE1lbnUxOXBsYXRm
b3JtRGVzY3JpcHRpb25FdgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIxMGlzQ29tcGxldGVF
dgpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDM2OTYwKQorKysgV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw4ICsyMTEsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6cmVzZXRTY3JvbGxiYXJzKCkKICAgICAvLyBSZXNldCB0aGUgZG9jdW1lbnQncyBzY3Jv
bGxiYXJzIGJhY2sgdG8gb3VyIGRlZmF1bHRzIGJlZm9yZSB3ZSB5aWVsZCB0aGUgZmxvb3IuCiAg
ICAgZC0+bV9maXJzdExheW91dCA9IHRydWU7CiAgICAgc3VwcHJlc3NTY3JvbGxiYXJzKHRydWUp
OwotICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxiYXJNb2RlKGQtPm1fdm1vZGUpOwotICAgIFNj
cm9sbFZpZXc6OnNldEhTY3JvbGxiYXJNb2RlKGQtPm1faG1vZGUpOworICAgIHNldFNjcm9sbGJh
ck1vZGVzKGQtPm1faG1vZGUsIGQtPm1fdm1vZGUpOwogICAgIHN1cHByZXNzU2Nyb2xsYmFycyhm
YWxzZSk7CiB9CiAKQEAgLTI0NSw3ICsyNDQsOSBAQCB2b2lkIEZyYW1lVmlldzo6aW5pdFNjcm9s
bGJhcnMoKQogICAgIGlmICghZC0+bV9uZWVkVG9Jbml0U2Nyb2xsYmFycykKICAgICAgICAgcmV0
dXJuOwogICAgIGQtPm1fbmVlZFRvSW5pdFNjcm9sbGJhcnMgPSBmYWxzZTsKLSAgICBzZXRTY3Jv
bGxiYXJzTW9kZShoU2Nyb2xsYmFyTW9kZSgpKTsKKyAgICBkLT5tX2htb2RlID0gaG9yaXpvbnRh
bFNjcm9sbGJhck1vZGUoKTsKKyAgICBkLT5tX3Ztb2RlID0gdmVydGljYWxTY3JvbGxiYXJNb2Rl
KCk7CisgICAgc2V0U2Nyb2xsYmFyTW9kZXMoZC0+bV9obW9kZSwgZC0+bV92bW9kZSk7CiB9CiAK
IHZvaWQgRnJhbWVWaWV3OjpzZXRNYXJnaW5XaWR0aChpbnQgdykKQEAgLTQzNyw4ICs0MzgsOCBA
QCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAKICAgICBpZiAoIXN1
YnRyZWUpIHsKICAgICAgICAgLy8gTm93IHNldCBvdXIgc2Nyb2xsYmFyIHN0YXRlIGZvciB0aGUg
bGF5b3V0LgotICAgICAgICBTY3JvbGxiYXJNb2RlIGN1cnJlbnRITW9kZSA9IGhTY3JvbGxiYXJN
b2RlKCk7Ci0gICAgICAgIFNjcm9sbGJhck1vZGUgY3VycmVudFZNb2RlID0gdlNjcm9sbGJhck1v
ZGUoKTsKKyAgICAgICAgU2Nyb2xsYmFyTW9kZSBjdXJyZW50SE1vZGUgPSBob3Jpem9udGFsU2Ny
b2xsYmFyTW9kZSgpOworICAgICAgICBTY3JvbGxiYXJNb2RlIGN1cnJlbnRWTW9kZSA9IHZlcnRp
Y2FsU2Nyb2xsYmFyTW9kZSgpOwogCiAgICAgICAgIGlmIChkLT5tX2ZpcnN0TGF5b3V0IHx8ICho
TW9kZSAhPSBjdXJyZW50SE1vZGUgfHwgdk1vZGUgIT0gY3VycmVudFZNb2RlKSkgewogICAgICAg
ICAgICAgc3VwcHJlc3NTY3JvbGxiYXJzKHRydWUpOwpAQCAtNDUwLDE5ICs0NTEsMTIgQEAgdm9p
ZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogCiAgICAgICAgICAgICAgICAg
Ly8gU2V0IHRoZSBpbml0aWFsIHZNb2RlIHRvIEFsd2F5c09uIGlmIHdlJ3JlIGF1dG8uCiAgICAg
ICAgICAgICAgICAgaWYgKHZNb2RlID09IFNjcm9sbGJhckF1dG8pCi0gICAgICAgICAgICAgICAg
ICAgIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxiYXJNb2RlKFNjcm9sbGJhckFsd2F5c09uKTsgLy8g
VGhpcyBjYXVzZXMgYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgorICAgICAgICAgICAg
ICAgICAgICBzZXRWZXJ0aWNhbFNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyQWx3YXlzT24pOyAvLyBU
aGlzIGNhdXNlcyBhIHZlcnRpY2FsIHNjcm9sbGJhciB0byBhcHBlYXIuCiAgICAgICAgICAgICAg
ICAgLy8gU2V0IHRoZSBpbml0aWFsIGhNb2RlIHRvIEFsd2F5c09mZiBpZiB3ZSdyZSBhdXRvLgog
ICAgICAgICAgICAgICAgIGlmIChoTW9kZSA9PSBTY3JvbGxiYXJBdXRvKQotICAgICAgICAgICAg
ICAgICAgICBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJBbHdheXNPZmYp
OyAvLyBUaGlzIGNhdXNlcyBhIGhvcml6b250YWwgc2Nyb2xsYmFyIHRvIGRpc2FwcGVhci4KKyAg
ICAgICAgICAgICAgICAgICAgc2V0SG9yaXpvbnRhbFNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyQWx3
YXlzT2ZmKTsgLy8gVGhpcyBjYXVzZXMgYSBob3Jpem9udGFsIHNjcm9sbGJhciB0byBkaXNhcHBl
YXIuCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChoTW9kZSA9
PSB2TW9kZSkKLSAgICAgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJzTW9kZSho
TW9kZSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBTY3JvbGxWaWV3Ojpz
ZXRIU2Nyb2xsYmFyTW9kZShoTW9kZSk7Ci0gICAgICAgICAgICAgICAgU2Nyb2xsVmlldzo6c2V0
VlNjcm9sbGJhck1vZGUodk1vZGUpOwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICBzZXRT
Y3JvbGxiYXJNb2RlcyhoTW9kZSwgdk1vZGUpOwogICAgICAgICAgICAgc3VwcHJlc3NTY3JvbGxi
YXJzKGZhbHNlLCB0cnVlKTsKICAgICAgICAgfQogCkBAIC01OTcsMjYgKzU5MSw2IEBAIHZvaWQg
RnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWludE9iamVjdCgKICAgICAgICAgc2V0Q2FuQmxpdE9u
U2Nyb2xsKCFkLT5tX3VzZVNsb3dSZXBhaW50cyk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpzZXRT
Y3JvbGxiYXJzTW9kZShTY3JvbGxiYXJNb2RlIG1vZGUpCi17Ci0gICAgZC0+bV92bW9kZSA9IG1v
ZGU7Ci0gICAgZC0+bV9obW9kZSA9IG1vZGU7Ci0gICAgCi0gICAgU2Nyb2xsVmlldzo6c2V0U2Ny
b2xsYmFyc01vZGUobW9kZSk7Ci19Ci0KLXZvaWQgRnJhbWVWaWV3OjpzZXRWU2Nyb2xsYmFyTW9k
ZShTY3JvbGxiYXJNb2RlIG1vZGUpCi17Ci0gICAgZC0+bV92bW9kZSA9IG1vZGU7Ci0gICAgU2Ny
b2xsVmlldzo6c2V0VlNjcm9sbGJhck1vZGUobW9kZSk7Ci19Ci0KLXZvaWQgRnJhbWVWaWV3Ojpz
ZXRIU2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJNb2RlIG1vZGUpCi17Ci0gICAgZC0+bV9obW9kZSA9
IG1vZGU7Ci0gICAgU2Nyb2xsVmlldzo6c2V0SFNjcm9sbGJhck1vZGUobW9kZSk7Ci19Ci0KIHZv
aWQgRnJhbWVWaWV3OjpyZXN0b3JlU2Nyb2xsYmFyKCkKIHsKICAgICBzdXBwcmVzc1Njcm9sbGJh
cnMoZmFsc2UpOwpJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMzY5NjApCisrKyBXZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDEwICs3Myw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldE1hcmdpbldpZHRoKGludCk7CiAgICAgdm9pZCBzZXRNYXJnaW5IZWlnaHQo
aW50KTsKIAotICAgIHZpcnR1YWwgdm9pZCBzZXRWU2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJNb2Rl
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0SFNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyTW9kZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcnNNb2RlKFNjcm9sbGJhck1vZGUpOwotCiAgICAg
dm9pZCBsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUgPSB0cnVlKTsKICAgICBib29sIGRpZEZpcnN0
TGF5b3V0KCkgY29uc3Q7CiAgICAgdm9pZCBsYXlvdXRUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmll
dz4qKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCShyZXZpc2lvbiAzNjk2
MCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwxMSArMzAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAKIEBwcm90b2NvbCBX
ZWJDb3JlRnJhbWVTY3JvbGxWaWV3Ci0tICh2b2lkKXNldEhvcml6b250YWxTY3JvbGxpbmdNb2Rl
OihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKW1vZGU7Ci0tICh2b2lkKXNldFZlcnRpY2FsU2Nyb2xs
aW5nTW9kZTooV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSltb2RlOwotLSAodm9pZClzZXRTY3JvbGxp
bmdNb2RlOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKW1vZGU7Ci0tIChXZWJDb3JlOjpTY3JvbGxi
YXJNb2RlKWhvcml6b250YWxTY3JvbGxpbmdNb2RlOwotLSAoV2ViQ29yZTo6U2Nyb2xsYmFyTW9k
ZSl2ZXJ0aWNhbFNjcm9sbGluZ01vZGU7CistICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihXZWJD
b3JlOjpTY3JvbGxiYXJNb2RlKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2Rl
KXZNb2RlIGFuZExvY2s6KEJPT0wpbG9jazsKKy0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNv
cmU6OlNjcm9sbGJhck1vZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2Rl
Kil2TW9kZTsKIC0gKHZvaWQpc2V0U2Nyb2xsQmFyc1N1cHByZXNzZWQ6KEJPT0wpc3VwcHJlc3Nl
ZCByZXBhaW50T25VbnN1cHByZXNzOihCT09MKXJlcGFpbnQ7CiBAZW5kCiAKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMzY5NjApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHZvaWQgU2Nyb2xsVmlldzo6aW5pdCgpCiB7CiAgICAgbV9jYW5CbGl0T25TY3Jv
bGwgPSB0cnVlOworICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgPSBtX3ZlcnRpY2FsU2Ny
b2xsYmFyTW9kZSA9IFNjcm9sbGJhckF1dG87CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCiAg
ICAgICAgIHBsYXRmb3JtU2V0Q2FuQmxpdE9uU2Nyb2xsKCk7CiB9CkBAIC02MCw2ICs2MSwyNiBA
QCB2b2lkIFNjcm9sbFZpZXc6OnJlbW92ZUNoaWxkKFdpZGdldCogY2hpCiAgICAgICAgIHBsYXRm
b3JtUmVtb3ZlQ2hpbGQoY2hpbGQpOwogfQogCit2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbGJh
ck1vZGVzKFNjcm9sbGJhck1vZGUgaG9yaXpvbnRhbE1vZGUsIFNjcm9sbGJhck1vZGUgdmVydGlj
YWxNb2RlKQoreworICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgPSBob3Jpem9udGFsTW9k
ZTsKKyAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyTW9kZSA9IHZlcnRpY2FsTW9kZTsKKyAgICBpZiAo
cGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcGxhdGZvcm1TZXRTY3JvbGxiYXJNb2RlcygpOwor
ICAgIGVsc2UKKyAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhzY3JvbGxPZmZzZXQoKSk7Cit9CisK
K3ZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9kZSYgaG9yaXpvbnRh
bE1vZGUsIFNjcm9sbGJhck1vZGUmIHZlcnRpY2FsTW9kZSkgY29uc3QKK3sKKyAgICBpZiAocGxh
dGZvcm1XaWRnZXQoKSkgeworICAgICAgICBwbGF0Zm9ybVNjcm9sbGJhck1vZGVzKGhvcml6b250
YWxNb2RlLCB2ZXJ0aWNhbE1vZGUpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGhvcml6
b250YWxNb2RlID0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZTsKKyAgICB2ZXJ0aWNhbE1vZGUg
PSBtX3ZlcnRpY2FsU2Nyb2xsYmFyTW9kZTsKK30KKwogdm9pZCBTY3JvbGxWaWV3OjpzZXRDYW5C
bGl0T25TY3JvbGwoYm9vbCBiKQogewogICAgIGlmIChtX2NhbkJsaXRPblNjcm9sbCA9PSBiKQpA
QCAtMTIxLDYgKzE0MiwxNCBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtU2V0Q2FuQmxpdE9u
U2NyCiAjZW5kaWYKIAogI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShXWCkKK3ZvaWQg
U2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRTY3JvbGxiYXJNb2RlcygpCit7Cit9CisKK3ZvaWQgU2Ny
b2xsVmlldzo6cGxhdGZvcm1TY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJNb2RlJiBob3Jpem9udGFs
LCBTY3JvbGxiYXJNb2RlJiB2ZXJ0aWNhbCkgY29uc3QKK3sKK30KKwogSW50UmVjdCBTY3JvbGxW
aWV3OjpwbGF0Zm9ybVZpc2libGVDb250ZW50UmVjdChib29sKSBjb25zdAogewogICAgIHJldHVy
biBJbnRSZWN0KCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMzY5NjApCisr
KyBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiAr
MjcsNyBAQAogI2RlZmluZSBTY3JvbGxWaWV3X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUg
IldpZGdldC5oIgogCkBAIC02OCw5ICs2OSwyMiBAQCBwdWJsaWM6CiAKICAgICAvLyBJZiB0aGUg
c2Nyb2xsIHZpZXcgZG9lcyBub3QgdXNlIGEgbmF0aXZlIHdpZGdldCwgdGhlbiBpdCB3aWxsIGhh
dmUgY3Jvc3MtcGxhdGZvcm0gU2Nyb2xsYmFycy4gIFRoZXNlIG1ldGhvZHMKICAgICAvLyBjYW4g
YmUgdXNlZCB0byBvYnRhaW4gdGhvc2Ugc2Nyb2xsYmFycy4KLSAgICBTY3JvbGxiYXIqIGhvcml6
b250YWxTY3JvbGxiYXIoKSBjb25zdDsKLSAgICBTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFy
KCkgY29uc3Q7Ci0KKyAgICBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7
IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7IH0KKyAgICBTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQo
KTsgfQorICAgIGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQp
IGNvbnN0IHsgcmV0dXJuIGhvcml6b250YWxTY3JvbGxiYXIoKSA9PSBjaGlsZCB8fCB2ZXJ0aWNh
bFNjcm9sbGJhcigpID09IGNoaWxkOyB9CisKKyAgICAvLyBNZXRob2RzIGZvciBzZXR0aW5nIGFu
ZCByZXRyaWV2aW5nIHRoZSBzY3JvbGxpbmcgbW9kZSBpbiBlYWNoIGF4aXMgKGhvcml6b250YWwv
dmVydGljYWwpLiAgVGhlIG1vZGUgaGFzIHZhbHVlcyBvZgorICAgIC8vIEFsd2F5c09mZiwgQWx3
YXlzT24sIGFuZCBBdXRvLiAgQWx3YXlzT2ZmIG1lYW5zIG5ldmVyIHNob3cgYSBzY3JvbGxiYXIs
IEFsd2F5c09uIG1lYW5zIGFsd2F5cyBzaG93IGEgc2Nyb2xsYmFyLgorICAgIC8vIEF1dG8gbWVh
bnMgc2hvdyBhIHNjcm9sbGJhciBvbmx5IHdoZW4gb25lIGlzIG5lZWRlZC4KKyAgICAvLyBOb3Rl
IHRoYXQgZm9yIHBsYXRmb3JtcyB3aXRoIG5hdGl2ZSB3aWRnZXRzLCB0aGVzZSBtb2RlcyBhcmUg
Y29uc2lkZXJlZCBhZHZpc29yeS4gIEluIG90aGVyIHdvcmRzIHRoZSB1bmRlcmx5aW5nIG5hdGl2
ZQorICAgIC8vIHdpZGdldCBtYXkgY2hvb3NlIG5vdCB0byBob25vciB0aGUgcmVxdWVzdGVkIG1v
ZGVzLgorICAgIHZvaWQgc2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFs
TW9kZSwgU2Nyb2xsYmFyTW9kZSB2ZXJ0aWNhbE1vZGUpOworICAgIHZvaWQgc2V0SG9yaXpvbnRh
bFNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyTW9kZSBtb2RlKSB7IHNldFNjcm9sbGJhck1vZGVzKG1v
ZGUsIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSgpKTsgfQorICAgIHZvaWQgc2V0VmVydGljYWxTY3Jv
bGxiYXJNb2RlKFNjcm9sbGJhck1vZGUgbW9kZSkgeyBzZXRTY3JvbGxiYXJNb2Rlcyhob3Jpem9u
dGFsU2Nyb2xsYmFyTW9kZSgpLCBtb2RlKTsgfQorICAgIHZvaWQgc2Nyb2xsYmFyTW9kZXMoU2Ny
b2xsYmFyTW9kZSYgaG9yaXpvbnRhbE1vZGUsIFNjcm9sbGJhck1vZGUmIHZlcnRpY2FsTW9kZSkg
Y29uc3Q7CisgICAgU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpIGNvbnN0
IHsgU2Nyb2xsYmFyTW9kZSBob3Jpem9udGFsLCB2ZXJ0aWNhbDsgc2Nyb2xsYmFyTW9kZXMoaG9y
aXpvbnRhbCwgdmVydGljYWwpOyByZXR1cm4gaG9yaXpvbnRhbDsgfQorICAgIFNjcm9sbGJhck1v
ZGUgdmVydGljYWxTY3JvbGxiYXJNb2RlKCkgY29uc3QgeyBTY3JvbGxiYXJNb2RlIGhvcml6b250
YWwsIHZlcnRpY2FsOyBzY3JvbGxiYXJNb2Rlcyhob3Jpem9udGFsLCB2ZXJ0aWNhbCk7IHJldHVy
biB2ZXJ0aWNhbDsgfQorICAgIAogICAgIC8vIFdoZXRoZXIgb3Igbm90IGEgc2Nyb2xsIHZpZXcg
d2lsbCBibGl0IHZpc2libGUgY29udGVudHMgd2hlbiBpdCBpcyBzY3JvbGxlZC4gIEJsaXR0aW5n
IGlzIGRpc2FibGVkIGluIHNpdHVhdGlvbnMKICAgICAvLyB3aGVyZSBpdCB3b3VsZCBjYXVzZSBy
ZW5kZXJpbmcgZ2xpdGNoZXMgKHN1Y2ggYXMgd2l0aCBmaXhlZCBiYWNrZ3JvdW5kcyBvciB3aGVu
IHRoZSB2aWV3IGlzIHBhcnRpYWxseSB0cmFuc3BhcmVudCkuCiAgICAgdm9pZCBzZXRDYW5CbGl0
T25TY3JvbGwoYm9vbCk7CkBAIC0xMDMsMTkgKzExNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNj
cm9sbEJ5KGNvbnN0IEludFNpemUmIHMpIHsgcmV0dXJuIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9s
bFBvc2l0aW9uKCkgKyBzKTsgfQogICAgIHZvaWQgc2Nyb2xsUmVjdEludG9WaWV3UmVjdXJzaXZl
bHkoY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldFZTY3JvbGxiYXJNb2Rl
KFNjcm9sbGJhck1vZGUpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRIU2Nyb2xsYmFyTW9kZShTY3Jv
bGxiYXJNb2RlKTsKLQotICAgIC8vIFNldCB0aGUgbW9kZSBmb3IgYm90aCBzY3JvbGxiYXJzIGF0
IG9uY2UuCi0gICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGJhcnNNb2RlKFNjcm9sbGJhck1vZGUp
OwotCiAgICAgLy8gVGhpcyBnaXZlcyB1cyBhIG1lYW5zIG9mIGJsb2NraW5nIHBhaW50aW5nIG9u
IG91ciBzY3JvbGxiYXJzIHVudGlsIHRoZSBmaXJzdCBsYXlvdXQgaGFzIG9jY3VycmVkLgogICAg
IHZvaWQgc3VwcHJlc3NTY3JvbGxiYXJzKGJvb2wgc3VwcHJlc3NlZCwgYm9vbCByZXBhaW50T25V
bnN1cHByZXNzID0gZmFsc2UpOwotCi0gICAgU2Nyb2xsYmFyTW9kZSB2U2Nyb2xsYmFyTW9kZSgp
IGNvbnN0OwotICAgIFNjcm9sbGJhck1vZGUgaFNjcm9sbGJhck1vZGUoKSBjb25zdDsKLQotICAg
IGJvb2wgaXNTY3JvbGxhYmxlKCk7CiAgICAgIAogICAgIC8vIEV2ZW50IGNvb3JkaW5hdGVzIGFy
ZSBhc3N1bWVkIHRvIGJlIGluIHRoZSBjb29yZGluYXRlIHNwYWNlIG9mIGEgd2luZG93IHRoYXQg
Y29udGFpbnMKICAgICAvLyB0aGUgZW50aXJlIHdpZGdldCBoaWVyYXJjaHkuIEl0IGlzIHVwIHRv
IHRoZSBwbGF0Zm9ybSB0byBkZWNpZGUgd2hhdCB0aGUgcHJlY2lzZSBkZWZpbml0aW9uCkBAIC0x
NTUsOCArMTU4LDYgQEAgcHVibGljOgogICAgICAgICBuZXdQb2ludC5tb3ZlKC1jaGlsZC0+eCgp
LCAtY2hpbGQtPnkoKSk7CiAgICAgICAgIHJldHVybiBuZXdQb2ludDsKICAgICB9Ci0gICAgCi0g
ICAgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIoY29uc3QgV2lkZ2V0KikgY29uc3Q7CiAKICNp
ZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAgICAgSW50UmVjdCBjb250ZW50c1RvU2NyZWVuKGNvbnN0
IEludFJlY3QmKSBjb25zdDsKQEAgLTE3MCw2ICsxNzEsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
dXBkYXRlKCk7CiAKIHByaXZhdGU6CisgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9ob3Jpem9udGFs
U2Nyb2xsYmFyOworICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdmVydGljYWxTY3JvbGxiYXI7Cisg
ICAgU2Nyb2xsYmFyTW9kZSBtX2hvcml6b250YWxTY3JvbGxiYXJNb2RlOworICAgIFNjcm9sbGJh
ck1vZGUgbV92ZXJ0aWNhbFNjcm9sbGJhck1vZGU7CisgICAgCiAgICAgSGFzaFNldDxXaWRnZXQq
PiBtX2NoaWxkcmVuOwogICAgIGJvb2wgbV9jYW5CbGl0T25TY3JvbGw7CiAgICAgSW50U2l6ZSBt
X3Njcm9sbE9mZnNldDsgLy8gRklYTUU6IFdvdWxkIHJhdGhlciBzdG9yZSB0aGlzIGFzIGEgcG9z
aXRpb24sIGJ1dCB3ZSB3aWxsIHdhaXQgdG8gbWFrZSB0aGlzIGNoYW5nZSB1bnRpbCBtb3JlIGNv
ZGUgaXMgc2hhcmVkLgpAQCAtMTc5LDYgKzE4NSw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9p
ZCBwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCopOwogICAgIHZvaWQgcGxhdGZvcm1SZW1vdmVDaGls
ZChXaWRnZXQqKTsKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2Nyb2xsYmFyTW9kZXMoKTsKKyAgICB2
b2lkIHBsYXRmb3JtU2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9kZSYgaG9yaXpvbnRhbCwgU2Ny
b2xsYmFyTW9kZSYgdmVydGljYWwpIGNvbnN0OwogICAgIHZvaWQgcGxhdGZvcm1TZXRDYW5CbGl0
T25TY3JvbGwoKTsKICAgICBJbnRSZWN0IHBsYXRmb3JtVmlzaWJsZUNvbnRlbnRSZWN0KGJvb2wg
aW5jbHVkZVNjcm9sbGJhcnMpIGNvbnN0OwogICAgIEludFNpemUgcGxhdGZvcm1Db250ZW50c1Np
emUoKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCShy
ZXZpc2lvbiAzNjk2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw2IEBAIHB1YmxpYzoKICAgICBTY3JvbGxWaWV3
UHJpdmF0ZShTY3JvbGxWaWV3KiBfdmlldykKICAgICAgICAgOiB2aWV3KF92aWV3KQogICAgICAg
ICAsIHNjcm9sbGJhcnNTdXBwcmVzc2VkKGZhbHNlKQotICAgICAgICAsIHZTY3JvbGxiYXJNb2Rl
KFNjcm9sbGJhckF1dG8pCi0gICAgICAgICwgaFNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyQXV0bykK
ICAgICAgICAgLCBpblVwZGF0ZVNjcm9sbGJhcnMoZmFsc2UpCiAgICAgICAgICwgaG9yaXpvbnRh
bEFkanVzdG1lbnQoMCkKICAgICAgICAgLCB2ZXJ0aWNhbEFkanVzdG1lbnQoMCkKQEAgLTEwNiwx
MCArMTA0LDYgQEAgcHVibGljOgogCiAgICAgU2Nyb2xsVmlldyogdmlldzsKICAgICBib29sIHNj
cm9sbGJhcnNTdXBwcmVzc2VkOwotICAgIFNjcm9sbGJhck1vZGUgdlNjcm9sbGJhck1vZGU7Ci0g
ICAgU2Nyb2xsYmFyTW9kZSBoU2Nyb2xsYmFyTW9kZTsKLSAgICBSZWZQdHI8U2Nyb2xsVmlld1Nj
cm9sbGJhcj4gdkJhcjsKLSAgICBSZWZQdHI8U2Nyb2xsVmlld1Njcm9sbGJhcj4gaEJhcjsKICAg
ICBJbnRTaXplIHZpZXdQb3J0U2l6ZTsKICAgICBib29sIGluVXBkYXRlU2Nyb2xsYmFyczsKICAg
ICBIYXNoU2V0PFdpZGdldCo+IGNoaWxkcmVuOwpAQCAtMTQyLDM2ICsxMzYsMjYgQEAgdm9pZCBT
Y3JvbGxWaWV3U2Nyb2xsYmFyOjpnZW9tZXRyeUNoYW5nZQogCiB2b2lkIFNjcm9sbFZpZXc6OlNj
cm9sbFZpZXdQcml2YXRlOjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQog
ewotICAgIGlmIChoYXNCYXIgJiYgIWhCYXIgJiYgIWhvcml6b250YWxBZGp1c3RtZW50KSB7Ci0g
ICAgICAgIGhCYXIgPSBTY3JvbGxWaWV3U2Nyb2xsYmFyOjpjcmVhdGUodGhpcywgSG9yaXpvbnRh
bFNjcm9sbGJhciwgUmVndWxhclNjcm9sbGJhcik7Ci0gICAgICAgIHZpZXctPmFkZENoaWxkKGhC
YXIuZ2V0KCkpOwotICAgIH0gZWxzZSBpZiAoIWhhc0JhciAmJiBoQmFyKSB7Ci0gICAgICAgIHZp
ZXctPnJlbW92ZUNoaWxkKGhCYXIuZ2V0KCkpOwotICAgICAgICBoQmFyID0gMDsKKyAgICBpZiAo
aGFzQmFyICYmICF2aWV3LT5oQmFyICYmICFob3Jpem9udGFsQWRqdXN0bWVudCkgeworICAgICAg
ICB2aWV3LT5oQmFyID0gU2Nyb2xsVmlld1Njcm9sbGJhcjo6Y3JlYXRlKHRoaXMsIEhvcml6b250
YWxTY3JvbGxiYXIsIFJlZ3VsYXJTY3JvbGxiYXIpOworICAgICAgICB2aWV3LT5hZGRDaGlsZCh2
aWV3LT5oQmFyLmdldCgpKTsKKyAgICB9IGVsc2UgaWYgKCFoYXNCYXIgJiYgdmlldy0+aEJhcikg
eworICAgICAgICB2aWV3LT5yZW1vdmVDaGlsZCh2aWV3LT5oQmFyLmdldCgpKTsKKyAgICAgICAg
dmlldy0+aEJhciA9IDA7CiAgICAgfQogfQogCiB2b2lkIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQ
cml2YXRlOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc0JhcikKIHsKLSAgICBpZiAo
aGFzQmFyICYmICF2QmFyICYmICF2ZXJ0aWNhbEFkanVzdG1lbnQpIHsKLSAgICAgICAgdkJhciA9
IFNjcm9sbFZpZXdTY3JvbGxiYXI6OmNyZWF0ZSh0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwgUmVn
dWxhclNjcm9sbGJhcik7Ci0gICAgICAgIHZpZXctPmFkZENoaWxkKHZCYXIuZ2V0KCkpOwotICAg
IH0gZWxzZSBpZiAoIWhhc0JhciAmJiB2QmFyKSB7Ci0gICAgICAgIHZpZXctPnJlbW92ZUNoaWxk
KHZCYXIuZ2V0KCkpOwotICAgICAgICB2QmFyID0gMDsKKyAgICBpZiAoaGFzQmFyICYmICF2aWV3
LT52QmFyICYmICF2ZXJ0aWNhbEFkanVzdG1lbnQpIHsKKyAgICAgICAgdmlldy0+dkJhciA9IFNj
cm9sbFZpZXdTY3JvbGxiYXI6OmNyZWF0ZSh0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwgUmVndWxh
clNjcm9sbGJhcik7CisgICAgICAgIHZpZXctPmFkZENoaWxkKHZpZXctPnZCYXIuZ2V0KCkpOwor
ICAgIH0gZWxzZSBpZiAoIWhhc0JhciAmJiB2aWV3LT52QmFyKSB7CisgICAgICAgIHZpZXctPnJl
bW92ZUNoaWxkKHZpZXctPnZCYXIuZ2V0KCkpOworICAgICAgICB2aWV3LT52QmFyID0gMDsKICAg
ICB9CiB9CiAKLVNjcm9sbGJhciogU2Nyb2xsVmlldzo6aG9yaXpvbnRhbFNjcm9sbGJhcigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS0+aEJhci5nZXQoKTsKLX0KLQotU2Nyb2xsYmFyKiBT
Y3JvbGxWaWV3Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0
YS0+dkJhci5nZXQoKTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6
c2Nyb2xsQmFja2luZ1N0b3JlKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhKQogewogICAgIC8v
IFNpbmNlIHNjcm9sbGluZyBpcyBkb3VibGUgYnVmZmVyZWQsIHdlIHdpbGwgYmUgYmxpdHRpbmcg
dGhlIHNjcm9sbCB2aWV3J3MgaW50ZXJzZWN0aW9uCkBAIC0yMjksOSArMjEzLDkgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6dmFsdQogICAgIC8vIEZpZ3VyZSBvdXQgaWYg
d2UgcmVhbGx5IG1vdmVkLgogICAgIEludFNpemUgbmV3T2Zmc2V0ID0gdmlldy0+bV9zY3JvbGxP
ZmZzZXQ7CiAgICAgaWYgKGJhcikgewotICAgICAgICBpZiAoYmFyID09IGhCYXIpCisgICAgICAg
IGlmIChiYXIgPT0gdmlldy0+aEJhcikKICAgICAgICAgICAgIG5ld09mZnNldC5zZXRXaWR0aChi
YXItPnZhbHVlKCkpOwotICAgICAgICBlbHNlIGlmIChiYXIgPT0gdkJhcikKKyAgICAgICAgZWxz
ZSBpZiAoYmFyID09IHZpZXctPnZCYXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0SGVpZ2h0
KGJhci0+dmFsdWUoKSk7CiAgICAgfQogICAgIEludFNpemUgc2Nyb2xsRGVsdGEgPSBuZXdPZmZz
ZXQgLSB2aWV3LT5tX3Njcm9sbE9mZnNldDsKQEAgLTM0NywyMSArMzMxLDYgQEAgdm9pZCBTY3Jv
bGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdAogICAgIHVwZGF0ZVNjcm9sbGJhcnMoSW50
U2l6ZShuZXdTY3JvbGxQb3NpdGlvbi54KCksIG5ld1Njcm9sbFBvc2l0aW9uLnkoKSkpOwogfQog
Ci1TY3JvbGxiYXJNb2RlIFNjcm9sbFZpZXc6OmhTY3JvbGxiYXJNb2RlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9kYXRhLT5oU2Nyb2xsYmFyTW9kZTsKLX0KLQotU2Nyb2xsYmFyTW9kZSBTY3Jv
bGxWaWV3Ojp2U2Nyb2xsYmFyTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS0+dlNj
cm9sbGJhck1vZGU7Ci19Ci0KLWJvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxhYmxlKCkgCi17IAot
ICAgIHJldHVybiB0cnVlOyAvLyBGSVhNRSA6IHJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgdmll
dyBpcyBzY3JvbGxhYmxlCi19Ci0KIHZvaWQgU2Nyb2xsVmlldzo6c3VwcHJlc3NTY3JvbGxiYXJz
KGJvb2wgc3VwcHJlc3NlZCwgYm9vbCByZXBhaW50T25TdXBwcmVzcykKIHsKICAgICBtX2RhdGEt
PnNjcm9sbGJhcnNTdXBwcmVzc2VkID0gc3VwcHJlc3NlZDsKQEAgLTM2OSwyOCArMzM4LDYgQEAg
dm9pZCBTY3JvbGxWaWV3OjpzdXBwcmVzc1Njcm9sbGJhcnMoYm9vbAogICAgICAgICB1cGRhdGVT
Y3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpzZXRIU2Ny
b2xsYmFyTW9kZShTY3JvbGxiYXJNb2RlIG5ld01vZGUpCi17Ci0gICAgaWYgKG1fZGF0YS0+aFNj
cm9sbGJhck1vZGUgIT0gbmV3TW9kZSkgewotICAgICAgICBtX2RhdGEtPmhTY3JvbGxiYXJNb2Rl
ID0gbmV3TW9kZTsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9mZnNldCk7Ci0g
ICAgfQotfQotCi12b2lkIFNjcm9sbFZpZXc6OnNldFZTY3JvbGxiYXJNb2RlKFNjcm9sbGJhck1v
ZGUgbmV3TW9kZSkKLXsKLSAgICBpZiAobV9kYXRhLT52U2Nyb2xsYmFyTW9kZSAhPSBuZXdNb2Rl
KSB7Ci0gICAgICAgIG1fZGF0YS0+dlNjcm9sbGJhck1vZGUgPSBuZXdNb2RlOwotICAgICAgICB1
cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKLSAgICB9Ci19Ci0KLXZvaWQgU2Nyb2xs
Vmlldzo6c2V0U2Nyb2xsYmFyc01vZGUoU2Nyb2xsYmFyTW9kZSBuZXdNb2RlKQotewotICAgIG1f
ZGF0YS0+aFNjcm9sbGJhck1vZGUgPSBtX2RhdGEtPnZTY3JvbGxiYXJNb2RlID0gbmV3TW9kZTsK
LSAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKLX0KLQogdm9pZCBTY3JvbGxW
aWV3OjpzZXRGcmFtZUdlb21ldHJ5KGNvbnN0IEludFJlY3QmIG5ld0dlb21ldHJ5KQogewogICAg
IEFTU0VSVChpc0ZyYW1lVmlldygpKTsKQEAgLTQ1MSw4ICszOTgsOCBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAKICAgICBtX2RhdGEtPmluVXBkYXRlU2Nyb2xs
YmFycyA9IHRydWU7CiAKLSAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyID0gbV9kYXRhLT52
QmFyOwotICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9IG1fZGF0YS0+aEJhcjsKKyAg
ICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyID0gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKKyAgICBi
b29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAg
Ym9vbCBvbGRIYXNWZXJ0aWNhbCA9IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgb2xk
SGFzSG9yaXpvbnRhbCA9IGhhc0hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgU2Nyb2xsYmFyTW9k
ZSBoU2Nyb2xsID0gbV9kYXRhLT5oU2Nyb2xsYmFyTW9kZTsKQEAgLTUxMSwyNyArNDU4LDI3IEBA
IHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICAgICAgICAgIG1f
ZGF0YS0+aG9yaXpvbnRhbEFkanVzdG1lbnQtPnZhbHVlID0gc2Nyb2xsLndpZHRoKCk7CiAgICAg
ICAgICAgICBndGtfYWRqdXN0bWVudF92YWx1ZV9jaGFuZ2VkKG1fZGF0YS0+aG9yaXpvbnRhbEFk
anVzdG1lbnQpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChtX2RhdGEtPmhCYXIpIHsKKyAg
ICB9IGVsc2UgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikgewogICAgICAgICBpbnQgY2xpZW50
V2lkdGggPSB2aXNpYmxlV2lkdGgoKTsKLSAgICAgICAgbV9kYXRhLT5oQmFyLT5zZXRFbmFibGVk
KGNvbnRlbnRzV2lkdGgoKSA+IGNsaWVudFdpZHRoKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzV2lkdGgoKSA+IGNsaWVudFdpZHRoKTsKICAgICAg
ICAgaW50IHBhZ2VTdGVwID0gKGNsaWVudFdpZHRoIC0gUEFHRV9LRUVQKTsKICAgICAgICAgaWYg
KHBhZ2VTdGVwIDwgMCkgcGFnZVN0ZXAgPSBjbGllbnRXaWR0aDsKLSAgICAgICAgSW50UmVjdCBv
bGRSZWN0KG1fZGF0YS0+aEJhci0+ZnJhbWVHZW9tZXRyeSgpKTsKKyAgICAgICAgSW50UmVjdCBv
bGRSZWN0KG1faG9yaXpvbnRhbFNjcm9sbGJhci0+ZnJhbWVHZW9tZXRyeSgpKTsKICAgICAgICAg
SW50UmVjdCBoQmFyUmVjdCA9IEludFJlY3QoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVpZ2h0KCkgLSBtX2RhdGEtPmhCYXItPmhlaWdodCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCgpIC0gKG1fZGF0YS0+dkJhciA/IG1fZGF0YS0+
dkJhci0+d2lkdGgoKSA6IDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2RhdGEtPmhCYXItPmhlaWdodCgpKTsKLSAgICAgICAgbV9kYXRhLT5oQmFyLT5zZXRGcmFtZUdl
b21ldHJ5KGhCYXJSZWN0KTsKLSAgICAgICAgaWYgKCFtX2RhdGEtPnNjcm9sbGJhcnNTdXBwcmVz
c2VkICYmIG9sZFJlY3QgIT0gbV9kYXRhLT5oQmFyLT5mcmFtZUdlb21ldHJ5KCkpCi0gICAgICAg
ICAgICBtX2RhdGEtPmhCYXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCgpIC0gKG1fdmVydGljYWxT
Y3JvbGxiYXIgPyBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpIDogMCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCkp
OworICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEZyYW1lR2VvbWV0cnkoaEJhclJl
Y3QpOworICAgICAgICBpZiAoIW1fZGF0YS0+c2Nyb2xsYmFyc1N1cHByZXNzZWQgJiYgb2xkUmVj
dCAhPSBtX2hvcml6b250YWxTY3JvbGxiYXItPmZyYW1lR2VvbWV0cnkoKSkKKyAgICAgICAgICAg
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwogCiAgICAgICAgIGlmIChtX2Rh
dGEtPnNjcm9sbGJhcnNTdXBwcmVzc2VkKQotICAgICAgICAgICAgbV9kYXRhLT5oQmFyLT5zZXRT
dXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKLSAgICAgICAgbV9kYXRhLT5oQmFyLT5zZXRTdGVw
cyhMSU5FX1NURVAsIHBhZ2VTdGVwKTsKLSAgICAgICAgbV9kYXRhLT5oQmFyLT5zZXRQcm9wb3J0
aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOwotICAgICAgICBtX2RhdGEtPmhCYXIt
PnNldFZhbHVlKHNjcm9sbC53aWR0aCgpKTsKKyAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7CisgICAgICAgIG1faG9yaXpvbnRh
bFNjcm9sbGJhci0+c2V0U3RlcHMoTElORV9TVEVQLCBwYWdlU3RlcCk7CisgICAgICAgIG1faG9y
aXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRXaWR0aCwgY29udGVudHNXaWR0
aCgpKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwud2lk
dGgoKSk7CiAgICAgICAgIGlmIChtX2RhdGEtPnNjcm9sbGJhcnNTdXBwcmVzc2VkKQotICAgICAg
ICAgICAgbV9kYXRhLT5oQmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbihmYWxzZSk7CisgICAg
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZh
bHNlKTsKICAgICB9CiAKICAgICBpZiAobV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQpIHsKQEAg
LTU0NiwzMCArNDkzLDMwIEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCAKICAgICAgICAgICAgIG1fZGF0YS0+dmVydGljYWxBZGp1c3RtZW50LT52YWx1ZSA9IHNjcm9s
bC5oZWlnaHQoKTsKICAgICAgICAgICAgIGd0a19hZGp1c3RtZW50X3ZhbHVlX2NoYW5nZWQobV9k
YXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChtX2Rh
dGEtPnZCYXIpIHsKKyAgICB9IGVsc2UgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAg
ICAgaW50IGNsaWVudEhlaWdodCA9IHZpc2libGVIZWlnaHQoKTsKLSAgICAgICAgbV9kYXRhLT52
QmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVpZ2h0KCkgPiBjbGllbnRIZWlnaHQpOworICAgICAg
ICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVpZ2h0KCkgPiBjbGll
bnRIZWlnaHQpOwogICAgICAgICBpbnQgcGFnZVN0ZXAgPSAoY2xpZW50SGVpZ2h0IC0gUEFHRV9L
RUVQKTsKICAgICAgICAgaWYgKHBhZ2VTdGVwIDwgMCkgcGFnZVN0ZXAgPSBjbGllbnRIZWlnaHQ7
Ci0gICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2RhdGEtPnZCYXItPmZyYW1lR2VvbWV0cnkoKSk7
Ci0gICAgICAgIEludFJlY3QgdkJhclJlY3QgPSBJbnRSZWN0KHdpZHRoKCkgLSBtX2RhdGEtPnZC
YXItPndpZHRoKCksCisgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT5mcmFtZUdlb21ldHJ5KCkpOworICAgICAgICBJbnRSZWN0IHZCYXJSZWN0ID0gSW50UmVjdCh3
aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9kYXRhLT52QmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQoKSAtIChtX2RhdGEtPmhCYXIgPyBtX2RhdGEtPmhCYXItPmhlaWdodCgpIDogMCkp
OwotICAgICAgICBtX2RhdGEtPnZCYXItPnNldEZyYW1lR2VvbWV0cnkodkJhclJlY3QpOwotICAg
ICAgICBpZiAoIW1fZGF0YS0+c2Nyb2xsYmFyc1N1cHByZXNzZWQgJiYgb2xkUmVjdCAhPSBtX2Rh
dGEtPnZCYXItPmZyYW1lR2VvbWV0cnkoKSkKLSAgICAgICAgICAgIG1fZGF0YS0+dkJhci0+aW52
YWxpZGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyLT53aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWlnaHQoKSAtIChtX2hvcml6b250YWxTY3JvbGxiYXIgPyBtX2hvcml6b250YWxTY3JvbGxiYXIt
PmhlaWdodCgpIDogMCkpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRGcmFtZUdl
b21ldHJ5KHZCYXJSZWN0KTsKKyAgICAgICAgaWYgKCFtX2RhdGEtPnNjcm9sbGJhcnNTdXBwcmVz
c2VkICYmIG9sZFJlY3QgIT0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJhbWVHZW9tZXRyeSgpKQor
ICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwogCiAgICAgICAg
IGlmIChtX2RhdGEtPnNjcm9sbGJhcnNTdXBwcmVzc2VkKQotICAgICAgICAgICAgbV9kYXRhLT52
QmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKLSAgICAgICAgbV9kYXRhLT52QmFy
LT5zZXRTdGVwcyhMSU5FX1NURVAsIHBhZ2VTdGVwKTsKLSAgICAgICAgbV9kYXRhLT52QmFyLT5z
ZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgY29udGVudHNIZWlnaHQoKSk7Ci0gICAgICAgIG1f
ZGF0YS0+dkJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpKTsKKyAgICAgICAgICAgIG1fdmVy
dGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOworICAgICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdGVwcyhMSU5FX1NURVAsIHBhZ2VTdGVwKTsKKyAgICAg
ICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRl
bnRzSGVpZ2h0KCkpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3Jv
bGwuaGVpZ2h0KCkpOwogICAgICAgICBpZiAobV9kYXRhLT5zY3JvbGxiYXJzU3VwcHJlc3NlZCkK
LSAgICAgICAgICAgIG1fZGF0YS0+dkJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2Up
OworICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRp
b24oZmFsc2UpOwogICAgIH0KIAotICAgIGlmIChvbGRIYXNWZXJ0aWNhbCAhPSAobV9kYXRhLT52
QmFyICE9IDApIHx8IG9sZEhhc0hvcml6b250YWwgIT0gKG1fZGF0YS0+aEJhciAhPSAwKSkKKyAg
ICBpZiAob2xkSGFzVmVydGljYWwgIT0gKG1fdmVydGljYWxTY3JvbGxiYXIgIT0gMCkgfHwgb2xk
SGFzSG9yaXpvbnRhbCAhPSAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICE9IDApKQogICAgICAgICBn
ZW9tZXRyeUNoYW5nZWQoKTsKIAogICAgIC8vIFNlZSBpZiBvdXIgb2Zmc2V0IGhhcyBjaGFuZ2Vk
IGluIGEgc2l0dWF0aW9uIHdoZXJlIHdlIG1pZ2h0IG5vdCBoYXZlIHNjcm9sbGJhcnMuCkBAIC02
MDAsMTYgKzU0NywxNiBAQCBJbnRQb2ludCBTY3JvbGxWaWV3Ojpjb250ZW50c1RvV2luZG93KGNv
CiBTY3JvbGxiYXIqIFNjcm9sbFZpZXc6OnNjcm9sbGJhclVuZGVyTW91c2UoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBtb3VzZUV2ZW50KQogewogICAgIEludFBvaW50IHZpZXdQb2ludCA9IGNv
bnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhtb3VzZUV2ZW50LnBvcygpKTsKLSAgICBpZiAobV9k
YXRhLT5oQmFyICYmIG1fZGF0YS0+aEJhci0+ZnJhbWVHZW9tZXRyeSgpLmNvbnRhaW5zKHZpZXdQ
b2ludCkpCi0gICAgICAgIHJldHVybiBtX2RhdGEtPmhCYXIuZ2V0KCk7Ci0gICAgaWYgKG1fZGF0
YS0+dkJhciAmJiBtX2RhdGEtPnZCYXItPmZyYW1lR2VvbWV0cnkoKS5jb250YWlucyh2aWV3UG9p
bnQpKQotICAgICAgICByZXR1cm4gbV9kYXRhLT52QmFyLmdldCgpOworICAgIGlmIChtX2hvcml6
b250YWxTY3JvbGxiYXIgJiYgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5mcmFtZUdlb21ldHJ5KCku
Y29udGFpbnModmlld1BvaW50KSkKKyAgICAgICAgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJh
ci5nZXQoKTsKKyAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiBtX3ZlcnRpY2FsU2Nyb2xs
YmFyLT5mcmFtZUdlb21ldHJ5KCkuY29udGFpbnModmlld1BvaW50KSkKKyAgICAgICAgcmV0dXJu
IG1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgU2Ny
b2xsVmlldzo6aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKGNvbnN0IFdpZGdldCogY2hpbGQpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS0+aEJhciA9PSBjaGlsZCB8fCBtX2RhdGEtPnZCYXIgPT0g
Y2hpbGQ7CisgICAgcmV0dXJuIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9PSBjaGlsZCB8fCBtX3Zl
cnRpY2FsU2Nyb2xsYmFyID09IGNoaWxkOwogfQogCiB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTYzNywzNiAr
NTg0LDM2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGFpbnQoR3JhcGhpY3NDb250ZXh0KiAKICAgICBj
b250ZXh0LT5yZXN0b3JlKCk7CiAKICAgICAvLyBOb3cgcGFpbnQgdGhlIHNjcm9sbGJhcnMuCi0g
ICAgaWYgKCFtX2RhdGEtPnNjcm9sbGJhcnNTdXBwcmVzc2VkICYmIChtX2RhdGEtPmhCYXIgfHwg
bV9kYXRhLT52QmFyKSkgeworICAgIGlmICghbV9kYXRhLT5zY3JvbGxiYXJzU3VwcHJlc3NlZCAm
JiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyIHx8IG1fdmVydGljYWxTY3JvbGxiYXIpKSB7CiAgICAg
ICAgIGNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgSW50UmVjdCBzY3JvbGxWaWV3RGlydHlSZWN0
ID0gcmVjdDsKICAgICAgICAgc2Nyb2xsVmlld0RpcnR5UmVjdC5pbnRlcnNlY3QoZnJhbWVHZW9t
ZXRyeSgpKTsKICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKHgoKSwgeSgpKTsKICAgICAgICAg
c2Nyb2xsVmlld0RpcnR5UmVjdC5tb3ZlKC14KCksIC15KCkpOwotICAgICAgICBpZiAobV9kYXRh
LT5oQmFyKQotICAgICAgICAgICAgbV9kYXRhLT5oQmFyLT5wYWludChjb250ZXh0LCBzY3JvbGxW
aWV3RGlydHlSZWN0KTsKLSAgICAgICAgaWYgKG1fZGF0YS0+dkJhcikKLSAgICAgICAgICAgIG1f
ZGF0YS0+dkJhci0+cGFpbnQoY29udGV4dCwgc2Nyb2xsVmlld0RpcnR5UmVjdCk7CisgICAgICAg
IGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXItPnBhaW50KGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOworICAgICAgICBpZiAo
bV92ZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnBh
aW50KGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogCiAgICAgICAgIC8qCiAgICAgICAg
ICAqIEZJWE1FOiBUT0RPOiBDaGVjayBpZiB0aGF0IHdvcmtzIHdpdGggUlRMCiAgICAgICAgICAq
LwogICAgICAgICAvLyBGaWxsIHRoZSBzY3JvbGwgY29ybmVyIHdpdGggd2hpdGUuCiAgICAgICAg
IEludFJlY3QgaENvcm5lcjsKLSAgICAgICAgaWYgKG1fZGF0YS0+aEJhciAmJiB3aWR0aCgpIC0g
bV9kYXRhLT5oQmFyLT53aWR0aCgpID4gMCkgewotICAgICAgICAgICAgaENvcm5lciA9IEludFJl
Y3QobV9kYXRhLT5oQmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0KCkgLSBtX2RhdGEtPmhCYXItPmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd2lkdGgoKSAtIG1fZGF0YS0+aEJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZGF0YS0+aEJhci0+aGVpZ2h0KCkpOworICAgICAgICBpZiAobV9o
b3Jpem9udGFsU2Nyb2xsYmFyICYmIHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndp
ZHRoKCkgPiAwKSB7CisgICAgICAgICAgICBoQ29ybmVyID0gSW50UmVjdChtX2hvcml6b250YWxT
Y3JvbGxiYXItPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQo
KSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQo
KSk7CiAgICAgICAgICAgICBpZiAoaENvcm5lci5pbnRlcnNlY3RzKHNjcm9sbFZpZXdEaXJ0eVJl
Y3QpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGhDb3JuZXIsIENvbG9yOjp3
aGl0ZSk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9kYXRhLT52QmFyICYmIGhlaWdodCgp
IC0gbV9kYXRhLT52QmFyLT5oZWlnaHQoKSA+IDApIHsKLSAgICAgICAgICAgIEludFJlY3QgdkNv
cm5lcih3aWR0aCgpIC0gbV9kYXRhLT52QmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZGF0YS0+dkJhci0+aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9kYXRhLT52QmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodCgpIC0gbV9kYXRhLT52QmFyLT5oZWlnaHQoKSk7CisgICAgICAgIGlmIChtX3ZlcnRp
Y2FsU2Nyb2xsYmFyICYmIGhlaWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkg
PiAwKSB7CisgICAgICAgICAgICBJbnRSZWN0IHZDb3JuZXIod2lkdGgoKSAtIG1fdmVydGljYWxT
Y3JvbGxiYXItPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNh
bFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0
aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWln
aHQoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpKTsKICAgICAgICAgICAgIGlmICh2
Q29ybmVyICE9IGhDb3JuZXIgJiYgdkNvcm5lci5pbnRlcnNlY3RzKHNjcm9sbFZpZXdEaXJ0eVJl
Y3QpKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHZDb3JuZXIsIENvbG9yOjp3
aGl0ZSk7CiAgICAgICAgIH0KQEAgLTY4OSwxMSArNjM2LDExIEBAIHZvaWQgU2Nyb2xsVmlldzo6
Z2VvbWV0cnlDaGFuZ2VkKCkgY29uc3QKIGJvb2wgU2Nyb2xsVmlldzo6c2Nyb2xsKFNjcm9sbERp
cmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAg
IGlmIChkaXJlY3Rpb24gPT0gU2Nyb2xsVXAgfHwgZGlyZWN0aW9uID09IFNjcm9sbERvd24pIHsK
LSAgICAgICAgaWYgKG1fZGF0YS0+dkJhcikKLSAgICAgICAgICAgIHJldHVybiBtX2RhdGEtPnZC
YXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgaWYgKG1fdmVydGlj
YWxTY3JvbGxiYXIpCisgICAgICAgICAgICByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2Ny
b2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICht
X2RhdGEtPmhCYXIpCi0gICAgICAgICAgICByZXR1cm4gbV9kYXRhLT5oQmFyLT5zY3JvbGwoZGly
ZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAgICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIp
CisgICAgICAgICAgICByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zY3JvbGwoZGlyZWN0
aW9uLCBncmFudWxhcml0eSk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQkocmV2aXNpb24gMzY5NjApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03Miwx
NiArNzIsNiBAQCBpbmxpbmUgTlNTY3JvbGxWaWV3PFdlYkNvcmVGcmFtZVNjcm9sbFZpCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PE5TU2Nyb2xsVmlldzxXZWJDb3JlRnJhbWVTY3JvbGxWaWV3PiAq
PihwbGF0Zm9ybVdpZGdldCgpKTsKIH0KIAotU2Nyb2xsYmFyKiBTY3JvbGxWaWV3Ojpob3Jpem9u
dGFsU2Nyb2xsYmFyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gMDsKLX0KLQotU2Nyb2xsYmFyKiBT
Y3JvbGxWaWV3Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIDA7Ci19
Ci0KIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1BZGRDaGlsZChXaWRnZXQqIGNoaWxkKQogewog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTEwNCw2ICs5NCwyMCBAQCB2b2lk
IFNjcm9sbFZpZXc6OnBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkCiAgICAgY2hpbGQtPnJlbW92ZUZy
b21TdXBlcnZpZXcoKTsKIH0KIAordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJh
ck1vZGVzKCkKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgW3Njcm9s
bFZpZXcoKSBzZXRTY3JvbGxpbmdNb2RlczptX2hvcml6b250YWxTY3JvbGxiYXJNb2RlIHZlcnRp
Y2FsOm1fdmVydGljYWxTY3JvbGxiYXJNb2RlIGFuZExvY2s6Tk9dOworICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Cit9CisKK3ZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TY3JvbGxiYXJN
b2RlcyhTY3JvbGxiYXJNb2RlJiBob3Jpem9udGFsLCBTY3JvbGxiYXJNb2RlJiB2ZXJ0aWNhbCkg
Y29uc3QKK3sKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CisgICAgW3Njcm9sbFZp
ZXcoKSBzY3JvbGxpbmdNb2RlczomaG9yaXpvbnRhbCB2ZXJ0aWNhbDomdmVydGljYWxdOworICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Cit9CisgICAgCiB2b2lkIFNjcm9sbFZpZXc6OnBs
YXRmb3JtU2V0Q2FuQmxpdE9uU2Nyb2xsKCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CkBAIC0xNDMsMTQgKzE0Nyw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1TZXRD
b250ZW50c1NpemUKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi1ib29sIFNj
cm9sbFZpZXc6OmlzU2Nyb2xsYWJsZSgpIAoteyAKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7Ci0gICAgcmV0dXJuIFtzY3JvbGxWaWV3KCkgaGFzSG9yaXpvbnRhbFNjcm9sbGVyXSB8
fCBbc2Nyb2xsVmlldygpIGhhc1ZlcnRpY2FsU2Nyb2xsZXJdOwotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgU2Nyb2xsVmlldzo6c2V0
U2Nyb2xsUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHNjcm9sbFBvaW50KQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTE1OSw0MyArMTU1LDYgQEAgdm9pZCBTY3JvbGxW
aWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2V0VlNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyTW9k
ZSB2TW9kZSkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgW3Njcm9s
bFZpZXcoKSBzZXRWZXJ0aWNhbFNjcm9sbGluZ01vZGU6dk1vZGVdOwotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7Ci19Ci0KLXZvaWQgU2Nyb2xsVmlldzo6c2V0SFNjcm9sbGJhck1vZGUo
U2Nyb2xsYmFyTW9kZSBoTW9kZSkKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
Ci0gICAgW3Njcm9sbFZpZXcoKSBzZXRIb3Jpem9udGFsU2Nyb2xsaW5nTW9kZTpoTW9kZV07Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLX0KLQotdm9pZCBTY3JvbGxWaWV3OjpzZXRT
Y3JvbGxiYXJzTW9kZShTY3JvbGxiYXJNb2RlIG1vZGUpCi17Ci0gICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwotICAgIFtzY3JvbGxWaWV3KCkgc2V0U2Nyb2xsaW5nTW9kZTptb2RlXTsK
LSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCi1TY3JvbGxiYXJNb2RlIFNjcm9s
bFZpZXc6OnZTY3JvbGxiYXJNb2RlKCkgY29uc3QKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgcmV0dXJuIFtzY3JvbGxWaWV3KCkgdmVydGljYWxTY3JvbGxpbmdNb2Rl
XTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIHJldHVybiBTY3JvbGxiYXJB
dXRvOwotfQotCi1TY3JvbGxiYXJNb2RlIFNjcm9sbFZpZXc6OmhTY3JvbGxiYXJNb2RlKCkgY29u
c3QKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7Ci0gICAgcmV0dXJuIFtzY3Jv
bGxWaWV3KCkgaG9yaXpvbnRhbFNjcm9sbGluZ01vZGVdOwotICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7Ci0gICAgcmV0dXJuIFNjcm9sbGJhckF1dG87Ci19Ci0KIHZvaWQgU2Nyb2xsVmll
dzo6c3VwcHJlc3NTY3JvbGxiYXJzKGJvb2wgc3VwcHJlc3NlZCwgYm9vbCByZXBhaW50T25VbnN1
cHByZXNzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAgLTI0MCwxMiAr
MTk5LDYgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGUoKQogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiB9CiAKLWJvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKGNv
bnN0IFdpZGdldCogY2hpbGQpIGNvbnN0Ci17Ci0gICAgLy8gTWFjIHVzZXMgbmF0aXZlIE5TU2Ny
b2xsVmlld3MsIHNvIGEgY2hpbGQgd2lsbCBuZXZlciBiZSBvbmUgb2YgdGhvc2UgbmF0aXZlIE5T
U2Nyb2xsZXJzLgotICAgIHJldHVybiBmYWxzZTsKLX0KLQogLy8gIkNvbnRhaW5pbmcgV2luZG93
IiBtZWFucyB0aGUgTlNXaW5kb3cncyBjb29yZCBzeXN0ZW0sIHdoaWNoIGlzIG9yaWdpbiBsb3dl
ciBsZWZ0CiAKIEludFBvaW50IFNjcm9sbFZpZXc6OmNvbnRlbnRzVG9XaW5kb3coY29uc3QgSW50
UG9pbnQmIGNvbnRlbnRzUG9pbnQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3F0L1Nj
cm9sbFZpZXdRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxW
aWV3UXQuY3BwCShyZXZpc2lvbiAzNjk2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xs
Vmlld1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMzEgKzk2LDI3IEBAIHB1YmxpYzoKICAg
ICBib29sIG1fc2Nyb2xsYmFyc1N1cHByZXNzZWQ7CiAgICAgYm9vbCBtX2luVXBkYXRlU2Nyb2xs
YmFyczsKICAgICBpbnQgbV9zY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyOwotICAgIFNjcm9sbGJh
ck1vZGUgbV92U2Nyb2xsYmFyTW9kZTsKLSAgICBTY3JvbGxiYXJNb2RlIG1faFNjcm9sbGJhck1v
ZGU7Ci0gICAgUmVmUHRyPFNjcm9sbGJhcj4gbV92QmFyOwotICAgIFJlZlB0cjxTY3JvbGxiYXI+
IG1faEJhcjsKIH07CiAKIHZvaWQgU2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OnNldEhh
c0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIpCiB7Ci0gICAgaWYgKGhhc0JhciAmJiAh
bV9oQmFyKSB7Ci0gICAgICAgIG1faEJhciA9IFNjcm9sbGJhcjo6Y3JlYXRlTmF0aXZlU2Nyb2xs
YmFyKHRoaXMsIEhvcml6b250YWxTY3JvbGxiYXIsIFJlZ3VsYXJTY3JvbGxiYXIpOwotICAgICAg
ICBtX3ZpZXctPmFkZENoaWxkKG1faEJhci5nZXQoKSk7Ci0gICAgfSBlbHNlIGlmICghaGFzQmFy
ICYmIG1faEJhcikgewotICAgICAgICBtX3ZpZXctPnJlbW92ZUNoaWxkKG1faEJhci5nZXQoKSk7
Ci0gICAgICAgIG1faEJhciA9IDA7CisgICAgaWYgKGhhc0JhciAmJiAhbV92aWV3LT5tX2hvcml6
b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAgbV92aWV3LT5tX2hvcml6b250YWxTY3JvbGxiYXIg
PSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcih0aGlzLCBIb3Jpem9udGFsU2Nyb2xs
YmFyLCBSZWd1bGFyU2Nyb2xsYmFyKTsKKyAgICAgICAgbV92aWV3LT5hZGRDaGlsZChtX3ZpZXct
Pm1faG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKSk7CisgICAgfSBlbHNlIGlmICghaGFzQmFyICYm
IG1fdmlldy0+bV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIG1fdmlldy0+cmVtb3Zl
Q2hpbGQobV92aWV3LT5tX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCkpOworICAgICAgICBtX3Zp
ZXctPm1faG9yaXpvbnRhbFNjcm9sbGJhciA9IDA7CiAgICAgfQogfQogCiB2b2lkIFNjcm9sbFZp
ZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sIGhhc0Jh
cikKIHsKLSAgICBpZiAoaGFzQmFyICYmICFtX3ZCYXIpIHsKLSAgICAgICAgbV92QmFyID0gU2Ny
b2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIodGhpcywgVmVydGljYWxTY3JvbGxiYXIsIFJl
Z3VsYXJTY3JvbGxiYXIpOwotICAgICAgICBtX3ZpZXctPmFkZENoaWxkKG1fdkJhci5nZXQoKSk7
Ci0gICAgfSBlbHNlIGlmICghaGFzQmFyICYmIG1fdkJhcikgewotICAgICAgICBtX3ZpZXctPnJl
bW92ZUNoaWxkKG1fdkJhci5nZXQoKSk7Ci0gICAgICAgIG1fdkJhciA9IDA7CisgICAgaWYgKGhh
c0JhciAmJiAhbV92ZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBtX3ZpZXctPm1fdmVydGlj
YWxTY3JvbGxiYXIgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcih0aGlzLCBWZXJ0
aWNhbFNjcm9sbGJhciwgUmVndWxhclNjcm9sbGJhcik7CisgICAgICAgIG1fdmlldy0+YWRkQ2hp
bGQobV92aWV3LT5tX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpKTsKKyAgICB9IGVsc2UgaWYgKCFo
YXNCYXIgJiYgbV92aWV3LT5tX3ZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAgICAgIG1fdmlldy0+
cmVtb3ZlQ2hpbGQobV92aWV3LT5tX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpKTsKKyAgICAgICAg
bV92aWV3LT5tX3ZlcnRpY2FsU2Nyb2xsYmFyID0gMDsKICAgICB9CiB9CiAKQEAgLTEyOSw5ICsx
MjUsOSBAQCB2b2lkIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjp2YWx1CiAgICAgLy8g
RmlndXJlIG91dCBpZiB3ZSByZWFsbHkgbW92ZWQuCiAgICAgSW50U2l6ZSBuZXdPZmZzZXQgPSBt
X3ZpZXctPm1fc2Nyb2xsT2Zmc2V0OwogICAgIGlmIChiYXIpIHsKLSAgICAgICAgaWYgKGJhciA9
PSBtX2hCYXIpCisgICAgICAgIGlmIChiYXIgPT0gbV92aWV3LT5tX2hvcml6b250YWxTY3JvbGxi
YXIpCiAgICAgICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoYmFyLT52YWx1ZSgpKTsKLSAgICAg
ICAgZWxzZSBpZiAoYmFyID09IG1fdkJhcikKKyAgICAgICAgZWxzZSBpZiAoYmFyID09IG1fdmll
dy0+bV92ZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgICAgIG5ld09mZnNldC5zZXRIZWlnaHQo
YmFyLT52YWx1ZSgpKTsKICAgICB9CiAgICAgSW50U2l6ZSBzY3JvbGxEZWx0YSA9IG5ld09mZnNl
dCAtIG1fdmlldy0+bV9zY3JvbGxPZmZzZXQ7CkBAIC0xOTIsMTIgKzE4OCwxMiBAQCBTY3JvbGxW
aWV3Ojp+U2Nyb2xsVmlldygpCiAKIFNjcm9sbGJhciogU2Nyb2xsVmlldzo6aG9yaXpvbnRhbFNj
cm9sbGJhcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGF0YS0+bV9oQmFyLmdldCgpOworICAg
IHJldHVybiBtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCk7CiB9CiAKIFNjcm9sbGJhciogU2Ny
b2xsVmlldzo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAogewotICAgIHJldHVybiBtX2RhdGEt
Pm1fdkJhci5nZXQoKTsKKyAgICByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsKIH0K
IAogdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVDb250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0LCBi
b29sIG5vdykKQEAgLTI3NCwyNiArMjcwLDYgQEAgSW50UG9pbnQgU2Nyb2xsVmlldzo6Y29udGVu
dHNUb1dpbmRvdyhjbwogICAgIHJldHVybiBjb252ZXJ0VG9Db250YWluaW5nV2luZG93KHZpZXdQ
b2ludCk7CiB9CiAKLWJvb2wgU2Nyb2xsVmlldzo6aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKGNvbnN0
IFdpZGdldCogY2hpbGQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS0+bV9oQmFyID09IGNo
aWxkIHx8IG1fZGF0YS0+bV92QmFyID09IGNoaWxkOwotfQotCi1XZWJDb3JlOjpTY3JvbGxiYXJN
b2RlIFNjcm9sbFZpZXc6OmhTY3JvbGxiYXJNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9k
YXRhLT5tX2hTY3JvbGxiYXJNb2RlOwotfQotCi1XZWJDb3JlOjpTY3JvbGxiYXJNb2RlIFNjcm9s
bFZpZXc6OnZTY3JvbGxiYXJNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9kYXRhLT5tX3ZT
Y3JvbGxiYXJNb2RlOwotfQotCi1ib29sIFNjcm9sbFZpZXc6OmlzU2Nyb2xsYWJsZSgpIAoteyAK
LSAgICByZXR1cm4gdHJ1ZTsgLy8gRklYTUUgOiByZXR1cm4gd2hldGhlciBvciBub3QgdGhlIHZp
ZXcgaXMgc2Nyb2xsYWJsZQotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnN1cHByZXNzU2Nyb2xsYmFy
cyhib29sIHN1cHByZXNzZWQsIGJvb2wgcmVwYWludE9uU3VwcHJlc3MpCiB7CiAgICAgbV9kYXRh
LT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkID0gc3VwcHJlc3NlZDsKQEAgLTMwMyw1NyArMjc5LDMy
IEBAIHZvaWQgU2Nyb2xsVmlldzo6c3VwcHJlc3NTY3JvbGxiYXJzKGJvb2wKIAogdm9pZCBTY3Jv
bGxWaWV3OjppbnZhbGlkYXRlU2Nyb2xsYmFycygpCiB7Ci0gICAgaWYgKG1fZGF0YS0+bV9oQmFy
KQotICAgICAgICBtX2RhdGEtPm1faEJhci0+aW52YWxpZGF0ZSgpOwotICAgIGlmIChtX2RhdGEt
Pm1fdkJhcikKLSAgICAgICAgbV9kYXRhLT5tX3ZCYXItPmludmFsaWRhdGUoKTsKKyAgICBpZiAo
bV9ob3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmlu
dmFsaWRhdGUoKTsKKyAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAgICAgbV92ZXJ0
aWNhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwogCiAKICAgICAvLyBJbnZhbGlkYXRlIHRoZSBz
Y3JvbGwgY29ybmVyIHRvbwogICAgIEludFJlY3QgaENvcm5lcjsKLSAgICBpZiAobV9kYXRhLT5t
X2hCYXIgJiYgd2lkdGgoKSAtIG1fZGF0YS0+bV9oQmFyLT53aWR0aCgpID4gMCkgewotICAgICAg
ICBoQ29ybmVyID0gSW50UmVjdChtX2RhdGEtPm1faEJhci0+d2lkdGgoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1fZGF0YS0+bV9oQmFyLT5oZWlnaHQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICB3aWR0aCgpIC0gbV9kYXRhLT5tX2hCYXItPndpZHRoKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgbV9kYXRhLT5tX2hCYXItPmhlaWdodCgpKTsKKyAgICBp
ZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICYmIHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxi
YXItPndpZHRoKCkgPiAwKSB7CisgICAgICAgIGhDb3JuZXIgPSBJbnRSZWN0KG1faG9yaXpvbnRh
bFNjcm9sbGJhci0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAt
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGgoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpKTsKICAgICAgICBh
ZGRUb0RpcnR5UmVnaW9uKGNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3coaENvcm5lcikpOwogICAg
IH0KIAotICAgIGlmIChtX2RhdGEtPm1fdkJhciAmJiBoZWlnaHQoKSAtIG1fZGF0YS0+bV92QmFy
LT5oZWlnaHQoKSA+IDApIHsKLSAgICAgICAgSW50UmVjdCB2Q29ybmVyKHdpZHRoKCkgLSBtX2Rh
dGEtPm1fdkJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgbV9kYXRhLT5tX3ZC
YXItPmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+d2lk
dGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX2RhdGEtPm1fdkJhci0+
aGVpZ2h0KCkpOworICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhlaWdodCgpIC0gbV92
ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKSB7CisgICAgICAgIEludFJlY3QgdkNvcm5l
cih3aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIGhlaWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkpOwogICAgICAgICBp
ZiAodkNvcm5lciAhPSBoQ29ybmVyKQogICAgICAgICAgICAgYWRkVG9EaXJ0eVJlZ2lvbihjb252
ZXJ0VG9Db250YWluaW5nV2luZG93KHZDb3JuZXIpKTsKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xs
Vmlldzo6c2V0SFNjcm9sbGJhck1vZGUoU2Nyb2xsYmFyTW9kZSBuZXdNb2RlKQotewotICAgIGlm
IChtX2RhdGEtPm1faFNjcm9sbGJhck1vZGUgIT0gbmV3TW9kZSkgewotICAgICAgICBtX2RhdGEt
Pm1faFNjcm9sbGJhck1vZGUgPSBuZXdNb2RlOwotICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1f
c2Nyb2xsT2Zmc2V0KTsKLSAgICB9Ci19Ci0KLXZvaWQgU2Nyb2xsVmlldzo6c2V0VlNjcm9sbGJh
ck1vZGUoU2Nyb2xsYmFyTW9kZSBuZXdNb2RlKQotewotICAgIGlmIChtX2RhdGEtPm1fdlNjcm9s
bGJhck1vZGUgIT0gbmV3TW9kZSkgewotICAgICAgICBtX2RhdGEtPm1fdlNjcm9sbGJhck1vZGUg
PSBuZXdNb2RlOwotICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKLSAg
ICB9Ci19Ci0KLXZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyc01vZGUoU2Nyb2xsYmFyTW9k
ZSBuZXdNb2RlKQotewotICAgIGlmIChtX2RhdGEtPm1faFNjcm9sbGJhck1vZGUgIT0gbmV3TW9k
ZSB8fAotICAgICAgICBtX2RhdGEtPm1fdlNjcm9sbGJhck1vZGUgIT0gbmV3TW9kZSkgewotICAg
ICAgICBtX2RhdGEtPm1faFNjcm9sbGJhck1vZGUgPSBtX2RhdGEtPm1fdlNjcm9sbGJhck1vZGUg
PSBuZXdNb2RlOwotICAgICAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKLSAg
ICB9Ci19Ci0KIGJvb2wgU2Nyb2xsVmlldzo6aW5XaW5kb3coKSBjb25zdAogewogICAgIHJldHVy
biB0cnVlOwpAQCAtMzcyLDggKzMyMyw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xs
YmFycyhjb25zdCAKICAgICAKICAgICBtX2RhdGEtPm1faW5VcGRhdGVTY3JvbGxiYXJzID0gdHJ1
ZTsKIAotICAgIGJvb2wgaGFzVmVydGljYWxTY3JvbGxiYXIgPSBtX2RhdGEtPm1fdkJhcjsKLSAg
ICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBtX2RhdGEtPm1faEJhcjsKKyAgICBib29s
IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyID0gbV92ZXJ0aWNhbFNjcm9sbGJhcjsKKyAgICBib29sIGhh
c0hvcml6b250YWxTY3JvbGxiYXIgPSBtX2hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgYm9vbCBv
bGRIYXNWZXJ0aWNhbCA9IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyOwogICAgIGJvb2wgb2xkSGFzSG9y
aXpvbnRhbCA9IGhhc0hvcml6b250YWxTY3JvbGxiYXI7CiAgICAgU2Nyb2xsYmFyTW9kZSBoU2Ny
b2xsID0gbV9kYXRhLT5tX2hTY3JvbGxiYXJNb2RlOwpAQCAtNDQ0LDUzICszOTUsNTMgQEAgdm9p
ZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgIH0KICNlbmRpZgogCi0g
ICAgaWYgKG1fZGF0YS0+bV9oQmFyKSB7CisgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhcikg
ewogICAgICAgICBpbnQgY2xpZW50V2lkdGggPSB2aXNpYmxlV2lkdGgoKTsKLSAgICAgICAgbV9k
YXRhLT5tX2hCYXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgpID4gY2xpZW50V2lkdGgpOwor
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNXaWR0aCgp
ID4gY2xpZW50V2lkdGgpOwogICAgICAgICBpbnQgcGFnZVN0ZXAgPSAoY2xpZW50V2lkdGggLSBQ
QUdFX0tFRVApOwogICAgICAgICBpZiAocGFnZVN0ZXAgPCAwKSBwYWdlU3RlcCA9IGNsaWVudFdp
ZHRoOwotICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9kYXRhLT5tX2hCYXItPmZyYW1lR2VvbWV0
cnkoKSk7CisgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2hvcml6b250YWxTY3JvbGxiYXItPmZy
YW1lR2VvbWV0cnkoKSk7CiAgICAgICAgIEludFJlY3QgaEJhclJlY3QgPSBJbnRSZWN0KDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9kYXRhLT5tX2hC
YXItPmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCgp
IC0gKG1fZGF0YS0+bV92QmFyID8gbV9kYXRhLT5tX3ZCYXItPndpZHRoKCkgOiBzY3JvbGxiYXJP
ZmZzZXQueCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kYXRhLT5t
X2hCYXItPmhlaWdodCgpKTsKLSAgICAgICAgbV9kYXRhLT5tX2hCYXItPnNldEZyYW1lR2VvbWV0
cnkoaEJhclJlY3QpOwotICAgICAgICBpZiAoIW1fZGF0YS0+bV9zY3JvbGxiYXJzU3VwcHJlc3Nl
ZCAmJiBvbGRSZWN0ICE9IG1fZGF0YS0+bV9oQmFyLT5mcmFtZUdlb21ldHJ5KCkpCi0gICAgICAg
ICAgICBtX2RhdGEtPm1faEJhci0+aW52YWxpZGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCkgLSAobV92ZXJ0aWNh
bFNjcm9sbGJhciA/IG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCkgOiBzY3JvbGxiYXJPZmZz
ZXQueCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5oZWlnaHQoKSk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0
RnJhbWVHZW9tZXRyeShoQmFyUmVjdCk7CisgICAgICAgIGlmICghbV9kYXRhLT5tX3Njcm9sbGJh
cnNTdXBwcmVzc2VkICYmIG9sZFJlY3QgIT0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5mcmFtZUdl
b21ldHJ5KCkpCisgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmludmFsaWRhdGUo
KTsKIAogICAgICAgICBpZiAobV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQotICAgICAg
ICAgICAgbV9kYXRhLT5tX2hCYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKHRydWUpOwotICAg
ICAgICBtX2RhdGEtPm1faEJhci0+c2V0U3RlcHMoTElORV9TVEVQLCBwYWdlU3RlcCk7Ci0gICAg
ICAgIG1fZGF0YS0+bV9oQmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dp
ZHRoKCkpOwotICAgICAgICBtX2RhdGEtPm1faEJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCkp
OworICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRh
dGlvbih0cnVlKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdGVwcyhMSU5F
X1NURVAsIHBhZ2VTdGVwKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRQcm9w
b3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOworICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXItPnNldFZhbHVlKHNjcm9sbC53aWR0aCgpKTsKICAgICAgICAgaWYgKG1fZGF0
YS0+bV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKLSAgICAgICAgICAgIG1fZGF0YS0+bV9oQmFyLT5z
ZXRTdXBwcmVzc0ludmFsaWRhdGlvbihmYWxzZSk7IAorICAgICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbihmYWxzZSk7IAogICAgIH0gCiAKLSAg
ICBpZiAobV9kYXRhLT5tX3ZCYXIpIHsKKyAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhcikgewog
ICAgICAgICBpbnQgY2xpZW50SGVpZ2h0ID0gdmlzaWJsZUhlaWdodCgpOwotICAgICAgICBtX2Rh
dGEtPm1fdkJhci0+c2V0RW5hYmxlZChjb250ZW50c0hlaWdodCgpID4gY2xpZW50SGVpZ2h0KTsK
KyAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c0hlaWdodCgp
ID4gY2xpZW50SGVpZ2h0KTsKICAgICAgICAgaW50IHBhZ2VTdGVwID0gKGNsaWVudEhlaWdodCAt
IFBBR0VfS0VFUCk7CiAgICAgICAgIGlmIChwYWdlU3RlcCA8IDApIHBhZ2VTdGVwID0gY2xpZW50
SGVpZ2h0OwotICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9kYXRhLT5tX3ZCYXItPmZyYW1lR2Vv
bWV0cnkoKSk7Ci0gICAgICAgIEludFJlY3QgdkJhclJlY3QgPSBJbnRSZWN0KHdpZHRoKCkgLSBt
X2RhdGEtPm1fdkJhci0+d2lkdGgoKSwgCisgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX3ZlcnRp
Y2FsU2Nyb2xsYmFyLT5mcmFtZUdlb21ldHJ5KCkpOworICAgICAgICBJbnRSZWN0IHZCYXJSZWN0
ID0gSW50UmVjdCh3aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fZGF0YS0+bV92QmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIChtX2RhdGEtPm1faEJhciA/IG1fZGF0YS0+bV9o
QmFyLT5oZWlnaHQoKSA6IHNjcm9sbGJhck9mZnNldC55KCkpKTsKLSAgICAgICAgbV9kYXRhLT5t
X3ZCYXItPnNldEZyYW1lR2VvbWV0cnkodkJhclJlY3QpOwotICAgICAgICBpZiAoIW1fZGF0YS0+
bV9zY3JvbGxiYXJzU3VwcHJlc3NlZCAmJiBvbGRSZWN0ICE9IG1fZGF0YS0+bV92QmFyLT5mcmFt
ZUdlb21ldHJ5KCkpCi0gICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+aW52YWxpZGF0ZSgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53
aWR0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtICht
X2hvcml6b250YWxTY3JvbGxiYXIgPyBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpIDog
c2Nyb2xsYmFyT2Zmc2V0LnkoKSkpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRG
cmFtZUdlb21ldHJ5KHZCYXJSZWN0KTsKKyAgICAgICAgaWYgKCFtX2RhdGEtPm1fc2Nyb2xsYmFy
c1N1cHByZXNzZWQgJiYgb2xkUmVjdCAhPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFtZUdlb21l
dHJ5KCkpCisgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CiAK
ICAgICAgICAgaWYgKG1fZGF0YS0+bV9zY3JvbGxiYXJzU3VwcHJlc3NlZCkKLSAgICAgICAgICAg
IG1fZGF0YS0+bV92QmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKLSAgICAgICAg
bV9kYXRhLT5tX3ZCYXItPnNldFN0ZXBzKExJTkVfU1RFUCwgcGFnZVN0ZXApOwotICAgICAgICBt
X2RhdGEtPm1fdkJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRlbnRzSGVpZ2h0
KCkpOwotICAgICAgICBtX2RhdGEtPm1fdkJhci0+c2V0VmFsdWUoc2Nyb2xsLmhlaWdodCgpKTsK
KyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9u
KHRydWUpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRTdGVwcyhMSU5FX1NURVAs
IHBhZ2VTdGVwKTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihj
bGllbnRIZWlnaHQsIGNvbnRlbnRzSGVpZ2h0KCkpOworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xs
YmFyLT5zZXRWYWx1ZShzY3JvbGwuaGVpZ2h0KCkpOwogICAgICAgICBpZiAobV9kYXRhLT5tX3Nj
cm9sbGJhcnNTdXBwcmVzc2VkKQotICAgICAgICAgICAgbV9kYXRhLT5tX3ZCYXItPnNldFN1cHBy
ZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIt
PnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsKICAgICB9CiAKLSAgICBpZiAob2xkSGFz
VmVydGljYWwgIT0gKG1fZGF0YS0+bV92QmFyICE9IDApIHx8IG9sZEhhc0hvcml6b250YWwgIT0g
KG1fZGF0YS0+bV9oQmFyICE9IDApKQorICAgIGlmIChvbGRIYXNWZXJ0aWNhbCAhPSAobV92ZXJ0
aWNhbFNjcm9sbGJhciAhPSAwKSB8fCBvbGRIYXNIb3Jpem9udGFsICE9IChtX2hvcml6b250YWxT
Y3JvbGxiYXIgIT0gMCkpCiAgICAgICAgIGdlb21ldHJ5Q2hhbmdlZCgpOwogCiAgICAgLy8gU2Vl
IGlmIG91ciBvZmZzZXQgaGFzIGNoYW5nZWQgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgbWlnaHQg
bm90IGhhdmUgc2Nyb2xsYmFycy4KQEAgLTUwOSwxMCArNDYwLDEwIEBAIHZvaWQgU2Nyb2xsVmll
dzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKIFNjcm9sbGJhciogU2Nyb2xsVmlldzo6c2Nyb2xs
YmFyVW5kZXJNb3VzZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiB7CiAg
ICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29udmVydEZyb21Db250YWluaW5nV2luZG93KG1vdXNl
RXZlbnQucG9zKCkpOwotICAgIGlmIChtX2RhdGEtPm1faEJhciAmJiBtX2RhdGEtPm1faEJhci0+
ZnJhbWVHZW9tZXRyeSgpLmNvbnRhaW5zKHZpZXdQb2ludCkpCi0gICAgICAgIHJldHVybiBtX2Rh
dGEtPm1faEJhci5nZXQoKTsKLSAgICBpZiAobV9kYXRhLT5tX3ZCYXIgJiYgbV9kYXRhLT5tX3ZC
YXItPmZyYW1lR2VvbWV0cnkoKS5jb250YWlucyh2aWV3UG9pbnQpKQotICAgICAgICByZXR1cm4g
bV9kYXRhLT5tX3ZCYXIuZ2V0KCk7CisgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhciAmJiBt
X2hvcml6b250YWxTY3JvbGxiYXItPmZyYW1lR2VvbWV0cnkoKS5jb250YWlucyh2aWV3UG9pbnQp
KQorICAgICAgICByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpOworICAgIGlmICht
X3ZlcnRpY2FsU2Nyb2xsYmFyICYmIG1fdmVydGljYWxTY3JvbGxiYXItPmZyYW1lR2VvbWV0cnko
KS5jb250YWlucyh2aWV3UG9pbnQpKQorICAgICAgICByZXR1cm4gbV92ZXJ0aWNhbFNjcm9sbGJh
ci5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTY3LDMzICs1MTgsMzMgQEAgdm9pZCBT
Y3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIAogICAgIGNvbnRleHQtPnJlc3RvcmUo
KTsKIAogICAgIC8vIE5vdyBwYWludCB0aGUgc2Nyb2xsYmFycy4KLSAgICBpZiAoIW1fZGF0YS0+
bV9zY3JvbGxiYXJzU3VwcHJlc3NlZCAmJiAobV9kYXRhLT5tX2hCYXIgfHwgbV9kYXRhLT5tX3ZC
YXIpKSB7CisgICAgaWYgKCFtX2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQgJiYgKG1faG9y
aXpvbnRhbFNjcm9sbGJhciB8fCBtX3ZlcnRpY2FsU2Nyb2xsYmFyKSkgewogICAgICAgICBjb250
ZXh0LT5zYXZlKCk7CiAgICAgICAgIEludFJlY3Qgc2Nyb2xsVmlld0RpcnR5UmVjdCA9IHJlY3Q7
CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QuaW50ZXJzZWN0KGZyYW1lR2VvbWV0cnkoKSk7
CiAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh4KCksIHkoKSk7CiAgICAgICAgIHNjcm9sbFZp
ZXdEaXJ0eVJlY3QubW92ZSgteCgpLCAteSgpKTsKLSAgICAgICAgaWYgKG1fZGF0YS0+bV9oQmFy
KQotICAgICAgICAgICAgbV9kYXRhLT5tX2hCYXItPnBhaW50KGNvbnRleHQsIHNjcm9sbFZpZXdE
aXJ0eVJlY3QpOwotICAgICAgICBpZiAobV9kYXRhLT5tX3ZCYXIpCi0gICAgICAgICAgICBtX2Rh
dGEtPm1fdkJhci0+cGFpbnQoY29udGV4dCwgc2Nyb2xsVmlld0RpcnR5UmVjdCk7CisgICAgICAg
IGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXItPnBhaW50KGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOworICAgICAgICBpZiAo
bV92ZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnBh
aW50KGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogCiAgICAgICAgIC8vIEZpbGwgdGhl
IHNjcm9sbCBjb3JuZXJzIHVzaW5nIHRoZSBjdXJyZW50IFF0IHN0eWxlCiAgICAgICAgIEludFJl
Y3QgaENvcm5lcjsKLSAgICAgICAgaWYgKG1fZGF0YS0+bV9oQmFyICYmIHdpZHRoKCkgLSBtX2Rh
dGEtPm1faEJhci0+d2lkdGgoKSA+IDApIHsKLSAgICAgICAgICAgIGhDb3JuZXIgPSBJbnRSZWN0
KG1fZGF0YS0+bV9oQmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVpZ2h0KCkgLSBtX2RhdGEtPm1faEJhci0+aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aCgpIC0gbV9kYXRhLT5tX2hCYXItPndpZHRoKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2RhdGEtPm1faEJhci0+aGVpZ2h0KCkpOworICAgICAgICBp
ZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICYmIHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxi
YXItPndpZHRoKCkgPiAwKSB7CisgICAgICAgICAgICBoQ29ybmVyID0gSW50UmVjdChtX2hvcml6
b250YWxTY3JvbGxiYXItPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWlnaHQoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5o
ZWlnaHQoKSk7CiAgICAgICAgICAgICBpZiAoaENvcm5lci5pbnRlcnNlY3RzKHNjcm9sbFZpZXdE
aXJ0eVJlY3QpKQogICAgICAgICAgICAgICAgIGRyYXdTY3JvbGxiYXJDb3JuZXIoY29udGV4dCwg
aENvcm5lcik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9kYXRhLT5tX3ZCYXIgJiYgaGVp
Z2h0KCkgLSBtX2RhdGEtPm1fdkJhci0+aGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgICAgICBJbnRS
ZWN0IHZDb3JuZXIod2lkdGgoKSAtIG1fZGF0YS0+bV92QmFyLT53aWR0aCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fZGF0YS0+bV92QmFyLT5oZWlnaHQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1fZGF0YS0+bV92QmFyLT5oZWlnaHQoKSk7CisgICAg
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhlaWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9s
bGJhci0+aGVpZ2h0KCkgPiAwKSB7CisgICAgICAgICAgICBJbnRSZWN0IHZDb3JuZXIod2lkdGgo
KSAtIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpKTsKICAg
ICAgICAgICAgIGlmICh2Q29ybmVyICE9IGhDb3JuZXIgJiYgdkNvcm5lci5pbnRlcnNlY3RzKHNj
cm9sbFZpZXdEaXJ0eVJlY3QpKQogICAgICAgICAgICAgICAgIGRyYXdTY3JvbGxiYXJDb3JuZXIo
Y29udGV4dCwgdkNvcm5lcik7CiAgICAgICAgIH0KQEAgLTYzNCwxMSArNTg1LDExIEBAIHZvaWQg
U2Nyb2xsVmlldzo6d2hlZWxFdmVudChQbGF0Zm9ybVdoZWUKIGJvb2wgU2Nyb2xsVmlldzo6c2Ny
b2xsKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5KQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gU2Nyb2xsVXAgfHwgZGlyZWN0aW9uID09IFNj
cm9sbERvd24pIHsKLSAgICAgICAgaWYgKG1fZGF0YS0+bV92QmFyKQotICAgICAgICAgICAgcmV0
dXJuIG1fZGF0YS0+bV92QmFyLT5zY3JvbGwoZGlyZWN0aW9uLCBncmFudWxhcml0eSk7CisgICAg
ICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyKQorICAgICAgICAgICAgcmV0dXJuIG1fdmVydGlj
YWxTY3JvbGxiYXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBpZiAobV9kYXRhLT5tX2hCYXIpCi0gICAgICAgICAgICByZXR1cm4gbV9kYXRh
LT5tX2hCYXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAgICAgICAgaWYgKG1f
aG9yaXpvbnRhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIHJldHVybiBtX2hvcml6b250YWxTY3Jv
bGxiYXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKICAgICB9CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAJKHJl
dmlzaW9uIDM2OTYwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsVmlld1dpbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDggKzY5LDYgQEAgcHVibGljOgogICAgICAgICAsIG1fc2Ny
b2xsYmFyc1N1cHByZXNzZWQoZmFsc2UpCiAgICAgICAgICwgbV9pblVwZGF0ZVNjcm9sbGJhcnMo
ZmFsc2UpCiAgICAgICAgICwgbV9zY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyKDApCi0gICAgICAg
ICwgbV92U2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJBdXRvKQotICAgICAgICAsIG1faFNjcm9sbGJh
ck1vZGUoU2Nyb2xsYmFyQXV0bykKICAgICAgICAgLCBtX3BhblNjcm9sbEljb25Qb2ludCgwLDAp
CiAgICAgICAgICwgbV9kcmF3UGFuU2Nyb2xsSWNvbihmYWxzZSkKICAgICB7CkBAIC05OCwxMCAr
OTYsNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX3Njcm9sbGJhcnNTdXBwcmVzc2VkOwogICAgIGJv
b2wgbV9pblVwZGF0ZVNjcm9sbGJhcnM7CiAgICAgaW50IG1fc2Nyb2xsYmFyc0F2b2lkaW5nUmVz
aXplcjsKLSAgICBTY3JvbGxiYXJNb2RlIG1fdlNjcm9sbGJhck1vZGU7Ci0gICAgU2Nyb2xsYmFy
TW9kZSBtX2hTY3JvbGxiYXJNb2RlOwotICAgIFJlZlB0cjxTY3JvbGxiYXI+IG1fdkJhcjsKLSAg
ICBSZWZQdHI8U2Nyb2xsYmFyPiBtX2hCYXI7CiAgICAgSFJHTiBtX2RpcnR5UmVnaW9uOwogICAg
IEludFBvaW50IG1fcGFuU2Nyb2xsSWNvblBvaW50OwogICAgIGJvb2wgbV9kcmF3UGFuU2Nyb2xs
SWNvbjsKQEAgLTExMSwyMyArMTA1LDIzIEBAIGNvbnN0IGludCBwYW5JY29uU2l6ZUxlbmd0aCA9
IDIwOwogCiB2b2lkIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlOjpzZXRIYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQogewotICAgIGlmIChoYXNCYXIgJiYgIW1faEJhcikg
ewotICAgICAgICBtX2hCYXIgPSBTY3JvbGxiYXI6OmNyZWF0ZU5hdGl2ZVNjcm9sbGJhcih0aGlz
LCBIb3Jpem9udGFsU2Nyb2xsYmFyLCBSZWd1bGFyU2Nyb2xsYmFyKTsKLSAgICAgICAgbV92aWV3
LT5hZGRDaGlsZChtX2hCYXIuZ2V0KCkpOwotICAgIH0gZWxzZSBpZiAoIWhhc0JhciAmJiBtX2hC
YXIpIHsKLSAgICAgICAgbV92aWV3LT5yZW1vdmVDaGlsZChtX2hCYXIuZ2V0KCkpOwotICAgICAg
ICBtX2hCYXIgPSAwOworICAgIGlmIChoYXNCYXIgJiYgIW1fdmlldy0+bV9ob3Jpem9udGFsU2Ny
b2xsYmFyKSB7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhciA9IFNjcm9sbGJhcjo6Y3Jl
YXRlTmF0aXZlU2Nyb2xsYmFyKHRoaXMsIEhvcml6b250YWxTY3JvbGxiYXIsIFJlZ3VsYXJTY3Jv
bGxiYXIpOworICAgICAgICBtX3ZpZXctPmFkZENoaWxkKG1fdmlldy0+bV9ob3Jpem9udGFsU2Ny
b2xsYmFyLmdldCgpKTsKKyAgICB9IGVsc2UgaWYgKCFoYXNCYXIgJiYgbV92aWV3LT5tX2hvcml6
b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAgbV92aWV3LT5yZW1vdmVDaGlsZChtX3ZpZXctPm1f
aG9yaXpvbnRhbFNjcm9sbGJhci5nZXQoKSk7CisgICAgICAgIG1fdmlldy0+bV9ob3Jpem9udGFs
U2Nyb2xsYmFyID0gMDsKICAgICB9CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6U2Nyb2xsVmlld1By
aXZhdGU6OnNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wgaGFzQmFyKQogewotICAgIGlmICho
YXNCYXIgJiYgIW1fdkJhcikgewotICAgICAgICBtX3ZCYXIgPSBTY3JvbGxiYXI6OmNyZWF0ZU5h
dGl2ZVNjcm9sbGJhcih0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwgUmVndWxhclNjcm9sbGJhcik7
Ci0gICAgICAgIG1fdmlldy0+YWRkQ2hpbGQobV92QmFyLmdldCgpKTsKLSAgICB9IGVsc2UgaWYg
KCFoYXNCYXIgJiYgbV92QmFyKSB7Ci0gICAgICAgIG1fdmlldy0+cmVtb3ZlQ2hpbGQobV92QmFy
LmdldCgpKTsKLSAgICAgICAgbV92QmFyID0gMDsKKyAgICBpZiAoaGFzQmFyICYmICFtX3ZpZXct
Pm1fdmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgbV92aWV3LT5tX3ZlcnRpY2FsU2Nyb2xs
YmFyID0gU2Nyb2xsYmFyOjpjcmVhdGVOYXRpdmVTY3JvbGxiYXIodGhpcywgVmVydGljYWxTY3Jv
bGxiYXIsIFJlZ3VsYXJTY3JvbGxiYXIpOworICAgICAgICBtX3ZpZXctPmFkZENoaWxkKG1fdmVy
dGljYWxTY3JvbGxiYXIuZ2V0KCkpOworICAgIH0gZWxzZSBpZiAoIWhhc0JhciAmJiBtX3ZpZXct
Pm1fdmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgbV92aWV3LT5yZW1vdmVDaGlsZChtX3Zp
ZXctPm1fdmVydGljYWxTY3JvbGxiYXIuZ2V0KCkpOworICAgICAgICBtX3ZpZXctPm1fdmVydGlj
YWxTY3JvbGxiYXIgPSAwOwogICAgIH0KIH0KIApAQCAtMTM2LDkgKzEzMCw5IEBAIHZvaWQgU2Ny
b2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OnZhbHUKICAgICAvLyBGaWd1cmUgb3V0IGlmIHdl
IHJlYWxseSBtb3ZlZC4KICAgICBJbnRTaXplIG5ld09mZnNldCA9IG1fdmlldy0+bV9zY3JvbGxP
ZmZzZXQ7CiAgICAgaWYgKGJhcikgewotICAgICAgICBpZiAoYmFyID09IG1faEJhcikKKyAgICAg
ICAgaWYgKGJhciA9PSBtX3ZpZXctPm1faG9yaXpvbnRhbFNjcm9sbGJhcikKICAgICAgICAgICAg
IG5ld09mZnNldC5zZXRXaWR0aChiYXItPnZhbHVlKCkpOwotICAgICAgICBlbHNlIGlmIChiYXIg
PT0gbV92QmFyKQorICAgICAgICBlbHNlIGlmIChiYXIgPT0gbV92aWV3LT5tX3ZlcnRpY2FsU2Ny
b2xsYmFyKQogICAgICAgICAgICAgbmV3T2Zmc2V0LnNldEhlaWdodChiYXItPnZhbHVlKCkpOwog
ICAgIH0KICAgICBJbnRTaXplIHNjcm9sbERlbHRhID0gbmV3T2Zmc2V0IC0gbV92aWV3LT5tX3Nj
cm9sbE9mZnNldDsKQEAgLTE5MywxNSArMTg3LDE1IEBAIHZvaWQgU2Nyb2xsVmlldzo6U2Nyb2xs
Vmlld1ByaXZhdGU6OnNjcm8KIAogdm9pZCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0ZTo6
c2V0QWxsb3dzU2Nyb2xsaW5nKGJvb2wgZmxhZykKIHsKLSAgICBpZiAoZmxhZyAmJiBtX3ZTY3Jv
bGxiYXJNb2RlID09IFNjcm9sbGJhckFsd2F5c09mZikKLSAgICAgICAgbV92U2Nyb2xsYmFyTW9k
ZSA9IFNjcm9sbGJhckF1dG87CisgICAgaWYgKGZsYWcgJiYgbV92aWV3LT5tX3ZlcnRpY2FsU2Ny
b2xsYmFyTW9kZSA9PSBTY3JvbGxiYXJBbHdheXNPZmYpCisgICAgICAgIG1fdmlldy0+bV92ZXJ0
aWNhbFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvOwogICAgIGVsc2UgaWYgKCFmbGFnKQot
ICAgICAgICBtX3ZTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOworICAgICAgICBt
X3ZpZXctPm1fdmVydGljYWxTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwogCi0g
ICAgaWYgKGZsYWcgJiYgbV9oU2Nyb2xsYmFyTW9kZSA9PSBTY3JvbGxiYXJBbHdheXNPZmYpCi0g
ICAgICAgIG1faFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvOworICAgIGlmIChmbGFnICYm
IG1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgPT0gU2Nyb2xsYmFyQWx3YXlzT2ZmKQorICAgICAg
ICBtX3ZpZXctPm1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgPSBTY3JvbGxiYXJBdXRvOwogICAg
IGVsc2UgaWYgKCFmbGFnKQotICAgICAgICBtX2hTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQWx3
YXlzT2ZmOworICAgICAgICBtX3ZpZXctPm1faG9yaXpvbnRhbFNjcm9sbGJhck1vZGUgPSBTY3Jv
bGxiYXJBbHdheXNPZmY7CiAKICAgICBtX3ZpZXctPnVwZGF0ZVNjcm9sbGJhcnMobV92aWV3LT5t
X3Njcm9sbE9mZnNldCk7CiB9CkBAIC0yMDksNyArMjAzLDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpT
Y3JvbGxWaWV3UHJpdmF0ZTo6c2V0QQogYm9vbCBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3UHJpdmF0
ZTo6YWxsb3dzU2Nyb2xsaW5nKCkgY29uc3QKIHsKICAgICAvLyBSZXR1cm4gWUVTIGlmIGVpdGhl
ciBob3Jpem9udGFsIG9yIHZlcnRpY2FsIHNjcm9sbGluZyBpcyBhbGxvd2VkLgotICAgIHJldHVy
biBtX2hTY3JvbGxiYXJNb2RlICE9IFNjcm9sbGJhckFsd2F5c09mZiB8fCBtX3ZTY3JvbGxiYXJN
b2RlICE9IFNjcm9sbGJhckFsd2F5c09mZjsKKyAgICByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xs
YmFyTW9kZSAhPSBTY3JvbGxiYXJBbHdheXNPZmYgfHwgbV92ZXJ0aWNhbFNjcm9sbGJhck1vZGUg
IT0gU2Nyb2xsYmFyQWx3YXlzT2ZmOwogfQogCiBJbnRSZWN0IFNjcm9sbFZpZXc6OlNjcm9sbFZp
ZXdQcml2YXRlOjp3aW5kb3dDbGlwUmVjdCgpIGNvbnN0CkBAIC0yNDIsMTYgKzIzNiw2IEBAIHZv
aWQgU2Nyb2xsVmlldzo6cGxhdGZvcm1SZW1vdmVDaGlsZChXaWQKIHsKIH0KIAotU2Nyb2xsYmFy
KiBTY3JvbGxWaWV3Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9kYXRhLT5tX2hCYXIuZ2V0KCk7Ci19Ci0KLVNjcm9sbGJhciogU2Nyb2xsVmlldzo6dmVydGlj
YWxTY3JvbGxiYXIoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEtPm1fdkJhci5nZXQoKTsK
LX0KLQogdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVDb250ZW50cyhjb25zdCBJbnRSZWN0JiByZWN0
LCBib29sIG5vdykKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCkBAIC0zMjIsODEgKzMwNiwz
NiBAQCBJbnRQb2ludCBTY3JvbGxWaWV3Ojpjb250ZW50c1RvV2luZG93KGNvCiAgICAgcmV0dXJu
IGNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3codmlld1BvaW50KTsgIAogfQogCi1ib29sIFNjcm9s
bFZpZXc6OmlzU2Nyb2xsVmlld1Njcm9sbGJhcihjb25zdCBXaWRnZXQqIGNoaWxkKSBjb25zdAot
ewotICAgIHJldHVybiBtX2RhdGEtPm1faEJhciA9PSBjaGlsZCB8fCBtX2RhdGEtPm1fdkJhciA9
PSBjaGlsZDsKLX0KLQotV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSBTY3JvbGxWaWV3OjpoU2Nyb2xs
YmFyTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS0+bV9oU2Nyb2xsYmFyTW9kZTsK
LX0KLQotV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSBTY3JvbGxWaWV3Ojp2U2Nyb2xsYmFyTW9kZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS0+bV92U2Nyb2xsYmFyTW9kZTsKLX0KLQotYm9v
bCBTY3JvbGxWaWV3Ojppc1Njcm9sbGFibGUoKSAKLXsgCi0gICAgcmV0dXJuIG1fZGF0YS0+bV92
QmFyICE9IDAgfHwgbV9kYXRhLT5tX2hCYXIgIT0gMDsKLX0KLQogdm9pZCBTY3JvbGxWaWV3Ojpz
dXBwcmVzc1Njcm9sbGJhcnMoYm9vbCBzdXBwcmVzc2VkLCBib29sIHJlcGFpbnRPblN1cHByZXNz
KQogewogICAgIG1fZGF0YS0+bV9zY3JvbGxiYXJzU3VwcHJlc3NlZCA9IHN1cHByZXNzZWQ7CiAg
ICAgaWYgKHJlcGFpbnRPblN1cHByZXNzICYmICFzdXBwcmVzc2VkKSB7Ci0gICAgICAgIGlmICht
X2RhdGEtPm1faEJhcikKLSAgICAgICAgICAgIG1fZGF0YS0+bV9oQmFyLT5pbnZhbGlkYXRlKCk7
Ci0gICAgICAgIGlmIChtX2RhdGEtPm1fdkJhcikKLSAgICAgICAgICAgIG1fZGF0YS0+bV92QmFy
LT5pbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCisgICAg
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgaWYg
KG1fdmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5p
bnZhbGlkYXRlKCk7CiAKICAgICAgICAgLy8gSW52YWxpZGF0ZSB0aGUgc2Nyb2xsIGNvcm5lciB0
b28gb24gdW5zdXBwcmVzcy4KICAgICAgICAgSW50UmVjdCBoQ29ybmVyOwotICAgICAgICBpZiAo
bV9kYXRhLT5tX2hCYXIgJiYgd2lkdGgoKSAtIG1fZGF0YS0+bV9oQmFyLT53aWR0aCgpID4gMCkg
ewotICAgICAgICAgICAgaENvcm5lciA9IEludFJlY3QobV9kYXRhLT5tX2hCYXItPndpZHRoKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1fZGF0YS0+bV9oQmFy
LT5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBtX2Rh
dGEtPm1faEJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0
YS0+bV9oQmFyLT5oZWlnaHQoKSk7CisgICAgICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIg
JiYgd2lkdGgoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSA+IDApIHsKKyAgICAg
ICAgICAgIGhDb3JuZXIgPSBJbnRSZWN0KG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9udGFsU2Ny
b2xsYmFyLT5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoKCkg
LSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpKTsKICAgICAgICAgICAgIGlu
dmFsaWRhdGVSZWN0KGhDb3JuZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fZGF0YS0+
bV92QmFyICYmIGhlaWdodCgpIC0gbV9kYXRhLT5tX3ZCYXItPmhlaWdodCgpID4gMCkgewotICAg
ICAgICAgICAgSW50UmVjdCB2Q29ybmVyKHdpZHRoKCkgLSBtX2RhdGEtPm1fdkJhci0+d2lkdGgo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+aGVpZ2h0KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9kYXRhLT5tX3ZCYXItPndpZHRoKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX2RhdGEtPm1fdkJhci0+aGVp
Z2h0KCkpOworICAgICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiBoZWlnaHQoKSAtIG1f
dmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpID4gMCkgeworICAgICAgICAgICAgSW50UmVjdCB2
Q29ybmVyKHdpZHRoKCkgLSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5o
ZWlnaHQoKSk7CiAgICAgICAgICAgICBpZiAodkNvcm5lciAhPSBoQ29ybmVyKQogICAgICAgICAg
ICAgICAgIGludmFsaWRhdGVSZWN0KHZDb3JuZXIpOwogICAgICAgICB9CiAgICAgfQogfQogCi12
b2lkIFNjcm9sbFZpZXc6OnNldEhTY3JvbGxiYXJNb2RlKFNjcm9sbGJhck1vZGUgbmV3TW9kZSkK
LXsKLSAgICBpZiAobV9kYXRhLT5tX2hTY3JvbGxiYXJNb2RlICE9IG5ld01vZGUpIHsKLSAgICAg
ICAgbV9kYXRhLT5tX2hTY3JvbGxiYXJNb2RlID0gbmV3TW9kZTsKLSAgICAgICAgdXBkYXRlU2Ny
b2xsYmFycyhtX3Njcm9sbE9mZnNldCk7Ci0gICAgfQotfQotCi12b2lkIFNjcm9sbFZpZXc6OnNl
dFZTY3JvbGxiYXJNb2RlKFNjcm9sbGJhck1vZGUgbmV3TW9kZSkKLXsKLSAgICBpZiAobV9kYXRh
LT5tX3ZTY3JvbGxiYXJNb2RlICE9IG5ld01vZGUpIHsKLSAgICAgICAgbV9kYXRhLT5tX3ZTY3Jv
bGxiYXJNb2RlID0gbmV3TW9kZTsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9m
ZnNldCk7Ci0gICAgfQotfQotCi12b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbGJhcnNNb2RlKFNj
cm9sbGJhck1vZGUgbmV3TW9kZSkKLXsKLSAgICBpZiAobV9kYXRhLT5tX2hTY3JvbGxiYXJNb2Rl
ICE9IG5ld01vZGUgfHwKLSAgICAgICAgbV9kYXRhLT5tX3ZTY3JvbGxiYXJNb2RlICE9IG5ld01v
ZGUpIHsKLSAgICAgICAgbV9kYXRhLT5tX2hTY3JvbGxiYXJNb2RlID0gbV9kYXRhLT5tX3ZTY3Jv
bGxiYXJNb2RlID0gbmV3TW9kZTsKLSAgICAgICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9m
ZnNldCk7Ci0gICAgfQotfQotCiB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29u
c3QgSW50U2l6ZSYgZGVzaXJlZE9mZnNldCkKIHsKICAgICAvLyBEb24ndCBhbGxvdyByZS1lbnRy
YW5jeSBpbnRvIHRoaXMgZnVuY3Rpb24uCkBAIC00MTAsMTIgKzM0OSwxMiBAQCB2b2lkIFNjcm9s
bFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAKICAgICBtX2RhdGEtPm1faW5VcGRhdGVT
Y3JvbGxiYXJzID0gdHJ1ZTsKIAotICAgIGJvb2wgaGFzVmVydGljYWxTY3JvbGxiYXIgPSBtX2Rh
dGEtPm1fdkJhcjsKLSAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBtX2RhdGEtPm1f
aEJhcjsKKyAgICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyID0gbV92ZXJ0aWNhbFNjcm9sbGJh
cjsKKyAgICBib29sIGhhc0hvcml6b250YWxTY3JvbGxiYXIgPSBtX2hvcml6b250YWxTY3JvbGxi
YXI7CiAgICAgYm9vbCBvbGRIYXNWZXJ0aWNhbCA9IGhhc1ZlcnRpY2FsU2Nyb2xsYmFyOwogICAg
IGJvb2wgb2xkSGFzSG9yaXpvbnRhbCA9IGhhc0hvcml6b250YWxTY3JvbGxiYXI7Ci0gICAgU2Ny
b2xsYmFyTW9kZSBoU2Nyb2xsID0gbV9kYXRhLT5tX2hTY3JvbGxiYXJNb2RlOwotICAgIFNjcm9s
bGJhck1vZGUgdlNjcm9sbCA9IG1fZGF0YS0+bV92U2Nyb2xsYmFyTW9kZTsKKyAgICBTY3JvbGxi
YXJNb2RlIGhTY3JvbGwgPSBtX2hvcml6b250YWxTY3JvbGxiYXJNb2RlOworICAgIFNjcm9sbGJh
ck1vZGUgdlNjcm9sbCA9IG1fdmVydGljYWxTY3JvbGxiYXJNb2RlOwogCiAgICAgY29uc3QgaW50
IHNjcm9sbGJhclRoaWNrbmVzcyA9IFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpLT5zY3Jv
bGxiYXJUaGlja25lc3MoKTsKIApAQCAtNDU4LDUzICszOTcsNTMgQEAgdm9pZCBTY3JvbGxWaWV3
Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgIEludFNpemUgc2Nyb2xsID0gZGVzaXJlZE9m
ZnNldC5zaHJ1bmtUbyhtYXhTY3JvbGxQb3NpdGlvbik7CiAgICAgc2Nyb2xsLmNsYW1wTmVnYXRp
dmVUb1plcm8oKTsKICAKLSAgICBpZiAobV9kYXRhLT5tX2hCYXIpIHsKKyAgICBpZiAobV9ob3Jp
em9udGFsU2Nyb2xsYmFyKSB7CiAgICAgICAgIGludCBjbGllbnRXaWR0aCA9IHZpc2libGVXaWR0
aCgpOwotICAgICAgICBtX2RhdGEtPm1faEJhci0+c2V0RW5hYmxlZChjb250ZW50c1dpZHRoKCkg
PiBjbGllbnRXaWR0aCk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0RW5hYmxl
ZChjb250ZW50c1dpZHRoKCkgPiBjbGllbnRXaWR0aCk7CiAgICAgICAgIGludCBwYWdlU3RlcCA9
IChjbGllbnRXaWR0aCAtIFBBR0VfS0VFUCk7CiAgICAgICAgIGlmIChwYWdlU3RlcCA8IDApIHBh
Z2VTdGVwID0gY2xpZW50V2lkdGg7Ci0gICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2RhdGEtPm1f
aEJhci0+ZnJhbWVHZW9tZXRyeSgpKTsKKyAgICAgICAgSW50UmVjdCBvbGRSZWN0KG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+ZnJhbWVHZW9tZXRyeSgpKTsKICAgICAgICAgSW50UmVjdCBoQmFyUmVj
dCA9IEludFJlY3QoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0
KCkgLSBtX2RhdGEtPm1faEJhci0+aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHdpZHRoKCkgLSAobV9kYXRhLT5tX3ZCYXIgPyBtX2RhdGEtPm1fdkJhci0+d2lk
dGgoKSA6IDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RhdGEtPm1f
aEJhci0+aGVpZ2h0KCkpOwotICAgICAgICBtX2RhdGEtPm1faEJhci0+c2V0RnJhbWVHZW9tZXRy
eShoQmFyUmVjdCk7Ci0gICAgICAgIGlmICghbV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2Vk
ICYmIG9sZFJlY3QgIT0gbV9kYXRhLT5tX2hCYXItPmZyYW1lR2VvbWV0cnkoKSkKLSAgICAgICAg
ICAgIG1fZGF0YS0+bV9oQmFyLT5pbnZhbGlkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSAtIChtX3ZlcnRpY2Fs
U2Nyb2xsYmFyID8gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSA6IDApLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgp
KTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRGcmFtZUdlb21ldHJ5KGhCYXJS
ZWN0KTsKKyAgICAgICAgaWYgKCFtX2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQgJiYgb2xk
UmVjdCAhPSBtX2hvcml6b250YWxTY3JvbGxiYXItPmZyYW1lR2VvbWV0cnkoKSkKKyAgICAgICAg
ICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aW52YWxpZGF0ZSgpOwogCiAgICAgICAgIGlmICht
X2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCi0gICAgICAgICAgICBtX2RhdGEtPm1faEJh
ci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7Ci0gICAgICAgIG1fZGF0YS0+bV9oQmFy
LT5zZXRTdGVwcyhMSU5FX1NURVBfV0lOLCBwYWdlU3RlcCk7Ci0gICAgICAgIG1fZGF0YS0+bV9o
QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudFdpZHRoLCBjb250ZW50c1dpZHRoKCkpOwotICAgICAg
ICBtX2RhdGEtPm1faEJhci0+c2V0VmFsdWUoc2Nyb2xsLndpZHRoKCkpOworICAgICAgICAgICAg
bV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdXBwcmVzc0ludmFsaWRhdGlvbih0cnVlKTsKKyAg
ICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRTdGVwcyhMSU5FX1NURVBfV0lOLCBwYWdl
U3RlcCk7CisgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+c2V0UHJvcG9ydGlvbihjbGll
bnRXaWR0aCwgY29udGVudHNXaWR0aCgpKTsKKyAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFy
LT5zZXRWYWx1ZShzY3JvbGwud2lkdGgoKSk7CiAgICAgICAgIGlmIChtX2RhdGEtPm1fc2Nyb2xs
YmFyc1N1cHByZXNzZWQpCi0gICAgICAgICAgICBtX2RhdGEtPm1faEJhci0+c2V0U3VwcHJlc3NJ
bnZhbGlkYXRpb24oZmFsc2UpOyAKKyAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+
c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oZmFsc2UpOyAKICAgICB9IAogCi0gICAgaWYgKG1fZGF0
YS0+bV92QmFyKSB7CisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50
IGNsaWVudEhlaWdodCA9IHZpc2libGVIZWlnaHQoKTsKLSAgICAgICAgbV9kYXRhLT5tX3ZCYXIt
PnNldEVuYWJsZWQoY29udGVudHNIZWlnaHQoKSA+IGNsaWVudEhlaWdodCk7CisgICAgICAgIG1f
dmVydGljYWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNIZWlnaHQoKSA+IGNsaWVudEhl
aWdodCk7CiAgICAgICAgIGludCBwYWdlU3RlcCA9IChjbGllbnRIZWlnaHQgLSBQQUdFX0tFRVAp
OwogICAgICAgICBpZiAocGFnZVN0ZXAgPCAwKSBwYWdlU3RlcCA9IGNsaWVudEhlaWdodDsKLSAg
ICAgICAgSW50UmVjdCBvbGRSZWN0KG1fZGF0YS0+bV92QmFyLT5mcmFtZUdlb21ldHJ5KCkpOwot
ICAgICAgICBJbnRSZWN0IHZCYXJSZWN0ID0gSW50UmVjdCh3aWR0aCgpIC0gbV9kYXRhLT5tX3ZC
YXItPndpZHRoKCksIAorICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJh
ci0+ZnJhbWVHZW9tZXRyeSgpKTsKKyAgICAgICAgSW50UmVjdCB2QmFyUmVjdCA9IEludFJlY3Qo
d2lkdGgoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksIAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2RhdGEtPm1fdkJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVpZ2h0KCkgLSAobV9kYXRhLT5tX2hCYXIgPyBtX2RhdGEtPm1faEJhci0+aGVpZ2h0
KCkgOiAwKSk7Ci0gICAgICAgIG1fZGF0YS0+bV92QmFyLT5zZXRGcmFtZUdlb21ldHJ5KHZCYXJS
ZWN0KTsKLSAgICAgICAgaWYgKCFtX2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQgJiYgb2xk
UmVjdCAhPSBtX2RhdGEtPm1fdkJhci0+ZnJhbWVHZW9tZXRyeSgpKQotICAgICAgICAgICAgbV9k
YXRhLT5tX3ZCYXItPmludmFsaWRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSAobV9ob3Jpem9udGFsU2Nyb2xsYmFyID8gbV9ob3Jp
em9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSA6IDApKTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0RnJhbWVHZW9tZXRyeSh2QmFyUmVjdCk7CisgICAgICAgIGlmICghbV9kYXRhLT5t
X3Njcm9sbGJhcnNTdXBwcmVzc2VkICYmIG9sZFJlY3QgIT0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+
ZnJhbWVHZW9tZXRyeSgpKQorICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+aW52YWxp
ZGF0ZSgpOwogCiAgICAgICAgIGlmIChtX2RhdGEtPm1fc2Nyb2xsYmFyc1N1cHByZXNzZWQpCi0g
ICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+c2V0U3VwcHJlc3NJbnZhbGlkYXRpb24odHJ1ZSk7
Ci0gICAgICAgIG1fZGF0YS0+bV92QmFyLT5zZXRTdGVwcyhMSU5FX1NURVBfV0lOLCBwYWdlU3Rl
cCk7Ci0gICAgICAgIG1fZGF0YS0+bV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwg
Y29udGVudHNIZWlnaHQoKSk7Ci0gICAgICAgIG1fZGF0YS0+bV92QmFyLT5zZXRWYWx1ZShzY3Jv
bGwuaGVpZ2h0KCkpOworICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0U3VwcHJl
c3NJbnZhbGlkYXRpb24odHJ1ZSk7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPnNldFN0
ZXBzKExJTkVfU1RFUF9XSU4sIHBhZ2VTdGVwKTsKKyAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJh
ci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIGNvbnRlbnRzSGVpZ2h0KCkpOworICAgICAg
ICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRWYWx1ZShzY3JvbGwuaGVpZ2h0KCkpOwogICAgICAg
ICBpZiAobV9kYXRhLT5tX3Njcm9sbGJhcnNTdXBwcmVzc2VkKQotICAgICAgICAgICAgbV9kYXRh
LT5tX3ZCYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsKKyAgICAgICAgICAgIG1f
dmVydGljYWxTY3JvbGxiYXItPnNldFN1cHByZXNzSW52YWxpZGF0aW9uKGZhbHNlKTsKICAgICB9
CiAKLSAgICBpZiAob2xkSGFzVmVydGljYWwgIT0gKG1fZGF0YS0+bV92QmFyICE9IDApIHx8IG9s
ZEhhc0hvcml6b250YWwgIT0gKG1fZGF0YS0+bV9oQmFyICE9IDApKQorICAgIGlmIChvbGRIYXNW
ZXJ0aWNhbCAhPSAobV92ZXJ0aWNhbFNjcm9sbGJhciAhPSAwKSB8fCBvbGRIYXNIb3Jpem9udGFs
ICE9IChtX2hvcml6b250YWxTY3JvbGxiYXIgIT0gMCkpCiAgICAgICAgIGdlb21ldHJ5Q2hhbmdl
ZCgpOwogCiAgICAgLy8gU2VlIGlmIG91ciBvZmZzZXQgaGFzIGNoYW5nZWQgaW4gYSBzaXR1YXRp
b24gd2hlcmUgd2UgbWlnaHQgbm90IGhhdmUgc2Nyb2xsYmFycy4KQEAgLTUyMywxMCArNDYyLDEw
IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKIFNjcm9sbGJhciog
U2Nyb2xsVmlldzo6c2Nyb2xsYmFyVW5kZXJNb3VzZShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IG1vdXNlRXZlbnQpCiB7CiAgICAgSW50UG9pbnQgdmlld1BvaW50ID0gY29udmVydEZyb21Db250
YWluaW5nV2luZG93KG1vdXNlRXZlbnQucG9zKCkpOwotICAgIGlmIChtX2RhdGEtPm1faEJhciAm
JiBtX2RhdGEtPm1faEJhci0+ZnJhbWVHZW9tZXRyeSgpLmNvbnRhaW5zKHZpZXdQb2ludCkpCi0g
ICAgICAgIHJldHVybiBtX2RhdGEtPm1faEJhci5nZXQoKTsKLSAgICBpZiAobV9kYXRhLT5tX3ZC
YXIgJiYgbV9kYXRhLT5tX3ZCYXItPmZyYW1lR2VvbWV0cnkoKS5jb250YWlucyh2aWV3UG9pbnQp
KQotICAgICAgICByZXR1cm4gbV9kYXRhLT5tX3ZCYXIuZ2V0KCk7CisgICAgaWYgKG1faG9yaXpv
bnRhbFNjcm9sbGJhciAmJiBtX2hvcml6b250YWxTY3JvbGxiYXItPmZyYW1lR2VvbWV0cnkoKS5j
b250YWlucyh2aWV3UG9pbnQpKQorICAgICAgICByZXR1cm4gbV9ob3Jpem9udGFsU2Nyb2xsYmFy
LmdldCgpOworICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIG1fdmVydGljYWxTY3JvbGxi
YXItPmZyYW1lR2VvbWV0cnkoKS5jb250YWlucyh2aWV3UG9pbnQpKQorICAgICAgICByZXR1cm4g
bV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTczLDI0
ICs1MTIsMjQgQEAgdm9pZCBTY3JvbGxWaWV3OjpwYWludChHcmFwaGljc0NvbnRleHQqIAogICAg
IGNvbnRleHQtPnJlc3RvcmUoKTsKIAogICAgIC8vIE5vdyBwYWludCB0aGUgc2Nyb2xsYmFycy4K
LSAgICBpZiAoIW1fZGF0YS0+bV9zY3JvbGxiYXJzU3VwcHJlc3NlZCAmJiAobV9kYXRhLT5tX2hC
YXIgfHwgbV9kYXRhLT5tX3ZCYXIpKSB7CisgICAgaWYgKCFtX2RhdGEtPm1fc2Nyb2xsYmFyc1N1
cHByZXNzZWQgJiYgKG1faG9yaXpvbnRhbFNjcm9sbGJhciB8fCBtX3ZlcnRpY2FsU2Nyb2xsYmFy
KSkgewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CiAgICAgICAgIEludFJlY3Qgc2Nyb2xsVmll
d0RpcnR5UmVjdCA9IHJlY3Q7CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QuaW50ZXJzZWN0
KGZyYW1lR2VvbWV0cnkoKSk7CiAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSh4KCksIHkoKSk7
CiAgICAgICAgIHNjcm9sbFZpZXdEaXJ0eVJlY3QubW92ZSgteCgpLCAteSgpKTsKLSAgICAgICAg
aWYgKG1fZGF0YS0+bV9oQmFyKQotICAgICAgICAgICAgbV9kYXRhLT5tX2hCYXItPnBhaW50KGNv
bnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwotICAgICAgICBpZiAobV9kYXRhLT5tX3ZCYXIp
Ci0gICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+cGFpbnQoY29udGV4dCwgc2Nyb2xsVmlld0Rp
cnR5UmVjdCk7CisgICAgICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpCisgICAgICAgICAg
ICBtX2hvcml6b250YWxTY3JvbGxiYXItPnBhaW50KGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJl
Y3QpOworICAgICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhcikKKyAgICAgICAgICAgIG1fdmVy
dGljYWxTY3JvbGxiYXItPnBhaW50KGNvbnRleHQsIHNjcm9sbFZpZXdEaXJ0eVJlY3QpOwogCiAg
ICAgICAgIC8vIEZpbGwgdGhlIHNjcm9sbCBjb3JuZXIgd2l0aCB3aGl0ZS4KICAgICAgICAgSW50
UmVjdCBoQ29ybmVyOwotICAgICAgICBpZiAobV9kYXRhLT5tX2hCYXIgJiYgd2lkdGgoKSAtIG1f
ZGF0YS0+bV9oQmFyLT53aWR0aCgpID4gMCkgewotICAgICAgICAgICAgaENvcm5lciA9IEludFJl
Y3QobV9kYXRhLT5tX2hCYXItPndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWlnaHQoKSAtIG1fZGF0YS0+bV9oQmFyLT5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHdpZHRoKCkgLSBtX2RhdGEtPm1faEJhci0+d2lkdGgoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YS0+bV9oQmFyLT5oZWlnaHQoKSk7CisgICAgICAg
IGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgd2lkdGgoKSAtIG1faG9yaXpvbnRhbFNjcm9s
bGJhci0+d2lkdGgoKSA+IDApIHsKKyAgICAgICAgICAgIGhDb3JuZXIgPSBJbnRSZWN0KG1faG9y
aXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGhlaWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRo
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PmhlaWdodCgpKTsKICAgICAgICAgICAgIGlmIChoQ29ybmVyLmludGVyc2VjdHMoc2Nyb2xsVmll
d0RpcnR5UmVjdCkpIHsKICAgICAgICAgICAgICAgICBQYWdlKiBwYWdlID0gZnJhbWVWaWV3LT5m
cmFtZSgpID8gZnJhbWVWaWV3LT5mcmFtZSgpLT5wYWdlKCkgOiAwOwogICAgICAgICAgICAgICAg
IGlmIChwYWdlICYmIHBhZ2UtPnNldHRpbmdzKCktPnNob3VsZFBhaW50Q3VzdG9tU2Nyb2xsYmFy
cygpKSB7CkBAIC02MDAsMTEgKzUzOSwxMSBAQCB2b2lkIFNjcm9sbFZpZXc6OnBhaW50KEdyYXBo
aWNzQ29udGV4dCogCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobV9k
YXRhLT5tX3ZCYXIgJiYgaGVpZ2h0KCkgLSBtX2RhdGEtPm1fdkJhci0+aGVpZ2h0KCkgPiAwKSB7
Ci0gICAgICAgICAgICBJbnRSZWN0IHZDb3JuZXIod2lkdGgoKSAtIG1fZGF0YS0+bV92QmFyLT53
aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZGF0YS0+bV92QmFyLT5oZWln
aHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RhdGEtPm1fdkJhci0+d2lkdGgo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1fZGF0YS0+bV92QmFy
LT5oZWlnaHQoKSk7CisgICAgICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhlaWdodCgp
IC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKSB7CisgICAgICAgICAgICBJbnRS
ZWN0IHZDb3JuZXIod2lkdGgoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxi
YXItPmhlaWdodCgpKTsKICAgICAgICAgICAgIGlmICh2Q29ybmVyICE9IGhDb3JuZXIgJiYgdkNv
cm5lci5pbnRlcnNlY3RzKHNjcm9sbFZpZXdEaXJ0eVJlY3QpKSB7CiAgICAgICAgICAgICAgICAg
UGFnZSogcGFnZSA9IGZyYW1lVmlldy0+ZnJhbWUoKSA/IGZyYW1lVmlldy0+ZnJhbWUoKS0+cGFn
ZSgpIDogMDsKICAgICAgICAgICAgICAgICBpZiAocGFnZSAmJiBwYWdlLT5zZXR0aW5ncygpLT5z
aG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoKSkgewpAQCAtNjYzLDExICs2MDIsMTEgQEAgdm9p
ZCBTY3JvbGxWaWV3OjpnZW9tZXRyeUNoYW5nZWQoKSBjb25zdAogYm9vbCBTY3JvbGxWaWV3Ojpz
Y3JvbGwoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVs
YXJpdHkpCiB7CiAgICAgaWYgKGRpcmVjdGlvbiA9PSBTY3JvbGxVcCB8fCBkaXJlY3Rpb24gPT0g
U2Nyb2xsRG93bikgewotICAgICAgICBpZiAobV9kYXRhLT5tX3ZCYXIpCi0gICAgICAgICAgICBy
ZXR1cm4gbV9kYXRhLT5tX3ZCYXItPnNjcm9sbChkaXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKKyAg
ICAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIpCisgICAgICAgICAgICByZXR1cm4gbV92ZXJ0
aWNhbFNjcm9sbGJhci0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGlmIChtX2RhdGEtPm1faEJhcikKLSAgICAgICAgICAgIHJldHVybiBtX2Rh
dGEtPm1faEJhci0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOworICAgICAgICBpZiAo
bV9ob3Jpem9udGFsU2Nyb2xsYmFyKQorICAgICAgICAgICAgcmV0dXJuIG1faG9yaXpvbnRhbFNj
cm9sbGJhci0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpOwogICAgIH0KICAgICByZXR1
cm4gZmFsc2U7CiB9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbFZpZXdXeC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxWaWV3V3guY3BwCShyZXZp
c2lvbiAzNjk2MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsVmlld1d4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk3LDMzICsyOTcsMTcgQEAgdm9pZCBTY3JvbGxWaWV3OjphZGp1c3RT
Y3JvbGxiYXJzKGludCB4LAogICAgIH0KIH0KIAotV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSBTY3Jv
bGxWaWV3OjpoU2Nyb2xsYmFyTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZGF0YS0+aFNj
cm9sbGJhck1vZGU7Ci19Ci0KLVdlYkNvcmU6OlNjcm9sbGJhck1vZGUgU2Nyb2xsVmlldzo6dlNj
cm9sbGJhck1vZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX2RhdGEtPnZTY3JvbGxiYXJNb2Rl
OwotfQotCi1ib29sIFNjcm9sbFZpZXc6OmlzU2Nyb2xsYWJsZSgpIAoteyAKLSAgICByZXR1cm4g
dHJ1ZTsgLy8gRklYTUUgOiByZXR1cm4gd2V0aGVyIG9yIG5vdCB0aGUgdmlldyBpcyBzY3JvbGxh
YmxlCi19Ci0KLXZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFyc01vZGUoU2Nyb2xsYmFyTW9k
ZSBuZXdNb2RlKQordm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybVNldFNjcm9sbGJhck1vZGVzKFNj
cm9sbGJhck1vZGUgbmV3SE1vZGUsIFNjcm9sbGJhck1vZGUgbmV3Vk1vZGUpCiB7CiAgICAgYm9v
bCBuZWVkc0FkanVzdCA9IGZhbHNlOwogCi0gICAgaWYgKG1fZGF0YS0+aFNjcm9sbGJhck1vZGUg
IT0gbmV3TW9kZSkgewotICAgICAgICBtX2RhdGEtPmhTY3JvbGxiYXJNb2RlID0gbmV3TW9kZTsK
KyAgICBpZiAobV9kYXRhLT5oU2Nyb2xsYmFyTW9kZSAhPSBuZXdITW9kZSkgeworICAgICAgICBt
X2RhdGEtPmhTY3JvbGxiYXJNb2RlID0gbmV3SE1vZGU7CiAgICAgICAgIG5lZWRzQWRqdXN0ID0g
dHJ1ZTsKICAgICB9CiAKLSAgICBpZiAobV9kYXRhLT52U2Nyb2xsYmFyTW9kZSAhPSBuZXdNb2Rl
KSB7Ci0gICAgICAgIG1fZGF0YS0+dlNjcm9sbGJhck1vZGUgPSBuZXdNb2RlOwotICAgICAgICBh
ZGp1c3RTY3JvbGxiYXJzKCk7CisgICAgaWYgKG1fZGF0YS0+dlNjcm9sbGJhck1vZGUgIT0gbmV3
Vk1vZGUpIHsKKyAgICAgICAgbV9kYXRhLT52U2Nyb2xsYmFyTW9kZSA9IG5ld1ZNb2RlOwogICAg
ICAgICBuZWVkc0FkanVzdCA9IHRydWU7CiAgICAgfQogCkBAIC0zMzEsMjAgKzMxNSwxMCBAQCB2
b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbGJhcnNNb2RlKFNjcm9sCiAgICAgICAgIGFkanVzdFNj
cm9sbGJhcnMoKTsKIH0KIAotdm9pZCBTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsYmFyTW9kZShTY3Jv
bGxiYXJNb2RlIG5ld01vZGUpCi17Ci0gICAgaWYgKG1fZGF0YS0+aFNjcm9sbGJhck1vZGUgIT0g
bmV3TW9kZSkgewotICAgICAgICBtX2RhdGEtPmhTY3JvbGxiYXJNb2RlID0gbmV3TW9kZTsKLSAg
ICAgICAgYWRqdXN0U2Nyb2xsYmFycygpOwotICAgIH0KLX0KLQotdm9pZCBTY3JvbGxWaWV3Ojpz
ZXRWU2Nyb2xsYmFyTW9kZShTY3JvbGxiYXJNb2RlIG5ld01vZGUpCit2b2lkIFNjcm9sbFZpZXc6
OnBsYXRmb3JtU2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyTW9kZSYgaG9yaXpvbnRhbCwgU2Nyb2xs
YmFyTW9kZSYgdmVydGljYWwpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZGF0YS0+dlNjcm9sbGJhck1v
ZGUgIT0gbmV3TW9kZSkgewotICAgICAgICBtX2RhdGEtPnZTY3JvbGxiYXJNb2RlID0gbmV3TW9k
ZTsKLSAgICAgICAgYWRqdXN0U2Nyb2xsYmFycygpOwotICAgIH0KKyAgICBob3Jpem9udGFsID0g
bV9kYXRhLT5oU2Nyb2xsYmFyTW9kZTsKKyAgICB2ZXJ0aWNhbCA9IG1fZGF0YS0+dlNjcm9sbGJh
ck1vZGU7CiB9CiAKIHZvaWQgU2Nyb2xsVmlldzo6c3VwcHJlc3NTY3JvbGxiYXJzKGJvb2wgc3Vw
cHJlc3NlZCwgYm9vbCByZXBhaW50T25TdXBwcmVzcykKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNjk2MCkK
KysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMDgtMDktMjYgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTE0OQorCisgICAgICAgIE1v
cmUgcmVmYWN0b3JpbmcgdG8gbWFrZSBzY3JvbGxiYXIgbW9kZXMgY3Jvc3MtcGxhdGZvcm0uICBS
ZWR1Y2UgdGhlIHByb3RvY29sIHRoYXQKKyAgICAgICAgV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3
IGhhcyB0byBpbXBsZW1lbnQgZm9yIGNvbW11bmljYXRpbmcgd2l0aCBXZWJDb3JlIHRvIGp1c3Qg
dGhyZWUgbWV0aG9kcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm06CisgICAgICAgICgt
W1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyBzY3JvbGxpbmdNb2RlczpXZWJDb3JlOjp2ZXJ0aWNh
bDpXZWJDb3JlOjpdKToKKyAgICAgICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldEhv
cml6b250YWxTY3JvbGxpbmdNb2RlOmFuZExvY2s6XSk6CisgICAgICAgICgtW1dlYkR5bmFtaWNT
Y3JvbGxCYXJzVmlldyBzZXRWZXJ0aWNhbFNjcm9sbGluZ01vZGU6YW5kTG9jazpdKToKKyAgICAg
ICAgKC1bV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3IHNldFNjcm9sbGluZ01vZGVzOnZlcnRpY2Fs
OmFuZExvY2s6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXdJ
bnRlcm5hbC5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJGcmFtZVZpZXcgc2V0QWxsb3dzU2Nyb2xsaW5nOl0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBbHdheXNTaG93VmVydGljYWxTY3Jv
bGxlcjpdKToKKyAgICAgICAgKC1bV2ViVmlldyBzZXRBbHdheXNTaG93SG9yaXpvbnRhbFNjcm9s
bGVyOl0pOgorCiAyMDA4LTA5LTI1ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMDEKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJEeW5hbWljU2Nyb2xsQmFyc1ZpZXcubQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRHluYW1pY1Njcm9sbEJhcnNWaWV3Lm0JKHJl
dmlzaW9uIDM2OTYwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJz
Vmlldy5tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsNiArMjMyLDEyIEBAIGNvbnN0IGludCBXZWJD
b3JlU2Nyb2xsYmFyQWx3YXlzT24gPSBTY3IKICAgICByZXR1cm4gdlNjcm9sbCAhPSBTY3JvbGxi
YXJBbHdheXNPZmY7CiB9CiAKKy0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdlYkNvcmU6OlNjcm9s
bGJhck1vZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKil2TW9kZQor
eworICAgICpoTW9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck1vZGU+KGhTY3JvbGwpOworICAg
ICp2TW9kZSA9IHN0YXRpY19jYXN0PFNjcm9sbGJhck1vZGU+KHZTY3JvbGwpOworfQorCiAtIChT
Y3JvbGxiYXJNb2RlKWhvcml6b250YWxTY3JvbGxpbmdNb2RlCiB7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFNjcm9sbGJhck1vZGU+KGhTY3JvbGwpOwpAQCAtMjQyLDYwICsyNDgsMjYgQEAgY29u
c3QgaW50IFdlYkNvcmVTY3JvbGxiYXJBbHdheXNPbiA9IFNjcgogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxTY3JvbGxiYXJNb2RlPih2U2Nyb2xsKTsKIH0KIAotLSAodm9pZClzZXRIb3Jpem9udGFs
U2Nyb2xsaW5nTW9kZTooU2Nyb2xsYmFyTW9kZSltb2RlCi17Ci0gICAgW3NlbGYgc2V0SG9yaXpv
bnRhbFNjcm9sbGluZ01vZGU6bW9kZSBhbmRMb2NrOk5PXTsKLX0KLQotLSAodm9pZClzZXRIb3Jp
em9udGFsU2Nyb2xsaW5nTW9kZTooU2Nyb2xsYmFyTW9kZSltb2RlIGFuZExvY2s6KEJPT0wpbG9j
awotewotICAgIGlmIChtb2RlID09IGhTY3JvbGwgfHwgaFNjcm9sbE1vZGVMb2NrZWQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGhTY3JvbGwgPSBtb2RlOwotCi0gICAgaWYgKGxvY2spCi0gICAg
ICAgIFtzZWxmIHNldEhvcml6b250YWxTY3JvbGxpbmdNb2RlTG9ja2VkOllFU107Ci0KLSAgICBb
c2VsZiB1cGRhdGVTY3JvbGxlcnNdOwotfQotCi0tICh2b2lkKXNldFZlcnRpY2FsU2Nyb2xsaW5n
TW9kZTooU2Nyb2xsYmFyTW9kZSltb2RlCi17Ci0gICAgW3NlbGYgc2V0VmVydGljYWxTY3JvbGxp
bmdNb2RlOm1vZGUgYW5kTG9jazpOT107Ci19Ci0KLS0gKHZvaWQpc2V0VmVydGljYWxTY3JvbGxp
bmdNb2RlOihTY3JvbGxiYXJNb2RlKW1vZGUgYW5kTG9jazooQk9PTClsb2NrCistICh2b2lkKXNl
dEhvcml6b250YWxTY3JvbGxpbmdNb2RlOihTY3JvbGxiYXJNb2RlKWhvcml6b250YWxNb2RlIGFu
ZExvY2s6KEJPT0wpbG9jawogewotICAgIGlmIChtb2RlID09IHZTY3JvbGwgfHwgdlNjcm9sbE1v
ZGVMb2NrZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZTY3JvbGwgPSBtb2RlOwotCi0gICAg
aWYgKGxvY2spCi0gICAgICAgIFtzZWxmIHNldFZlcnRpY2FsU2Nyb2xsaW5nTW9kZUxvY2tlZDpZ
RVNdOwotCi0gICAgW3NlbGYgdXBkYXRlU2Nyb2xsZXJzXTsKKyAgICBbc2VsZiBzZXRTY3JvbGxp
bmdNb2Rlczpob3Jpem9udGFsTW9kZSB2ZXJ0aWNhbDpbc2VsZiB2ZXJ0aWNhbFNjcm9sbGluZ01v
ZGVdIGFuZExvY2s6bG9ja107CiB9CiAKLS0gKHZvaWQpc2V0U2Nyb2xsaW5nTW9kZTooU2Nyb2xs
YmFyTW9kZSltb2RlCistICh2b2lkKXNldFZlcnRpY2FsU2Nyb2xsaW5nTW9kZTooU2Nyb2xsYmFy
TW9kZSl2ZXJ0aWNhbE1vZGUgYW5kTG9jazooQk9PTClsb2NrCiB7Ci0gICAgW3NlbGYgc2V0U2Ny
b2xsaW5nTW9kZTptb2RlIGFuZExvY2s6Tk9dOworICAgIFtzZWxmIHNldFNjcm9sbGluZ01vZGVz
OltzZWxmIGhvcml6b250YWxTY3JvbGxpbmdNb2RlXSB2ZXJ0aWNhbDp2ZXJ0aWNhbE1vZGUgYW5k
TG9jazpsb2NrXTsKIH0KIAotLSAodm9pZClzZXRTY3JvbGxpbmdNb2RlOihTY3JvbGxiYXJNb2Rl
KW1vZGUgYW5kTG9jazooQk9PTClsb2NrCistICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihTY3Jv
bGxiYXJNb2RlKWhvcml6b250YWxNb2RlIHZlcnRpY2FsOihTY3JvbGxiYXJNb2RlKXZlcnRpY2Fs
TW9kZSBhbmRMb2NrOihCT09MKWxvY2sKIHsKLSAgICBpZiAoKG1vZGUgPT0gdlNjcm9sbCAmJiBt
b2RlID09IGhTY3JvbGwpIHx8ICh2U2Nyb2xsTW9kZUxvY2tlZCAmJiBoU2Nyb2xsTW9kZUxvY2tl
ZCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIEJPT0wgdXBkYXRlID0gTk87Ci0gICAgaWYgKG1v
ZGUgIT0gdlNjcm9sbCAmJiAhdlNjcm9sbE1vZGVMb2NrZWQpIHsKLSAgICAgICAgdlNjcm9sbCA9
IG1vZGU7CisgICAgaWYgKHZlcnRpY2FsTW9kZSAhPSB2U2Nyb2xsICYmICF2U2Nyb2xsTW9kZUxv
Y2tlZCkgeworICAgICAgICB2U2Nyb2xsID0gdmVydGljYWxNb2RlOwogICAgICAgICB1cGRhdGUg
PSBZRVM7CiAgICAgfQogCi0gICAgaWYgKG1vZGUgIT0gaFNjcm9sbCAmJiAhaFNjcm9sbE1vZGVM
b2NrZWQpIHsKLSAgICAgICAgaFNjcm9sbCA9IG1vZGU7CisgICAgaWYgKGhvcml6b250YWxNb2Rl
ICE9IGhTY3JvbGwgJiYgIWhTY3JvbGxNb2RlTG9ja2VkKSB7CisgICAgICAgIGhTY3JvbGwgPSBo
b3Jpem9udGFsTW9kZTsKICAgICAgICAgdXBkYXRlID0gWUVTOwogICAgIH0KIApJbmRleDogV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVybmFsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNTY3JvbGxCYXJzVmlld0ludGVy
bmFsLmgJKHJldmlzaW9uIDM2OTYwKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkR5bmFtaWNT
Y3JvbGxCYXJzVmlld0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDkgKzM1LDE0IEBA
CiAtICh2b2lkKXNldEFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nOihCT09MKWZsYWc7CiAtIChCT09M
KWFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nOwogCistICh2b2lkKXNldFNjcm9sbGluZ01vZGVzOihX
ZWJDb3JlOjpTY3JvbGxiYXJNb2RlKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJN
b2RlKXZNb2RlIGFuZExvY2s6KEJPT0wpbG9jazsKKy0gKHZvaWQpc2Nyb2xsaW5nTW9kZXM6KFdl
YkNvcmU6OlNjcm9sbGJhck1vZGUqKWhNb2RlIHZlcnRpY2FsOihXZWJDb3JlOjpTY3JvbGxiYXJN
b2RlKil2TW9kZTsKKworLSAoV2ViQ29yZTo6U2Nyb2xsYmFyTW9kZSlob3Jpem9udGFsU2Nyb2xs
aW5nTW9kZTsKKy0gKFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpdmVydGljYWxTY3JvbGxpbmdNb2Rl
OworCiAtICh2b2lkKXNldEhvcml6b250YWxTY3JvbGxpbmdNb2RlOihXZWJDb3JlOjpTY3JvbGxi
YXJNb2RlKW1vZGUgYW5kTG9jazooQk9PTClsb2NrOwogLSAodm9pZClzZXRWZXJ0aWNhbFNjcm9s
bGluZ01vZGU6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpbW9kZSBhbmRMb2NrOihCT09MKWxvY2s7
Ci0tICh2b2lkKXNldFNjcm9sbGluZ01vZGU6KFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpbW9kZSBh
bmRMb2NrOihCT09MKWxvY2s7CiAKIC0gKHZvaWQpc2V0SG9yaXpvbnRhbFNjcm9sbGluZ01vZGVM
b2NrZWQ6KEJPT0wpbG9ja2VkOwogLSAodm9pZClzZXRWZXJ0aWNhbFNjcm9sbGluZ01vZGVMb2Nr
ZWQ6KEJPT0wpbG9ja2VkOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCShyZXZp
c2lvbiAzNjk2MCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQwMywxMCArNDAzLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVz
RnJvbUNsYXNzKE5TTQogICAgIFdlYkR5bmFtaWNTY3JvbGxCYXJzVmlldyAqc2Nyb2xsVmlldyA9
IFtzZWxmIF9zY3JvbGxWaWV3XTsKICAgICBbc2Nyb2xsVmlldyBzZXRBbGxvd3NTY3JvbGxpbmc6
ZmxhZ107CiAgICAgV2ViQ29yZTo6RnJhbWUgKmZyYW1lID0gY29yZShbc2VsZiB3ZWJGcmFtZV0p
OwotICAgIGlmIChXZWJDb3JlOjpGcmFtZVZpZXcgKnZpZXcgPSBmcmFtZT8gZnJhbWUtPnZpZXco
KSA6IDApIHsKLSAgICAgICAgdmlldy0+c2V0SFNjcm9sbGJhck1vZGUoKFdlYkNvcmU6OlNjcm9s
bGJhck1vZGUpW3Njcm9sbFZpZXcgaG9yaXpvbnRhbFNjcm9sbGluZ01vZGVdKTsKLSAgICAgICAg
dmlldy0+c2V0VlNjcm9sbGJhck1vZGUoKFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpW3Njcm9sbFZp
ZXcgdmVydGljYWxTY3JvbGxpbmdNb2RlXSk7Ci0gICAgfQorICAgIGlmIChXZWJDb3JlOjpGcmFt
ZVZpZXcgKnZpZXcgPSBmcmFtZT8gZnJhbWUtPnZpZXcoKSA6IDApCisgICAgICAgIHZpZXctPnNl
dFNjcm9sbGJhck1vZGVzKChXZWJDb3JlOjpTY3JvbGxiYXJNb2RlKVtzY3JvbGxWaWV3IGhvcml6
b250YWxTY3JvbGxpbmdNb2RlXSwgKFdlYkNvcmU6OlNjcm9sbGJhck1vZGUpW3Njcm9sbFZpZXcg
dmVydGljYWxTY3JvbGxpbmdNb2RlXSk7CiB9CiAKIC0gKEJPT0wpYWxsb3dzU2Nyb2xsaW5nCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzY5NjApCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTUzOCw3ICsxNTM4LDcgQEAgV2Vi
RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKgogICAgICAgICBbc2Nyb2xsdmll
dyBzZXRWZXJ0aWNhbFNjcm9sbGluZ01vZGU6U2Nyb2xsYmFyQWx3YXlzT24gYW5kTG9jazpZRVNd
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIFtzY3JvbGx2aWV3IHNldFZlcnRpY2FsU2Nyb2xsaW5n
TW9kZUxvY2tlZDpOT107Ci0gICAgICAgIFtzY3JvbGx2aWV3IHNldFZlcnRpY2FsU2Nyb2xsaW5n
TW9kZTpTY3JvbGxiYXJBdXRvXTsKKyAgICAgICAgW3Njcm9sbHZpZXcgc2V0VmVydGljYWxTY3Jv
bGxpbmdNb2RlOlNjcm9sbGJhckF1dG8gYW5kTG9jazpOT107CiAgICAgfQogfQogCkBAIC0xNTU1
LDcgKzE1NTUsNyBAQCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqCiAg
ICAgICAgIFtzY3JvbGx2aWV3IHNldEhvcml6b250YWxTY3JvbGxpbmdNb2RlOlNjcm9sbGJhckFs
d2F5c09uIGFuZExvY2s6WUVTXTsKICAgICB9IGVsc2UgewogICAgICAgICBbc2Nyb2xsdmlldyBz
ZXRIb3Jpem9udGFsU2Nyb2xsaW5nTW9kZUxvY2tlZDpOT107Ci0gICAgICAgIFtzY3JvbGx2aWV3
IHNldEhvcml6b250YWxTY3JvbGxpbmdNb2RlOlNjcm9sbGJhckF1dG9dOworICAgICAgICBbc2Ny
b2xsdmlldyBzZXRIb3Jpem9udGFsU2Nyb2xsaW5nTW9kZTpTY3JvbGxiYXJBdXRvIGFuZExvY2s6
Tk9dOwogICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="10746"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>